複数AWSアカウント一括連携機能
弊社クラスメソッドメンバーズにご加入のお客様は、複数のAWSアカウントを一括で連携できる機能をご利用いただけます。opswitchと連携するAWSアカウントが多数ある場合、この機能を使用することで、スムーズにopswitchの利用を開始できます。
複数AWSアカウント一括連携機能の仕組み
AWS CloudFormation StackSets を使用して複数のAWSアカウントにopswitchから引き受け可能なIAMロールを作成し、opswitchにAWSアカウント連携情報として登録します。なお、登録されたAWSアカウント連携情報は一つの組織に関連付けられます。
事前準備
StackSetsを作成するAWSアカウントは、AWS Organizationsの管理アカウントであるか、セルフマネージド型の管理アカウントである必要があります。ターゲットとなるAWSアカウントはAWS Organizationsのアカウントであるか、セルフマネージド型のターゲットアカウントである必要があります。詳しくは以下のAWSユーザーガイドをご確認ください。
AWS Organizations を使用してスタックセットのための信頼されたアクセスをアクティブ化する
手順
一括連携用トークンを発行する
複数AWSアカウント一括連携を行うには、一括連携用トークンを発行します。トークンは組織・opswitchユーザーごとに発行でき、発行から7日間有効です。一括連携用トークンを発行できるのは、クラスメソッドメンバーズポータルに登録済みのメールアドレスと一致するユーザーに限られます。なお、Classmethod IDのopswitch連携は必須ではありません。
- ヘッダーのメニューにある「管理」- 「AWSアカウント連携」をクリックします。
-
AWSアカウント連携ページ右上の「一括連携用トークン一覧」をクリックします。オーナー権限をもつ組織に所属していない場合はクリックできません。
- 一括連携用トークン一覧ページ右上の「発行」ボタンをクリックします。クラスメソッドメンバーズポータルに登録済みのメールアドレスと一致しないユーザーの場合は発行ボタンをクリックできません。
- 発行対象の組織を選択し、発行ボタンをクリックします。
管理アカウントでスタックセットを作成する
AWSマネジメントコンソールからスタックセットを作成し、複数のAWSアカウントにIAMロールを作成し、opswitchにアカウント連携情報を登録します。
- 管理アカウントの CloudFormation マネジメントコンソールを開きます。
- 左ナビゲーションから StackSets を選択し、「StackSetを作成」をクリックします。
-
ステップ1: テンプレートの選択 で、Amazon S3 URLに以下のURLを指定します。
https://pmj-bucket-prd.s3.ap-northeast-1.amazonaws.com/templates/opswitch_stackset_access_role_11_0.yml -
ステップ2: StackSet の詳細を指定 で、以下の情報を入力します。
入力項目 入力値 StackSet 名 任意の名前を登録します。 パラメータ OrganizationId 連携先のopswitch組織IDを指定します。一括連携用トークン一覧ページで値をコピーして貼り付けます。 パラメータ StackSetsToken 一括連携用トークンを指定します。一括連携用トークン一覧ページで値をコピーして貼り付けます。 パラメータ opswitchAccountID 444411381513 を指定します。(固定値) -
ステップ3: StackSet オプションの設定 で以下のチェックボックスをチェックします。
- AWS CloudFormation によって IAM リソースがカスタム名で作成される場合があることを承認します。
- AWS CloudFormation によって、次の機能が要求される場合があることを承認します: CAPABILITY_AUTO_EXPAND
-
ステップ4: デプロイオプションの設定 で、以下の情報を入力します。
入力項目 入力値 アカウント 連携するAWSアカウントを指定します。カンマ区切りで複数指定できます。またCSV形式のファイルによる指定も可能です。 リージョンの指定 アジアパシフィック (東京) を選択します。 デプロイオプション 並列数やエラー発生時の条件を指定します。(任意) - ステップ5: レビュー で入力内容を確認して「送信」ボタンをクリックします。
- スタックセットの全てのスタックインスタンスが SUCCEEDED となれば完了です。
作成されたAWSアカウント連携を確認する
opswitchにログインして、作成されたAWSアカウント連携を確認します。
- ヘッダーのメニューから「管理」-「AWSアカウント連携」をクリックします。
- 一覧にスタックを作成したAWSアカウントが追加されていることを確認します。
アカウント名はクラスメソッドメンバーズに登録されているアカウント名が設定されます。メンバーズに加入していないAWSアカウントではアカウントIDが設定されます。
- アカウントIDのリンクをクリックして、アカウント名・組織を変更することができます。
スタックセットによって作成されるリソースについて
指定したアカウントに以下のリソースが作成されます。
論理ID | タイプ | 説明 |
LambdaExecutionRole | AWS::Lambda::Function | opswitchの一括連携用APIを呼び出すためのLambda関数の実行ロール |
ExternalApiLambdaFunction | AWS::IAM::Role | opswitchの一括連携用APIを呼び出すためのLambda関数 |
ExternalId |
Custom::ExternalApiResource (CloudWatch Logs ログストリーム) |
opswitchの一括連携用APIを呼び出すカスタムリソース |
Register |
Custom::ExternalApiResource (CloudWatch Logs ログストリーム) |
opswitchの一括連携用APIを呼び出すカスタムリソース |
opswitchRole | AWS::CloudFormation::Stack | AWSアカウント連携スタック |
IAMRole | AWS::IAM::Role | opswitchのジョブが利用するIAMロール |
AllowActionPolicy | AWS::IAM::ManagedPolicy |
opswitchのジョブが利用するIAMロールにアタッチされる許可ポリシー |
DenyActionPolicy | AWS::IAM::ManagedPolicy | opswitchのジョブが利用するIAMロールにアタッチされる拒否ポリシー |
正常に作成完了した後は、LambdaExecutionRole、ExternalApiLambdaFunction、ExternalId(CloudWatch Logs ログストリーム)、Register(CloudWatch Logs ログストリーム)は削除しても問題ありません。
その他の注意事項
- 各AWSアカウントにはLambda関数が作成されます。このLambda関数は、AWSアカウントとopswitch間でAPI通信を行うために使用されます。また、カスタムリソースとしてLambda関数が実行される際に、CloudWatch Logsでログストリームが自動的に作成されます。これに伴い、お客様のAWSアカウントにおいて、Lambda関数の実行にかかる費用およびCloudWatch Logsの利用料金が発生します。
- 管理アカウントにはリソースは作成されません。管理アカウントもopswitchに連携する場合はスタックセットの対象アカウントに含めて指定してください。セルフマネージド型で実行される際は、AWSアカウント連携を作成したいアカウントの中の1つを管理アカウントとして権限を付与し、スタックセットにそのアカウントIDも含めて実行することもできます。その際、管理アカウントにも自アカウントを信頼するサービスロールが必要です。
- スタックセットを削除する場合は、CloudFormationマネジメントコンソールで各スタックをすべて削除してから、スタックセット自体を削除してください。
CloudFormation StackSets を削除する - AWS CloudFormation - 連携したAWSアカウントの名称、組織を変更する場合は、opswitchにログインし、画面上で操作してください。
AWSアカウント連携の一覧 - 新機能を利用するために権限の追加が必要になる場合があります。一括連携で作成したIAMロールはopswitchの画面から更新はできません。更新するにはスタックセットによる更新が必要となります。
- IAMロールやスタックを削除してしまった場合は、opswitchの画面から各アカウントごとに再連携が可能です。
- 連携の操作中にエラーがあった場合はメンバーズポータルより問い合わせください。https://v2.members.classmethod.net/