AWS 开发工具包 vs AWS CLI - AWS CLOUD FORMATION - TERRAFORM



对于在 AWS 云中预置基础设施,我们目前使用的是从 ansible 角色调用的云形成模板,但我们看到在增加基础设施大小后,此代码在 GitHub 中变得非结构化或未模块化

Github有这段代码的意大利面条,没有适当的结构,可读性较差,不容易被新技术人员挑选

特别是对于配置基础设施,我看到维护用特定领域语言(如ansible,terraform,cloudformation等)编写的代码对于GitHub中的长期代码维护来说不是一个好主意,因为要实现完全(完全)自动化,您需要使用这些技术的组合。

理念是,aws 开发工具包代码在 GitHub 中看起来更有条理,因为它提供了大量抽象隐藏的实现细节。

当然,预配代码与在该预配的基础结构上运行的功能代码一样重要。

我们有信心,从Azure迁移后,我们将坚持使用AWS云


领域特定语言相对于编程语言,

AWS 开发工具包方法能否解决此问题?我们更喜欢GoLang aws sdk,这样任何GoLang程序员都可以使用它。

如果我正确理解了您的问题,您是在说由于大小的增加,您的云形成代码变得无法管理,现在有兴趣使用 AWS 开发工具包定义它,以便您可以使用软件最佳实践来保持代码更易于维护。

与声明性语言相比,AWS 开发工具包的缺点是,现在您有责任确保当您单击运行时,它不会只是创建一个新实例。 例如,当我通过 AWS 开发工具包部署 ec2 机器时,下次运行该代码时,它将部署一台新的 ec2 机器。云形成维护已部署位置的状态,因此可以更轻松地将增量更改部署到基础架构并还原更改。

我建议您查看的是新的AWS-CDK,它允许您定义最终通过Cloud Formation运行的代码。它允许您编写 OO 样式对象:

const vpc = new Vpc(this, 'vpc', {
cidr: '10.150.0.0/16',
natGateways: 2,
subnetConfiguration: [
{
name: 'Public',
subnetType: SubnetType.Public,
cidrMask: 20
},
{
name: 'Private',
subnetType: SubnetType.Private,
cidrMask: 22
},
{
name: 'Isolated',
subnetType: SubnetType.Isolated,
cidrMask: 22
}
]
});

可悲的是,Golang 尚不受支持。

最新更新