🪪

[AWS Amplify]Functionのcustom-policies.jsonで変数を使う

2023/02/22に公開

Functionの中からSecretsManagerに保存されている情報にアクセスしようとしたところAccessDeniedと言われたので、なんとかお手軽に登録する方法はないかと思って調べていたところ、custom-policies.json にポリシーを直書きすることで解決できることがわかった。

一方で、その場合だとリージョンやアカウントIDが決めうちとなり、複数リージョン/複数アカウントにデプロイする際に問題となるため、回避策はないかと試したところ、内部的にはCloudFormationの記述がそのまま通ることがわかった。

以下に例を示す。

[
  {
    "Action": ["secretsmanager:GetSecretValue"],
    "Resource": [{
      "Fn::Sub": [
        "arn:aws:secretsmanager:${region}:${account}:secret:something/very_important_password-*",
        {
          "region": {
            "Ref": "AWS::Region"
          },
          "account": {
            "Ref": "AWS::AccountId"
          }
        }
      ]
    }]
  }
]

Discussion