Amazon cloudformation AWS CloudFormation CLI-参数问题

Amazon cloudformation AWS CloudFormation CLI-参数问题,amazon-cloudformation,Amazon Cloudformation,我有一个EC2实例,我正试图使用它执行CFN脚本,但我面临以下错误: Error parsing parameter '--parameters': Unable to retrieve https://xxxxxxxxxxxxxxxxxxxxVPC-Parameters.json: received non 200 status code of 403 请参阅我的CLI命令: aws cloudformation create-stack \ --stack-name mytestV

我有一个EC2实例,我正试图使用它执行CFN脚本,但我面临以下错误:

Error parsing parameter '--parameters': Unable to retrieve https://xxxxxxxxxxxxxxxxxxxxVPC-Parameters.json: received non 200 status code of 403
请参阅我的CLI命令:

aws cloudformation create-stack \
    --stack-name mytestVPC  \
    --template-url  https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/VPC.yaml \
    --parameters https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/VPC-Parameters.json \
    --tags  https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/VPC-Tags.json \
    --capabilities CAPABILITY_IAM
我以前使用CLI执行过CFN,但这是我第一次面对这样的问题。 我的角色可以完全访问S3中的所有资源。我也验证了我的
--parameters
JSON,它是有效的。
AWS CLI版本:
AWS CLI/1.16.102 Python/2.7.16 Linux/4.14.171-105.231.amzn1.x86\u 64 botocore/1.12.92

当我从命令中删除
--parameters
--tags
时,命令将成功执行。

如果有人能帮助我理解并解决这个问题,那就太好了。

我做了以下事情来解决这个问题:

  • 早些时候,我对我的角色使用内联策略,限制对S3、CFN和EC2的访问,我将其删除,并使用现有策略授予对S3、CFN和EC2的完全访问权限
  • 已关闭阻止公共访问(存储桶设置)
  • 将我的yaml脚本、参数和标记JSON文件公开
然后执行命令,它就工作了

注意:这不是最好的做法,理想情况下,我使用的初始设置应该可以工作,因为我使用CLI使用相同的设置部署了CFN。理想设置应为/必须为:

  • 具有附加到角色的有限且必要的操作的策略
  • 阻止公共访问(存储桶设置)必须打开,因为您的EC2将访问它
  • 不需要将对象(脚本/json文件)公开,因为您的角色可以访问特定的S3存储桶

我将尝试向AWS人员提出问题,并检查此问题,并尽快更新此答案。

我做了以下事情来解决此问题:

  • 早些时候,我对我的角色使用内联策略,限制对S3、CFN和EC2的访问,我将其删除,并使用现有策略授予对S3、CFN和EC2的完全访问权限
  • 已关闭阻止公共访问(存储桶设置)
  • 将我的yaml脚本、参数和标记JSON文件公开
然后执行命令,它就工作了

注意:这不是最好的做法,理想情况下,我使用的初始设置应该可以工作,因为我使用CLI使用相同的设置部署了CFN。理想设置应为/必须为:

  • 具有附加到角色的有限且必要的操作的策略
  • 阻止公共访问(存储桶设置)必须打开,因为您的EC2将访问它
  • 不需要将对象(脚本/json文件)公开,因为您的角色可以访问特定的S3存储桶
我将尝试向AWS人员提出问题,并检查此问题,并尽快更新此答案。

--parameters
标志的键/值格式如下:

ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean,ResolvedValue=string ...
你不能在那里使用URL。同样适用于
--标签

aws cloudformation create-stack \
    --stack-name mytestVPC  \
    --template-url  https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/VPC.yaml \
    --parameters ParameterKey=KeyPairName,ParameterValue=TestKey ParameterKey=SubnetID,ParameterValue=SubnetID1 \
    --tags  Key=MyTag,Value=MyTagValue \
    --capabilities CAPABILITY_IAM

--参数
标志的键/值格式如下:

ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean,ResolvedValue=string ...
你不能在那里使用URL。同样适用于
--标签

aws cloudformation create-stack \
    --stack-name mytestVPC  \
    --template-url  https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/VPC.yaml \
    --parameters ParameterKey=KeyPairName,ParameterValue=TestKey ParameterKey=SubnetID,ParameterValue=SubnetID1 \
    --tags  Key=MyTag,Value=MyTagValue \
    --capabilities CAPABILITY_IAM

如果在“”上卷曲,它是否返回200?如果在“”上卷曲,它是否返回200?如果在“”上卷曲,它是否返回200?它将不工作,因为该桶不可公开访问。您可以传递URL,我使用CLI部署了很多CFN。例如,您可以传递URL,我已经使用CLI部署了很多CFN。你可以参考这个例子