web-dev-qa-db-ja.com

AWS :: CloudFormation :: Initはどのように機能しますか?

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

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

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

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

私は この特定の問題について書いた 最近私のブログに書いた。

33
Charles Engelke