所有 s3 存储桶上的 AWS s3 存储桶批量加密

DevOpsAgentOfChaos

我正在尝试使用默认加密批量更新所有 s3 存储桶,以便我使用以下命令生成一个 json 文件

aws s3api list-buckets --query "Buckets[].Name" >> s3.json

我的结果是所有 s3 存储桶的名称。

我如何将该 json 文件传递​​到命令中,以便启用默认加密。

我也试过下面

aws s3api list-buckets --query 'Buckets[*].[Name]' --output text | xargs -I {} bash -c 'aws s3api put-bucket-encryption --bucket {} --server-side-encryption-configuration '{"Rules": [{"ApplyServerSideEncryptionByDefault": {"SSEAlgorithm": "AES256"}}]}''

但我得到低于错误

Error parsing parameter '--server-side-encryption-configuration': Invalid JSON: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
JSON received: {Rule

aws s3api put-bucket-encryption --bucket bucketnames --server-side-encryption-configuration '{"Rules": [{"ApplyServerSideEncryptionByDefault": {"SSEAlgorithm": "AES256"}}]}'

我在下面尝试过,但它不起作用。

aws s3api put-bucket-encryption \
    --bucket value \
    --server-side-encryption-configuration '{"Rules": [{"ApplyServerSideEncryptionByDefault": {"SSEAlgorithm": "AES256"}}]}' \
    --cli-input-json file://s3bucket.json

请让我知道如何更新我的命令以启用默认加密。

拉姆·克里希纳

以下是解决您的问题的代码片段:

# Check if bucket is SSE enabled and then encrypt using SSE AES256:
#!/bin/bash
#List all buckets and store names in a array.
arr=(`aws s3api list-buckets --query "Buckets[].Name" --output text`)
# Check the status before encryption:
for i in "${arr[@]}"
do
        echo "Check if SSE is enabled for bucket -> ${i}"
        aws s3api get-bucket-encryption --bucket ${i}  | jq -r .ServerSideEncryptionConfiguration.Rules[0].ApplyServerSideEncryptionByDefault.SSEAlgorithm

done

# Encrypt all buckets in your account:
for i in "${arr[@]}"
do
        echo "Encrypting bucket with SSE AES256 for -> ${i}"
        aws s3api put-bucket-encryption --bucket ${i}  --server-side-encryption-configuration '{"Rules": [{"ApplyServerSideEncryptionByDefault": {"SSEAlgorithm": "AES256"}}]}'

done

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章