获取 terraform 中已创建资源的列表
Get a list of created resources in terraform
我正在通过 Terraform 创建 AWS ECR 存储库
resource "aws_ecr_repository" "repo1" {
name = "repo1"
image_tag_mutability = "MUTABLE"
image_scanning_configuration {
scan_on_push = true
}
}
resource "aws_ecr_repository" "repo2" {
name = "repo2"
image_tag_mutability = "MUTABLE"
image_scanning_configuration {
scan_on_push = true
}
}
现在我想将策略附加到所有 ECR 存储库。
问题是,是否有一种动态方式来创建使用 terraform 脚本创建的所有资源(类型为 ECR)的列表?如果是,那么我们可以在该列表上添加 for_each
并附上政策。
或者有什么更好的方法吗?
P.S。我知道我可以通过为每个人写下以下内容来附加政策。我想避免重复并避免如果有人错过了该块就没有附加策略的情况
resource "aws_ecr_lifecycle_policy" "insights_repository_policy" {
repository = aws_ecr_repository.insights_repository.name
policy = local.ecr_cleanup_policy
}
编辑:问题 2
我想授予某些帐户访问权限。如果我使用存储库列表来创建,然后我想为每个帐户分配策略,那么它会产生嵌套的 for 循环。有更清洁的解决方案吗?
local {
accounts = {test=account_id_123, prod=account_id_456}
}
resource "aws_ecr_repository_policy" "access-permission" {
for_each = local.accounts
policy = <<POLICY
...
POLICY
repository = aws_ecr_repository.repo_template.name
}
不在你的表单中。如果用for_each or count就更好了。例如:
variable "repos" {
default = ["repo1", "repo2"]
}
resource "aws_ecr_repository" "repo" {
for_each = to_set(var.repos)
name = each.key
image_tag_mutability = "MUTABLE"
image_scanning_configuration {
scan_on_push = true
}
}
那么你可以这样做:
resource "aws_ecr_lifecycle_policy" "insights_repository_policy" {
for_each = aws_ecr_repository.repo
repository = each.value.name
policy = local.ecr_cleanup_policy
}
我正在通过 Terraform 创建 AWS ECR 存储库
resource "aws_ecr_repository" "repo1" {
name = "repo1"
image_tag_mutability = "MUTABLE"
image_scanning_configuration {
scan_on_push = true
}
}
resource "aws_ecr_repository" "repo2" {
name = "repo2"
image_tag_mutability = "MUTABLE"
image_scanning_configuration {
scan_on_push = true
}
}
现在我想将策略附加到所有 ECR 存储库。
问题是,是否有一种动态方式来创建使用 terraform 脚本创建的所有资源(类型为 ECR)的列表?如果是,那么我们可以在该列表上添加 for_each
并附上政策。
或者有什么更好的方法吗?
P.S。我知道我可以通过为每个人写下以下内容来附加政策。我想避免重复并避免如果有人错过了该块就没有附加策略的情况
resource "aws_ecr_lifecycle_policy" "insights_repository_policy" {
repository = aws_ecr_repository.insights_repository.name
policy = local.ecr_cleanup_policy
}
编辑:问题 2 我想授予某些帐户访问权限。如果我使用存储库列表来创建,然后我想为每个帐户分配策略,那么它会产生嵌套的 for 循环。有更清洁的解决方案吗?
local {
accounts = {test=account_id_123, prod=account_id_456}
}
resource "aws_ecr_repository_policy" "access-permission" {
for_each = local.accounts
policy = <<POLICY
...
POLICY
repository = aws_ecr_repository.repo_template.name
}
不在你的表单中。如果用for_each or count就更好了。例如:
variable "repos" {
default = ["repo1", "repo2"]
}
resource "aws_ecr_repository" "repo" {
for_each = to_set(var.repos)
name = each.key
image_tag_mutability = "MUTABLE"
image_scanning_configuration {
scan_on_push = true
}
}
那么你可以这样做:
resource "aws_ecr_lifecycle_policy" "insights_repository_policy" {
for_each = aws_ecr_repository.repo
repository = each.value.name
policy = local.ecr_cleanup_policy
}