S3
Amazon S3 provides object storage with 11 9s durability. High-level aws s3 commands cover day-to-day usage; aws s3api exposes the full OpenAPI surface.
Storage Classes
| Class | Use Case | Minimum Storage |
|---|---|---|
| Standard | Hot data, frequent access | None |
| Standard-IA | Cool data, occasional access | 30 days |
| One Zone-IA | Cool data, single AZ | 30 days |
| Intelligent-Tiering | Auto-tier based on access | None |
| Glacier Instant Retrieval | Quarterly access, ms retrieval | 90 days |
| Glacier Flexible Retrieval | Minutes-to-hours retrieval | 90 days |
| Glacier Deep Archive | Long-term, 12+ hour retrieval | 180 days |
CLI
Buckets
bash
aws s3 mb s3://BUCKET_NAME --region us-east-1
aws s3 ls
aws s3 rb s3://BUCKET_NAME
aws s3 rb s3://BUCKET_NAME --force # delete with contents
# Bucket policy / ACL (via s3api)
aws s3api get-bucket-policy --bucket BUCKET_NAME
aws s3api put-bucket-policy --bucket BUCKET_NAME --policy file://policy.json
aws s3api delete-bucket-policy --bucket BUCKET_NAME
aws s3api put-bucket-acl --bucket BUCKET_NAME --acl privateObjects
bash
aws s3 cp LOCAL_FILE s3://BUCKET_NAME/KEY
aws s3 cp s3://BUCKET_NAME/KEY ./
aws s3 cp s3://SRC_BUCKET/KEY s3://DST_BUCKET/KEY
aws s3 cp LOCAL_DIR s3://BUCKET_NAME/PREFIX/ --recursive
aws s3 ls s3://BUCKET_NAME/PREFIX/
aws s3 ls s3://BUCKET_NAME/ --recursive --human-readable --summarize
aws s3 mv s3://BUCKET_NAME/OLD s3://BUCKET_NAME/NEW
aws s3 rm s3://BUCKET_NAME/KEY
aws s3 rm s3://BUCKET_NAME/PREFIX/ --recursiveSync
bash
aws s3 sync LOCAL_DIR s3://BUCKET_NAME/PREFIX/
aws s3 sync s3://BUCKET_NAME/PREFIX/ LOCAL_DIR
aws s3 sync LOCAL_DIR s3://BUCKET_NAME/PREFIX/ --delete # mirror, removes extras
aws s3 sync LOCAL_DIR s3://BUCKET_NAME/PREFIX/ \
--exclude "*.tmp" --include "*.log"Storage Class
bash
aws s3 cp s3://BUCKET_NAME/KEY s3://BUCKET_NAME/KEY \
--storage-class STANDARD_IA --metadata-directive COPY
aws s3 cp LOCAL_FILE s3://BUCKET_NAME/KEY \
--storage-class INTELLIGENT_TIERINGVersioning
bash
aws s3api put-bucket-versioning \
--bucket BUCKET_NAME \
--versioning-configuration Status=Enabled
aws s3api list-object-versions --bucket BUCKET_NAME
aws s3api delete-object \
--bucket BUCKET_NAME --key KEY --version-id VERSION_IDPresigned URLs
bash
aws s3 presign s3://BUCKET_NAME/KEY --expires-in 3600 # presigned GET, 1 hourLifecycle Rules
bash
aws s3api put-bucket-lifecycle-configuration \
--bucket BUCKET_NAME \
--lifecycle-configuration file://lifecycle.json
aws s3api get-bucket-lifecycle-configuration --bucket BUCKET_NAME
aws s3api delete-bucket-lifecycle --bucket BUCKET_NAMEReference: