首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于IaC的

用于IaC的
EN

Stack Overflow用户
提问于 2020-04-17 09:19:01
回答 4查看 12.3K关注 0票数 26

我最近开始使用AWS和IaC,我使用Cloudformation来提供我的AWS资源,但是我发现AWS提供了一个SDK和一个CDK,使您能够以编程方式提供资源,而不是普通的json/yaml。

但是,基于我并不真正理解它们之间的区别的文档,有人能解释一下它们有何不同吗?对于什么用例,您应该使用什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-04-17 18:21:46

AWS SDK是一个库,主要通过为您处理数据(反)序列化、凭据管理、故障处理等来简化对AWS服务的访问。也许,对于特定的场景,您可以使用AWS SDK作为代码工具的基础结构,但是它可能很麻烦,因为它不是库的预期用途。

基于https://docs.aws.amazon.com/whitepapers/latest/develop-deploy-dotnet-apps-on-aws/infrastructure-as-code.html,IaC的专用工具是AWS CloudFormation和AWS。

AWS是CloudFormation之上的一个抽象。实际上,在合成脚本时,CDK脚本被转换为CloudFormation定义。

最好在一个例子中描述这种区别:想象一下,对于堆栈中的每个lambda函数,您想要创建一个错误的CloudWatch警报并连接到SNS主题。

使用CloudFormation,您将需要为每个lambda函数编写一组非常相似的yaml/json定义,以确保监视;( b)使用嵌套堆栈模板;( c)使用CloudFormation模块。

使用CDK,您可以编写一个泛型代码构造类或方法,它可以为给定的lambda函数创建警报,并为给定的主题创建SNS警报操作。

换句话说,CDK可以帮助您以一种非常熟悉的方式概括和重用您的IaC,以帮助您开发业务代码。代码比CF定义更短、更易读。

当您需要在不同的AWS区域中设置类似的资源时,以及当您在每个环境中都有不同的AWS帐户时,这种差异就更显着了。您可以使用一个CDK代码库管理所有AWS帐户和区域。

票数 18
EN

Stack Overflow用户

发布于 2020-07-09 21:10:33

CDK:是一个用于建模和提供基础设施或堆栈的框架。栈可以由ex的数据库组成: DynamoDB、S3桶、Lambda、API等。它提供了编写代码以在AWS中创建基础设施的工具。也称基础设施为代码。检查这里

SDK: --这些代码库是以各种语言提供的代码库,比如Javascript、Javascript、Javascript等。这些库有助于与AWS服务交互(比如在DynamoDB中创建数据),您可以通过CDK或控制台创建这些服务。SDK使用API简化了在应用程序中使用AWS服务。检查这里

票数 25
EN

Stack Overflow用户

发布于 2022-05-26 08:28:54

一些背景: CloudFormation是亚马逊的“基础设施即代码”方法的解决方案,用于管理跨帐户/区域的大量资源的定义、提供和部署。这是通过使用基于yaml/json的声明性模板语言来定义所有的模板来完成的,然后通过各种方法(控制台、cli、API.)执行模板。更多信息:


还有其他流行的IaC解决方案或工具可以帮助更容易地实现这一点,例如Terraform库伯内斯 (也使用声明性模板定义所需状态的容器编排)。

IaC的潜在好处:在较高的级别上,您可以更好地跟踪和审计(您的下位)、重用定义/流程、以更加一致的方式进行所有更改,以及通过使用底层代码方法可以获得的所有自动化和保证,使您的更改更加一致,速度更快。您可能熟悉前面的答复中提到的这些内容,以及更多内容,例如:

  • 控制基础结构定义的版本,
  • 构造模板的更有效和逻辑更复杂的方法,
  • 有能力对他们进行测试,
  • 在使用模板进行真正的水下更改之前,进行差异(请参阅“更改集”),
  • 当活的水下和你的定义不同时,
  • 自动回滚,
  • 和许多其他国家管理援助,通过一个框架,如CF,可能需要在执行常规操作职责。

CDK --这是帮助CloudFormation自动化,作为提供和部署资源的IaC方法的一部分。它允许您使用各种流行的编程语言来帮助创建、测试和管理CF设置。AWS的一些动机是:“YAML是描述集群所需状态的优秀格式,但它没有表示逻辑和可重用抽象的原语。”
CDK使用编程语言的熟悉性和表达能力对应用程序进行建模。

然而,亚马逊(
)知道其他解决方案,并高兴地在CDK主页面上指出它们,淡化了它与CF的原始连接。如果您不想使用CloudFormation,则不需要使用它;具体来说,它们提到您可以在以下帮助下使用相同的CDK结构:

  • 由其创建者Hashicorp
维护的Terraform的cdktf
  • cdk8s for Kubernetes 由AWS.re:“我们意识到这正是我们的客户在通过CloudFormation模板定义应用程序时所面临的问题,这是(AWS )解决的问题,我们可以应用来自AWS的相同设计概念来帮助所有Kubernetes用户。”

SDK
AWS为它们的所有服务提供了一个API,各种SDK允许您访问它们。例如,我可以使用AWS的Java来进行管理API网关。如果我想编写一些定制的部署过程,我可以使用SDK来编写脚本,管理所有的状态,等等。您甚至可以使用各种底层API重新实现CloudFormation服务.但是,API有不同级别的文档。例如,CloudFormation Java只在原始API引用中提到,而不是在更友好的开发人员指南中提到。

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

https://stackoverflow.com/questions/61268068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档