AWSPremiumSupport-ResizeNitroInstance - AWS Systems Manager オートメーションランブックリファレンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWSPremiumSupport-ResizeNitroInstance

説明

AWSPremiumSupport-ResizeNitroInstance ランブックは、Nitro System 上に構築された Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのサイズを変更するための自動化ソリューションを提供します。

データ損失やダウンタイムの潜在的なリスクを軽減するために、ランブックでは以下を検証しています。

  • インスタンス停止動作。

  • インスタンスが Amazon EC2 Auto Scaling グループの一部であり、かつ standby モードに入っている場合。

  • インスタンスの状態とテナンシー。

  • 変更したいインスタンスタイプは、インスタンスに現在アタッチされているネットワークインターフェースの数をサポートします。

  • 現在のインスタンスタイプとターゲットインスタンスタイプのプロセッサアーキテクチャと仮想化タイプは同じです。

  • インスタンスが実行中であれば、すべてのステータスチェックに合格しているということです。

  • 変更するインスタンスタイプは、同一のアベイラビリティーゾーンで使用できます。

インスタンスタイプを変更した後に Amazon EC2 がステータスチェックに合格しなかった場合、ランブックは自動的に前のインスタンスタイプにロールバックします。

デフォルトでは、このランブックが実行中でインスタンスストアボリュームがアタッチされている場合、インスタンスタイプは変更されません。また、インスタンスが AWS CloudFormation スタックの一部である場合、ランブックはインスタンスタイプを変更しません。これらの動作のいずれかを変更する場合は、AllowInstanceStoreInstances および AllowCloudFormationInstances パラメータに yes を指定してください。

ランブックには、変更先のインスタンスタイプを指定する方法が 2 つ用意されています。

  • 1 つのインスタンスを対象とする単純な自動化では、TargetInstanceTypeFromParameter パラメータを使用して変更するインスタンスタイプを指定します。

  • 自動化を大規模に実行して複数のインスタンスのインスタンスタイプを変更する場合は、TargetInstanceTypeFromTagValue パラメータを使用してインスタンスタイプを指定します。自動化の実行については、「自動化を大規模に実行」を参照してください。

どちらのパラメータにも値を指定しないと、自動化は失敗します。

重要

AWSPremiumSupport-* ランブックにアクセスするには、エンタープライズサポートまたはビジネスサポートサブスクリプションが必要です。詳細については、「AWS Support プランの比較」を参照してください。

考慮事項

  • このランブックを使用する前にインスタンスをバックアップすることをおすすめします。

  • インスタンスタイプを変更する際の互換性については、「インスタンスタイプ変更の互換性」を参照してください。

  • 自動化が失敗して元のインスタンスタイプにロールバックする場合は、「インスタンスタイプを変更する場合のトラブルシューティング」を参照してください。

  • インスタンスタイプを変更すると、ランブックでインスタンスを停止する必要があります。インスタンスが停止すると、メモリまたはインスタンスストアボリュームに保存されているすべてのデータは失われます。また、自動的に割り当てられたパブリック IPv4 アドレスはすべて解放されます。インスタンスを停止するとどうなるかについては、「インスタンスの停止と開始」を参照してください。

  • SkipInstancesWithTagKey パラメータを使用すると、特定の Amazon EC2 タグキーが適用されているインスタンスをスキップできます。

この自動化を実行する (コンソール)

ドキュメントタイプ

Automation

所有者

Amazon

[Platforms] (プラットフォーム)

Linux、Windows

[Parameters] (パラメータ)

  • AutomationAssumeRole

    型: 文字列

    説明: (オプション) Systems Manager Automation がユーザーに代わってアクションを実行できるようにする AWS Identity and Access Management (IAM) ロールの Amazon リソースネーム (ARN)。ロールを指定しない場合、Systems Manager Automation はこのランブックを開始するユーザーのアクセス許可を使用します。

  • 了解

    型: 文字列

    説明: (必須) 現在実行中のインスタンスが停止することを確認するには yes を入力してください。

  • AllowInstanceStoreInstances

    型: 文字列

    有効な値: no | yes

    デフォルト: いいえ

    説明: (オプション) yes を指定すると、インスタンスストアボリュームがアタッチされているインスタンスでランブックを実行できるようになります。

  • AllowCloudFormationInstances

    型: 文字列

    有効な値: no | yes

    デフォルト: いいえ

    説明: (オプション) yes を指定すると、ランブックは AWS CloudFormation スタックの一部であるインスタンスで実行されます。

  • DryRun

    型: 文字列

    有効な値: no | yes

    デフォルト: いいえ

    説明: (オプション) yes を指定すると、ランブックはインスタンスタイプを変更せずにサイズ変更要件を検証します。

  • InstanceId

    型: 文字列

    説明: (必須) タイプを変更する Amazon EC2 インスタンスの ID。

  • SkipInstancesWithTagKey

    型: 文字列

    説明: (オプション) 指定したタグキーがインスタンスに適用されている場合、自動化はターゲットインスタンスをスキップします。

  • SleepTime

    型: 文字列

    デフォルト: 3

    説明: (オプション) 完了後、このランブックがスリープ状態になる秒数。

  • TagInstance

    型: 文字列

    説明: (オプション)「Key=ChangingType,Value=True」の形式を使用して、インスタンスに任意のキーと値をタグ付けします。このオプションにより、このランブックのターゲットとなったインスタンスを追跡できます。タグのキーと値は大文字と小文字が区別されます。

  • TargetInstanceTypeFromParameter

    型: 文字列

    説明: (オプション) 変更したいインスタンスのタイプ。TargetInstanceTypeFromTagValue パラメータに指定されたタグキーの値を使用する場合は、このパラメータを空のままにしてください。

  • TargetInstanceTypeFromTagValue

    型: 文字列

    説明: (オプション) 変更したいインスタンスタイプが値に含まれているターゲットインスタンスに適用されるタグキー。この TargetInstanceTypeFromParameter パラメータ値を指定すると、このパラメータに指定した任意の値はオーバーライドされます。

必要な IAM アクセス許可

AutomationAssumeRole パラメータでは、ランブックを正常に使用するために、次のアクションが必要です。

  • autoscaling:DescribeAutoScalingInstances

  • cloudformation:DescribeStackResources

  • ssm:GetAutomationExecution

  • ssm:DescribeAutomationExecutions

  • ec2:DescribeInstanceAttribute

  • ec2:DescribeInstances

  • ec2:DescribeInstanceStatus

  • ec2:DescribeInstanceTypeOfferings

  • ec2:DescribeInstanceTypes

  • ec2:DescribeTags

  • ec2:ModifyInstanceAttribute

  • ec2:StartInstances

  • ec2:StopInstances

ドキュメントステップ

  1. aws:assertAwsResourceProperty: Amazon EC2 インスタンスが、SkipInstancesWithTagKeyパラメータで指定されたリソースタグキーでタグ付けされていないことを確認します。タグキーがインスタンスに適用されていることが判明した場合、ステップは失敗し、自動化は終了します。

  2. aws:assertAwsResourceProperty: ターゲット Amazon EC2 インスタンスのステータスがrunningpendingstopped または stopping であることを確認します。それ以外の場合、自動化は終了します。

  3. aws:executeAwsApi: Amazon EC2 インスタンスからプロパティを収集します。

  4. aws:executeAwsApi: 現在の Amazon EC2 インスタンスタイプに関する詳細を収集します。

  5. aws:branch: 現在のインスタンスタイプと TargetInstanceTypeFromParameter パラメータで指定されたインスタンスタイプが同じかどうかを確認します。一致する場合、自動化は終了します。

  6. aws:assertAwsResourceProperty: インスタンスが Nitro System で実行されていることを確認します。

  7. aws:branch: Amazon EC2 インスタンスのルートボリュームタイプが、Amazon Elastic Block Store (Amazon EBS) ボリュームであることを確認します。

  8. aws:assertAwsResourceProperty: インスタンスのシャットダウン動作が stop であり、terminateではないことを確認します。

  9. aws:branch: Amazon EC2 インスタンスがスポットインスタンスではないことを確認します。

  10. aws:branch: Amazon EC2 インスタンスのテナンシーがデフォルトであり、専有ホストや専有インスタンスではないことを確認します。

  11. aws:executeScript: 現在のインスタンス ID をターゲットとするこのランブックの自動化が 1 つしかないことを確認します。同じインスタンスをターゲットとする別の自動化がすでに進行中の場合、その自動化はエラーを返して終了します。

  12. aws:branch: Amazon EC2 インスタンスの状態に基づいて自動化を分岐します。

    1. stopped または stopping の場合、Amazon EC2 インスタンスが完全に停止するまで自動化が aws:waitForAwsResourceProperty を実行します。

    2. running または pending の場合、Amazon EC2 インスタンスがステータスチェックに合格するまで自動化が aws:waitForAwsResourceProperty を実行します。

  13. aws:assertAwsResourceProperty: DescribeAutoScalingInstances API オペレーションを呼び出して、Amazon EC2 インスタンスが Auto Scaling グループの一部ではないことを確認します。インスタンスが Auto Scaling グループの一部である場合、Amazon EC2 インスタンスは standby モードに入っています。

  14. aws:branch: Amazon EC2 インスタンスが AWS CloudFormation スタックの一部であるかどうかを自動化で確認したいかどうかに応じて、自動化を分岐させます。

    1. aws:executeScript DescribeStackResources API オペレーションを呼び出して、Amazon EC2 インスタンスが AWS CloudFormation スタックの一部ではないことを確認します。

  15. aws:executeAwsApi: プロセッサアーキテクチャタイプ、仮想化タイプが同じで、ターゲットインスタンスに現在アタッチされているネットワークインターフェイスの数をサポートするインスタンスタイプのリストを返します。

  16. aws:executeAwsApi: TargetInstanceTypeFromTagValue パラメータで指定されたタグキーからターゲットインスタンスタイプ値を取得します。

  17. aws:executeScript: 現在のインスタンスタイプとターゲットインスタンスタイプに互換性があることを確認します。ターゲットインスタンスタイプが同じサブネットで利用可能であることを確認します。ランブックを起動したプリンシパルに、インスタンスタイプを変更する権限があり、実行中の場合はインスタンスを停止して起動する権限があることを確認します。

  18. aws:branch: DryRun パラメータ値が yes に設定されているかどうかに基づいて自動化を分岐させます。yes の場合、自動化は終了します。

  19. aws:branch: 元のインスタンスタイプとターゲットインスタンスタイプが同じかどうかを確認します。一致する場合、自動化は終了します。

  20. aws:executeAwsApi: 現在のインスタンスの状態を取得します。

  21. aws:changeInstanceState: Amazon EC2 インスタンスを停止します。

  22. aws:changeInstanceState: インスタンスが stopping の状態で動かなくなった場合、強制的に停止します。

  23. aws:executeAwsApi: インスタンスタイプをターゲットインスタンスタイプに変更します。

  24. aws:sleep: インスタンスタイプを変更した後、最終的に一貫性が保たれるまで 3 秒間待ちます。

  25. aws:branch: 前のインスタンスの状態に基づいて自動化を分岐します。running であった場合、インスタンスが起動されます。

    1. aws:changeInstanceState: インスタンスタイプを変更する前に Amazon EC2 インスタンスが起動していた場合、Amazon EC2 インスタンスを起動します。

    2. aws:waitForAwsResourceProperty: Amazon EC2 インスタンスがステータスチェックに合格するのを待ちます。インスタンスがステータスチェックに合格しない場合、インスタンスは元のインスタンスタイプに戻されます。

      1. aws:changeInstanceState: Amazon EC2 インスタンスを停止してから、元のインスタンスタイプに変更します。

      2. aws:changeInstanceState: Amazon EC2 インスタンスが停止状態で停止した場合に、元のインスタンスタイプに変更する前に強制的に Amazon EC2 インスタンスを停止します。

      3. aws:executeAwsApi: Amazon EC2 インスタンスを元のタイプに変更します。

      4. aws:sleep: インスタンスタイプを変更した後、最終的に一貫性が保たれるまで 3 秒間待ちます。

      5. aws:changeInstanceState: インスタンスタイプを変更する前に Amazon EC2 インスタンスが起動していた場合、Amazon EC2 インスタンスを起動します。

      6. aws:waitForAwsResourceProperty: Amazon EC2 インスタンスがステータスチェックに合格するのを待ちます。

  26. aws:sleep: ランブックを終了するまで待ちます。