[英]Only get existing resources with ResourceGroupTaggingAPI
我正在使用 AWS ResourceGroupTagginApi(get-resources 命令, https://docs.aws.amazon.com/cli/latest/reference/resourcegroupstaggingapi/get-resources.html )列出我账户中的所有资源并检查是否标签是按照我的意愿设置的。
不,我注意到 get-resources 命令还返回我已经删除的资源。
ResourceGroupTagginApi 对我的好处是,我可以使用一个命令获取所有资源和标签,而且我不必调用服务特定的 api(我必须为每个服务单独实现)。
如何只返回没有被删除的资源? 或者如何在不使用服务特定 API 的情况下过滤掉已经删除的资源?
我想这样做,但找不到办法。 由于我的雇主有一份 AWS 支持合同,我为此提出了一张罚单; 回应的重要一点是:
请注意,目前这是资源组标记的一个已知问题,调用 get-resources 时仍会返回过时/已删除的资源标记。 我已将您的案例添加到已知问题中,以便更好地确定开发的优先级。
所以希望这可能会在未来得到解决。
我也经历过同样的“悬挂标签”不当行为, 在 repost.aws和boto3 项目中有提及。 在我的例子中,我有一些额外的数据,因为我使用脚本试图在执行 IaC 销毁进程后检查实际状态:
echo "Scanning account for profile ${AWS_PROFILE} for all resources.."
REGIONS="us-east-1 us-east-2 us-west-1 us-west-2"
for _REGION in $REGIONS ; do
printf "Dumping all resources in ${GREEN}${_REGION}${RESET} for profile ${AWS_PROFILE} into file: all-resources-in-${GREEN}${_REGION}${RESET}.json.."
aws resourcegroupstaggingapi get-resources --region $_REGION > all-resources-in-${_REGION}.json
echo ". found ${GREEN}$(grep ResourceARN all-resources-in-${_REGION}.json | wc -l) ${RESET}ResourceARNs"
done
我对此处对话的唯一补充是,似乎有一个清晰的模式,即删除后似乎只有一些资源会保留下来。 在我当前的项目中,我只注意到以下带有“粘性标签”的资源:
...其中,1. NAT 网关是最粘性的。 我经常观察到安全组首先从列表中消失,然后是 NAT 网关。 也许这是关于根本原因的暗示,或者这是一个转移注意力的问题。
请注意,这是在一个 terraform 项目中创建/销毁当然只是 AWS 资源类型的一小部分,但它至少包括:VPC、子网、RT、IGW、NatGw、SG、ACL、EC2、EKS、托管节点组、ElasticIps、LaunchTemplates、AutoscalingGroups 等。
因此,我建议您确定哪些资源类型在您的环境中始终“具有粘性”,并将其过滤掉。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.