如何通过AWS CLI为多个S3存储桶启用服务端加密并排除指定桶?
S3批量启用默认SSE加密(排除指定桶)实现方案
实现思路
遍历你账号下所有S3存储桶,过滤掉你指定不需要开启加密的桶,对剩余桶批量执行加密配置命令即可,以下是Shell环境下用AWS CLI实现的具体步骤:
操作步骤
- 先整理好需要排除的存储桶名称,写入数组变量
- 遍历全量桶列表,匹配排除列表后执行加密配置
完整可执行脚本
# 定义需要排除的桶名,多个用空格分隔 EXCLUDE_BUCKETS=("bucket-no-encrypt-1" "bucket-no-encrypt-2" "bucket-no-encrypt-3") # 获取当前账号所有S3桶名并遍历 aws s3api list-buckets --query "Buckets[].Name" --output text | tr '\t' '\n' | while read BUCKET_NAME; do # 判断当前桶是否在排除列表中 if [[ ! " ${EXCLUDE_BUCKETS[@]} " =~ " ${BUCKET_NAME} " ]]; then echo "正在为桶 ${BUCKET_NAME} 配置默认AES256加密..." # 执行加密配置命令 aws s3api put-bucket-encryption \ --bucket "${BUCKET_NAME}" \ --server-side-encryption-configuration '{"Rules": [{"ApplyServerSideEncryptionByDefault": {"SSEAlgorithm": "AES256"}}]}' fi done
注意事项
- 首次执行建议先把
aws s3api put-bucket-encryption开头的整段命令替换成echo "待执行加密配置:${BUCKET_NAME}",先试运行输出待操作的桶列表,确认没有误排除/误选中的桶后再执行真实配置 - 如果你需要使用SSE-KMS而非SSE-S3(AES256)加密,只需修改
--server-side-encryption-configuration参数中的配置,补充KMS密钥ID即可 - 已配置过加密规则的桶重复执行该命令不会报错,只会覆盖更新为当前设置的加密规则
内容的提问来源于stack exchange,提问作者Deekshith Reddy Inugala
相关产品推荐
相关产品推荐

