翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS CDK アスペクトとエスケープハッチを使用してデフォルトのロール名をカスタマイズする
作成者 SANDEEP SINGH (AWS) と James Jacob (AWS)
コードリポジトリ: cdk-aspects-override-example | 環境:本稼働 | テクノロジー: インフラストラクチャ DevOps、管理とガバナンス |
AWS サービス: AWS CDK、AWS CloudFormation、AWSLambda |
[概要]
このパターンは、 AWS Cloud Development Kit (AWS CDK) コンストラクトによって作成されるロールのデフォルト名をカスタマイズする方法を示しています。組織で命名規則に基づいて特定の制約がある場合は、多くの場合、ロール名のカスタマイズが必要です。例えば、組織では、ロール名に特定のプレフィックスを必要とする AWS Identity and Access Management (IAM) アクセス許可の境界またはサービスコントロールポリシー (SCPs) を設定することができます。このような場合、 AWS CDK コンストラクトによって生成されたデフォルトのロール名がこれらの規則を満たさない可能性があり、変更する必要がある場合があります。このパターンは、エスケープハッチと の側面を使用して、これらの要件に対処します AWS CDK。エスケープハッチを使用してカスタムロール名を定義し、すべてのロールにカスタム名を適用する側面を定義して、組織のポリシーと制約を確実に順守します。
前提条件と制限
前提条件
アクティブな AWS アカウント
AWS CDK ドキュメントで指定されている前提条件
制約事項
Aspects はリソースタイプに基づいてリソースをフィルタリングするため、すべてのロールが同じプレフィックスを共有します。ロールごとに異なるロールプレフィックスが必要な場合は、他のプロパティに基づく追加のフィルタリングが必要です。例えば、 AWS Lambda 関数に関連付けられているロールに異なるプレフィックスを割り当てるには、特定のロール属性またはタグでフィルタリングし、Lambda 関連のロールには 1 つのプレフィックスを、他のロールには別のプレフィックスを適用できます。
IAM ロール名の最大長は 64 文字であるため、この制限を満たすには、変更されたロール名をトリミングする必要があります。
一部の AWS のサービス は、すべての で利用できるわけではありません AWS リージョン。リージョンの可用性については、AWS のサービス リージョン別の
「」を参照してください。特定のエンドポイントについては、「サービスエンドポイントとクォータ」ページを参照し、サービスのリンクを選択します。
アーキテクチャ
ターゲットテクノロジースタック
AWS CDK
AWS CloudFormation
ターゲット アーキテクチャ
AWS CDK アプリケーションは 1 つ以上の AWS CloudFormation スタックで構成され、 AWS リソースを管理するために合成およびデプロイされます。
レイヤー 2 (L2) コンストラクトによって公開されない AWS CDKマネージドリソースのプロパティを変更するには、エスケープハッチを使用して基盤となる CloudFormation プロパティ (この場合はロール名) を上書きし、 AWS CDK スタック合成プロセス中に AWS CDK アプリケーション内のすべてのリソースにロールを適用する の側面を使用します。
ツール
AWS のサービス
AWS Cloud Development Kit (AWS CDK) は、コードで AWS クラウド インフラストラクチャを定義およびプロビジョニングするのに役立つソフトウェア開発フレームワークです。
AWS CDK コマンドラインインターフェイス (AWS CDK CLI) ( AWS CDK ツールキットとも呼ばれます) は、 AWS CDK アプリの操作に役立つコマンドラインクラウド開発キットです。CLI
cdk
コマンドは、 AWS CDK アプリケーションを操作するための主要なツールです。アプリケーションを実行し、定義したアプリケーションモデルを調査し、 によって生成された CloudFormation テンプレートを生成してデプロイします AWS CDK。AWS CloudFormation は、 AWS リソースをセットアップし、迅速かつ一貫してプロビジョニングし、 AWS アカウント リージョンと リージョンのライフサイクル全体を通じてリソースを管理するのに役立ちます。
コードリポジトリ
このパターンのソースコードとテンプレートは、 GitHub CDKAspects Override
ベストプラクティス
AWS 「規範ガイダンス」ウェブサイトAWS CDK の「 を使用して IaC プロジェクトを作成 TypeScript するためのベストプラクティス」を参照してください。
エピック
タスク | 説明 | 必要なスキル |
---|---|---|
をインストールします AWS CDK CLI。 | を AWS CDK CLIグローバルにインストールするには、 コマンドを実行します。
| AWS DevOps |
バージョンを確認します。 | コマンドを実行します。
のバージョン 2 を使用していることを確認します AWS CDK CLI。 | AWS DevOps |
AWS CDK 環境をブートストラップします。 | AWS CloudFormation テンプレートをデプロイする前に、使用する アカウントと を準備 AWS リージョン します。 コマンドを実行します。
詳細については、 AWS ドキュメントのAWS CDK ブートストラップを参照してください。 | AWS DevOps |
タスク | 説明 | 必要なスキル |
---|---|---|
プロジェクトを設定します。 |
| AWS DevOps |
によって割り当てられたデフォルトのロール名を持つスタックをデプロイします AWS CDK。 | Lambda 関数と関連するロールを含む 2 つの CloudFormation スタック (
コードはロールプロパティを明示的に渡さないため、ロール名は によって作成されます AWS CDK。 出力例については、「追加情報」セクションを参照してください。 | AWS DevOps |
側面を持つスタックをデプロイします。 | このステップでは、 AWS CDK プロジェクトにデプロイされているすべてのロールにプレフィックスを追加してIAM、ロール名規則を適用する側面を適用します。側面は
出力の例については、「追加情報」セクションを参照してください。 | AWS DevOps |
タスク | 説明 | 必要なスキル |
---|---|---|
AWS CloudFormation スタックを削除します。 | このパターンの使用が完了したら、次のコマンドを実行してリソースをクリーンアップし、追加コストが発生しないようにします。
| AWS DevOps |
トラブルシューティング
問題 | ソリューション |
---|---|
を使用して問題が発生する。 AWS CDK | AWS CDK ドキュメントの「一般的な AWS CDK 問題のトラブルシューティング」を参照してください。 |
関連リソース
追加情報
側面 AWS CloudFormation のない によって作成されたロール名
Outputs: ExampleStack1WithoutAspects.Function1RoleName = example-stack1-without-as-Function1LambdaFunctionSe-y7FYTY6FXJXA ExampleStack1WithoutAspects.Function2RoleName = example-stack1-without-as-Function2LambdaFunctionSe-dDZV4rkWqWnI ... Outputs: ExampleStack2WithoutAspects.Function3RoleName = example-stack2-without-as-Function3LambdaFunctionSe-ygMv49iTyMq0
側面 AWS CloudFormation を持つ によって作成されたロール名
Outputs: ExampleStack1WithAspects.Function1RoleName = dev-unicorn-Function1LambdaFunctionServiceRole783660DC ExampleStack1WithAspects.Function2RoleName = dev-unicorn-Function2LambdaFunctionServiceRole2C391181 ... Outputs: ExampleStack2WithAspects.Function3RoleName = dev-unicorn-Function3LambdaFunctionServiceRole4CAA721C