适用于 EC2、EMR、Redshift、RDS 的 AWS 开发工具包的用例

Use cases for AWS SDK for EC2, EMR, Redshift, RDS

我熟悉 AWS SDK (Python/Java) 以及许多服务(如 S3、DDB、KMS 等)对它的需求

是否有使用 AWS Java SDK 的任何有效用例,例如以编程方式剥离 EC2 实例或 EMR 集群或 Redshift 集群或 RDS 实例,或者就此而言需要设置 infrastructure/cluster?

的任何资源

如果 AWS 控制台不是一个选项,而我们只有编程访问权限,那么我们是否总是最终使用 AWS CLI 来提供相应的服务或为此使用 CloudFormation 或 Terraform?

一般来说,通过使用基础架构即代码解决方案(例如 CloudFormation, CDK (which generates CloudFormation stacks under the hood) or Terraform.

来管理任何 infrastructure/service 部署的最佳做法

虽然您可以使用 SDK 创建此服务(并创建与上述解决方案类似的解决方案),但您将构建其他服务已经创建的许多功能,这将使您拥有更多所有权如果您想支持其他服务等,请修复它。

SDK 只是以编程方式提供每个 AWS API 交互,即使在后台 CloudFormation 和 Terraform 也可能会使用 SDK 以编程方式创建资源(尽管我在推测)但随后会添加附加功能,例如状态管理和漂移检测。

我只看到当服务在所选工具中不可用时通过 SDK 创建的服务,即便如此,它通常也会包装在该工具中(例如 custom resources 用于 CloudFormation)。

总而言之,是的,您可以使用 SDK 来生成这些 但是 除非有特定的用例来使用 SDK 我建议使用已经管理它的工具,以便您可以更专注于您的 infrastructure/applications.

AWS CLI 是使用适用于 Python 的 AWS 开发工具包构建的。 Terraform 是使用适用于 GoLang 的 AWS 开发工具包构建的。您可能希望坚持使用更高级别的 infrastructure-as-code 工具,但如果没有 SDK,这些工具将不存在,如果您想要构建这样的工具,您很可能会在其中一个 SDK 之上构建它。

还有很多 use-cases 我在 Whosebug 上看到过关于通过 AWS Lambda 执行基础设施自动化的讨论,例如定期停止和启动 RDS 实例,其中使用其中一个 AWS SDK Lambda 代码可能比在 Lambda 函数中尝试将 Terraform 运行 更容易。