🧐
「AssumeRole policy may only specify STS AssumeRole actions」の解決策
TerraformでIAMロールを作るときにapplyすると以下のエラーが発生する。
Terraform Version 1.1.7
Provider version 4.5
Error: failed creating IAM Role (xxxxxxx-iam-role): MalformedPolicyDocument: AssumeRole policy may only specify STS AssumeRole actions.
│ status code: 400, request id: xxxxxxxxxxxxxxxxxxxxx
│
│ with aws_iam_role.app_iam_role,
│ on iam.tf line 20, in resource "aws_iam_role" "app_iam_role":
│ 20: resource "aws_iam_role" "app_iam_role" {
原因
IAMロールの信頼ポリシーのdataブロックで、actions = ["sts:assumerole"]と書いていたのが原因。
actions = ["sts:AssumeRole"]
のように、各単語の1文字目を大文字で書くcamel caseで書かないといけなかった。
data "aws_iam_policy_document" "ec2_assume_role" {
statement {
actions = ["sts:assumerole"] # ココが原因
principals {
type = "Service"
identifiers = ["ec2.amazonaws.com"]
}
}
}
AssumeRole policy may only specify STS AssumeRole actions.
って言われるから、「いや、アクションしか書いてないけどな?」ってハマってたが、解決してみると単純すぎて脱力した。
Discussion