S3 (Simple Storage Service)
Overview
S3 (Simple Storage Service) provides scalable object storage for your application. Tapitalee automatically provisions Amazon S3 buckets in your AWS account, offering secure, durable, and highly available storage for files, images, documents, backups, and static assets.
Purpose and Benefits
- Scalable Storage: Virtually unlimited storage capacity that scales automatically
- Durability: 99.999999999% (11 9’s) data durability with automatic redundancy
- Availability: High availability with 99.99% uptime SLA
- Security: Encryption at rest and in transit, fine-grained access controls
- Cost-Effective: Pay only for storage used, with multiple storage classes
- Integration: Easy integration with applications via AWS SDKs and REST APIs
AWS Service Details
Under the hood, Tapitalee creates:
- S3 Bucket: Secure storage container with unique global name
- Bucket Policies: Access control policies for security
CLI Usage
Create S3 Bucket
Create an S3 bucket for file storage
tapit create s3 name=bucket_name [description='My bucket'] [public_access=true|false] [external_access=true|false] [secret=true|false] [--ignore-existing]
Parameters
name: Name for the S3 bucket (required)description: Description of the bucket’s purposepublic_access: Allow public access to bucket contents (true/false)external_access: Provision IAM users for external access to the bucket (true/false)secret: Treat the bucket as secret (true/false). Regular team members and read-only API/CLI users cannot read its contents without the view secrets permission--ignore-existing: Skip creation if a resource with the same name already exists (useful for idempotent scripts)
Examples
# Basic private S3 bucket
tapit create s3 name=myapp-documents
# Public bucket for static assets
tapit create s3 name=myapp-static-assets description='Public static files' public_access=true
# Bucket for user uploads
tapit create s3 name=myapp-user-uploads description='User uploaded files'
Modify S3 Bucket
Update settings for an existing S3 bucket
tapit set s3 name=bucket_name [description='New description'] [external_access=true|false] [secret=true|false] [delete_protection=true|false]
Parameters
name: Name of the S3 bucket to update (required)description: Description of the bucket’s purposeexternal_access: Provision IAM users for external access to the bucket (true/false)secret: Treat the bucket as secret (true/false). Regular team members and read-only API/CLI users cannot read its contents without the view secrets permissiondelete_protection: Enable (true) or disable (false) delete protection for the bucket
List and Show S3 Buckets
List all add-ons attached to the app with their state and configuration
tapit list addons [-w|--wait]
Parameters
-w|--wait: Wait until all add-ons reach a stable state (fully ready or fully deleted); exits non-zero if any add-on is in a failed state
Show detailed information about a specific add-on
tapit show addon name=addon_name
Parameters
name: Name of the add-on to show (required)
Delete S3 Bucket
Delete an add-on and all its associated AWS resources
tapit delete addon name=addon_name
Parameters
name: Name of the add-on to delete (required)
Warning: This permanently deletes the S3 bucket. The bucket must be empty before deletion.
Environment Variables
When you create an S3 bucket, Tapitalee automatically injects connection details as environment variables:
S3_BUCKET: Bucket name
Security and Access Control
Tapitalee manages all IAM policies and permissions internally — there is nothing you need to configure manually.
The public_access Setting
The public_access parameter controls whether bucket objects are publicly readable:
-
public_access=false(default): Objects are private. Your deployed app has full read/write access to the bucket, but no one else can access the contents without AWS credentials. -
public_access=true: Objects are publicly readable (but not listable). Anyone can access an object directly via its URL — no signed links or AWS credentials required. This is useful for serving static assets or sharing files via direct links. Your deployed app still has full access.
The secret Setting
The secret parameter controls who on your team can browse the bucket’s contents through Tapitalee:
-
secret=false(default): Any team member withviewaccess to the app can browse the bucket’s contents. -
secret=true: The bucket is treated as secret. Regular team members and read-only API/CLI users cannot read its contents without the view secrets permission. This is useful for buckets holding sensitive files that should only be visible to members granted secret-viewing access.
Common Use Cases
File Uploads and Storage
# Create bucket for user file uploads
tapit create s3 name=myapp-uploads description='User uploaded files'
Static Asset Hosting
# Create public bucket for static assets
tapit create s3 name=myapp-static public_access=true description='CSS, JS, images'
Document Archive
# Create bucket for document storage
tapit create s3 name=myapp-documents description='Document archive and backup'
Application Backups
# Create bucket for application backups
tapit create s3 name=myapp-backups description='Database and application backups'