我是大型 AWS 部署的新手,其中大部分内容是通过 CloudFormation 部署的(有些是通过 Terraform 部署的)。但总有一些情况是手动部署而不是通过代码部署的。是否有可靠的方法来快速确定部署中已经存在的资源(例如 EC2 实例)是通过 IaC 部署还是手动部署?现在,特定于 CloudFormation 的答案就足够了。
手动检查数百个 CloudFormation 堆栈并查找资源不是一种选择。
我是大型 AWS 部署的新手,其中大部分内容是通过 CloudFormation 部署的(有些是通过 Terraform 部署的)。但总有一些情况是手动部署而不是通过代码部署的。是否有可靠的方法来快速确定部署中已经存在的资源(例如 EC2 实例)是通过 IaC 部署还是手动部署?现在,特定于 CloudFormation 的答案就足够了。
手动检查数百个 CloudFormation 堆栈并查找资源不是一种选择。
您可以识别由 cloudformation 创建的资源。Cloudformation 应用了一些默认标签,如此处所述
aws:cloudformation:logical-id
aws:cloudformation:stack-id
aws:cloudformation:stack-name
您可以运行脚本来检查资源是否包含一个/所有这些标签以更新您的计数。
不幸的是,查看 AWS 资源时,您看不到它是如何创建的。虽然某些资源可能已被 CloudFormation 标记,表明它们是由 CloudFormation 堆栈创建的,但这仅对资源子集有效。
确定资源是否通过 CloudFormation 堆栈创建的唯一可靠方法是遍历所有 CloudFormation 堆栈并检查相关资源是否是其中的一部分。虽然手动操作可能很麻烦,但您也可以使用 AWS CLI 自动执行此操作。