「内部エラー」メッセージを受け取ったときに、AWS OpsWorks で「stop_failed」ステータスのインスタンスを停止する方法を教えてください。

最終更新日: 2020 年 11 月 2 日

AWS OpsWorks Stacks で「stop_failed」とマークされたインスタンスを停止することができません。AWS Identity and Access Management (IAM) サービスロールには必要なすべてのアクセス許可が付与されていますが、AWS マネジメントコンソールを使用してインスタンスを停止しようとすると、「内部エラー」メッセージが表示されます。場合によっては、OpsWorks Stacks インスタンスに関連付けられた Amazon Elastic Compute Cloud (Amazon EC2) インスタンスがないことがあります。OpsWorks Stacks インスタンスを停止済みとして安全にマークする方法を教えてください。

簡単な説明

Amazon EC2 でインスタンスが削除された場合、OpsWorks Stacks のインスタンスを停止することはできません。停止する必要のあるインスタンスを検索するには、OpsWorks StopInstance API 呼び出しで EC2 インスタンス ID と IAM サービスロールに関連するアクセス許可が必要です。OpsWorks Stacks が EC2 ID を見つけられない場合、API 呼び出しは失敗し、「内部エラー」メッセージが返されます。基になる EC2 インスタンスが既に削除されている場合、または内部エラーがある場合に StopInstance が機能させるには、--force 句を使用する必要があります。

解決方法

注意: AWS コマンドラインインターフェイス (AWS CLI) のコマンド実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用するようにしてください

停止としてマークする必要があるインスタンスの OpsWorks インスタンス ID を取得する

1.    特定のスタックの stopped_failed 状態のインスタンスをフィルタリングするには、クエリを指定して describe-instances コマンドを実行します。

$ aws opsworks describe-instances --stack-id your-stack-id --region your-region --query 'Instances[?Status=='stop_failed'].{Id:InstanceId}'

2.    停止済みとしてマークするインスタンス ID を書き留めてください。

注: 従来の OpsWorks Stacks エンドポイントを使用している場合は、us-east-1 を AWS リージョンとして使用します。

インスタンスを停止するには、--force 句を使用します

停止済みとしてマークするインスタンスが 1 つある場合は、stop-instance コマンドを実行します。

$ aws opsworks stop-instance --instance-id your-opsworks-instance-id --force --region your-region

複数のインスタンスがある場合は、カスタムロジックを使用してインスタンスを反復処理できます。例: 

$ for Id in $(aws opsworks describe-instances --stack-id your-stack-id --region your-region --query 'Instances[?Status==`start_failed`].{Id:InstanceId}' --output text) ; do aws opsworks stop-instance --instance-id $Id --force --region your-region  ; done

この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?