如何在部署期间使用非 AWS 资源扩展 AWS CDK
Posted
技术标签:
【中文标题】如何在部署期间使用非 AWS 资源扩展 AWS CDK【英文标题】:How to extend AWS CDK with non AWS Resources during deploy 【发布时间】:2020-10-04 22:55:04 【问题描述】:我想使用 Sumo Logic 自动设置 AWS Application Load Balancer 日志的收集,如下所述:
https://help.sumologic.com/07Sumo-Logic-Apps/01Amazon_and_AWS/AWS_Elastic_Load_Balancer_-_Application/01_Collect_Logs_for_the_AWS_Elastic_Load_Balancer_Application_App
这涉及创建一个存储桶,使用 S3 源创建一个 Sumo Logic 托管收集器,获取 Sumo Logic 提供的收集器源的 URL,然后使用 HTTP 订阅创建一个 SNS 主题,其中订阅 URL 是由Sumo Logic 源代码。
问题在于 SumoLogic 源 URL 在合成时未知。必须部署 Bucket,然后创建 Sumlogic 事物,然后创建 SNS 主题。
尽我所能,我将不得不通过使用单独的堆栈单独调用 CDK 来做到这一点,这比较慢。一个堆栈来创建存储桶。部署该堆栈后,使用 Sumo Logic api 创建或确认之前创建的 Sumo Logic 托管收集器和源,部署另一个 CDK 以创建 SNS 主题和 HTTP 订阅。
我只是想知道是否有人知道这样做的更好方法,也许是某种可以使用的部署时间挂钩。
【问题讨论】:
【参考方案1】:您可以通过两种方式(据我所知)自动收集 AWS Application Load Balancer。
-
使用 CloudFormation
-
使用 Terraform
免责声明:目前受雇于 Sumo Logic。
【讨论】:
【参考方案2】:您可以尝试使用自定义资源 SDK 调用来触发执行所需操作的 lambda。
https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_custom-resources.AwsSdkCall.html
【讨论】:
【参考方案3】:(我知道这不是一个完美的答案,因为它建议使用其他工具,但我相信它可以满足问题中表达的需求)
使用 Terraform 怎么样?
sumologic_s3_source
in Terraform 能够在 Sumo 创建源 AND 输出其 URL 以用于 Terraform 中的其他用途 - 例如设置 AWS 资源。
此文档甚至提到 URL 是返回值之一:
url - 与 SNS 一起使用以通知 Sumo Logic 新的 HTTP 端点 文件。
免责声明:我目前受雇于 Sumo Logic。
【讨论】:
以上是关于如何在部署期间使用非 AWS 资源扩展 AWS CDK的主要内容,如果未能解决你的问题,请参考以下文章
为啥 AWS Auto Scaling 在扩展期间会启动多个实例?
如何在 Windows Server 上的 Elastic Beanstalk 部署中正确使用 AWS Secrets Manager