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

SoY*_*ung 22 xen amazon-web-services aws-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": {
      :
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Cha*_*lke 32

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

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

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

我最近在博客中写过这个特定的问题.

  • 谢谢,这真的是非常有用的信息.但是我仍然想知道它在cfn-init背后是如何工作的(这些命令和文件如何通过网络或其他虚拟设备传输到VM?) (3认同)
  • cfn-init向Amazon地址发出HTTP请求以获取资源中的数据.然后,它执行模板中指定的操作.模板在哪里?亚马逊控制的服务器上的某个地方. (3认同)