1. ホーム
  2. amazon-web-services

[解決済み] AWS::CloudFormation::Init どのように動作するのでしょうか?

2022-02-07 04:19:41

質問

を使用することができます。 AWS::CloudFormation::Init インスタンス起動後にコマンドを実行し、ファイルをアップロードすることができます。しかし、この操作の内部はどうなっているのか、誰か知っていますか(Amazon側から)?

テンプレートを渡すと、どの時点でファイルやコマンドがVMに転送されるのでしょうか?これはXenの機能(特別なパイプを通して)なのでしょうか、それともネットワーク経由なのでしょうか?

"Resources": {
  "MyInstance": {
    "Type": "AWS::EC2::Instance",
    "Metadata" : {
      "AWS::CloudFormation::Init" : {
        "config" : {
          "packages" : {
            :
          },
          "sources" : {
            :
          },
          "commands" : {
            :
          },
          "files" : {
            :
          },
          "services" : {
            :
          },
          "users" : {
            :
          },
          "groups" : {
            :
          }
        }
      }
    },
    "Properties": {
      :
    }
  }
}

解決方法は?

EC2インスタンスのメタデータとしてAWS::CloudFormation::Initリソースを作成しても、それだけでインスタンスが何もしない。

そのリソースで指定されたすべての操作を実際に実行するには、インスタンスは cfn-init コマンドラインツールです。Amazon EC2 AMIでは、そのコマンドはすでに次の場所にインストールされています。 /opt/aws/bin/cfn-init . このコマンドは、AWS::CloudFormation::Initリソースの名前、EC2サーバーリソースの名前、実行中のリージョンなど、いくつかのオプションを受け取ります。また、AWSのセキュリティ認証情報を入力する必要があります。

インスタンスの新規作成時に自動実行させたい場合は(私は確かにそうしました)、EC2インスタンスのUserDataを使って、初回起動時にインスタンスが実行するシェルスクリプトを作成し、その中に cfn-init コマンドを実行します。

私は この具体的な問題については を、最近ブログで紹介しました。