【问题标题】:How to dynamically attach a resource to an inline policy using Terraform?如何使用 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 块来解释。

标签: terraform terraform-provider-aws policy


【解决方案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 执行角色。我假设您在代码的未显示部分执行此操作。

【讨论】:

    猜你喜欢
    • 2021-05-20
    • 1970-01-01
    • 2020-10-31
    • 2020-03-23
    • 2018-01-11
    • 2019-05-15
    • 2020-11-23
    • 2021-06-09
    • 2023-01-05
    相关资源
    最近更新 更多