Motivation
Terraform で AWS App Runnerを使うときにECRからアプリケーションをデプロイするときはIAMロールが必要になります。
対処
- AWS App Runnerのビルド用のインスタンスロールを作成する
- ECRへのアクセス用のポリシーをアタッチする
- "authentication_configuration" にインスタンスロールのARNを設定する
AWS App Runnerのビルド用のインスタンスロールを作成する
ポリシードキュメント
data "aws_iam_policy_document" "app_runner_build_policy_document" {
statement {
actions = ["sts:AssumeRole"]
principals {
type = "Service"
identifiers = ["build.apprunner.amazonaws.com"]
}
}
}
#### インスタンスロールの作成
```terraform
resource "aws_iam_role" "app_runner_build_role" {
name = "AWSAppRunnerBuildRole"
assume_role_policy = data.aws_iam_policy_document.app_runner_build_policy_document.json
}
ECRへのアクセス用のポリシーをアタッチする
resource "aws_iam_role_policy_attachment" "ecr_read_only_policy_attachment" {
policy_arn = "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"
role = aws_iam_role.app_runner_build_role.name
}
"authentication_configuration" にインスタンスロールのARNを設定する
authentication_configuration {
access_role_arn = "先ほど作成したインスタンスロールのARN"
}