🪪
[AWS Amplify]Functionのcustom-policies.jsonで変数を使う
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