目次
はじめに
こんにちは、ディーネットの牛山です。
AWS Service Catalogを使用し、ポートフォリオの制約設定からSTACKSET(CloudFormation StackSets)でターゲットアカウントへ展開する機会がありましたので紹介します。
展開の流れ
Service CatalogにおけるStackSetの大まかな展開を次の通り記載します。
Service Catalog製品、ポートフォリオは管理アカウントにのみ存在し、管理IAMロールが管理アカウント、実行IAMロールがターゲットアカウント上に存在している必要があります。
管理アカウント Service Catalog製品を起動します。
管理アカウント IAMロール(AWSCloudFormationStackSetAdministrationRole)からターゲットアカウント IAMロール(AWSCloudFormationStackSetExecutionRole)へ展開する権限を借ります。
ターゲットアカウントのIAMロール権限を使用し、製品に定義されているCloudFormationの内容とポートフォリオ StackSet制約に定義される内容でターゲットアカウントへ展開されます。
前置き
本記事では、実際に管理アカウントからターゲットアカウントにStackSetを使用し展開されるところまで解説します。
IAMロールの作成
AWSからロール作成のCloudFromationテンプレートが提供されていますので、それぞれのアカウントに展開します。
管理アカウントへIAMロール作成
管理アカウントへIAMロールを作成します。
管理アカウントのマネージメントコンソールからCloudFormationサービスページにいき、スタックから「新しいリソースを使用 (標準)」をクリックします。
※明示的に変更およびチェックする内容のみ記載しております。
※特段の指示がない限りデフォルト設定で問題ありません。
テンプレートの指定からAmazon S3 URLに次のリンクをコピー・アンド・ペーストします。
「AWS CloudFormation によって IAM リソースがカスタム名で作成される場合があることを承認します。」にチェックをおこない「送信」をクリックし作成します。
ターゲットアカウントへIAMロール作成
ターゲットアカウントへ管理アカウントからアクセスを許可するIAMロールを作成します。
ターゲットアカウントのマネージメントコンソールからCloudFormationサービスページにいき、スタックから「新しいリソースを使用 (標準)」をクリックします。
※明示的に変更およびチェックする内容のみ記載しております。
※特段の指示がない限りデフォルト設定で問題ありません。
テンプレートの指定からAmazon S3 URLに次のリンクをコピー・アンド・ペーストします。
パラメータ項目「AdministratorAccountId」へ管理アカウントのAWSアカウントID12桁を入れます。
「AWS CloudFormation によって IAM リソースがカスタム名で作成される場合があることを承認します。」にチェックをおこない「送信」をクリックし作成します。
Service Catalog製品の作成
以降の操作は管理アカウント上での設定となります。
AWSマネージメントコンソール → Service Catalogサービスページ → 管理者プルダウンメニュー一覧より「製品リスト」をクリックします。
次のリンクから直接飛ぶことが可能です。
「製品を作成」クリック後、次の通り設定します。
製品の詳細
製品タイプとして「CloudFormation」を選択し、製品の説明とは対応するCloudFormationの説明を記載するようにします。
バージョンの詳細
次の通り設定します。
- バージョンのソース
- テンプレートファイルの使用
- CloudFormationテンプレートファイルをアップロードする
- resource-explorer.yamlをアップロードします。
アップロードする「resource-explorer.yaml」は次のリンクからダウンロード可能です。
※バージョン名や説明には適当なものを設定してください。
作成完了後、次のような画面になります。
Service Catalogポートフォリオの作成
Service Catalogサービスページの管理者プルダウンメニュー一覧より「ポートフォリオ」をクリックし、「ポートフォリオの作成」をクリックします。
ポートフォリオの作成画面で適当な説明を入れ、「作成」をクリックします。
その後、正常に作成が完了すれば問題ありません。
ポートフォリオ詳細設定
製品設定
先ほど作成したポートフォリオに対して、作成した製品を追加します。
作成したポートフォリオ「初期セットアップ」をクリックし、「ポートフォリオに製品を追加」ボタンがありますのでクリックします。
「初期セットアップへの製品の追加」画面になりますので、一覧に出る「CloudFormation-ServiceCatalog-ResourceExplorer」を選択し、「ポートフォリオに製品を追加」を押します。
製品追加完了後、追加に成功しましたのメッセージがでることを確認します。
アクセス設定
「初期セットアップ」ポートフォリオ内にある「アクセス」タブを選択し、「アクセス権の付与」をクリック後、管理アカウントのIAMグループ or ロール or ユーザ で許可したいアクセス件を設定します。
筆者の場合、ユーザタブから、自分自身のIAMユーザにアクセス権を付与しています。
制約設定
同様に「制約」タブを選択し「制約を作成」をクリックします。
ポートフォリオとして「CloudFormation-ServiceCatalog-ResourceExplorer」を選択し、制約タイプとして「StackSet」を選択します。
スタックセットの制約より次の通り設定します。
アカウントの仕様
展開先AWSアカウントID、展開先リージョンを設定します。
StackSetは、複数リージョンに展開可能ですが今回は、東京リージョンにのみ展開します。
アクセス許可
既存のロールを選択し、IAM管理者ロールを「AWSCloudFormationStackSetAdministrationRole」、IAM StackSet実行ロールに「AWSCloudFormationStackSetExecutionRole」を設定し「作成」をクリックします。
Service Catalog製品の起動
Service Catalogサービスページのプロビジョニングタブメニューから製品を選択し、製品一覧から「CloudFormation-ServiceCatalog-ResourceExplorer」を選択し、「製品を起動」します。
パラメータとしてシステム名を設定する項目がありますので適当なもので構いません。
他の設定項目についてはデフォルトで問題ないため、起動すると、StakSetが実行され、ターゲットアカウントに展開されます。
ステータスが成功状態になることを確認します。
まとめ
Service Catalogを使用したStackSetによる展開は便利ですが、通常のCloudFormation StackSetsで利用可能な、リージョンへの平行(同時)デプロイができない等がありますので利用する際には注意してください。
![](https://blog.denet.co.jp/wp-content/uploads/2020/07/ym269004773707116203349.png)
プロフィール
AWSの設計・構築をメインにおこなっています。
運用・保守をおこなう部署におりましたが、最近、アーキテクト課に異動しました。
日々精進しております。
LINK
クラウドベリージャム:プロフィールページ