本篇文章继续了AWS CLI s3 常用命令大全展开的对于AWS s3存储桶的一些配置项通过CLI操作和配置的方法
1. 基本S3存储桶创建
创建存储桶
# 创建存储桶(默认当前区域)
aws s3 mb s3://my-bucket-name
# 创建存储桶(指定区域)
aws s3 mb s3://my-bucket-name --region us-east-1
2. 开启S3存储桶加密
方法一:使用AWS CLI设置默认加密
# 设置默认加密(AES-256)
aws s3api put-bucket-encryption \
--bucket my-bucket-name \
--server-side-encryption-configuration \
'{"Rules": [{"ApplyServerSideEncryptionByDefault": {"SSEAlgorithm": "AES256"}}]}'
# 设置默认加密(KMS加密)
aws s3api put-bucket-encryption \
--bucket my-bucket-name \
--server-side-encryption-configuration \
'{"Rules": [{"ApplyServerSideEncryptionByDefault": {"SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "arn:aws:kms:us-west-2:123456789012:key/your-key-id"}}]}'
# 将arn:aws:kms:us-west-2:123456789012:key/your-key-id改为自己的KMS的ARN
# 查看当前加密配置
aws s3api get-bucket-encryption --bucket my-bucket-name
方法二:使用JSON文件配置
# 创建加密配置文件
cat > encryption-config.json << EOF
{
"Rules": [
{
"ApplyServerSideEncryptionByDefault": {
"SSEAlgorithm": "AES256"
}
}
]
}
EOF
# 应用配置
aws s3api put-bucket-encryption \
--bucket my-bucket-name \
--server-side-encryption-configuration file://encryption-config.json
3. 设置版本控制
启用版本控制
# 启用版本控制
aws s3api put-bucket-versioning \
--bucket my-bucket-name \
--versioning-configuration Status=Enabled
# 查看版本控制状态
aws s3api get-bucket-versioning --bucket my-bucket-name
# 禁用版本控制
aws s3api put-bucket-versioning \
--bucket my-bucket-name \
--versioning-configuration Status=Suspended
4. 配置S3生命周期策略
创建生命周期策略
# 创建生命周期策略文件 lifecycle-config.json
cat > lifecycle-config.json << EOF
{
"Rules": [
{
"ID": "DeleteOldVersions",
"Status": "Enabled",
"Filter": {"Prefix": ""},
"NoncurrentVersionExpiration": {
"NoncurrentDays": 30
},
"AbortIncompleteMultipartUpload": {
"DaysAfterInitiation": 7
}
},
{
"ID": "ArchiveOldFiles",
"Status": "Enabled",
"Filter": {"Prefix": "archive/"},
"Transitions": [
{
"Days": 30,
"StorageClass": "STANDARD_IA"
},
{
"Days": 90,
"StorageClass": "GLACIER"
}
],
"Expiration": {
"Days": 365
}
}
]
}
EOF
# 简短的
cat > lifecycle-config-1.json <<EOF
{
"Rules": [{
"ID": "GameRule",
"Status": "Enabled",
"Filter": {},
"Transitions": [{
"Days": 30,
"StorageClass": "STANDARD_IA"
}]
}]
}
EOF
应用生命周期策略
# 应用生命周期策略
aws s3api put-bucket-lifecycle-configuration \
--bucket my-bucket-name \
--lifecycle-configuration file://lifecycle-config.json
# 查看生命周期策略
aws s3api get-bucket-lifecycle-configuration --bucket my-bucket-name
# 删除生命周期策略
aws s3api delete-bucket-lifecycle --bucket my-bucket-name
5. 完整的脚本示例
创建完整的S3存储桶配置脚本
#!/bin/bash
# 配置变量
BUCKET_NAME="my-production-bucket-$(date +%Y%m%d-%H%M%S)"
REGION="us-west-2"
echo "创建S3存储桶: $BUCKET_NAME"
# 1. 创建存储桶
aws s3 mb s3://$BUCKET_NAME --region $REGION
# 2. 设置默认加密
echo "设置默认加密..."
aws s3api put-bucket-encryption \
--bucket $BUCKET_NAME \
--server-side-encryption-configuration \
'{"Rules": [{"ApplyServerSideEncryptionByDefault": {"SSEAlgorithm": "AES256"}}]}'
# 3. 启用版本控制
echo "启用版本控制..."
aws s3api put-bucket-versioning \
--bucket $BUCKET_NAME \
--versioning-configuration Status=Enabled
# 4. 创建生命周期策略
cat > lifecycle-config.json << EOF
{
"Rules": [
{
"ID": "DeleteOldVersions",
"Status": "Enabled",
"Filter": {"Prefix": ""},
"NoncurrentVersionExpirationInDays": 30,
"AbortIncompleteMultipartUpload": {
"DaysAfterInitiation": 7
}
},
{
"ID": "ArchiveOldFiles",
"Status": "Enabled",
"Filter": {"Prefix": "archive/"},
"Transitions": [
{
"Days": 30,
"StorageClass": "STANDARD_IA"
},
{
"Days": 90,
"StorageClass": "GLACIER"
}
],
"ExpirationInDays": 365
}
]
}
EOF
# 应用生命周期策略
echo "应用生命周期策略..."
aws s3api put-bucket-lifecycle-configuration \
--bucket $BUCKET_NAME \
--lifecycle-configuration file://lifecycle-config.json
# 5. 验证配置
echo "验证配置..."
echo "存储桶加密:"
aws s3api get-bucket-encryption --bucket $BUCKET_NAME
echo "版本控制状态:"
aws s3api get-bucket-versioning --bucket $BUCKET_NAME
echo "生命周期策略:"
aws s3api get-bucket-lifecycle-configuration --bucket $BUCKET_NAME
# 清理临时文件
rm lifecycle-config.json
echo "S3存储桶配置完成!"
6. 高级配置选项
设置跨域访问控制(CORS)
# CORS配置文件 cors-config.json
cat > cors-config.json << EOF
{
"CORSRules": [
{
"AllowedHeaders": ["*"],
"AllowedMethods": ["GET", "POST", "PUT"],
"AllowedOrigins": ["https://www.example.com"],
"MaxAgeSeconds": 3000
}
]
}
EOF
# 应用CORS配置
aws s3api put-bucket-cors \
--bucket my-bucket-name \
--cors-configuration file://cors-config.json
设置访问控制列表(ACL)和权限
# 设置存储桶ACL为私有
aws s3api put-bucket-acl \
--bucket my-bucket-name \
--acl private
# 设置对象ACL
aws s3api put-object-acl \
--bucket my-bucket-name \
--key my-file.txt \
--acl private
7. 验证和监控
验证所有配置
# 检查存储桶详情
aws s3api head-bucket --bucket my-bucket-name
# 列出存储桶中的对象
aws s3 ls s3://my-bucket-name --recursive
监控和日志
# 启用访问日志
aws s3api put-bucket-logging \
--bucket my-bucket-name \
--bucket-logging-status \
'{"LoggingEnabled": {"TargetBucket": "my-log-bucket", "TargetPrefix": "logs/"}}'
这些命令提供了完整的S3存储桶配置,包括安全性、版本控制、生命周期管理等关键功能。您可以根据具体需求调整配置参数。