複数の AWS リージョン とアカウントでのオートメーションの実行
中央アカウントから、複数の AWS リージョン および AWS アカウント または AWS Organizations 組織単位 (OU) で AWS Systems Manager オートメーションを実行することができます。オートメーションは の一機能ですAWS Systems Manager 複数のリージョンやアカウント、または OU でオートメーションを実行すると、AWS リソースの管理に必要な時間が短縮され、コンピューティング環境のセキュリティが強化されます。
例えば、オートメーションランブックを使用して次を実行できます。
-
パッチ適用とセキュリティ更新を一元的に実装します。
-
VPC 設定や Amazon S3 バケットポリシーでコンプライアンスの問題を修正します。
-
Amazon Elastic Compute Cloud (Amazon EC2) EC2 インスタンスなどのリソースを、大規模に管理します。
次の図は、中央アカウントから、複数のリージョンおよびアカウントで AWS-RestartEC2Instances
ランブックを実行しているユーザーの例を示しています。オートメーションは、対象のリージョンおよびアカウントで指定されたタグを使用してインスタンスを検索します。
オートメーション用の中央アカウントを選択する
OU 全体でオートメーションを実行する場合、中央アカウントには OU 内のすべてのアカウントを一覧表示する権限が必要です。これは、委任された管理者アカウントまたは組織の管理アカウントからのみ可能です。AWS Organizations ベストプラクティスに従い、委任された管理者アカウントを使用することをお勧めします。AWS Organizations ベストプラクティスの詳細については、「AWS Organizations ユーザーガイド」の「管理アカウントのベストプラクティス」を参照してください。Systems Manager 用に委任された管理者アカウントを作成するには、次の例のように、register-delegated-administrator
コマンドと AWS CLI を使用できます。
aws organizations register-delegated-administrator \ --account-id
delegated admin account ID
\ --service-principal ssm.amazonaws.com
AWS Organizations で管理されていない複数のアカウントでオートメーションを実行したい場合は、オートメーション管理専用のアカウントを作成することをお勧めします。すべてのクロスアカウントオートメーションを専用アカウントから実行すると、IAM 権限管理やトラブルシューティング作業が簡単になり、運用と管理が分離されます。この方法は、AWS Organizations を使用し、OU ではなく個々のアカウントのみを対象とする場合にも推奨されます。
オートメーション実行の仕組み
複数のリージョンとアカウント、または OU でオートメーションを実行すると、次のように動作します。
-
オートメーション中央アカウントとして設定するアカウントにサインインします。
-
このトピックの マルチリージョンおよびマルチアカウントのオートメーションのための管理アカウントアクセス許可の設定 手順を使用して、次の IAM ロールを作成します。
-
AWS-SystemsManager-AutomationAdministrationRole
- このロールは、複数のアカウントと OU でオートメーションを実行するアクセス許可をユーザーに付与します。 -
AWS-SystemsManager-AutomationExecutionRole
- このロールは、ターゲットアカウントでオートメーションを実行するアクセス許可をユーザーに付与します。
-
-
オートメーションを実行するランブック、リージョン、およびアカウント、または OU を選択します。
注記
ターゲット OU に目的のアカウントが含まれていることを確認します。カスタムランブックを選択した場合は、ランブックをすべてのターゲットアカウントと共有する必要があります。ランブック共有の詳細については、「SSM ドキュメントの共有」を参照してください。共有ランブックの使用については、「共有 SSM ドキュメントを使用する」を参照してください。
-
オートメーションを実行します。
注記
複数のリージョン、アカウント、または OU でオートメーションを実行する場合、プライマリアカウントから実行するオートメーションによって、各ターゲットアカウントの子オートメーションが開始されます。プライマリアカウントのオートメーションには、ターゲットアカウントそれぞれに
aws:executeAutomation
ステップがあります。 -
AWS Systems Manager コンソール、または AWS CLI から GetAutomationExecution、DescribeAutomationStepExecutions、および DescribeAutomationExecutions API オペレーションを使用して、オートメーションの進行状況をモニタリングします。プライマリアカウントのオートメーションのステップの出力は、子オートメーションの
AutomationExecutionId
になります。ターゲットアカウントで作成された子オートメーションの出力を表示するには、リクエストで適切なアカウント、リージョン、およびAutomationExecutionId
を指定してください。
マルチリージョンおよびマルチアカウントのオートメーションのための管理アカウントアクセス許可の設定
を使用して、Systems Manager Automation のマルチリージョンおよびマルチアカウントのオートメーションに必要な IAM ロールを作成するには、次の手順に従いますAWS CloudFormation ここでは、AWS-SystemsManager-AutomationAdministrationRole
ロールの作成方法について説明します。オートメーション中央アカウントでこのロールを作成するだけで済みます。この手順では、AWS-SystemsManager-AutomationExecutionRole
ロールの作成方法についても説明します。マルチリージョンおよびマルチアカウントのオートメーションを実行するために、ターゲットとするすべてのアカウントでこのロールを作成する必要があります。AWS CloudFormation StackSet を使用して、マルチリージョンおよびマルチアカウントのオートメーションを実行するターゲットとするアカウントに AWS-SystemsManager-AutomationExecutionRole
ロールを作成することをお勧めします。
AWS CloudFormation を使用してマルチリージョンおよびマルチアカウントのオートメーションに必要な IAM 管理ロールを作成するには
-
AWS-SystemsManager-AutomationAdministrationRole.zip
をダウンロードして、解凍します。または、アカウントが AWS OrganizationsAWS-SystemsManager-AutomationAdministrationRole (org).zip
によって管理されている場合は。このファイルには、AWS-SystemsManager-AutomationAdministrationRole.yaml
AWS CloudFormation テンプレートファイルが含まれています。 https://console.aws.amazon.com/cloudformation
で AWS CloudFormation コンソール を開きます。 -
[Create stack] を選択します。
-
[Specify template] (テンプレートの指定) セクションで、[Upload a template] (テンプレートのアップロード)] を選択します。
-
[Choose file] (ファイルを選択) を選択して、
AWS-SystemsManager-AutomationAdministrationRole.yaml
AWS CloudFormation テンプレートファイルを選択します。 -
[Next] を選択します。
-
[Specify stack details (スタックの詳細の指定)] ページの [Stack Name (スタック名)] フィールドに名前を入力します。
-
[Next] を選択します。
-
[Configure stack options] (スタックオプションの設定) ページで、使用するオプションの値を入力します。[Next] を選択します。
-
[確認] ページをスクロールダウンして、[AWS CloudFormation がカスタム名で IAM リソースを作成する可能性があることを承認します] オプションを選択します。
-
[スタックの作成] を選択します。
AWS CloudFormation は、[CREATE_IN_PROGRESS] の状態を約 3 分間表示します。状態が [CREATE_COMPLETE] に変わります。
マルチリージョンおよびマルチアカウントのオートメーションを実行するために、ターゲットとするすべてのアカウントで以下の手順を繰り返す必要があります。
AWS CloudFormation を使用してマルチリージョンおよびマルチアカウントのオートメーションに必要な IAM オートメーションロールを作成するには
-
AWS-SystemsManager-AutomationExecutionRole.zip
をダウンロードします。または、アカウントが AWS OrganizationsAWS-SystemsManager-AutomationExecutionRole (org).zip
によって管理されている場合は。このファイルには、AWS-SystemsManager-AutomationExecutionRole.yaml
AWS CloudFormation テンプレートファイルが含まれています。 https://console.aws.amazon.com/cloudformation
で AWS CloudFormation コンソール を開きます。 -
[Create stack] を選択します。
-
[Specify template] (テンプレートの指定) セクションで、[Upload a template] (テンプレートのアップロード)] を選択します。
-
[Choose file] (ファイルを選択) を選択して、
AWS-SystemsManager-AutomationExecutionRole.yaml
AWS CloudFormation テンプレートファイルを選択します。 -
[Next] を選択します。
-
[Specify stack details (スタックの詳細の指定)] ページの [Stack Name (スタック名)] フィールドに名前を入力します。
-
[Parameters] (パラメータ) セクションの [AdminAccountId] フィールドに、オートメーション中央アカウントの ID を入力します。
-
AWS Organizations 環境でこのロールを設定する場合、[OrganizationID] というセクションには別のフィールドがあります。AWS 組織の ID を入力します。
-
[Next] を選択します。
-
[Configure stack options] (スタックオプションの設定) ページで、使用するオプションの値を入力します。[Next] を選択します。
-
[確認] ページをスクロールダウンして、[AWS CloudFormation がカスタム名で IAM リソースを作成する可能性があることを承認します] オプションを選択します。
-
[スタックの作成] を選択します。
AWS CloudFormation は、[CREATE_IN_PROGRESS] の状態を約 3 分間表示します。状態が [CREATE_COMPLETE] に変わります。
複数のリージョンとアカウントでのオートメーションを実行する (コンソール)
次の手順では、Systems Manager コンソールを使用して、オートメーション管理アカウントから複数のリージョンおよびアカウントでオートメーションを実行する方法を説明します。
開始する前に
次の手順を完了する前に、次の情報を書き留めます。
-
マルチリージョンまたはマルチアカウントのオートメーションの実行に使用するユーザーまたはロールには、
AWS-SystemsManager-AutomationAdministrationRole
ロールのiam:PassRole
アクセス許可が必要です。 -
AWS アカウントオートメーションを実行する ID または OU。
-
オートメーションを実行する Systems Manager でサポートされているリージョン。
-
オートメーションを実行するタグキーとタグ値、またはリソースグループの名前。
複数のリージョンとアカウントでオートメーションを実行する
AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/
) を開きます。 -
ナビゲーションペインで、[オートメーション]、[オートメーションの実行] の順に選択します。
-
[Automation document (自動化ドキュメント)] リストで、ランブックを選択します。[Document categories (ドキュメントカテゴリ)] ペインで 1 つ以上のオプションを選択して、目的に応じて SSM ドキュメントをフィルタリングします。自分が所有するランブックを表示するには、[Owned by me (自分が所有)] タブを選択します。自分のアカウントと共有されているランブックを表示するには、[Shared with me (共有ファイル)] タブを選択します。すべてのランブックを表示するには、[すべてのドキュメント] タブを選択します。
注記
ランブックの名前を選択すると、ランブックに関する情報を表示できます。
-
[Document details (ドキュメントの詳細)] セクションで、[Document version (ドキュメントのバージョン)] が実行するバージョンに設定されていることを確認します。システムには、次のバージョンのオプションが含まれています。
-
[ランタイムのデフォルトバージョン]: 自動化ランブックが定期的に更新され、新しいデフォルトバージョンが割り当てられている場合は、このオプションを選択します。
-
[ランタイムの最新バージョン]: 自動化ランブックが定期的に更新され、直前に更新されたバージョンを実行する場合は、このオプションを選択します。
-
[1 (デフォルト)]: ドキュメントの最初のバージョンを実行するには、このオプションを選択します。これはデフォルト設定です。
-
-
[Next] を選択します。
-
[Execute automation document (自動化ドキュメントの実行)] ページで、[Multi-account and Region (複数のアカウントとリージョン)] を選択します。
-
[Target accounts and Regions] (ターゲットのアカウントとリージョン) セクションで、[Accounts and organizational (OU)] (アカウントおよび組織 (OU)) フィールドを使用して、オートメーションを実行する別の AWS アカウント または AWS 組織単位 (OU) を指定します。カンマで複数のアカウントまたは OU を区切ります。
-
AWS リージョン リストを使用して、1 つ以上のリージョンを選択してオートメーションを実行します。
-
[Multi-Region and account rate control (複数のリージョンとアカウントのレート制御)] オプションを使用して、オートメーションを、限定された数のリージョンで実行されている限られた数のアカウントに制限します。これらのオプションは、オートメーションの実行が可能な AWS リソースの数を制限するわけではありません。
-
[Location (account-Region pair) concurrency (場所 (アカウントとリージョンのペア) の同時実行)] セクションで、複数のアカウントとリージョンで同時に実行できるオートメーションの数を制限するオプションを選択します。例えば、4 つの AWS リージョン にある、5 つの AWS アカウント でオートメーションを実行すると、Systems Manager は合計 20 のアカウントとリージョンのペアでオートメーションを実行します。このオプションを使用して、オートメーションが 2 つのアカウントとリージョンのペアで同時に実行されるように、絶対数 (
2
など) を指定することができます。または、同時に実行できるアカウントとリージョンのペアのパーセント値を指定することもできます。例えば、20 のアカウントとリージョンのペアに 20% と指定すると、オートメーションは同時に最大 5 つのアカウントとリージョンのペアで実行されます。-
[targets (ターゲット)] を選択して、オートメーションを同時に実行できるアカウントとリージョンのペアの絶対数を入力します。
-
[percent (パーセント)] を選択して、オートメーションを同時に実行できるアカウントとリージョンのペアの合計数のパーセント値を入力します。
-
-
[Error threshold (エラーのしきい値)] セクションでオプションを選択します。
-
[errors (エラー)] を選択して、オートメーションが他のリソースへのオートメーションの送信を停止するまでに許容されるエラーの絶対数を入力します。
-
[percent (パーセント)] を選択して、オートメーションが他のリソースへのオートメーションの送信を停止するまでに許容されるエラーのパーセント値を入力します。
-
-
[Targets (ターゲット)] セクションで、オートメーションを実行する AWS リソースをどのようにターゲットにするかを選択します。これらのオプションは必須です。
-
[Parameter (パラメータ)] リストを使用してパラメータを選択します。[Parameter (パラメータ)] リストの項目は、この手順の開始時に選択した自動化ドキュメントのランブックによって決まります。パラメータを選択して、自動化ワークフローが実行されるリソースの種類を定義します。
-
[Targets (ターゲット)] リストを使用して、リソースをターゲットにする方法を選択します。
パラメータ値を使用してターゲットリソースを選択した場合は、[Input parameters (パラメータの入力)] セクションで選択したパラメータのパラメータ値を入力します。
AWS Resource Groups を使用してターゲットリソースを選択した場合、[Resource Group (リソースグループ)] リストからグループの名前を選択します。
タグを使用してターゲットリソースを選択した場合は、タグキーと (オプションとして) タグ値をフィールドに入力します。[Add] (追加) をクリックします。
現在の AWS アカウント および AWS リージョン にあるすべてのインスタンスでオートメーションランブックを実行する場合、[All instances (すべてのインスタンス)] を選択します。
-
-
[Input parameters (入力パラメータ)] セクションで、必要な入力を指定します。AutomationAssumeRole リストから
AWS-SystemsManager-AutomationAdministrationRole
IAM サービスロールを選択します。注記
[Input parameters (入力パラメータ)] セクションでオプションを選択する必要はありません。これは、タグまたはリソースグループを使用して複数のリージョンおよびアカウントのリソースをターゲットとしたためです。例えば、
AWS-RestartEC2Instance
ランブックを選択した場合、[Input parameters (入力パラメータ)] セクションでインスタンス ID を指定または選択する必要はありません。オートメーションでは、指定したタグを使用してインスタンスを再起動します。 -
(オプション) モニタリング用のオートメーションに適用する CloudWatch アラームを選択します。CloudWatch アラームをオートメーションにアタッチするには、コマンドを実行する IAM プリンシパルに
iam:createServiceLinkedRole
アクションの権限が必要です。CloudWatch アラームの詳細については、「Amazon CloudWatch でのアラームの使用」を参照してください。アラームがアクティブになると、自動化は実行されず、定義したすべてのOnCancel
ステップが実行されます。AWS CloudTrail を使用する場合、トレイルに API コールが表示されます。 -
[Rate control (レート制御)] セクションのオプションを使用して、各アカウントとリージョンのペア内でオートメーションを実行できる AWS リソースの数を制限します。
[Concurrency (同時実行数)] セクションでオプションを選択します。
-
[targets (ターゲット)] を選択して、自動化ワークフローを同時に実行できるターゲットの絶対数を入力します。
-
[percentage (パーセント値)] を選択して、自動化ワークフローを同時に実行できるターゲットセットのパーセント値を入力します。
-
-
[Error threshold (エラーのしきい値)] セクションでオプションを選択します。
-
[errors (エラー)] を選択して、自動化が他のリソースへのワークフローの送信を停止するまでに許容されるエラーの絶対数を入力します。
-
[percentage (パーセント値)] を選択して、自動化が他のリソースへのワークフローの送信を停止するまでに許容されるエラーのパーセント値を入力します。
-
-
[Execute] を選択します。
複数のリージョンとアカウントでの自動化を実行する (コマンドライン)
次の手順では、AWS CLI (Linux または Windows) または AWS Tools for PowerShell を使用して、オートメーション管理アカウントから複数のリージョンおよびアカウントでオートメーションを実行する方法を説明します。
開始する前に
次の手順を完了する前に、次の情報を書き留めます。
-
AWS アカウントオートメーションを実行する ID または OU。
-
オートメーションを実行する Systems Manager でサポートされているリージョン。
-
オートメーションを実行するタグキーとタグ値、またはリソースグループの名前。
複数のリージョンとアカウントでオートメーションを実行する
まだ AWS CLI または AWS Tools for PowerShell をインストールして設定していない場合は、インストールして設定します。
詳細については、「AWS CLI の最新バージョンをインストールまたは更新します。」および「AWS Tools for PowerShell のインストール」を参照してください。
-
次のフォーマットを使用して、複数のリージョンとアカウントでオートメーションを実行するコマンドを作成します。各
リソースプレースホルダーの例
をユーザー自身の情報に置き換えます。次にいくつかの例を示します。
例 1: この例では、AWS Organizations 組織全体の 3 つのリージョンで EC2 インスタンスを再起動します。これを行うには、組織のルート ID をターゲットにして、子 OU を含めます。
例 2: この例では、異なるアカウントおよびリージョンの特定の EC2 インスタンスを再起動します。
例 3: この例では、
123456789012
および987654321098
リージョンにあるus-east-2
アカウントとus-west-1
アカウントの EC2 インスタンスを再起動します。インスタンスはEnv-PROD
のキーペア値でタグ付けされている必要があります。例 4: この例では、
123456789012
リージョンにある987654321098
アカウントとeu-central-1
アカウントの EC2 インスタンスを再起動します。これらのインスタンスは、prod-instances
AWS リソースグループのメンバーである必要があります。例 5: この例では、
ou-1a2b3c-4d5e6c
AWS 組織単位 (OU) の EC2 インスタンスを再起動します。インスタンスはus-west-1
およびus-west-2
リージョンにあります。これらのインスタンスは、WebServices
AWS リソースグループのメンバーである必要があります。システムは以下のような情報を返します。
-
以下のコマンドを実行して、オートメーションの詳細を表示します。
[Automation execution ID]
(オートメーション実行 ID) をユーザー自身の情報に置き換えます。 -
以下のコマンドを実行して、オートメーションの進行状況の詳細を表示します。
注記
コンソールで、オートメーションのステータスをモニタリングすることもできます。[Automation executions (オートメーション実行)] リストで、先ほど開始した実行を選択し、[Execution steps (実行ステップ)] タブを選択します。このタブには、オートメーションアクションのステータスが表示されます。