2017-07-10 12 views
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ファイルに出力しますか?

答えて

関連する問題