翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
を使用して AWS Service Catalog ポートフォリオと製品のデプロイを自動化する AWS CDK
Sandeep Gawande (AWS)、 RAJNEESH TYAGI (AWS)、Viyoma Sachdeva (AWS) によって作成されました
コードリポジトリ: aws-cdk-servicecatalog-automation | 環境:PoC またはパイロット | テクノロジー: DevOps、インフラストラクチャ、管理とガバナンス |
ワークロード: オープンソース | AWS サービス: AWS Service Catalog; AWS CDK |
[概要]
AWS Service Catalog は、組織のAWS環境での使用が承認された IT サービスまたは製品のカタログを一元管理するのに役立ちます。ポートフォリオとは、製品の集合で、設定情報も含まれます。AWS Service Catalog を使用すると、組織内のユーザータイプごとにカスタマイズされたポートフォリオを作成し、適切なポートフォリオへのアクセスを許可できます。そうすれば、ユーザーはポートフォリオ内から必要な製品をすばやくデプロイできます。
マルチリージョンアーキテクチャやマルチアカウントアーキテクチャなどの複雑なネットワークインフラストラクチャを使用している場合は、Service Catalog ポートフォリオを単一の中央アカウントで作成および管理することをお勧めします。このパターンでは、AWSCloud Development Kit (AWS CDK) を使用して中央アカウントでの Service Catalog ポートフォリオの作成を自動化し、エンドユーザーにそれらへのアクセスを許可し、オプションで 1 つ以上のターゲットAWSアカウントで製品をプロビジョニングする方法について説明します。この ready-to-useソリューションは、ソースアカウントに Service Catalog ポートフォリオを作成します。また、オプションで、AWS CloudFormation スタックを使用してターゲットアカウントで製品をプロビジョニングし、 TagOptions 製品の を設定するのに役立ちます。
AWS CloudFormation StackSets – を使用して StackSets 、複数のAWSリージョンとアカウントで Service Catalog 製品を起動できます。このソリューションでは、このソリューションをデプロイするときに製品を自動的にプロビジョニングできます。詳細については、「 (Service Catalog ドキュメント) AWS CloudFormation StackSetsの使用」とStackSets 「概念 (CloudFormation ドキュメント)」を参照してください。
TagOption library – TagOption ライブラリを使用して、プロビジョニング済み製品のタグを管理できます。TagOption は、AWSService Catalog で管理されるキーと値のペアです。タグではありませんがAWS、 に基づいてAWSタグを作成するためのテンプレートとして機能します TagOption。詳細については、TagOption 「 ライブラリ (Service Catalog ドキュメント)」を参照してください。
前提条件と制限
前提条件
Service Catalog ポートフォリオを管理するソースAWSアカウントとして使用するアクティブなアカウント。
このソリューションを使用して 1 つ以上のターゲットアカウントに製品をプロビジョニングする場合、ターゲットアカウントはすでに存在し、アクティブである必要があります。
AWS ID とアクセス管理 (IAM) の AWS Service Catalog、、AWS CloudFormationおよび AWS へのアクセス許可IAM。
製品バージョン
AWS CDK バージョン 2.27.0
アーキテクチャ
ターゲットテクノロジースタック
一元化されたAWSアカウントの Service Catalog ポートフォリオ
ターゲットアカウントにデプロイされたService Catalog 製品
ターゲット アーキテクチャ
ポートフォリオ (またはソース ) アカウントでは、ユースケースのAWSアカウント、AWSリージョン、IAMロール、ポートフォリオ、製品情報を使用して config.json ファイルを更新します。
AWS CDK アプリケーションをデプロイします。
AWS CDK アプリケーションはデプロイIAMロールを引き受け、config.json ファイルで定義された Service Catalog ポートフォリオと製品を作成します。
ターゲットアカウントに製品をデプロイ StackSets するように を設定した場合、プロセスは続行されます。製品をプロビジョニング StackSets するように を設定していない場合、プロセスは完了します。
AWS CDK アプリケーションはStackSet 管理者ロールを引き受け、config.json ファイルで定義したAWS CloudFormation スタックセットをデプロイします。
ターゲットアカウントで、 はStackSet 実行ロール StackSets を引き受け、製品をプロビジョニングします。
ツール
AWS サービス
AWS Cloud Development Kit (AWS CDK) は、コードでAWSクラウドインフラストラクチャを定義およびプロビジョニングするのに役立つソフトウェア開発フレームワークです。
AWS CDK Toolkit は、AWSCDKアプリケーションの操作に役立つコマンドラインクラウド開発キットです。
AWS CloudFormation は、AWSリソースをセットアップし、迅速かつ一貫してプロビジョニングし、AWSアカウントとリージョン全体のライフサイクルを通じてリソースを管理するのに役立ちます。
AWS Identity and Access Management (IAM) は、誰が認証され、誰に使用を許可されているかを制御することで、AWSリソースへのアクセスを安全に管理するのに役立ちます。
AWS Service Catalog を使用すると、 用に承認された IT サービスのカタログを一元管理できますAWS。エンドユーザーは、組織によって設定された制約に従って、必要な承認済みの IT サービスのみをすばやくデプロイできます。
コードリポジトリ
このパターンのコードは GitHub、aws-cdk-servicecatalog-automation
cdk-sevicecatalog-app – このフォルダには、このソリューションのAWSCDKアプリケーションが含まれています。
config – このフォルダには、config.json ファイルと、Service Catalog ポートフォリオに製品をデプロイするための CloudFormation テンプレートが含まれています。
config/config.json — このファイルにはすべての設定情報が含まれています。このファイルを更新して、ユースケースに合わせてこのソリューションをカスタマイズします。
config/templates – このフォルダには、 Service Center 製品の CloudFormation テンプレートが含まれています。
setup.sh — このスクリプトはソリューションをデプロイします。
uninstall.sh – このスクリプトは、このソリューションをデプロイするときに作成されたスタックとすべてのAWSリソースを削除します。
これらのファイルを使用するには、エピックセクションの指示に従ってください。
ベストプラクティス
IAM このソリューションをデプロイするために使用される ロールは、最小権限の原則 (IAM ドキュメント) に従う必要があります。
AWS ( ブログ記事) を使用してクラウドアプリケーションを開発するためのベストプラクティスCDK
に従ってください。AWS AWS CloudFormation ベストプラクティス (CloudFormation ドキュメント) に従ってください。
エピック
タスク | 説明 | 必要なスキル |
---|---|---|
Toolkit をインストールしますAWSCDK。 | Toolkit AWSCDKがインストールされていることを確認します。次のコマンドを入力して、インストールされているかどうかを確認し、バージョンを確認します。
AWS CDK Toolkit がインストールされていない場合は、次のコマンドを入力してインストールします。
AWS CDK Toolkit バージョンが 2.27.0 より前の場合は、次のコマンドを入力してバージョン 2.27.0 に更新します。
| AWS DevOps, DevOps エンジニア |
リポジトリをクローン作成します。 | 次のコマンドを入力します。追加情報セクションのリポジトリのクローンで、リポジトリURLの を含むコマンド全体をコピーできます。これにより、 からaws-cdk-servicecatalog-automation
これにより、ターゲットディレクトリに
| AWS DevOps, DevOps エンジニア |
AWS 認証情報を設定します。 | 次のコマンドを入力します。これらは、スタックをデプロイするAWSアカウントとリージョンを定義する次の変数をエクスポートします。
AWS の認証情報AWSCDKは、環境変数を通じて提供されます。 | AWS DevOps, DevOps エンジニア |
エンドユーザーIAMロールのアクセス許可を設定します。 | IAM ロールを使用してポートフォリオとその製品へのアクセスを許可する場合、ロールには servicecatalog.amazonaws.com サービスプリンシパルが引き受けるアクセス許可が必要です。これらのアクセス許可を付与する方法については、「Service Catalog による信頼されたアクセスの有効化AWS」 ( Organizations ドキュメント) を参照してください。 | AWS DevOps, DevOps エンジニア |
に必要なIAMロールを設定します StackSets。 | StackSets を使用してターゲットアカウントに製品を自動的にプロビジョニングする場合は、スタックセットを管理および実行するIAMロールを設定する必要があります。
| AWS DevOps, DevOps エンジニア |
タスク | 説明 | 必要なスキル |
---|---|---|
CloudFormation テンプレートを作成します。 |
| アプリデベロッパー、AWS DevOps、 DevOps エンジニア |
設定ファイルをカスタマイズします。 |
完成した設定ファイルの例については、追加情報 セクションのサンプル設定ファイルを参照してください。 | アプリ開発者、 DevOps エンジニア、 AWS DevOps |
ソリューションをデプロイします。 | 次のコマンドを入力します。これにより、AWSCDKアプリがデプロイされ、config.json ファイルで指定されているように Service Catalog ポートフォリオと製品がプロビジョニングされます。
| アプリ開発者、 DevOps エンジニア、 AWS DevOps |
デプロイメントを確認する | 以下を実行して、デプロイが正常に完了したことを確認します。
| 全般 AWS |
(オプション) ポートフォリオと製品を更新します。 | このソリューションを使用してポートフォリオや製品を更新したり、新しい製品をプロビジョニングしたりする場合:
たとえば、ポートフォリオを追加したり、リソースをさらにプロビジョニングできます。AWS CDK アプリケーションは変更のみを実装します。以前にデプロイしたポートフォリオや製品に変更がなければ、再デプロイしても影響はありません。 | アプリ開発者、 DevOps エンジニア、一般 AWS |
タスク | 説明 | 必要なスキル |
---|---|---|
(オプション) このソリューションによってデプロイされたAWSリソースを削除します。 | プロビジョニング済み製品を削除する場合は、プロビジョニング済み製品の削除 (Service Catalog ドキュメント)の手順に従ってください。 このソリューションで作成されたリソースをすべて削除する場合は、次のコマンドを入力します。
| AWS DevOps、 DevOps エンジニア、アプリデベロッパー |
関連リソース
AWS Service Catalog 構築ライブラリ (AWS API リファレンス)
StackSets 概念 (CloudFormation ドキュメント)
AWS Service Catalog
(AWS マーケティング) での Service Catalog の使用 AWS CDK
(AWS ワークショップ)
追加情報
追加情報
リポジトリをクローンします
次のコマンドを入力して、 からリポジトリをクローンします GitHub。
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" } } ] }