如何使用 Terraform 将资源动态附加到内联策略?
Posted
技术标签:
【中文标题】如何使用 Terraform 将资源动态附加到内联策略?【英文标题】:How to dynamically attach a resource to an inline policy using Terraform? 【发布时间】:2021-02-17 17:11:56 【问题描述】:我正在创建一个内联策略并且我想动态附加一个资源。
这是我的政策:
resource "aws_iam_policy" "lambda_secret_policy"
name = "$var.name-lambda-role"
description = "grants lambda access to secret manager"
assume_role_policy = <<EOF
"Version": "2012-10-17",
"Statement": [
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue",
],
"Resource": [
<where I would like to dynamically assign the exampleSecretResource resource>
]
]
EOF
这是我想动态附加的资源:
data "aws_secretsmanager_secret" "exampleSecretResource"
arn = var.secretArn
因此,我使用data
块获得了exampleSecretResource
,并希望将其附加到上述策略中的资源列表中。这可能是内联的还是我需要使用资源块显式构建策略?
如果我可以动态附加,内联,我会怎么做? (我在这里使用正确的术语吗?)
【问题讨论】:
什么是exampleSecretResource
?一个角色,一个托管策略?你能举出它的例子吗?
添加了 data
块来解释。
【参考方案1】:
如果我理解正确,以下应该可以满足您的要求:
data "aws_secretsmanager_secret" "exampleSecretResource"
arn = var.secretArn
resource "aws_iam_policy" "lambda_secret_policy"
name = "$var.name-lambda-role"
description = "grants lambda access to secret manager"
assume_role_policy = <<EOF
"Version": "2012-10-17",
"Statement": [
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue",
],
"Resource": [
"$data.aws_secretsmanager_secret.exampleSecretResource.arn"
]
]
EOF
显然,aws_iam_policy.lambda_secret_policy
必须附加到实际的 lambda 执行角色。我假设您在代码的未显示部分执行此操作。
【讨论】:
以上是关于如何使用 Terraform 将资源动态附加到内联策略?的主要内容,如果未能解决你的问题,请参考以下文章