问题标签 [aws-cloudformation-custom-resource]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
8011 浏览

amazon-web-services - CloudFormation 跨区域参考

当您在同一区域内运行多个 CloudFormation 堆栈时,您可以使用CloudFormation 输出跨堆栈共享引用

但是,正如该文档强调的那样,输出不能用于跨区域引用。

您不能跨区域创建跨堆栈引用。您可以使用内部函数 Fn::ImportValue 仅导入已在同一区域内导出的值。

您如何在 CloudFormation 中跨区域引用值?

举个例子,我有一个Route 53 托管区域部署在us-east-1. 但是,我有一个后端,us-west-2因为我想创建一个经过DNS 验证的 ACM 证书,该证书需要对托管区域的引用,以便能够创建适当的 CNAME 来证明所有权。

us-east-1我将如何去引用从内部创建的托管区域 ID us-west-2

0 投票
1 回答
95 浏览

sql-server - 有没有办法使用 cloudformation 从 S3 恢复 RDS 中的 SQL Server 备份?

我正在使用 CFN 创建 HA 环境,RDS 似乎是 SQL Server DB 而不是实例的最佳方式。现在我尝试了手动部署,使用 RDS 并.bak使用选项组进行恢复,并通过 IAM 和 EC2 将其与 S3 连接。但是当我对 CFN 自动化做同样的事情时,我面临着一堵墙。有办法吗?

0 投票
1 回答
740 浏览

amazon-web-services - Terraform 推送 Cloudformation 堆栈。如何从参数制作字符串列表

我正在与有线案例作斗争。我需要推送使用 terraform 动态参数化的 cloudformation 堆栈。

我的资源看起来像这样。

我需要从包含 json 对象的列表中放入目标组:

我什么都试过了。问题是我尝试了许多 terraform 函数,并且一直 terraform 添加一些 cloudformation 不支持的双引号,或者 terraform 由于缺少引号而无法处理 template_body 。
你知道一些偷偷摸摸的技巧如何实现吗?

0 投票
3 回答
6176 浏览

amazon-web-services - 我们能否通过 AWS Cloudformation 动态创建密钥对并将 .PEM 文件复制到 EC2 Linux 实例

我的要求是创建一个 EC2 实例,该实例将从相同的 Cloudformation 模板动态创建密钥对。截至目前,我正在从 AWS 控制台创建密钥对,并通过 Cloudformation 将其分配给 EC2 实例,方法是获取用户的输入。

我检查了 AWS 文档,发现可以从 AWS 控制台创建 KeyPair。

无论如何可以通过它从 Cloudformation 创建密钥对并在实例中复制 .PEM 文件。

0 投票
2 回答
793 浏览

amazon-web-services - 使用 CloudFormation 将 LambdaFunctionAssociation 添加到现有 CloudFront 分配

我想将 LambdaFunctionAssociation 添加到手动创建的现有 CloudFront 中 lambdafunctionassociation

提前致谢。

0 投票
1 回答
615 浏览

amazon-web-services - 执行cloudformation模板时,是否可以使用区域的最新Image-id创建EC2实例

我有一个模板,我正在创建一个基于区域的 Ubuntu EC2 实例以及模板中映射的关联图像 ID。无论如何,最新的 Ubuntu 图像 ID 将通过它根据区域选择。这将发生在模板执行。获取任何相同的示例模板会很有帮助。

0 投票
1 回答
304 浏览

amazon-cloudformation - 在 CloudFormation 中为自定义资源引入条件

另一位工程师在 prod 堆栈中的 AMIFInder 自定义资源中引入了一个部署日期参数,这意味着我们无法在不尝试重新创建 EC2 实例的情况下更新开发堆栈。

是否可以完全基于DeployDate参数引入条件,以便我仍然可以为两个堆栈使用一个模板?

0 投票
0 回答
292 浏览

amazon-web-services - 跨账户 Cloudformation 宏

我正在尝试创建一个将在 Cloudformation 中使用的跨账户宏。根据文档 - https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html,我们必须在不同账户中创建宏,但可以通过跨账户重新使用底层 lambda无障碍。

示例:

账户 A

在 Account_A(2 22222222222) 中,我创建了一个在宏中使用的 lambda 函数“TestMacroFunction”。

我添加了以下信任策略:

账户 B

在 Account_B(111111111111) 中,它将有一个用于宏的 cloudformation 堆栈和另一个将使用该宏的堆栈。

CFN 用于宏

CFN for Stack 使用宏:

在运行 CFN 堆栈时,我提供了一个附加了以下策略的角色:

但是我仍然在cloudformation中遇到错误。未执行的转换。也没有调用 lambda 函数。

有没有人创建了一个 lambda 供其他帐户中的宏使用?

0 投票
1 回答
53 浏览

amazon-web-services - Cloudformation 软件包安装在 ubuntu 上

我想在 ubuntu 实例中安装 awslogs 包,但正如 AWS 文档中给出的那样,他们正在使用 yum,如下面的代码所示(对于 amazon linux)。我的问题是

我正在使用 ubuntu 我可以使用 apt-get awslogs 来安装这个包吗?只需要放置 apt-get 而不是 yum ..如果没有,那么使用 CFN 在 ubuntu 中安装 awslogs 的解决方案是什么

0 投票
0 回答
394 浏览

amazon-web-services - CloudFormation 更新 SNS 主题的奇怪行为

抱歉读了很久,但我只包括了必要的相关部分。我为一个项目继承了一些代码和 CloudFormation 脚本,之前的开发人员留下了一个神秘的注释:

您必须更新 app-deploy.cfn.yaml 中以下项目的跟踪日期才能使更改生效。

他早已不在,我无法向他询问他的指示。以下是必须更新的项目:

老实说,这似乎很不寻常。看起来他正在将缓存清除技术应用于 API 网关。据我所知,这不应该发生。

男孩是我错了。

我最近需要对 SNS 订阅进行一项简单的更改,仅将其添加- redirect为特定 Lambda 订阅的源。这是添加了新源的资源:

我部署了脚本并见证了更新的发生。我检查了控制台是否有正确的 JSON,揭示了这一点:

都好!我应该很高兴,但是当我发送正确的消息来测试源时,我收到了一条错误消息:

@message 2020-02-14 19:11:02 <071acec7-096b-4c45-996a-5ed996df7c23> 错误 AbstractEventHandler:66 - java.lang.IllegalArgumentException:无法处理消息,格式无效。

在我的用户界面中

检查 CloudWatch Logs,我可以看到使用该源正确发出请求:

@message 2020-02-14 19:13:41 INFO BHIEventHandler:23 - BHI Handler Received: {[{sns: {messageAttributes: {domain={type: String,value: payment}, source={type: String,value : 重定向} , type={type: String,value: payment.approved}, brand_id={type: String,value: 40}}, ....


突然,我想起了之前开发人员的神秘信息,但我看不出这将如何应用于对 SNS 进行更改,尤其是因为该更新似乎已正确部署到 AWS。与我讨论这个问题的另一位开发人员说:“你可以通过尝试来证明老布鲁斯是错的,在这一点上你没有什么可失去的,我们可以消除它作为一种干扰。”

出发,我们更改分配/附加/标记到 API 资源的日期并重新部署。我在控制台中看到更新,CodePipeline 报告部署已成功完成。我们发送测试...

……那该死的东西起作用了!

我的问题

为什么对 CF 的完全(显然)不相关的部分进行更改会使这项工作有效?我们做错了什么吗?如果是这样,我该如何纠正?

按要求

这是完整的模板: