はじめに
SecretsManagerのシークレット名はstackでリソース作成時に自動生成していたのですが, いざその値を使いたいときにどうかけば良いか少しかかったので
解決
ImportValueの場合, JoinしながらImportValueを組み込めば終わります.
Parameters:
TestParameter:
Default: test-secret
Type: String
HogehogeSecretKey:
Fn::Join:
- ""
- - "{{resolve:secretsmanager:"
- !ImportValue ExampleSecret
- ":SecretString:SecretKey}}"
SubSample: !Sub "{{resolve:secretsmanager:${TestParameter}:SecretString:hoge}}"
注意点
逆のこと (resolveした値からRefなど)はできません
Parameters:
MyParameter:
Default: my-parameter-value
Type: String
Resources:
SampleLambda:
Type: AWS::Lambda::Function
Properties:
# ...
Environment:
Variables:
# MyParameterの値をRefしたいがエラー
RefSample: !Ref "{{resolve:secretsmanager:test-secret:SecretString:paramname}}"
必ず, 組み込み関数の処理後にresolveが行われます.
まとめ
パラメータストアなどでもですが, 利用の幅が広がりますね