🤖

CDK でハマった!リソースの参照ミス

2025/03/05に公開

AWS CDK を使っていると、「なぜかデプロイ時にエラーになる」ことがよくあります。今回遭遇したのは RDS のシークレット ARN をカスタムリソースに渡す処理で発生したエラー でした。

問題の発生

CDK で RDS クラスターを作成し、そのマスターユーザーのシークレット ARN を別のカスタムリソースに渡す処理をしていました。しかし、いざ cdk deploy を実行すると 「トークンの解決に失敗」 するエラーが発生。

CDK では、secretArn のようなプロパティは 実行時に確定する値 なので、リソースの作成順序が適切でないと参照が解決できずエラーになります。

エラーの原因

コードをよく見てみると、RDS クラスターのシークレット ARN を取得する際に、

MasterUserSecretArn: credential,

と書いていたのですが、credential ではなく credential.secretArn を使うべきでした。

この credential というオブジェクトは、RDS の認証情報を管理するリソースとして定義していたのですが、正しくが取得できず、以下のようなトークンの解決エラーが発生していました。

Resolution error: Resolution error: Trying to resolve() a Construct at /Resources/${Token[...]/Properties/MasterUserSecretArn/node..

(※実際のエラーメッセージは省略していますが、トークンの解決に失敗していることがポイントです)

解決策

正しいリソースの参照を確認し、credential.secretArn を使用することでエラーは解消しました。

MasterUserSecretArn: credential.secretArn,

ポイント:リソースの参照を間違えないこと!

まとめ

CDK を使うと AWS リソースの定義がシンプルに書けますが、 リソースの参照ミス には要注意!

もし CDK で「なんかトークンの解決に失敗してる!」というエラーに遭遇したら、「本当に正しいリソースを参照しているか?」 をまずチェックしてみてください!

Let's Happy Coding!

Discussion