*️⃣
AWS SAMテンプレートに埋め込むSecret Manager値
テンプレートの書き方
Secret Managerに登録したシークレット値をSAMテンプレートで展開するやり方はこちら
SendRequestFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: path/to/function-code.ts
Environment:
Variables:
SERVER_INFO: '{{resolve:secretsmanager:server_info}}' # <-- これ
Secret値が変わったとき
Secret Manager上の値を差し替えただけでは、Lambda環境変数は更新されない。
方法は主に2つ。
1. 手で更新する
一番確実かつ楽な方法。
Lambda環境変数側の値もSecret Manager値と同様に更新する。
2. Lambda関数の更新を発生させる
先ほどの例だとこのように、適当な環境変数を追加するなどでLambda関数に更新を発生させる。
SendRequestFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: path/to/function-code.ts
Environment:
Variables:
SERVER_INFO: '{{resolve:secretsmanager:server_info}}'
DUMMY_VERSION: '1' # <-- 追加
これでデプロイすればSecret Manager値の解決が行われるので、 SERVER_INFO
は最新の値になる。
その後 DUMMY_VERSION
は削除して再度デプロイ。
補足:公式ドキュメント
リファレンスパターンとしてシークレット値のバージョンを含められるようなので、ここで指定してデプロイすれば一発でいけるのかな?
{{resolve:secretsmanager:secret-id:secret-string:json-key:version-stage:version-id}}
Discussion