ENECHANGE Developer Blog

ENECHANGE開発者ブログ

TerraformでIAM policy変数をプレースホルダーとして使用する

Operations Tips vol7

こんにちは。全社でリモートワークがメインとなり社内SE業務が増加気味のCTO室のkazです。

policyを記述するときにresoruceやconditionがわからない。または、リクエストのコンテキストから取得された値に置き換えたい場合、AWS Identity and Access Managementのpolicy変数をプレースホルダーとして使用することはよくあります。

terraformで${}構文は補間関数として評価するので、IAMpolicy変数として使用する場合、ダブルエスケープを用います。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Resource": [
                "arn:aws:iam::123456789012:user/cto_user/$${aws:username}",
                "arn:aws:iam::123456789012:mfa/$${aws:username}"
            ],