はじめに
AWS CDKを使用していると、次のようなエラーに遭遇することがあります:
TypeError: type of argument sources must be a sequence; got jsii._reference_map.InterfaceDynamicProxy instead
エラーの原因と解決策について詳しく説明します。
エラーの原因
このエラーは主に、CDKコンストラクトに渡すパラメータの型が正しくない場合に発生します。具体的には、sources
引数に期待される型(シーケンス型、例えばリストや配列)ではなく、単一のオブジェクトが渡されている場合に起こります。
解決策
1. パラメータをリストで囲む
最も一般的な解決策は、sources
パラメータを角括弧[]
で囲み、リストにすることです。
修正前:
my_construct = SomeConstruct(self, "MyConstruct",
sources=s3.Bucket(self, "MyBucket")
)
修正後:
my_construct = SomeConstruct(self, "MyConstruct",
sources=[s3.Bucket(self, "MyBucket")]
)
2. CDKのバージョンを確認
使用しているCDKのバージョンが最新であることを確認してください。古いバージョンを使用している場合、型の不一致が発生する可能性があります。
npm list -g aws-cdk
必要に応じて、最新版にアップデートしてください:
npm update -g aws-cdk
3. ドキュメントの確認
該当するCDKコンストラクトのドキュメントを確認し、sources
パラメータの正しい使用方法を確認することも重要です。AWS CDKの公式ドキュメントや、使用しているコンストラクトの具体的なAPIリファレンスを参照してください。
まとめ
AWS CDKでの TypeError: type of argument sources must be a sequence
エラーは、主にパラメータの渡し方の問題です。多くの場合、単一のオブジェクトをリストで囲むことで解決できます。また、CDKのバージョンが最新であることを確認し、必要に応じてドキュメントを参照することで、このような問題を回避できます。
エラーメッセージが難解に見えても、落ち着いて原因を分析し、適切な対処を行うことで、スムーズにAWS CDKの開発を進めることができます。