RDSのCloudFormationテンプレートを作成している際に、KMSのAWSマネージド型キーのエイリアス名を値として指定するときに気づいた注意点を共有したいと思います。この注意点は、AWS RDSだけでなく、他のサービスでもCloudFormationでKMSのAWSマネージド型キーのエイリアス名を指定する際に共通して適用されると思います。
RDSマネジメントコンソールではaws/
プレフィックスになっている
RDSマネジメントコンソールでは、aws/secretsmanager
のような形式で表示されているため、そのままパラメータの値として使用できると考えがちですが、実際には異なる形式で指定する必要があります。
KMSエイリアス名の注意点
KMSのエイリアス名には、
aws/
プレフィックスが予約されています。
スタック作成の際のエラーメッセージによると指定されたKMSキー(aws/secretsmanager
)に関連する問題があるとのことで以下のいずれかの状況が発生している可能性があるようです。
- 指定されたKMSキー(
aws/secretsmanager
)が存在しない。 - 指定されたKMSキーが有効化されていない。
- 現在のユーザーが指定されたKMSキーにアクセスできない。
Resource handler returned message: "The specified KMS key [aws/secretsmanager] either doesn't exist, isn't enabled, or isn't accessible by the current user. Either specify a different key or access the key with a different user."
aws/secretsmanager
は存在してマネジメントコンソールで作成する時に利用できたのに、CloudFormation作成する時に同じ値を指定するとエラーが出てます。
対処方法
KMSキーのエイリアス名を指定する際には、alias/aws/
プレフィックス形式で指定する必要があります。例えば、alias/aws/secretsmanager
のような形式で指定することで、スタック作成時にエラーを回避できます。
KMSキーのエイリアス名について
エイリアス名の形式は次のとおりです。
alias/<alias-name>
例:
alias/aws/secretsmanager
まとめ
AWS CloudFormationでスタックを作成する際に、マネージドキーのエイリアス名を指定する場合は、aws/
プレフィックスではなく、alias/aws/
プレフィックスを使用しましょう。