标签: aws-cloudformation

有没有办法在使用CloudFormation创建RDS数据库实例时运行初始SQL?

我正在使用CloudFormation创建一个RDS实例:

"Resources": {
        "myDB": {
            "Type": "AWS::RDS::DBInstance",
            "Properties": {
                "AllocatedStorage": "5",
                "DBInstanceClass": "db.m1.small",
                "Engine": "MySQL",
                "EngineVersion": "5.5",
                "DBName": "mydb",
                "MasterUsername": {
                    "Ref": "DBUser"
                },
                "MasterUserPassword": {
                    "Ref": "DBPassword"
                },
                "DBParameterGroupName": {
                    "Ref": "myRDSParamGroup"
                }
            }
        }

这一切都有效.但我需要在创建数据库时在数据库上运行初始SQL,以设置我的应用程序架构.我目前的方法是让应用程序自我迁移,但我想在CloudFormation定义中执行此操作.这可能吗?

amazon-web-services amazon-rds aws-cloudformation

39
推荐指数
2
解决办法
2万
查看次数

从aws cloudformation describe-stack获取输出

我使用以下内容通过AWS Cli 获取我想要的堆栈信息:

aws cloudformation --region ap-southeast-2 describe-stacks --stack-name mystack
Run Code Online (Sandbox Code Playgroud)

它返回结果OK:

{
    "Stacks": [
        {
            "StackId": "arn:aws:mystackid", 
            "LastUpdatedTime": "2017-01-13T04:59:17.472Z", 
            "Tags": [], 
            "Outputs": [
                {
                    "OutputKey": "Ec2Sg", 
                    "OutputValue": "sg-97e13dff"
                }, 
                {
                    "OutputKey": "DbUrl", 
                    "OutputValue": "myUrl"
                }
            ], 
            "CreationTime": "2017-01-13T03:27:18.893Z", 
            "StackName": "mystack", 
            "NotificationARNs": [], 
            "StackStatus": "UPDATE_ROLLBACK_COMPLETE", 
            "DisableRollback": false
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

但我不知道如何只返回OutputUall的值,即myUrl

因为我不需要休息,只需我的.

这可能通过aws cloudformation describe-stacks吗?

编辑

我才意识到我可以使用 - 查询:

--query "Stacks[0].Outputs[1].OutputValue"
Run Code Online (Sandbox Code Playgroud)

将得到我想要的,但我想使用DbUrl else如果输出的数量改变,我的结果将是意外的.

aws-cloudformation aws-cli

39
推荐指数
3
解决办法
2万
查看次数

AWS Stack更新错误:需要功能:[CAPABILITY_IAM]

使用CloudFormation创建堆栈时,出现此错误:

Stack update error: Requires capabilities : [CAPABILITY_IAM]
Run Code Online (Sandbox Code Playgroud)

我找不到添加CAPABILITIES_IAM到CloudFormation配置的模板.

解决CAPABILITIES_IAM错误的选项有哪些?

amazon-web-services aws-cloudformation

38
推荐指数
3
解决办法
2万
查看次数

AWS:如何在CloudFormation模板中指定布尔参数

我正在尝试在CloudFormation模板中指定一个布尔参数,以便我可以根据传入的参数有条件地创建资源.

查看此处此处的文档,可能会出现明显缺少布尔数据类型的情况.

指定布尔值的最佳做法是什么?可能是Number0或1次或StringAllowedValues"真"与"假"?

amazon-web-services aws-cloudformation

35
推荐指数
1
解决办法
2万
查看次数

如何使用CloudFormation创建新版本的Lambda函数?

我正在尝试使用CloudFormation创建一个新版本的Lambda函数.

我想拥有相同Lambda函数的多个版本,以便我可以(a)指向不同版本的别名 - 比如DEV和PROD - 以及(b)能够回滚到早期版本

这是我的Lambda版本的定义:

LambdaVersion:
  Type: AWS::Lambda::Version
  Properties:
    FunctionName:
      Ref: LambdaFunction
Run Code Online (Sandbox Code Playgroud)

运行"aws cloudformation create-stack"时会创建一个版本,但随后的"aws cloudformation update-stack"命令不会执行任何操作.没有创建新的Lambda版本.

我正在尝试在将新的zip文件上传到S3然后运行"update-stack"之后创建一个新版本的Lambda函数.我可以使用CloudFormation做到吗?AWS :: Lambda :: Version真的坏了吗(如https://github.com/hashicorp/terraform/issues/6067#issuecomment-211708071所述)或者我只是没有得到什么?

更新1/11/17 亚马逊支持的官方回复:"...对于要发布的任何新版本,您需要定义一个添加(原文如此) AWS :: Lambda :: Version资源......"

AWS CloudFormation/Lambda团队,如果您正在阅读此内容 - 这是不可接受的.修理它.

amazon-web-services aws-cloudformation aws-lambda

34
推荐指数
6
解决办法
2万
查看次数

CloudFormation在更新时不会部署到API网关阶段

当我deploy使用带有API网关资源的模板运行CloudFormation时,第一次运行它时,它会创建并部署到阶段.随后我运行它,它会更新资源但不会部署到阶段.

这种行为是否符合预期?如果是的话,我是如何在更新时将其部署到阶段的?

(Terraform提到了类似的问题:https://github.com/hashicorp/terraform/issues/6613)

amazon-web-services aws-cloudformation aws-api-gateway

31
推荐指数
6
解决办法
9174
查看次数

如何检查CloudFormation脚本中是否已存在特定资源

我正在使用cloudformation来创建一个包含自动调整的ec2实例和S3存储桶的堆栈.对于S3存储桶,我将DeletionPolicy设置为Retain,工作正常,直到我想再次重新运行我的cloudformation脚本.由于在之前的运行中,脚本创建了S3存储桶,因此在后续运行中失败,说我的S3存储桶已经存在.当然也没有创建其他资源.我的问题是如何检查我的S3存储桶是否首先存在于cloudformation脚本中,如果存在,则跳过创建该资源.我查看了AWS中的条件,但它似乎都是基于参数的,我还没有找到一个从现有资源检查的函数.

automation amazon-web-services conditional-statements aws-cloudformation

30
推荐指数
3
解决办法
2万
查看次数

AWS Lambda通过cloudformation安排事件源

我已经在cloudformation中定义了我的lambda/roles,并且还希望使用它来添加预定的事件源......是否有任何文档或示例?

amazon-web-services aws-cloudformation aws-lambda

29
推荐指数
4
解决办法
2万
查看次数

有没有办法对AWS Cloudformation模板进行单元测试

当我们说cloudformation是'Infrastructure as Code'时,立即想到的下一个问题是如何测试这些代码.我们可以对此代码进行某种基本的单元测试

我正在对云形式验证进行折扣,因为这只是一种进行语法验证的方法,而且我可以使用任何其他免费的JSON/YAML验证器.

我更倾向于某种功能验证,可能测试我已经定义了所有用作引用的变量.可能测试我正在使用的任何属性实际上是该组件支持的属性

不期望它应该测试权限是否正确或我没有用尽我的限制.但至少除了基本的JSON/YAML语法验证之外

unit-testing amazon-web-services aws-cloudformation

29
推荐指数
2
解决办法
1万
查看次数

CloudFormation 正在等待清理与 Lambda 函数关联的 NetworkInterfaces

我在 VPC 中有一个带有 Lambda 函数的 CloudFormation 堆栈,
当尝试删除堆栈时,AWS CloudFormation 至少卡住了 25-30,
我在事件中收到以下消息 -

CloudFormation is waiting for NetworkInterfaces associated with the Lambda Function to be cleaned up.
Run Code Online (Sandbox Code Playgroud)

这似乎是由于 ENI 附加到功能和安全组。

从控制台它不允许我强行删除 ENI 或 ENI 所附加的安全组,
所以我只需要等待吗?

我发现了一些甚至已经有 2 年历史的问题和博客,
AWS 没有解决方案吗?
自动化应该很快,事实证明这是一个巨大的障碍。

参考 -
CloudFormation 问题:无法删除堆栈
https://forum.serverless.com/t/very-long-delay-when-doing-sls-remove-of-lambda-in-a-vpc/2535

amazon-web-services aws-cloudformation

28
推荐指数
1
解决办法
8710
查看次数