dev*_*tom 8 amazon-web-services aws-cloudformation infrastructure-as-code
我最近开始使用 AWS 和 IaC,我正在使用 Cloudformation 来配置我的 AWS 资源,但我发现 AWS 提供了一个 SDK 和一个 CDK,使您能够以编程方式而不是普通的 json/yaml 来配置资源。
但是根据文档,我并没有真正理解它们的不同之处,有人可以向我解释它们的不同之处以及您应该使用什么用例吗?
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 CDK .
AWS CDK 是 CloudFormation 之上的抽象。CDK 脚本实际上在合成脚本时转换为 CloudFormation 定义。
可以通过一个示例来最好地描述差异:想象一下,对于堆栈中的每个 lambda 函数,您都希望创建一个错误 CloudWatch 警报并连接到 SNS 主题。
使用 CloudFormation,您将 a) 需要为每个 lambda 函数编写一组非常相似的 yaml/json 定义以确保监控,b) 使用嵌套的堆栈模板,c) 使用 CloudFormation 模块。
使用 CDK,您可以编写通用代码构造 - 类或方法,它可以为给定的 lambda 函数创建警报并为给定的主题创建 SNS 警报操作。
换句话说,CDK 可帮助您以非常熟悉的方式概括和重用 IaC,以了解您如何开发业务代码。代码比 CF 定义更短、更易读。
当您需要在不同的 AWS 区域设置类似的资源以及每个环境拥有不同的 AWS 账户时,差异就更加显着。您可以使用单个 CDK 代码库管理所有 AWS 账户和区域。
CDK:是一个用于建模和配置基础架构或堆栈的框架。Stack 可以包含一个数据库,例如:DynamoDB、S3 Bucket、Lambda、API Gateway 等。它提供了编写代码以创建基础设施的工具。
SDK:这些是 Amazon 提供的各种语言的代码库,如 Java、Python、PHP、Javascript、Typescript 等。这些库有助于与您通过 CDK 或控制台创建的 AWS 服务(如在 DynamoDB 中创建数据)进行交互。开发工具包通过 API 简化了在您的应用程序中使用 AWS 服务的过程。
| 归档时间: |
|
| 查看次数: |
3438 次 |
| 最近记录: |