CloudFormation の EC2 インスタンスにメタデータを含める際に発生する問題をトラブルシューティングする方法を教えてください。

所要時間2分
0

AWS CloudFormation では、AWS:: CloudFormation:: Init を使用して Amazon Elastic Cloud Compute (Amazon EC2) インスタンスにメタデータを含めたのですが、インスタンスに変更が表示されません。

解決策

前提条件CloudFormation スタックの [失敗時のロールバック] オプションを [いいえ] に設定します。

[失敗時のロールバック] を [いいえ] に設定しても EC2 インスタンスにメタデータを含めることができない場合は、次の手順を実行してください。

**注:**以下の解決手順は、Linux インスタンスを使用して作成した CloudFormation スタック用です。

cfn-init ヘルパースクリプトがインストールされていることを確認する

CloudFormation リソースにシグナルを送信するように設定されているインスタンスに cfn-init がインストールされていることを確認するには、次の手順を実行します。

  1. SSH を使用してインスタンスに接続します
  2. cfn-init または aws-cfn-bootstrap パッケージがディレクトリにインストールされていることを確認します。
    cfn-init を確認するには、次のコマンドを実行します。
    sudo find / -name cfn-init/opt/aws/bin/cfn-init
    /opt/aws/apitools/cfn-init
    /opt/aws/apitools/cfn-init-1.4-34.24.amzn1/bin/cfn-init
    /var/lib/cfn-init
    aws-cfn-bootstrap パッケージを確認するには、次のコマンドを実行します。
    sudo rpm -q aws-cfn-bootstrapaws-cfn-bootstrap-1.4-34.24.amzn1.noarch
    **注:**上記のコマンドは、RPM パッケージマネージャーを使用するディストリビューションでのみ機能します。

CloudFormation ヘルパースクリプトは、デフォルトで Amazon Linux Amazon マシンイメージ (AMI) にインストールされます。

インスタンスがインターネットに接続されていることを確認する

インスタンスが Amazon 仮想プライベートクラウド (Amazon VPC) にある場合、インスタンスは次の方法でインターネットに接続できます。

  • プライベートサブネット内の NAT デバイス
  • パブリックサブネットのインターネットゲートウェイ

インスタンスのインターネット接続をテストするには、AWS のホームページ などの公開ウェブページを開きます。次に、インスタンスで curl コマンドを実行します。例

curl -I https://aws.amazon.com

インスタンスがインターネットに接続されている場合、コマンドは HTTP 200 ステータスコードを返します。

インターフェイス VPC エンドポイントを使用する場合、エンドポイントはインスタンスと同じ AWS リージョンにある必要があります。また、インターフェイスエンドポイントにアタッチされているセキュリティグループは、Amazon VPC のプライベートサブネットからのポート 443 での受信接続を許可する必要があります。

cloud-init ログまたは cfn-init ログのエラーを検索する

cloud-init ログまたは cfn-init ログの構文エラーまたは誤った値を検索するには、次の手順を実行します。

  1. SSH を使用してインスタンスに接続します。
  2. 詳細なエラーメッセージを見つけるには、次のログで error または failure のキーワードを検索します。
    /var/log/cloud-init-output.log
    /var/log/cloud-init.log
    /var/log/cfn-init.log
    /var/log/cfn-init-cmd.log
    次のコマンドを実行して、/var/log/cfn または /var/log/cloud-initファイル内の error または failure という単語のすべてのインスタンスを見つけます。
    grep -ni 'error\|failure' $(sudo find /var/log -name cfn-init\* -or -name cloud-init\*)
    **注:**上記のコマンドは、ファイル名、行番号、およびエラーメッセージを返します。
  3. 詳細なエラーメッセージを使用してエラーを修正し、スタックを更新します。

cfn-init.log が存在しない場合は、CloudFormation テンプレートが cfn-initを実行していなかったことになります。

UserData プロパティが cfn-init を実行するように設定したことを確認するには、次の手順を実行します。

  1. コードエディターで、スタックの CloudFormation テンプレートを開きます。
  2. UserDataで、構文エラー、スペースの欠落、スペルミス、その他のタイプミスなどのエラーを確認します。
  3. スタック、リソース、リージョンのプロパティの値が正しいことを確認します。
  4. UserData プロパティの Fn::Join 組み込み関数では、詳細モードで -v を使用して cfn-init を実行します。出力例については、「」を参照してください。

関連情報

CloudFormation VPC エンドポイントに関する考慮事項

AWS::CloudFormation::Init

AWS CloudFormation の「Failed to receive X resource signal(s) within the specified duration」エラーを解決するにはどうすればよいですか?

AWS公式
AWS公式更新しました 7ヶ月前
コメントはありません

関連するコンテンツ