翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS CDK を使用して AWS Service Catalog ポートフォリオと製品のデプロイを自動化する
作成者: Sandeep Gawande (AWS)、RAJNEESH TYAGI (AWS)、Viyoma Sachdeva (AWS)
概要
AWS Service Catalog は、組織の AWS 環境での使用が承認された IT サービスまたは製品のカタログを一元管理するのに役立ちます。ポートフォリオとは、製品の集合で、設定情報も含まれます。AWS Service Catalogでは、組織のユーザータイプごとにカスタマイズしたポートフォリオを作成し、適切なポートフォリオへのアクセス権を選択的に付与できます。そうすれば、ユーザーはポートフォリオ内から必要な製品をすばやくデプロイできます。
マルチリージョンアーキテクチャやマルチアカウントアーキテクチャなどの複雑なネットワークインフラストラクチャを使用している場合は、Service Catalog ポートフォリオを単一の中央アカウントで作成および管理することをお勧めします。このパターンでは、AWS Cloud Development Kit (AWS CDK) を使用して、中央アカウントでの Service Catalog ポートフォリオの作成を自動化し、エンドユーザーにそのポートフォリオへのアクセスを許可し、オプションで 1 つ以上のターゲット AWS アカウントに製品をプロビジョニングする方法を説明します。このすぐに使用できるソリューションにより、ソースアカウントに Service Catalog ポートフォリオが作成されます。また、オプションで AWS CloudFormation スタックを使用してターゲットアカウントに製品をプロビジョニングし、製品の TagOptions を設定するのに役立ちます。
AWS CloudFormation StackSets — StackSets を使用して、複数の AWS リージョンとアカウントにわたってService Catalog 製品を起動できます。このソリューションでは、このソリューションをデプロイするときに製品を自動的にプロビジョニングできます。詳細については、AWS CloudFormation StackSets (Service Catalog ドキュメント) と StackSets の概念 (CloudFormation ドキュメント) を参照してください。
TagOption ライブラリ — TagOption ライブラリを使用して、プロビジョニングされた製品のタグを管理できます。TagOption は AWS Service Catalog で管理されるキーと値のペアです。これは AWS のタグではありませんが、TagOption に基づいて AWS のタグを作成するためのテンプレートとして機能します。詳細については、TagOption ライブラリー との共有(Service Catalog ドキュメント) を参照してください。
前提条件と制限
前提条件
Service Catalog ポートフォリオを管理するためのソースアカウントとして使用するアクティブな AWS アカウント。
このソリューションを使用して 1 つ以上のターゲットアカウントに製品をプロビジョニングする場合、ターゲットアカウントはすでに存在し、アクティブである必要があります。
AWS Service Catalog、AWS CloudFormationおよび AWS IAM にアクセスするための AWS Identity and Access Management (IAM) 権限。
製品バージョン
AWS CDK バージョン 2.27.0
アーキテクチャ
ターゲットテクノロジースタック
一元管理された AWS アカウントのService Catalog ポートフォリオ
ターゲットアカウントにデプロイされたService Catalog 製品
ターゲット アーキテクチャ

ポートフォリオ (または ソース) アカウントで、config.json ファイルを AWS アカウント、AWS リージョン、IAM ロール、ポートフォリオ、ユースケースの製品情報で更新します。
AWS CDK アプリケーションをデプロイします。
AWS CDK アプリケーションはデプロイメント IAM ロールを引き受け、config.json ファイルに定義されているService Catalog ポートフォリオと製品を作成します。
ターゲットアカウントに製品をデプロイするように StackSets を設定した場合、プロセスは続行されます。製品をプロビジョニングするように StackSets を設定していない場合、プロセスは完了です。
AWS CDK アプリケーションはStackSet 管理者ロールを引き受け、config.json ファイルで定義した AWS CloudFormationスタックセットをデプロイします。
ターゲットアカウントでは、StackSets が StackSet の実行ロールを引き受け、製品をプロビジョニングします。
ツール
AWS サービス
AWS Cloud Development Kit (AWS CDK) は、AWS クラウドインフラストラクチャをコードで定義してプロビジョニングするのに役立つソフトウェア開発フレームワークです。
AWS CDK Toolkit は、 AWS CDKアプリケーションの操作に役立つコマンドラインクラウド開発キットです。
AWS CloudFormation を使用すると、AWS リソースをセットアップし、迅速かつ一貫したプロビジョニングを行い、AWS アカウントとリージョン全体でライフサイクル全体にわたってリソースを管理できます。
「AWS Identity and Access Management (IAM)」は、AWS リソースへのアクセスを安全に管理し、誰が認証され、使用する権限があるかを制御するのに役立ちます。
AWS Service Catalog では、AWS で承認された IT サービスのカタログを一元管理できます。エンドユーザーは、組織によって設定された制約に従って、必要な承認済みの IT サービスのみをすばやくデプロイできます。
コードリポジトリ
このパターンのコードは、GitHub 内の「aws-cdk-servicecatalog-automation
cdk-sevicecatalog-app — このフォルダには、このソリューションの AWS CDK アプリケーションが含まれています。
config — このフォルダには、Service Catalog ポートフォリオに製品をデプロイするための config.json ファイルと CloudFormation テンプレートが含まれています。
config/config.json — このファイルにはすべての設定情報が含まれています。このファイルを更新して、ユースケースに合わせてこのソリューションをカスタマイズします。
config/templates — このフォルダには、サービスセンター製品のCloudFormation テンプレートが含まれています。
setup.sh — このスクリプトはソリューションをデプロイします。
uninstall.sh — このスクリプトは、スタックと、このソリューションのデプロイ時に作成されたすべての AWS リソースを削除します。
これらのファイルを使用するには、エピックセクションの指示に従ってください。
ベストプラクティス
このソリューションのデプロイに使用する IAM ロールは、最小権限の原則 (IAM ドキュメント) に従う必要があります。
AWS CDK でクラウドアプリケーションを開発するためのベストプラクティス
(AWS ブログ記事) に従ってください。 AWS CloudFormation のベストプラクティス (クラウドフォーメーションドキュメント) に従ってください。
エピック
タスク | 説明 | 必要なスキル |
---|---|---|
AWS CDK Toolkitをインストールします。 | AWS CDK Toolkit がインストールされていることを確認します。次のコマンドを入力して、インストールされているかどうかを確認し、バージョンを確認します。
がインストールされていない場合は、次のコマンドを実行してインストールします。
AWS CDK Toolkit のバージョンが 2.27.0 より前の場合は、次のコマンドを入力してバージョン 2.27.0 に更新します。
| AWS DevOps、DevOps エンジニア |
リポジトリをクローン作成します。 | 次のコマンドを入力します。追加情報 セクションのリポジトリのクローン では、リポジトリの URL を含むコマンド全体をコピーできます。これにより、GitHub から aws-cdk-サービスカタログ-自動化
これにより、ターゲットディレクトリに
| AWS DevOps、DevOps エンジニア |
AWS 認証情報の設定 | 以下のコマンドを入力します。これらは、スタックをデプロイする AWS アカウントとリージョンを定義する以下の変数をエクスポートします。
AWS CDK の AWS 認証情報は、環境変数を通じて提供されます。 | AWS DevOps、DevOps エンジニア |
エンドユーザーIAM ロールのアクセス許可を設定する | IAM ロールを使用してポートフォリオとその中の製品へのアクセスを許可する場合、ロールには servicecatalog.amazonaws.comサービスプリンシパルが引き受ける権限が必要です。これらのアクセス権限を付与する方法については、Service Catalog による信頼できるアクセスの有効化 (AWS Organizations ドキュメント) を参照してください。 | AWS DevOps、DevOps エンジニア |
StackSets に必要な IAM ロールを設定します。 | StackSets を使用してターゲットアカウントに製品を自動的にプロビジョニングする場合は、スタックセットを管理および実行する IAM ロールを設定する必要があります。
| AWS DevOps、DevOps エンジニア |
タスク | 説明 | 必要なスキル |
---|---|---|
CloudFormation テンプレートの準備 | この | アプリ開発者、AWS DevOps、DevOps エンジニア |
設定ファイルをカスタマイズします。 |
警告IAM ユーザーは長期認証情報を保有するため、セキュリティ上のリスクが生じます。このリスクを軽減するために、これらのユーザーにはタスクの実行に必要な権限のみを付与し、不要になったユーザーを削除することをお勧めします。 重要
完成した設定ファイルの例については、追加情報 セクションのサンプル設定ファイルを参照してください。 | アプリ開発者、AWS DevOps、DevOps エンジニア |
ソリューションをデプロイします。 | 次のコマンドを入力します。これにより、AWS CDK アプリケーションがデプロイされ、config.json ファイルに指定されているService Catalog ポートフォリオと製品がプロビジョニングされます。
| アプリ開発者、AWS DevOps、DevOps エンジニア |
デプロイメントを確認する | 以下を実行して、デプロイが正常に完了したことを確認します。
| AWS 全般 |
(オプション) ポートフォリオと製品を更新します。 | このソリューションを使用してポートフォリオや製品を更新したり、新しい製品をプロビジョニングしたりする場合:
たとえば、ポートフォリオを追加したり、リソースをさらにプロビジョニングできます。AWS CDK アプリケーションは変更のみを実装します。以前にデプロイしたポートフォリオや製品に変更がなければ、再デプロイしても影響はありません。 | アプリ開発者、AWS DevOps、DevOps エンジニア |
タスク | 説明 | 必要なスキル |
---|---|---|
(オプション) このソリューションによってデプロイされた AWS リソースを削除します。 | プロビジョニング済み製品を削除する場合は、プロビジョニング済み製品の削除 (Service Catalog ドキュメント)の手順に従ってください。 このソリューションで作成されたリソースをすべて削除する場合は、次のコマンドを入力します。
| AWS DevOps、DevOps エンジニア |
関連リソース
AWS Service Catalog コンストラクトライブラリ (AWS API リファレンス)
StackSets の概念 (CloudFormation ドキュメント)
AWS Service Catalog
(AWS マーケティング) AWS CDK でのService Catalog の使用
(AWS ワークショップ)
追加情報
追加情報
リポジトリをクローンします
リポジトリのクローンを作成するには、次の コマンドを入力します。
git clone https://github.com/aws-samples/aws-cdk-servicecatalog-automation.git
サンプル設定ファイル
以下は、サンプル値を含む config.json ファイルのサンプルです。
{ "portfolios": [ { "displayName": "EC2 Product Portfolio", "providerName": "User1", "description": "Test1", "roles": [ "<Names of IAM roles that can access the products>" ], "users": [ "<Names of IAM users who can access the products>" ], "groups": [ "<Names of IAM user groups that can access the products>" ] }, { "displayName": "Autoscaling Product Portfolio", "providerName": "User2", "description": "Test2", "roles": [ "<Name of IAM role>" ] } ], "tagOption": [ { "key": "Group", "value": [ "finance", "engineering", "marketing", "research" ] }, { "key": "CostCenter", "value": [ "01", "02", "03", "04" ] }, { "key": "Environment", "value": [ "dev", "prod", "stage" ] } ], "products": [ { "portfolioName": "EC2 Product Profile", "productName": "Ec2", "owner": "owner1", "productVersionName": "v1", "templatePath": "../../config/templates/template1.json" }, { "portfolioName": "Autoscaling Product Profile", "productName": "autoscaling", "owner": "owner1", "productVersionName": "v1", "templatePath": "../../config/templates/template2.json", "deployWithStackSets": { "accounts": [ "012345678901", ], "regions": [ "us-west-2" ], "stackSetAdministrationRoleName": "AWSCloudFormationStackSetAdministrationRole", "stackSetExecutionRoleName": "AWSCloudFormationStackSetExecutionRole" } } ] }