云形成-无法上传模板文件

时间:2019-09-26 21:48:25

标签: amazon-web-services amazon-cloudformation

我尝试通过上传模板来创建堆栈。
失败的是错误标题为空。

我有权创建存储桶,上传文件,创建EC2实例等。 我什至尝试切换到我的根帐户,但这无济于事。

我尝试了不同的YAML文件和示例,但似乎都没有用。 没有可操作项的有意义的错误消息,我被困住了。

enter image description here

enter image description here

{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Metadata": {
        "AWS::CloudFormation::Designer": {
            "213de823-ad0a-4f4c-af04-e3c9e565eef8": {
                "size": {
                    "width": 60,
                    "height": 60
                },
                "position": {
                    "x": 581,
                    "y": 148
                },
                "z": 0
            }
        }
    },
    "Resources": {
        "EC2I4PJFK": {
            "Type": "AWS::EC2::Instance",
            "Properties": {},
            "Metadata": {
                "AWS::CloudFormation::Designer": {
                    "id": "213de823-ad0a-4f4c-af04-e3c9e565eef8"
                }
            }
        }
    }
}

5 个答案:

答案 0 :(得分:3)

分辨率

尝试上载我创建的template.yml文件时遇到相同的问题。我的解决方案是在S3中创建一个公共对象,然后将对象URL复制到Cloudformation中。

作者提出的解决方案对我没有帮助。

调试

不幸的是,检查控制台和http请求并没有导致很多事情。 要求:https://console.aws.amazon.com/cloudformation/service/upload/uploadSuccess?bucket=cf-templates-jcexs078zt-us-east-1&key=somekey-template.yml&etag=someetag

返回200。

请求标头:

Host: console.aws.amazon.com
Referer: https://console.aws.amazon.com/cloudformation/home?region=us-east-1
Sec-Fetch-Dest: iframe
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: cross-site
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36

响应标题:

Cache-Control: private, no-cache, no store
Connection: keep-alive
Content-Length: 0
Date: Sun, 31 May 2020 00:05:20 GMT
Expires: Sat, 30 May 2020 00:05:20 GMT
Pragma: no-cache
Server: Server
Strict-Transport-Security: max-age=47304000; includeSubDomains
Vary: Accept-Encoding,X-Amzn-CDN-Cache,X-Amzn-AX-Treatment,User-Agent
x-amz-rid: {sensitive-info?}
X-CloudFormation-RequestId: 885b8352-3178-4658-8326-b6a696a89579

预期行为

我希望文件自动上传到s3,如果失败,我希望返回并显示有意义的错误消息。

答案 1 :(得分:2)

来自AWS支持。...

如果您正在使用“ Chrome”浏览器并看到此问题,请尝试清除cookie /浏览器缓存,退出浏览器并再次登录到AWS Console,然后尝试创建堆栈[1]。此外,请在禁用浏览器扩展后尝试。 [2]

解决方法: -您可以尝试使用任何其他浏览器,查看堆栈创建是否成功。 -您可以手动将模板上传到S3存储桶,并在创建堆栈时引用S3 URL。 -您也可以使用AWS CLI创建堆栈。[3]

[1]:清除Chrome上的缓存和Cookie:https://support.google.com/accounts/answer/32050?co=GENIE.Platform%3DDesktop&hl=en

[2]:在Chrome上管理扩展程序:https://support.google.com/chrome_webstore/answer/2664769?hl=en

[3]:用于创建堆栈的CLI命令参考:https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html

答案 2 :(得分:0)

我在错误的地区

一旦我在管理控制台本身中切换到us-east-1(Virginia),所有这些问题就消失了。当我切换到另一个区域时,它们会返回。该模板还引用us-east-1中的资源。因此,这说明了如何避免错误,但是不良(甚至空白)的错误消息非常无用。我仍然不确定其他地区的AMI参考是否是问题,或者您是否只需要在弗吉尼亚北部就可以运行cd。

有一次,我什至可以使用为模板文件创建的S3存储桶(而不是上传文件功能)来执行模板(尽管创建的资源仍然失败)。当我使用“从S3存储桶加载”方法时,它实际上已上载,但是由于错误的区域问题(例如AMI特定于区域)而导致堆栈创建失败。调试问题时,这只会增加混乱。

答案 3 :(得分:0)

为我的角色添加以下策略(在您的情况下,可能是角色或用户)对我有用:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::cf-template*"
        }
    ]
}

答案 4 :(得分:0)

我认为将文件上传到s3并粘贴s3 URI是目前唯一的解决方法。