S3
- garage
- MinIO
- oxyno-zeta/s3-proxy
- Apache-2.0, Go
- gaul/s3proxy
- Apache-2.0, Java
- S3 Proxy with overlay
- pottava/aws-s3-proxy
- dandanthedev/littletinystorage
- GPLv3, TS
- S3 兼容接口
- 可以作为实现的参考
- glacier - 冷存储, 90 天 删除
Limits
item | spec | e.g. |
---|---|---|
key | 1024 bytes | a/b/c |
key segment | 255 bytes | a |
bucket | 63 bytes |
bucket name
(?!(^xn--|.+-s3alias$))^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$
(?!(^((2(5[0-5]|[0-4][0-9])|[01]?[0-9]{1,2})\.){3}(2(5[0-5]|[0-4][0-9])|[01]?[0-9]{1,2})$|^xn--|.+-s3alias$))^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$
- key
- UTF8
- 安全字符
[0-9a-zA-z!_.*'()-]
- https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html
- https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html
- BucketName 规则
- S3 Limits
- minio Thresholds and Limits
headers
x-amz-meta-
x-amz-acl
x-amz-server-side-encryption-
x-amz-server-side-encryption
x-amz-storage-class
content-type
cache-control
content-encoding
content-disposition
content-language
x-amz-website-redirect-location
Content-MD5: ${BASE64}
# SigV4 - Signature Version 4
# UNSIGNED-PAYLOAD 不计算 payload hash
x-amz-content-sha256: UNSIGNED-PAYLOAD
x-amz-content-sha256: ${hex(sha256)}
# 自动处理
x-amz-sdk-checksum: SHA256
API
- https://docs.aws.amazon.com/AmazonS3/latest/API/Welcome.html
- https://min.io/docs/minio/linux/developers/javascript/API.html
Profile
- AWS_PROFILE
- ~/.aws/credentials
%USERPROFILE%\.aws\credentials
- ~/.aws/config
- https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html
~/.aws/credentials
[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY
[your_profile_name]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY
aws --profile project01 --endpoint-url http://localhost:9000 s3 ls s3://my-bucket01/