変更リクエストの作成 - AWS Systems Manager

変更リクエストの作成

AWS Systems Manager の一機能である Change Manager で変更リクエストを作成すると、選択する変更テンプレートでは通常次の処理が行われます。

  • 変更リクエストの承認者を指定する、または必要な承認の数を指定する

  • 変更リクエストについて承認者に通知するために使用する Amazon Simple Notification Service (Amazon SNS) トピックを指定します。

  • Amazon CloudWatch アラームを指定して、変更リクエストのランブックワークフローをモニタリングします

  • リクエストされた変更を行うために選択できるオートメーションランブックを特定する

変更テンプレートは、使用する独自のオートメーションランブックを指定して、誰がリクエストのレビューと承認を行うかを指定できるように設定されている場合もあります。

重要

組織全体で Change Manager を使用する場合は、常に委任管理者アカウントから変更を行うことをお勧めします。組織内の他のアカウントから変更を行うことはできますが、それらの変更は、委任管理者アカウントで報告されず、表示することもできません。

変更リクエストの承認について

変更テンプレートに指定された要件によっては、そのテンプレートから作成する変更リクエストは、リクエストのランブックワークフローを実行する前に、最大 5 つのレベルの承認を必要とする場合があります。これらの各レベルに関して、テンプレート作成者は最大 5 人の潜在的な承認者を指定できます。承認者は 1 人のユーザーに限定されません。この意味での承認者は、IAM グループまたは IAM ロールとすることもできます。IAM グループと IAM ロールでは、そのグループまたはロールに属する 1 人以上のユーザーが、変更リクエストに必要な承認の総数の受け取りに対して、承認を提供することができます。テンプレート作成者は、変更テンプレートに必要な数よりも多くの承認者を指定することもできます。

オリジナルの承認ワークフローと更新および/または承認

2023 年 1 月 23 日より前に作成された変更テンプレートを使用する場合、変更リクエストをそのレベルで承認するには、指定された各承認者から承認を受ける必要があります。例えば、次のイメージに示された承認レベルの設定では、4 人の承認者が指定されています。指定承認者には、2 人のユーザー (John Stiles と Ana Carolina Silva)、3 人のメンバーで構成されたユーザーグループ (GroupOfThree)、10 人のユーザーを代表するユーザーロール (RoleOfTen) が含まれます。

行ごとに必要な 4 人の承認者を示す承認レベルです。

このレベルで変更リクエストが承認されるには、John Stiles、Ana Carolina Silva、GroupOfThree グループの 1 人のメンバー、RoleOfTen ロールの 1 人のメンバーによる承認が必要です。

テンプレート作成者は、2023 年 1 月 23 日以降に作成された変更テンプレートを使用して、承認レベルごとに必要な承認の総数を指定できます。これらの承認は、承認者として指定されたユーザー、グループ、ロールを自由に組み合わせて行うことができます。変更テンプレートでは、1 つのレベルに対して 1 つの承認しか必要としませんが、例えば、2 人の個人ユーザー、2 つのグループ、1 人のロールを潜在的な承認者として指定できます。

例えば、次のイメージに示された承認レベルエリアでは、3 つの承認が必要です。テンプレートで指定された承認者には、2 人のユーザー (John Stiles と Ana Carolina Silva)、3 人のメンバーを含むユーザーグループ (GroupOfThree)、10 人のユーザーを代表するユーザーロール (RoleOfTen) が含まれます。

3 人の承認が必要で、4 人の承認者が指定されていることを示す承認レベルです。

GroupOfThree グループ内の 3 人のユーザー全員が変更リクエストを承認すると、そのレベルで変更リクエストが承認されます。各ユーザー、グループ、ロールの承認を受け取る必要はありません。承認の最小数は、潜在的な承認者を任意に組み合わせて得ることができます。

変更リクエストが作成されると、そのレベルの承認通知対象として指定されている Amazon SNS トピックのサブスクライバーに通知が送信されます。変更テンプレートの作成者が、使用する必要のある通知トピックを指定したか、指定を許可した可能性があります。

任意のレベルで必要最小限の承認が受理されると、次のレベルの Amazon SNS トピックのサブスクライバーに通知が送信され、以降も同様に通知が送信されます。

承認レベルと承認者がいくつ指定されていても、そのリクエストのランブックワークフローの発生を防ぐには、変更リクエストを 1 回却下するだけで済みます。

変更リクエストの作成 (コンソール)

次の手順では、Systems Manager コンソールを使用して変更リクエストを作成する方法について説明します。

変更リクエストを作成するには(コンソール)
  1. AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/) を開きます。

  2. ナビゲーションペインで、[Change Manager] を選択します。

  3. [Create request] (リクエストを作成) をクリックします。

  4. この変更リクエストに使用する変更テンプレートを検索して選択します。

  5. [Next] を選択します。

  6. [Name] (名前) には、UpdateEC2LinuxAMI-us-east-2 など、その目的を識別しやすくする変更リクエストの名前を入力します。

  7. [Runbook] (ランブック) には、リクエストした変更を行うために使用するランブックを選択します。

    注記

    ランブックを選択するオプションが利用できなくなっている場合は、使用する必要があるランブックが変更テンプレートの作成者によって指定されています。

  8. [Change request information] (変更リクエストの情報) には、Markdown を使用して、変更リクエストに関する追加情報を提供します。これは、レビューワーが変更リクエストを承認するか拒否するかを決定するために役立ちます。使用しているテンプレートの作成者が、指示、または回答する質問を提供している場合もあります。

    注記

    Markdown は、ドキュメント、およびドキュメント内の個々のステップに wiki 形式の説明を追加できるようにするマークアップ言語です。Markdown の使用に関する詳細については、「AWS での Markdown の使用」を参照してください。

  9. [Workflow start time] (ワークフロー開始時刻) セクションで、以下のいずれかを選択します。

    • スケジュールされた時刻にオペレーションを実行する – [Requested start time] (リクエストされた開始時刻) には、このリクエストのランブックワークフローの実行について提案する日付と時刻を入力します。[Estimated end time] (予想終了時間) で、ランブックワークフローが完了する予想日時を入力します。(この時間は、レビュー担当者に伝える予想に過ぎません。)

      ヒント

      [View Change Calendar] (変更カレンダーを表示) をクリックして、指定した時刻にブロッキングイベントがないかどうかをチェックします。

    • Run the operation as soon as possible after approval (承認後、できるだけ早くオペレーションを実行する) – 変更リクエストが承認されると、変更を行うことができる無制限期間になり次第、ランブックワークフローが実行されます。

  10. [Change request approvals] (変更リクエスト承認) セクションで、以下を実行します。

    1. 承認タイプオプションを表示するには、以下のいずれかを選択します。

      • 自動承認 - 選択した変更テンプレートは、変更リクエストを自動的に実行できるように設定され、承認者の確認は不要です。ステップ 11 に進みます。

        注記

        Systems Manager の使用を管理する IAM ポリシーで指定されているアクセス許可は、自動承認の変更リクエストを自動的に実行するために送信することを制限してはなりません。

      • 承認者の指定 — この変更リクエストを確認および承認するには、単一または複数のユーザー、グループ、または IAM ロールを追加する必要があります。

        注記

        Systems Manager の使用を管理する IAM ポリシーで指定されているアクセス許可によって、自動承認変更リクエストを実行できる場合でも、レビュー担当者を指定できます。

    2. [Add approver (承認者を追加)] をクリックして、利用可能なレビュー担当者のリストから単一または複数のユーザー、グループ、またはまたは AWS Identity and Access Management (IAM) ロールを選択します。

      注記

      1 人、または複数人の承認者が既に指定されている場合があります。これは、選択した変更テンプレートに、必須の承認者が既に指定されていることを意味します。これらの承認者をリクエストから削除することはできません。[承認者を追加] ボタンが有効になっていない場合は、選択したテンプレートでリクエストへのレビューワーの追加が許可されていません。

      変更リクエストの承認の詳細については、「変更リクエストの承認について」を参照してください。

    3. [SNS topic to notify approvers] (承認者に通知する SNS トピック) で以下のいずれかを選択して、この変更リクエストに追加している承認者への通知の送信に使用される、アカウント内の Amazon SNS トピックを指定します。

      注記

      Amazon SNS トピックを指定するオプションが利用できなくなっている場合、選択した変更テンプレートで、使用する Amazon SNS トピックが既に指定されています。

      • Enter an SNS Amazon Resource Name (ARN)(SNS Amazon リソースネーム (ARN) を入力) – [Topic ARN (トピック ARN) には、既存の Amazon SNS トピックの ARN を入力します。このトピックは、組織のどのアカウントのものでも使用できます。

      • Select an existing SNS topic (既存の SNS トピックを選択) – [Target notification topic] (ターゲット通知トピック) には、現在のアカウントにある既存の Amazon SNS トピックの ARN を選択します。(このオプションは、現在の AWS アカウント と AWS リージョン で Amazon SNS トピックをまだ作成していない場合は使用できません)。

      注記

      選択する Amazon SNS トピックは、送信する通知とその送信先のサブスクライバーを指定するように設定されている必要があります。Amazon SNアクセスポリシーは、Change Manager が通知を送信できるように、Systems Manager にアクセス許可も付与する必要があります。詳細については、Change Manager 通知用の Amazon SNS トピックの設定 を参照してください。

    4. [Add notification] (通知を追加) をクリックします。

  11. [Next] を選択します。

  12. [IAM role (IAM ロール)] では、この変更リクエストに指定されたランブックの実行に必要な許可を持つ、現在のアカウントの IAM ロールを選択します。

    このロールは、オートメーションのサービスロール (または assume ロール) と呼ばれることもあります。このロールの詳細については、「オートメーションの設定」を参照してください。

  13. [Deployment location] (デプロイの場所) セクションで、以下のいずれかを選択します。

    注記

    AWS Organizations でセットアップされた組織ではなく、単一の AWS アカウント アカウントのみで Change Manager を使用している場合、デプロイ先を指定する必要はありません。

    • Apply change to this account (このアカウントに変更を適用) – ランブックワークフローは現在のアカウントのみで実行されます。組織の場合、これは委任管理者アカウントを意味します。

    • Apply change to multiple organizational units (OUs) (複数の組織単位 (OU) に変更を適用) – 以下を実行します。

      1. [Accounts and organizational units (OUs)] (アカウントと組織単位 (OU)) には、組織内のメンバーアカウントの ID を 123456789012 形式で入力、または組織単位の ID を o-o96EXAMPLE 形式で入力します。

      2. (オプション) [Execution role name] (実行ロール名) に、ターゲットアカウント、またはこの変更リクエストに指定されているランブックを実行するために必要な許可を持つ OU の IAM ロールの名前を入力します。このロールの名前は、指定した OU 内のすべてのアカウントが同じ名前を使用する必要があります。

      3. (オプション) 指定する追加のアカウント、または OU ごとに [Add another target location] (別のターゲットロケーションを追加する) を選択して、ステップ a と b を繰り返します。

      4. [ターゲット AWS リージョン] には、米国東部 (オハイオ) の Ohio (us-east-2) など、変更を行うリージョンを選択します。

      5. [Rate control] (レート制御) を展開します。

        [Concurrency] (同時実行値) に数値を入力して、それがランブックワークフローを同時に実行できるアカウントの数と割合のどちらを表しているかをリストから選択します。

        [Error threshold] (エラーしきい値) に数値を入力して、それが操作の停止までにランブックワークフローが失敗できるアカウントの数と割合のどちらを表しているかをリストから選択します。

  14. [Deployment targets] (デプロイターゲット) セクションで、以下を実行します。

    1. 次のいずれかを選択します。

      • Single resource (単一のリソース) – 変更は 1 つのリソースにしか行われません。例えば、この変更リクエストのランブックで定義されている操作に応じて、これは 1 つのノード、または 1 つの Amazon Machine Image (AMI) になります。

      • Multiple resources (複数のリソース) – [Parameter] (パラメータ) には、この変更リクエストのランブックからの利用可能なパラメータから選択します。この選択は、更新されるリソースのタイプを反映します。

        例えば、この変更リクエストのランブックが AWS-RetartEC2Instance である場合は、InstanceId を選択してから、以下を選択することで、どのインスタンスが更新されるのかを定義します。

        • Specify tags (タグを指定する) – 更新されるすべてのリソースに付けられるタグのキーバリューペアを入力します。

        • [Choose a resource group] (リソースグループを選択する) – 更新されるすべてのリソースが属するリソースグループの名前を選択します。

        • Specify parameter values (パラメータ値を指定する) – [Runbook parameters] (ランブックのパラメータ) セクションで更新するリソースを特定します。

        • Target all instances (すべてのインスタンスをターゲットにする) – ターゲットロケーションにあるすべてのマネージドノードで変更を行います。

    2. [Multiple resources] (複数のリソース) を選択した場合は、[Rate control] (レート制御) を展開します。

      [Concurrency] (同時実行値) に数値を入力して、ランブックワークフローが同時に更新できるターゲットの数と割合のどちらを表しているかをリストから選択します。

      [Error threshold] (エラーしきい値) に数値を入力して、操作の停止までに更新が失敗できるターゲットの数と割合のどちらを表しているかをリストから選択します。

  15. 前のステップで、複数のリソースを更新するために [Specify parameter values] (パラメータ値を指定する) を選択した場合: [Runbook parameters] (ランブックのパラメータ) セクションで、必要な入力パラメータの値を指定します。指定する必要があるパラメータ値は、選択した変更テンプレートに関連付けられたオートメーションランブックの内容に基づきます。

    例えば、変更テンプレートが AWS-RetartEC2Instance ランブックを使用する場合、[instanceId] パラメータには 1 つ、または複数のインスタンス ID を入力する必要があります。または、[Show interactive instance picker] (インタラクティブなインスタンスピッカーを表示) を選択して、利用可能なインスタンスを 1 つずつ選択します。

  16. [Next] を選択します。

  17. [Review and submit] (レビューして送信) ページで、この変更リクエストに指定したリソースとオプションを再確認します。

    変更を行うすべてのセクションの [Edit] (編集) ボタンをクリックします。

    変更リクエストの内容に問題がなければ、[Submit for approval] (承認のために送信) をクリックします。

リクエスト用に選択した変更テンプレートで Amazon SNS トピックが指定されている場合は、リクエストが拒否または承認されたときに通知が送信されます。リクエストの通知が届かない場合は、Change Manager に戻って、リクエストのステータスを確認できます。

変更リクエストの作成 (AWS CLI)

変更リクエストを作成するには、AWS Command Line Interface(AWS CLI) を使用して、変更リクエストのオプションとパラメータを JSON ファイルで指定し、--cli-input-json オプションを使用してコマンドに含めることができます。

変更リクエストを作成するには (AWS CLI)
  1. まだ AWS CLI または AWS Tools for PowerShell をインストールして設定していない場合は、インストールして設定します。

    詳細については、「AWS CLI の最新バージョンをインストールまたは更新します。」および「AWS Tools for PowerShell のインストール」を参照してください。

  2. MyChangeRequest.json などの名前でローカルマシンに JSON ファイルを作成し、次の内容を貼り付けます。

    変更リクエストの値でプレースホルダーを置き換えます。

    注記

    このサンプル JSON では、AWS-HelloWorldChangeTemplate 変更テンプレートおよび AWS-HelloWorld ランブックを使用して変更リクエストを作成します。このサンプルを独自の変更リクエストに適用するには、「AWS Systems Manager API リファレンス」で「StartChangeRequestExecution」を参照してください。使用可能なすべてのパラメータに関する情報が掲載されています。

    変更リクエストの承認の詳細については、「変更リクエストの承認について」を参照してください。

    { "ChangeRequestName": "MyChangeRequest", "DocumentName": "AWS-HelloWorldChangeTemplate", "DocumentVersion": "$DEFAULT", "ScheduledTime": "2021-12-30T03:00:00", "ScheduledEndTime": "2021-12-30T03:05:00", "Tags": [ { "Key": "Purpose", "Value": "Testing" } ], "Parameters": { "Approver": [ "JohnDoe" ], "ApproverType": [ "IamUser" ], "ApproverSnsTopicArn": [ "arn:aws:sns:us-east-2:123456789012:MyNotificationTopic" ] }, "Runbooks": [ { "DocumentName": "AWS-HelloWorld", "DocumentVersion": "1", "MaxConcurrency": "1", "MaxErrors": "1", "Parameters": { "AutomationAssumeRole": [ "arn:aws:iam::123456789012:role/MyChangeManagerAssumeRole" ] } } ], "ChangeDetails": "### Document Name: HelloWorldChangeTemplate\n\n## What does this document do?\nThis change template demonstrates the feature set available for creating change templates for Change Manager. This template starts a Runbook workflow for the Automation document called AWS-HelloWorld.\n\n## Input Parameters\n* ApproverSnsTopicArn: (Required) Amazon Simple Notification Service ARN for approvers.\n* Approver: (Required) The name of the approver to send this request to.\n* ApproverType: (Required) The type of reviewer.\n * Allowed Values: IamUser, IamGroup, IamRole, SSOGroup, SSOUser\n\n## Output Parameters\nThis document has no outputs \n" }
  3. JSON ファイルを作成したディレクトリで、次のコマンドを実行します。

    aws ssm start-change-request-execution --cli-input-json file://MyChangeRequest.json

    システムが以下のような情報をレスポンスします。

    {
        "AutomationExecutionId": "b3c1357a-5756-4839-8617-2d2a4EXAMPLE"
    }