25

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": {
      :
    }
  }
}
4

1 に答える 1

41

AWS :: CloudFormation :: InitリソースをEC2インスタンスへのメタデータとして作成しても、インスタンスはそれ自体では何もしません。

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

新しいインスタンスを作成するときにこれを自動的に実行したい場合は(確かにそうしました)、EC2インスタンスのUserDataを使用して、インスタンスが最初の起動時に実行されるシェルスクリプトを作成し、その中にcfn-initコマンドを配置する必要があります。

最近、この特定の問題についてブログに書いています。

于 2013-01-22T13:02:30.487 に答える