這陣子接獲同事抱怨,CloudFormation 的雷非常多(深有同感),這篇記下同事暴雷的事件
事件發生在寫 CloudFormation Template 時在處理 AWS::RDS::DBSubnetGroup 時把 DBSubnetGroupName 也一併 Output 給其他 Stack 使用
情境是,DBSubnetGroupName 定義的是大駝峰的大小寫名稱
- DBSubnetGroupName:ExampleDbSG
而在文件內是說 DBSubnetGroupName 會轉成小寫字元,可是 Example 又是大小寫混合。
DBSubnetGroupName
The name for the DB subnet group. This value is stored as a lowercase string.
Constraints: Must contain no more than 255 letters, numbers, periods, underscores, spaces, or hyphens. Must not be default.
Example:mySubnetgroup
此時的 CloudFormation DBSubnetGroupName Output 和實際的 DBSubnetGroupName 差異會是:
- 實際 DBSubnetGroupName:exampledbsg (被轉成小寫)
- CloudFormation OutPut:ExampleDbSG (沒被轉小寫,按照原寫法 Output)
如果按照範例「大小寫混合」的情況,拿 Output 掛 RDS 就會發生錯誤(ExampleDbSG),因為實際上的值是 exampledbsg
Service: AmazonRDS; Status Code: 404; Error Code: DBSubnetGroupNotFoundFault …
最好的方式就是都用 “小寫” …