2017-07-13 74 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模板的一部分有點困難。