AWS :: CloudFormation :: Init它是如何工作的?

时间:2013-01-22 08:50:51

标签: amazon-web-services xen amazon-cloudformation

我们可以在启动实例后使用AWS::CloudFormation::Init执行命令并上传文件。但是有人知道这次行动的内部是什么(来自亚马逊方面)?

当我们传入模板时,文件或命令在什么时候传输到VM?这是Xen功能(通过特殊管道),还是通过网络?

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

1 个答案:

答案 0 :(得分:31)

创建AWS :: CloudFormation :: Init资源作为EC2实例的元数据不会导致实例自行执行任何操作。

对于实际执行该资源中指定的所有操作的实例,它必须运行cfn-init命令行工具。在Amazon EC2 AMI上,该命令已安装在/opt/aws/bin/cfn-init。该命令有多个选项,包括AWS :: CloudFormation :: Init资源的名称,EC2服务器资源的名称以及您正在运行的区域。您还需要提供AWS安全凭证。

如果您希望在创建新实例时自动运行(我确实这样做),您将必须使用EC2实例的UserData来创建实例将在首次启动时运行的shell脚本,并将其放入其中有cfn-init命令。

我最近在我的博客中written about this specific issue