Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >AWS CDK多个应用程序

AWS CDK多个应用程序
EN

Stack Overflow用户
提问于 2020-12-17 13:27:42
回答 2查看 2K关注 0票数 4

是否有可能在同一项目中有两个CDK应用程序,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from aws_cdk import core

from stack1 import Stack1
from stack2 import Stack2

app1 = core.App()
Stack1(app1, "CDK1")
app1.synth()

app2 = core.App()
Stack2(app2, "CDK2")
app2.synth()

然后部署它们?同步/异步?

是否可以在一个应用程序中引用另一个应用程序中的一些资源?

EN

回答 2

Stack Overflow用户

发布于 2021-04-15 03:59:39

是的,您可以在一个CDK项目中拥有多个应用程序,但有一些严重的警告。

  1. CDK进程一次只能同步/部署一个应用。

  1. 不能在同一文件中定义它们。

  1. 它们不能直接引用对方的资源。

为了正确地理解这一点,每个应用程序在功能上相互隔离,这大致相当于两个单独的CDK项目共享相同的代码库,因此这方面的用例是有限的。

它们共享资源的唯一方法是要么将其提取到必须首先部署的其他通用应用程序中,要么让您将该资源的ARN存储在某个东西(例如,Parameter Store)中,并在运行时加载它。你不能假设资源将会存在,因为其中一个应用程序可能还没有部署,如果你直接将资源导入到你的Stack中,你已经放弃了将它们分开的整个要点。

也就是说,这是可以的:

stack1.lambda:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    from ssm_parameter_store import SSMParameterStore

    store = SSMParameterStore(prefix='/Prod')
    ssn_arn = store['stack2.sns']
    if !ssn_arn
        // Doesn't matter
        return
    try:
        sns.publish(ssn_arn, 'something')
    except:
        // Doesn't matter

但是,如果来自stack2的资源对于stack1来说很重要,或者您想要将stack2资源导入到stack1中,那么您需要对所有公共资源进行第三次拆分:common-resources.app.py,否则拆分它们是没有意义的。

我们在我们的项目中经常这样做,一个应用程序创建一个自动部署另一个应用程序的CodePipeline。然而,我们这样做只是因为我们更喜欢流水线紧挨着它正在部署的代码,而且将其提取到一个全新的项目中也同样有效。

如果你想这样做,你需要做的是:

app1.py:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from aws_cdk import core

from stack1 import Stack1

app1 = core.App()
Stack1(app1, "CDK1")
app1.synth()

app2.py:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from aws_cdk import core

from stack2 import Stack2

app2 = core.App()
Stack2(app2, "CDK2")
app2.synth()

然后,您可以通过并行或顺序运行来部署它:

  • cdk deploy --app "python app1.py"
  • cdk deploy --app "python app2.py"
票数 4
EN

Stack Overflow用户

发布于 2020-12-17 21:12:45

重读你的问题后,简短的答案是否定的。在测试中,我发现CDK只会创建第二个定义的应用程序。

但是,您可以部署多堆栈应用程序:

https://docs.aws.amazon.com/cdk/latest/guide/stack_how_to_create_multiple_stacks.html

还可以使用core.CfnOutput和core.Fn.importValue从一个堆栈引用另一个堆栈中的资源:

https://docs.aws.amazon.com/cdk/api/latest/python/aws_cdk.core/CfnOutput.html https://docs.aws.amazon.com/cdk/api/latest/python/aws_cdk.core/Fn.html

在幕后,这使用了CloudFormation导出输出并将其导入其他堆栈的能力。实际上,你的多协议栈CDK应用将创建嵌套的CloudFormation协议栈。

在部署方面,CDK创建并部署了一个CloudFormation变更集,因此所有变更都将部署在cdk deploy上。从您的角度来看,它将是同步的,但可能会通过CloudFormation在幕后进行一些异步API调用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65341642

复制
相关文章
AWS CDK | IaC 何必只用 Yaml
近年来基础设施即代码(IaC)的方式被越来越多的开发者和管理者所采用,各大公有云都提供了使用 IaC 管理自己云资源的方式,如 AWS 的 CloudFormation、阿里云的 ROS 等,而第三方的 Terraform 也有各大公有云的 Provider。越来越多像我一样的云资源运维和管理者开始采用 IaC 的方式对云资源进行创建、运维和管理。
郭旭东
2021/02/01
2K0
[工作随笔]Python 和 CDK的aws-route53那些事
AWS CDK,与使用 YAML(或 JSON)的声明式方法相比,CDK 允许您命令式声明基础设施。主要语言为 TypeScript,同时也支持另外几种语言。
DriverZeng
2022/10/31
9670
[工作随笔]Python 和 CDK的aws-route53那些事
使用 AWS CDK Python 从零开始构建 EKS 集群
上篇文章《AWS CDK | IaC 何必只用 Yaml》笔者介绍了 AWS CDK 的概念和基本使用方法,本篇文章就来使用 CDK 在 AWS 从零开始构建一个全新的 KES 集群,实际感受一下使用 AWS CDK 创建和管理云资源的简单和便捷。
郭旭东
2021/01/29
1.9K0
使用 AWS CDK Python 从零开始构建 EKS 集群
基础设施设施即代码(IaC)平台 Pulumi | 混合云管理利器
在之前的文章中,笔者介绍过 AWS CDK ,其是 AWS 开源的一款开发框架,使用常用的编程语言(如 TypeScript、Python 等),利用函数快速构建代码框架来配置、更新和管理云资源,但只支持 AWS 资源的定义和维护,其他公有云无法使用。而 Pulumi 可以以同样的方式在其他公有云上完成与 AWS CDK 类似的工作。
郭旭东
2021/06/16
2.1K0
基础设施设施即代码(IaC)平台 Pulumi | 混合云管理利器
AWS EC2 增加多个弹性 IP
一、 添加一个私有IP的 1. 实例->联网->管理私有IP地址 2. 分配新IP->是,更新 注意:记下刚生成的 私有 IP 二、把刚才生成的私有IP地址添加到网络接口 1. SSH连接到您的实例并
码农编程进阶笔记
2021/07/20
2K0
成员网研会:用cdk8s结束YAML工程!(视频+PDF)
讲者:Elad Ben-Israel,首席软件工程师 @AWS,开发工具;Nathan Taber,高级产品经理 @AWS,Kubernetes
CNCF
2020/05/22
3910
Serverless Land:AWS Serverless 学习资源汇集地
近日,发现了一个 AWS Lambda 相关的资源网站:Serverless Land。
donghui
2021/05/13
2.4K0
Serverless Land:AWS Serverless 学习资源汇集地
CDKTF 通过增加命名空间来提升性能
HashiCorp 发布了 CDK for Terraform(CDKTF)0.13 版本,在性能上有了显著的改进。这个版本引入了命名空间,极大提升了基础设施的性能。这个版本基于 0.12 版本,而 0.12 版本见证了 CDKTF 的普遍可用。
深度学习与Python
2022/11/28
9260
用于Web爬虫解决方案的无服务器体系结构
对无服务器体系结构感兴趣,那么你可能已经阅读了许多相互矛盾的文章,并且想知道无服务器体系结构是经济高效还是昂贵的。我想通过对网络抓取解决方案的分析来消除有关有效性问题的疑虑。
CloudBest
2021/03/30
2.6K0
用于Web爬虫解决方案的无服务器体系结构
配置语言的黄金时代
我认为我们当前所认知的 DevOps 即将走到尽头。至少,其中的 Ops 会如此。随着云基础设施成为应用程序关注的重点,越来越多的 ops 任务由云本身完成或内置于应用程序中。剩下的就是供应和管理应用程序所需的基础设施。这关系到所有的相关附属内容,例如安全性和网络。
深度学习与Python
2021/03/12
3.3K0
cdk8s - 使用编程语言定义 Kubernetes 应用
cdk8s 是 AWS Labs 发布的一个使用 TypeScript 编写的新框架,它允许我们使用一些面向对象的编程语言来定义 Kubernetes 的资源清单,cdk8s 最终也是生成原生的 Kubernetes YAML 文件,所以我们可以在任何地方使用 cdk8s 来定义运行的 Kubernetes 应用资源。
我是阳明
2020/06/15
1.2K0
如何在多个应用程序中共享日志配置
有的时候你有多个应用程序,它们需要使用相同的日志配置。在这种情况下,你可以将日志配置放在一个共享的位置,然后通过项目文件快速引用。方便快捷,不用重复配置。
newbe36524
2023/08/23
2560
180多个Web应用程序测试示例测试用例
180多个Web应用程序测试示例测试用例 假设:假设您的应用程序支持以下功能 各种领域的表格 儿童窗户 应用程序与数据库进行交互 各种搜索过滤条件和显示结果 图片上传 发送电子邮件功能 数据导出功能 通用测试方案 1.所有必填字段均应经过验证,并以星号(*)表示。 2.验证错误消息应正确显示在正确的位置。 3.所有错误消息应以相同的CSS样式显示(例如,使用红色) 4.常规确认消息应使用CSS样式而不是错误消息样式(例如,使用绿色)显示 5.工具提示文本应有意义。 6.下拉字段的第一项应为空白或诸如“选择”
用户7466307
2020/06/17
8.3K0
如何在 Mac 上同时打开多个 MediaInfo 应用程序实例?
了解音视频分析工具的小伙伴,一定都知道 MediaInfo,它是一款非常实用的视频参数检测工具,除了可以对视频进行编码分析查询外,还可以对音频文件的编码及信息进行检测,最重要的是这款工具软件是免费的,在 mac OS 系统上此类工具是不常见的,另外,它也有 windows 版本。下面展示一下 MediaInfo 的使用效果:
liuzhen007
2021/10/20
1.5K0
Windows多个应用程序共享全局变量,静态变量
默认情况下exe不同实例使用copy-on-write技术避免共享数据,比如运行了两个exe,最开始它们使用的都是一份虚拟内存页,然后第一个实例修改了全局变量, 这时候COW就会复制那一页,然后将第一个进程地址空间对应页映射到新复制的页,第二个实例保持映射老的页。 但是如果真的需要多个实例共享数据,比如计算有多少个exe程序正在运行,就可以使用该技术。
racaljk
2018/08/31
1.2K0
如何在Ubuntu上 dockerize和部署多个WordPress应用程序
WordPress已成为世界上最常见的部署和使用的Web应用程序之一。由于多年的不断发展,现在可以基于WordPress及其可用的插件/扩展创建几乎无数的不同网站(甚至是网络应用程序)。
大瓜皮
2018/07/27
1.1K0
aws生产实践-22:aws上创建openvpn
https://github.com/hepyu/openvpn-install/blob/master/openvpn-install.sh
千里行走
2022/02/10
1.7K0
aws生产实践-22:aws上创建openvpn
AWS WAF bypass
x="=='='onmouseover=confirm`xss` style="display:block;width:1000px;height:1000px;background:red">
Khan安全团队
2023/02/23
1.3K0
AWS WAF bypass
AWS alb 了解
Elastic Load Balancing 在一个或多个可用区中的多个目标(如 EC2 实例、容器和 IP 地址)之间自动分配传入的流量。它会监控已注册目标的运行状况,并仅将流量传输到运行状况良好的目标。Elastic Load Balancing 根据传入流量随时间的变化对负载均衡器进行扩展。它可以自动扩展来处理绝大部分工作负载。
heidsoft
2022/01/17
2.2K0
AWS alb 了解
如何在Ubuntu 14.04上使用Ansible部署多个PHP应用程序
本教程是关于在Ubuntu 14.04上使用Ansible部署PHP应用程序的系列文章中的第三篇。第一个教程涵盖了部署应用程序的基本步骤; 在第二个教程介绍更高级的主题,如数据库,队列守护进程和任务调度(crons)。
林岑影
2018/09/28
8.7K0

相似问题

AWS CDK CodePipeline部署应用程序和CDK

129

CDK: aws_cdk.aws_ecs.EcrImage对aws_cdk.aws_ecs.ContainerImage

19

AWS CDK Python WAF多个IPSets

124

面向多个租户的AWS CDK部署

11

AWS CDK管道创建多个工件桶

112
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文