amazon-web-services - 如何使用 shell 脚本列出未使用的 AWS S3 存储桶和空存储桶?

标签 amazon-web-services shell amazon-s3 sh aws-cli

我正在寻找过去 90 天未使用的 s3 存储桶列表以及空存储桶列表。

为了得到它,我尝试编写如下代码:

#/bin/sh
for bucketlist in  $(aws s3api list-buckets --query "Buckets[].Name");
do
  listobjects=$(\
    aws s3api list-objects --bucket $bucketlist \
    --query 'Contents[?contains(LastModified, `2020-08-06`)]')
done

此代码打印以下输出:[我只添加了一个桶的结果以供引用]

{
    "Contents": [
        {
            "Key": "test2/image.png",
            "LastModified": "2020-08-06T17:19:10.000Z",
            "ETag": "\"xxxxxx\"",
            "Size": 179008,,
            "StorageClass": "STANDARD",
        }
    ]
}

期望:

  1. 在上面的代码中,我只想打印在过去 90 天内未修改/使用的对象列表。
  2. 我也在寻找空的遗愿 list

我不擅长编程,有人可以指导我吗? 预先感谢您的支持。

最佳答案

我制作了这个小的 bash 脚本来查找我帐户中的空桶:

#!/bin/zsh
for b in $(aws s3 ls | cut -d" " -f3)
do
  echo -n $b
  if [[ "$(aws s3api list-objects-v2 --bucket $b --max-items 1)" == "" ]]
  then
    echo " BUCKET EMPTY"
  else
    echo ""
  fi
done

我使用 list-objects-v2 列出了对象,最大项目数为 1。如果没有项目 - 结果为空,我在存储桶名称旁边打印“BUCKET EMPTY”。

  • 注意 1:您必须有权列出对象。
  • 注意 2:我不确定它如何适用于包含已删除对象的版本化存储桶(看起来是空的,但实际上包含已删除对象的旧版本)

关于amazon-web-services - 如何使用 shell 脚本列出未使用的 AWS S3 存储桶和空存储桶?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63301722/

相关文章:

django - 如何确定我的 Django 应用程序需要什么 AWS RDS 实例?

amazon-web-services - AWS Athena - 由于分区而重复列

java - 使用 AWS CLoudFormation 模板在 tomcat 上部署 java 应用程序的自定义说明书

amazon-web-services - 如何为 Elastic Beanstalk 实例应用 mod_rewrite 规则?

用于检查 shell 脚本是否正在运行的 Linux 命令

linux - 如何在 shell 脚本中表示列表或数组?

amazon-web-services - 拒绝除访问 S3 存储桶内私有(private)文件夹的用户之外的所有用户的访问

amazon-web-services - 如何使用 AWS Lambda 将 S3 对象备份到另一个账户的存储桶中?

amazon-web-services - 如何构建AWS CDK以进行产品开发

python - 从 bash 脚本向 python 传递参数