cfn-init指定自定义json

时间:2017-11-01 15:25:41

标签: amazon-web-services amazon-cloudformation

有没有办法告诉cfn-init使用从磁盘加载的自定义JSON文件?这样我就可以快速解决问题,否则更改AWS::CloudFormation::Init部分的唯一方法是删除堆栈并重新创建它。

我只是对template.json进行更改,然后告诉cfn-init -f C:\template.json ...之类的内容,以便它使用C:\template.json而不是从169.254.169.254获取模板,或者获取start <path to your .application file>

1 个答案:

答案 0 :(得分:1)

结果cfn-init确实接受了一个文件,但该文件需要以"Metadata"密钥作为根密钥。

因此,如果我们将其保存到template.json

{
    "AWS::CloudFormation::Init": {
        "config": {
            "files": {
                "C:\\Users\\Administrator\\Desktop\\test-file": {
                    "source": "https://s3.us-east-2.amazonaws.com/example-bucket/example-file"
                }
            }
        }
    },
    "AWS::CloudFormation::Authentication": {
        "S3AccessCreds": {
            "type": "S3",
            "buckets": ["example-bucket"],
            "roleName": "s3access"
        }
    }
}

然后我们可以执行cfn-init -v --region us-east-2 template.json

注意:如果您使用cfn-init -v -s my_stack -r my_instance --region us-east-2 template.json,请不要包含堆栈或资源:

  

错误:您无法为元数据指定多个输入源

如果您将整个模板文件而不仅仅是“元数据”作为root,那么您将获得:

  

无法在template.json中找到'AWS :: CloudFormation :: Init'键