Amazon web services 当CloudFormation与CodePipeline一起使用时,参数应该放在哪里

Amazon web services 当CloudFormation与CodePipeline一起使用时,参数应该放在哪里,amazon-web-services,amazon-cloudformation,aws-codepipeline,Amazon Web Services,Amazon Cloudformation,Aws Codepipeline,当我使用CodePipeline部署我的CloudFormation堆栈时,它需要一直设置参数。。。到目前为止,我希望我是正确的 参数:[xxx,yyy,…]必须具有值(服务:AmazonCloudFormation;状态代码:400;错误代码:ValidationError;请求ID:43e9ede4-a352-11e8-bfe2-15cc69824d50) 我当前的设置类似于: 1个CI/CD堆栈(使用CloudFormation的代码管道、代码构建和部署infra) 1个堆栈用于“实际”

当我使用CodePipeline部署我的CloudFormation堆栈时,它需要一直设置参数。。。到目前为止,我希望我是正确的

参数:[xxx,yyy,…]必须具有值(服务:AmazonCloudFormation;状态代码:400;错误代码:ValidationError;请求ID:43e9ede4-a352-11e8-bfe2-15cc69824d50)

我当前的设置类似于:

  • 1个CI/CD堆栈(使用CloudFormation的代码管道、代码构建和部署infra)
  • 1个堆栈用于“实际”infra:DB、ECS群集等
我需要在CI和实际堆栈中定义参数。这是因为CI堆栈需要将这些参数传递到实际堆栈中。。。这似乎是错误的

理想情况下,我希望我的CI堆栈只知道CI/CD需要什么,而不是实际堆栈需要的环境变量


更新:可能的解决方案?

我试图增加1个堆栈:一个“配置”堆栈,它将所有内容存储在EC2参数存储中,但看起来CloudFormation无法定义秘密

AWS CloudFormation不支持SecureString参数类型。()


所以我可能会让我的实际infra堆栈通过CodeBuild将所有参数保存到EC2参数存储中,然后我的CI堆栈将从中读取。这是正确的方法吗

事实上,几天前AWS宣布现在AWS CloudFormation支持SecureString参数:尽管我昨天和今天都尝试了测试,但它似乎不起作用,CloudFormation拒绝使用类型为
AWS::SSM::Parameter::Value
的CFN参数进行所有更新。它只是抛出了这样的异常:
ValidationError:Template format error:Unrecogned parameter type:SecureString
您能澄清一下您想要如何准确地使用“配置”堆栈吗?您的CI/CD堆栈的实际问题是什么?您是否考虑过只使用一个堆栈来描述所有资源:CI/CD(如管道、代码构建等)和prod资源(如ECS集群)?您可以使用CodeDeploy将管道配置为立即部署到ECS服务。哦,我发现如何使用SecureString参数是错误的。您不能将其用作简单的参数值,尽管您可以从SSM中动态引用此类参数。但您允许将其用于非常有限的资源属性集,请在文档末尾了解详细信息:@SergeyCherepanov,我想我可以,但我正在考虑拆分堆栈,因为它越来越大。我已将SecureString SSM参数用于我的实际堆栈,因此我不必将参数保留在infra堆栈中。然后,在CodeBuild创建docker映像时,我通过buildspec.yml命令中的CLI获取参数值。我还只声明了一个参数“StackNamePrefix”,然后生成如下实际参数名称:
SOME\u KEY=$(aws ssm get parameter--name/$STACK\u PREFIX/common/SOME KEY--with decryption--query“parameter.Value”--输出文本)