2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Terraform + AWS App Runner + AWS Secrets Manager を使うときの IAM Role

Posted at

Motivation

Terraform で AWS App Runner と AWS Secrets Manager を使うとき、IAMロールを設定する必要があります。例えばAPI Keyを設定するときに必要になります。

対処

以下の順序で設定します。App Runnerではインスタンスロールを使って、AWS Secrets Managerにアクセスさせられます。

  1. App Runnerのインスタンスロールのポリシードキュメントを作成する
  2. App Runnerのインスタンスロールを作成する
  3. AWS Secrets Managerのポリシーを作成する
  4. AWS Secrets ManagerのポリシーをApp Runnerのインスタンスロールに割り当てる

App Runnerのインスタンスロールのポリシードキュメントを作成する

ポイントは "tasks.apprunner.amazonaws.com" です。ちなみに `"build.apprunner.amazonaws.com" もあって、ECRにアクセスするときに使います。

data "aws_iam_policy_document" "app_runner_secrets_policy_document" {
  statement {
    actions = ["sts:AssumeRole"]

    principals {
      type        = "Service"
      identifiers = ["tasks.apprunner.amazonaws.com"]
    }
  }
}

App Runnerのインスタンスロールを作成する

名称は任意です。

resource "aws_iam_role" "app_runner_role" {
  name               = "AWSAppRunnerTaskExecutionRole"
  assume_role_policy = data.aws_iam_policy_document.app_runner_secrets_policy_document.json
}

AWS Secrets ManagerのポリシーをApp Runnerのインスタンスロールに割り当てる

No.3 & 4 を同時に設定しています。

resource "aws_iam_role_policy" "secretmanager" {
  name = "secretmanager"
  role = "No.2で設定したロールのID"

  policy = jsonencode({
    Version = "2012-10-17"
    Statement : [
      {
        Action : [
          "secretsmanager:GetSecretValue"
        ],
        Effect : "Allow"
        Resource : [
            "取得したいSecrets ManagerのARN"
        ]
      }
    ]
  })
}
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?