AWS CloudFormation CLI-参数问题

时间:2020-04-28 14:17:35

标签: 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 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_64 botocore/1.12.92
当我从命令中删除--parameters--tags时,命令将成功执行。
如果有人可以帮助我理解和解决此问题,那就太好了。

2 个答案:

答案 0 :(得分:0)

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

  • 我以前对角色具有内联策略,但对S3,CFN和EC2的访问权限有限,因此我删除了该策略,并使用现有策略授予了对S3,CFN和EC2的完全访问权限
  • 关闭阻止公共访问(存储桶设置)
  • 将我的yaml脚本,参数和标签JSON文件设为公开

然后执行了命令,它就起作用了。

注意:这不是最佳实践,理想情况下,我正在使用的初始设置应该可以使用,因为我已经使用相同设置通过CLI部署了CFN。理想的设置应该是/必须是:

  • 对角色附加必要且必要的操作的政策
  • 必须启用阻止公共访问(存储桶设置),因为您的EC2可以访问
  • 由于您的角色可以访问特定的S3存储桶,因此无需公开对象(脚本/ json文件)

我将尝试与AWS伙计们一起出票并检查并尽快更新此答案。

答案 1 :(得分:0)

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

ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean,ResolvedValue=string ...

您不能在那里使用URL。与--tags相同。

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

Reference