ベストプラクティス - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ベストプラクティス

L1 コンストラクト

  • L1 コンストラクトを直接使用することは必ずしも避けることはできませんが、可能な限り避ける必要があります。特定の L2 コンストラクトがエッジケースをサポートしていない場合は、L1 コンストラクトを直接使用する代わりに、次の 2 つのオプションを調べることができます。

    • アクセスdefaultChild 必要な CloudFormation プロパティが L2 コンストラクトで利用できない場合は、 を使用して基盤となる L1 コンストラクトにアクセスできますL2Construct.node.defaultChild。L1 コンストラクトのパブリックプロパティを更新するには、L1 コンストラクトを自分で作成するのではなく、このプロパティからアクセスします。

    • プロパティオーバーライドを使用する: 更新するプロパティがパブリックでない場合はどうなりますか? AWS CDK が CloudFormation テンプレートでできることをすべて実行できる最終的なエスケープハッチは、すべての L1 コンストラクトで使用できるメソッド addPropertyOverride を使用することです。CloudFormation テンプレートレベルでスタックを操作するには、CloudFormation プロパティ名と値をこのメソッドに直接渡します。

L2 コンストラクト

  • L2 コンストラクトが頻繁に提供するヘルパーメソッドを活用することを忘れないでください。レイヤー 2 では、インスタンス化時にすべてのプロパティを渡す必要はありません。L2 ヘルパーメソッドは、特に条件付きロジックが必要な場合に、リソースのプロビジョニングを指数関数的に便利にすることができます。最も便利なヘルパーメソッドの 1 つは Grant クラスから派生しています。このクラスは直接使用されませんが、多くの L2 コンストラクトはこれを使用して、アクセス許可を実装しやすくするヘルパーメソッドを提供します。たとえば、L2 Lambda 関数に L2 S3 バケットへのアクセス許可を付与する場合は、新しいロールとポリシーを作成するs3Bucket.grantReadWrite(lambdaFunction)代わりに を呼び出すことができます。

L3 コンストラクト

  • L3 コンストラクトは、スタックをより再利用可能でカスタマイズ可能なものにする場合に非常に便利ですが、慎重に使用することをお勧めします。どのタイプの L3 コンストラクトが必要か、または L3 コンストラクトをまったく必要かを検討してください。

    • AWS リソースと直接やり取りしていない場合は、クラスを拡張するのではなく、ヘルパーConstructクラスを作成する方が適していることがよくあります。これは、 Construct クラスが、リソースと直接やり取りしている場合にのみ必要な多くのアクションをデフォルトで実行するためです AWS 。したがって、これらのアクションを実行する必要がない場合は、それらを回避する方が効率的です。

    • 新しい L3 コンストラクトの作成が適切であると判断した場合は、ほとんどの場合、Constructクラスを直接拡張する必要があります。コンストラクトのデフォルトプロパティを更新する場合にのみ、他の L2 コンストラクトを拡張します。他の L2 コンストラクトまたはカスタムロジックが関与する場合は、Construct直接拡張し、コンストラクタ内のすべてのリソースをインスタンス化します。