コンテンツにスキップ

【メンバーズ限定】複数のAWSアカウントを一括で連携する

複数AWSアカウント一括連携機能

Section titled “複数AWSアカウント一括連携機能”

弊社クラスメソッドメンバーズにご加入のお客様は、複数のAWSアカウントを一括で連携できる機能をご利用いただけます。opswitchと連携するAWSアカウントが多数ある場合、この機能を使用することで、スムーズにopswitchの利用を開始できます。

複数AWSアカウント一括連携機能の仕組み

Section titled “複数AWSアカウント一括連携機能の仕組み”

AWS CloudFormation StackSetsを使用して複数のAWSアカウントにopswitchから引き受け可能なIAMロールを作成し、opswitchにAWSアカウント連携情報として登録します。なお、登録されたAWSアカウント連携情報は一つの組織に関連付けられます。

StackSetsを作成するAWSアカウントは、AWS Organizationsの管理アカウントであるか、セルフマネージド型の管理アカウントである必要があります。ターゲットとなるAWSアカウントはAWS Organizationsのアカウントであるか、セルフマネージド型のターゲットアカウントである必要があります。詳しくは以下のAWSユーザーガイドをご確認ください。

AWS Organizations を使用してスタックセットのための信頼されたアクセスをアクティブ化する

セルフマネージド型のアクセス許可を付与する

一括連携用トークンを発行する

Section titled “一括連携用トークンを発行する”

複数AWSアカウント一括連携を行うには、一括連携用トークンを発行します。トークンは組織・opswitchユーザーごとに発行でき、発行から7日間有効です。一括連携用トークンを発行できるのは、クラスメソッドメンバーズポータルに登録済みのメールアドレスと一致するユーザーに限られます。なお、Classmethod IDのopswitch連携は必須ではありません。

  1. ヘッダーのメニューにある「管理」-「AWSアカウント連携」をクリックします。
  2. AWSアカウント連携ページ右上の「一括連携用トークン一覧」をクリックします。オーナー権限をもつ組織に所属していない場合はクリックできません。
  3. 一括連携用トークン一覧ページ右上の「発行」ボタンをクリックします。クラスメソッドメンバーズポータルに登録済みのメールアドレスと一致しないユーザーの場合は発行ボタンをクリックできません。
  4. 発行対象の組織を選択し、発行ボタンをクリックします。

管理アカウントでスタックセットを作成する

Section titled “管理アカウントでスタックセットを作成する”

AWSマネジメントコンソールからスタックセットを作成し、複数のAWSアカウントにIAMロールを作成し、opswitchにアカウント連携情報を登録します。

  1. 管理アカウントのCloudFormationマネジメントコンソールを開きます。

  2. 左ナビゲーションから StackSets を選択し、「StackSetを作成」をクリックします。

  3. ステップ1: テンプレートの選択 で、Amazon S3 URLに以下のURLを指定します。
    https://pmj-bucket-prd.s3.ap-northeast-1.amazonaws.com/templates/opswitch_stackset_access_role_11_0.yml

  4. ステップ2: StackSet の詳細を指定 で、以下の情報を入力します。

    入力項目入力値
    StackSet 名任意の名前を登録します。
    パラメータ OrganizationId連携先のopswitch組織IDを指定します。一括連携用トークン一覧ページで値をコピーして貼り付けます。
    パラメータ StackSetsToken一括連携用トークンを指定します。一括連携用トークン一覧ページで値をコピーして貼り付けます。
    パラメータ opswitchAccountID444411381513 を指定します。(固定値)
  5. ステップ3: StackSet オプションの設定 で以下のチェックボックスをチェックします。

    • AWS CloudFormation によって IAM リソースがカスタム名で作成される場合があることを承認します。
    • AWS CloudFormation によって、次の機能が要求される場合があることを承認します: CAPABILITY_AUTO_EXPAND
  6. ステップ4: デプロイオプションの設定 で、以下の情報を入力します。

    入力項目入力値
    アカウント連携するAWSアカウントを指定します。カンマ区切りで複数指定できます。またCSV形式のファイルによる指定も可能です。
    リージョンの指定アジアパシフィック (東京) を選択します。
    デプロイオプション並列数やエラー発生時の条件を指定します。(任意)
  7. ステップ5: レビュー で入力内容を確認して「送信」ボタンをクリックします。

  8. スタックセットの全てのスタックインスタンスが SUCCEEDEDとなれば完了です。

作成されたAWSアカウント連携を確認する

Section titled “作成されたAWSアカウント連携を確認する”

opswitchにログインして、作成されたAWSアカウント連携を確認します。

https://console.opswitch.io/

  1. ヘッダーのメニューから「管理」-「AWSアカウント連携」をクリックします。
  2. 一覧にスタックを作成したAWSアカウントが追加されていることを確認します。アカウント名はクラスメソッドメンバーズに登録されているアカウント名が設定されます。メンバーズに加入していないAWSアカウントではアカウントIDが設定されます。
  3. アカウントIDのリンクをクリックして、アカウント名・組織を変更することができます。

スタックセットによって作成されるリソースについて

Section titled “スタックセットによって作成されるリソースについて”

指定したアカウントに以下のリソースが作成されます。

論理IDタイプ説明
LambdaExecutionRoleAWS::Lambda::Functionopswitchの一括連携用APIを呼び出すためのLambda関数の実行ロール
ExternalApiLambdaFunctionAWS::IAM::Roleopswitchの一括連携用APIを呼び出すためのLambda関数
ExternalIdCustom::ExternalApiResource (CloudWatch Logs ログストリーム)opswitchの一括連携用APIを呼び出すカスタムリソース
RegisterCustom::ExternalApiResource (CloudWatch Logs ログストリーム)opswitchの一括連携用APIを呼び出すカスタムリソース
opswitchRoleAWS::CloudFormation::StackAWSアカウント連携スタック
IAMRoleAWS::IAM::Roleopswitchのジョブが利用するIAMロール
AllowActionPolicyAWS::IAM::ManagedPolicyopswitchのジョブが利用するIAMロールにアタッチされる許可ポリシー
DenyActionPolicyAWS::IAM::ManagedPolicyopswitchのジョブが利用するIAMロールにアタッチされる拒否ポリシー

正常に作成完了した後は、LambdaExecutionRole、ExternalApiLambdaFunction、ExternalId(CloudWatch Logsログストリーム)、Register(CloudWatch Logsログストリーム)は削除しても問題ありません。

  1. 各AWSアカウントにはLambda関数が作成されます。このLambda関数は、AWSアカウントとopswitch間でAPI通信を行うために使用されます。また、カスタムリソースとしてLambda関数が実行される際に、CloudWatch Logsでログストリームが自動的に作成されます。これに伴い、お客様のAWSアカウントにおいて、Lambda関数の実行にかかる費用およびCloudWatch Logsの利用料金が発生します。
  2. 管理アカウントにはリソースは作成されません。管理アカウントもopswitchに連携する場合はスタックセットの対象アカウントに含めて指定してください。セルフマネージド型で実行される際は、AWSアカウント連携を作成したいアカウントの中の1つを管理アカウントとして権限を付与し、スタックセットにそのアカウントIDも含めて実行することもできます。その際、管理アカウントにも自アカウントを信頼するサービスロールが必要です。
  3. スタックセットを削除する場合は、CloudFormationマネジメントコンソールで各スタックをすべて削除してから、スタックセット自体を削除してください。
    CloudFormation StackSets を削除する - AWS CloudFormation
  4. 連携したAWSアカウントの名称、組織を変更する場合は、opswitchにログインし、画面上で操作してください。
    AWSアカウント連携の一覧
  5. 新機能を利用するために権限の追加が必要になる場合があります。一括連携で作成したIAMロールはopswitchの画面から更新はできません。更新するにはスタックセットによる更新が必要となります。
  6. IAMロールやスタックを削除してしまった場合は、opswitchの画面から各アカウントごとに再連携が可能です。
  7. 連携の操作中にエラーがあった場合はメンバーズポータルより問い合わせください。https://v2.members.classmethod.net/