2017-07-13 35 views
0

我有一个关于在Cloudformation中使用参数的问题,以及围绕在Clouformation中使用秘密的更一般的最佳实践。Cloudformation:从文件和命令行传递参数

我有一个模板,用于在自动缩放组中定义我们的CI服务器。理论上我们可以站出许多这些堆栈。模板与参数一起存储在源代码控制中.json文件用于指定堆栈的细节(例如实例类型,自动调节条件等)。其中一个参数是允许CI服务器与我们的CI提供者进行交互的令牌,我不想将令牌存储在源代码管理中。我希望有人被提示,或者在创建或更新堆栈时被迫传递它。

理想情况下我想象的是这样的事情,但显然这是无效的

aws cloudformation create-stack --stack-name <name> --template-body file://<template> --parameters file://<parameters-file.json> TokenParameter=xxxyyyzzz

有没有人有什么建议?

非常感谢

回答

0

对于任何形式的代币/秘密类型的交互,我真的去上建议使用Systems Manager Parameter Store的一面。优点是它集中了您的凭证存储,所以如果您出于任何原因需要旋转凭证,它只是一个需要更改的地方。您还可以加密信用以获得额外的安全性。

由于这是一个AWS服务,您可以使用SDK/CLI来提取值。这可以是具有IAM角色的用户数据脚本,允许系统管理员访问(以及所有其他访问)来拉取参数并将其放入相应的文件中。另一种选择是利用SDK来按需下拉凭证,尽管这需要在您的CI代码中支持以取消该凭证。

需要注意的一点是,在启动自动缩放组之前,您需要提前设置参数,这会使得包含该参数作为CF模板的一部分有点困难。