Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何在Amazon AWS S3 bucket中查找未加密的文件?_Amazon Web Services_Amazon S3 - Fatal编程技术网

Amazon web services 如何在Amazon AWS S3 bucket中查找未加密的文件?

Amazon web services 如何在Amazon AWS S3 bucket中查找未加密的文件?,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,我拥有:几个旧的s3存储桶,每个存储桶中有1M个对象,服务器端加密已打开 问题:旧文件未加密。我不能说加密是什么时候开启的。 所以,我需要找到所有未加密的文件 我用awscli尝试了解决方案,但速度非常慢-2秒内1个请求 我的解决方案: s3_buckets="uploads tmp logs whatever " for s3_bucket in $s3_buckets; do aws s3 ls s3://$s3_bucket --recursive \ | awk '{pr

我拥有:几个旧的s3存储桶,每个存储桶中有1M个对象,服务器端加密已打开

问题:旧文件未加密。我不能说加密是什么时候开启的。 所以,我需要找到所有未加密的文件

我用
awscli
尝试了解决方案,但速度非常慢-2秒内1个请求

我的解决方案:

s3_buckets="uploads tmp logs whatever "
for s3_bucket in $s3_buckets;
do
    aws s3 ls s3://$s3_bucket --recursive \
    | awk '{print $NF}' \
    | ( while read object ; 
        do 
            object_status=$(aws s3api head-object --bucket $s3_bucket --key $object --query ServerSideEncryption --output text 2>&1) 
            if [ "$object_status" != "AES256" ]; then
                echo "Unencrypted object $object in s3://$s3_bucket"; >> /tmp/body.tmp
                objects_unencrypted=$((objects_unencrypted + 1))
            fi
            objects_count=$((objects_count + 1))
        done
    echo "Bucket $s3_bucket has $objects_count, where unencrypted $objects_unencrypted." >> /tmp/body.tmp )
done
那么,也许有更好的解决方案


是否可以创建
Cloudwatch
度量来显示未加密的字段?或者其他的?

恐怕没有比列出所有文件并逐个检查加密更好的解决方案了。(另见)

没有关于加密的cloudwatch指标。有关指标的列表,请参阅

也就是说,您可以通过编写python或节点脚本来加快这一过程。它将比上面的shell脚本运行得更快,因为它不需要为每个对象生成一个进程(以及完整的python运行时)

上面的URL给出了节点中的一个示例。Python也是如此

另一种加速进程的方法是并行运行多个脚本,每个脚本都处理名称空间的一部分。假设对象键名称分布均匀(对象键的第一个字母为[a-z],对象键的第一个字母分布均匀):您可以创建26个脚本,每个脚本列出一个字母(所有键以“a”开头,所有键以“b”开头等),并并行运行这些脚本。这将利用S3的大规模并行性。字母示例可以替换为更适合您的用例的任何内容

为了最小化脚本和S3之间的延迟,我将在一个小EC2实例上运行脚本,该实例与您的bucket运行在同一区域。

使用

库存列表包含S3存储桶中的对象列表,每个列出对象的元数据包括:

  • 加密状态–设置为SSE-S3、SSE-C、SSE-KMS或NOT-SSE。SSE-S3、SSE-KMS和带有客户提供密钥(SSE-C)的SSE的服务器端加密状态。NOT-SSE状态表示对象未使用服务器端加密进行加密

是的,我对并行执行也有类似的想法。谢谢你的选择。是的,这就是我需要的。