![](/img/trans.png)
[英]How to enable server side encryption for multiple S3 buckets using AWS CLI?
[英]How can i list all the S3 buckets with some specific tag using cli?
我正在尝试使用环境和服务标签获取所有 S3 存储桶。 我有将近 200 个桶……我该怎么做……请帮帮我
aws s3api list-buckets
上面的命令列出了所有带有创建日期的存储桶名称...如何列出所有带有特定标签的存储桶。 我搜索了很多博客,但我无法获得获取带有标签的存储桶的确切命令。我尝试使用 jq 命令,例如
aws s3api list-buckets | jq .Buckets[].Name
我收到以下错误:
Invalid numeric literal at line 2, column 0
我的 aws s3api list-buckets 输出
2019-01-24T04:53:07.000Z | aws-xxx ||
|| 2019-02-18T18:33:15.000Z | aws-yyy
您应该使用“get-bucket-tagging”api 来获取与您的存储桶关联的标签。
https://docs.aws.amazon.com/cli/latest/reference/s3api/get-bucket-tagging.html
我在 github 中找到了一个简单的脚本来完成这项工作。 我希望这对你有用。
如果您的目标是查找具有特定标签的资源(例如 Amazon EC2 实例、Amazon S3 存储桶),请查看 什么是 AWS 资源组? :
您可以使用资源组来组织您的 AWS 资源。 资源组可以更轻松地同时管理和自动化大量资源上的任务。 本指南向您展示如何在 AWS 资源组中创建和管理资源组。
您可以通过 AWS resource-groups
CLI 执行此操作
示例: https : //awscli.amazonaws.com/v2/documentation/api/latest/reference/resource-groups/search-resources.html#examples
但是 Web UI 似乎更强大,它由指向每个资源的链接和到 csv 的导出选项组成。 https://console.aws.amazon.com/resource-groups/tag-editor/find-resources
我找不到一种明智的方法来做到这一点,我认为您甚至无法通过用户界面中的标签进行搜索。
但是你可以做类似的事情
s3_buckets_with_cache() {
local S3CACHE JSONBUCKETS bucketwithtags tags
S3CACHE="${DIR_CACHE}/s3buckets.json"
if [[ ! -f ${S3CACHE} ]]; then
JSONBUCKETS='{"buckets":[]}'
IFS=$'\n'
for bucket in $(aws s3api list-buckets | jq .Buckets[].Name -r); do
tags=$(aws s3api get-bucket-tagging --bucket "${bucket}" 2>/dev/null)
# shellcheck disable=SC2181
[[ "$?" -ne 0 ]] && continue
tags=$(echo "${tags}" | jq -c '.[][] | {(.Key): .Value}' | jq --slurp .)
[[ "${tags}" == "[]" ]] && continue
bucketwithtags="{\"bucket\": \"${bucket}\", \"tags\" : ${tags} }"
JSONBUCKETS=$(echo "${JSONBUCKETS}" | jq ".buckets += [${bucketwithtags}]")
done
echo "${JSONBUCKETS}" >"${S3CACHE}"
fi
cat "${S3CACHE}"
}
然后用
AWS_BUCKET_NAME=$(s3_buckets_with_cache | jq -r '.buckets[]
| select(.tags[].foo == "bar" and .tags[].abc == "xyz") | .bucket')
虽然这没有缓存失效或类似的东西,但您可以轻松检查文件的时间戳并以这种方式使其失效。
而且我只添加了缓存,因为我必须为它们的标签抓取 3000 个存储桶,而且我不想每次需要按标签获取存储桶名称时都这样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.