如何在 aws 服务中进行源代码控制配置,例如 `s3`、`cloudfront` 配置?

How to source control configuration in aws service such as `s3`, `cloudfront` configuration?

我正在使用 s3Cloudfront 来管理我的 Web 应用程序使用的缓存。有一些配置是通过 aws 控制台完成的,例如 originbehaviourpermission 等。我想知道是否可以在我的 git 存储库下设置这些配置,以便我可以源代码控制它们。我还可以将它添加到我的 CI/CD 中以进行测试和部署。

为了源代码控制您的 AWS 配置,需要一些额外的工具。它们被归入术语作为代码的基础设施。 AWS 有自己的版本,称为 CloudFormation. There are also third party tools which can work with other cloud providers too such as Terraform.

要在源代码管理中维护您的基础架构更改,您必须在代码中定义您的基础架构。有几个可用的解决方案。

CloudFormation AWS 提供 CloudFormation 脚本,您可以在其中定义使用 JSON 或 YAML 定义的基础设施。这也支持跟踪更改,如果您对 CloudFormation 进行更改并更新更改,AWS 会尝试仅更新在 CloudFormation 中完成的新更改,尽可能保持其余资源完好无损。

有关详细信息,请参阅 AWS CloudFormation CloudFront Distribution TemplatesAWS CLI 另一种选择是使用 AWS CLI 脚本,这更直接,因为它基本上是几个 shell 脚本,其中包含创建基础设施的命令。

有关详细信息,请参阅 AWS CLI CloudFormation commands

AWS SDK:编写代码片段 也可以使用 AWS SDK 编写代码片段,以使用您喜欢的语言预置 CloudFront 和资源。

有关更多信息,请参阅 AWS SDK for NodeJS CloudFront API Reference(或者您也可以找到其他语言的 SDK)。

以上方法允许将基础结构更改提交给源代码管理并对其进行跟踪。但是,这样做的一个局限性是无法知道当您对基础架构应用更改时究竟会发生什么(不支持试运行)。

地形 这就是像 Terraform 这样的工具可以提供帮助的地方,您可以使用 Terraform 支持的第三方语言编写您的基础设施,这些语言还可以跟踪 AWS 中提供的内容。除此之外,它还会告诉你如果你做了改变会发生什么。

有关详细信息,请参阅 Terraform AWS CloudFront Distribution Module

无服务器框架组件 另一个开源工具是使用无服务器框架和组件。这更容易上手,但仍处于早期阶段(Serverless Framework 已经成熟,但他们最近引入了 Components)。

有关详细信息,请参阅 Serverless Framework AWS CloudFront Component