1
$ {aws:username}を含むHCL文字列を "Resource"セクションからエスケープする方法は?
は、私は現在、次のようにmain.tfファイル内AWSポリシーを作成するために、テラフォームバージョン0.9.9を使用します。
resource "aws_iam_group_policy" "AllowIndividualUserToSeeTheirAccountInformation" {
name = "AllowIndividualUserToSeeTheirAccountInformation"
group = "${aws_iam_group.pr_faas_developers.id}"
policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"iam:ChangePassword",
"iam:CreateLoginProfile",
"iam:DeleteLoginProfile",
"iam:GetAccountPasswordPolicy",
"iam:GetAccountSummary",
"iam:GetLoginProfile",
"iam:UpdateLoginProfile"
],
"Effect": "Allow",
"Resource":
[
"arn:aws:iam::XXXXXXXXX:user/${aws:username}"
]
}
]
}
EOF
}
その際、テラフォームが
${aws:username}
を補間しようとテラフォームとして失敗するつもりです
次のように私はリソース文字列をエスケープしていた場合
terraform.exe plan
Failed to load root config module: Error loading D:\amazonaws-root-master\main.t
f: Error reading config for aws_iam_group_policy[AllowIndividualUserToSeeTheirAc
countInformation]: parse error at 17:51: expected "}" but found ":"
を、次のとおりです。
"Resource":
[
"arn:aws:iam::XXXXXXXXX:user/\\$\\{aws\\:username\\}"
]
"terraform plan"
と"terraform apply"
は正常に動作しようとしているが、AWSショーのポリシー内の結果は次のとおりです。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"iam:ChangePassword",
"iam:CreateLoginProfile",
"iam:DeleteLoginProfile",
"iam:GetAccountPasswordPolicy",
"iam:GetAccountSummary",
"iam:GetLoginProfile",
"iam:UpdateLoginProfile"
],
"Effect": "Allow",
"Resource":
[
"arn:aws:iam::XXXXXXXXX:user/\\$\\{aws:username\\}"
]
}
]
}
:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"iam:ChangePassword",
"iam:CreateLoginProfile",
"iam:DeleteLoginProfile",
"iam:GetAccountPasswordPolicy",
"iam:GetAccountSummary",
"iam:GetLoginProfile",
"iam:UpdateLoginProfile"
],
"Effect": "Allow",
"Resource":
[
"arn:aws:iam::XXXXXXXXX:user/${aws:username}"
]
}
]
}
は内"arn:aws:iam::XXXXXXXXX:user/${aws:username}"
を逃れるために任意の解決策はありますterraform main.tfファイルに出力しますか?
どうもありがとうございました - 作品! – Sascha15432