亚马逊AWS官方博客

CloudFormation 更新 – CLI + 第三方资源支持 + 注册表

CloudFormation 于 2011 年推出(AWS CloudFormation – Create Your AWS Stack From a Recipe),现已成为许多 AWS 客户不可或缺的工具。究其原因,是因为客户可以仅定义一次模板,然后便可使用该模板可靠地预配置 AWS 资源。他们还经常使用更改集,并借助这些更改集深入了解执行更改集时将发生的操作(添加、更改和删除)。

正如我之前所述,CloudFormation 特别注重实现一致、稳定和统一的模型。这是 CloudFormation 的一个重要却常常被忽视的元素,但我们的客户告诉我们,他们非常重视这一点!

下面我们来看看客户提出的几个最常见请求:

性能 – 在过去的一年中,对 CloudFormation 堆栈执行的操作数量以每季度 30% 的速度增长! 开发团队一直在不断努力,利用架构改进和低级优化相结合的方式,使 CloudFormation 更快、更高效,即便使用量迅速增长。在过去的几个月中,经过努力,我们提高了与 CloudFormation 相关的许多软限制和硬限制,并显著降低了创建和更新操作的平均延迟和最大延迟。

覆盖率 – 我们非常快速地发布新服务和新功能,但有时不含 CloudFormation 支持。我们的目标是尽快支持新服务和新功能,我相信我们正在取得进展。我们还利用新的 CloudFormation 覆盖路线图作为开发过程的主要输入源,并且已经解决了其中的 43 个问题。

可扩展性 – 广泛使用 CloudFormation 的客户告诉我们,他们希望自动创建非 AWS 资源,其中包括他们自己的开发团队、SaaS 应用程序的第三方供应商、监控工具等创建的资源。他们已在充分利用自定义资源,但一如既往,想要更多的控制和权力,以及简单的管理方法。

CloudFormation 注册表和 CloudFormation CLI
当今,随着开源项目 CloudFormation CLI 的推出,我们将满足您提高覆盖率和可扩展性的要求。

您可以使用此工具包定义和创建资源提供程序,以便以安全和系统化的方式自动创建资源。您可以创建一个架构,为五个核心操作定义一个处理程序,在本地进行测试,然后将提供程序发布到与您的 AWS 账户相关联的新提供程序注册表。

我们还与一些精选的第三方供应商合作,帮助他们为 SaaS 应用程序、监控工具等创建资源提供程序。您将能够从相关供应商获得提供程序,并将其添加到提供程序注册表。

最后,我们将以开源形式提供一组 AWS 资源提供程序。您可以用来学习如何编写强健的提供程序,还可以根据需要进行扩展(在您自己的命名空间中)。

下面我们详细了解一下!

CloudFormation CLI
这组工具提供了构建自己的资源提供程序所需的全部内容,包括详细文档和示例代码。cfn(CloudFormation 命令行界面)命令可帮助您初始化项目、生成框架代码、测试提供程序并将其注册到 CloudFormation。

以下是主要步骤:

建模 – 创建并验证用作资源规范描述的架构。

开发 – 编写处理程序(目前为 Java 和 Go,后续还有其他语言),以定义资源上的五个核心操作(创建、读取、更新、删除和列出),并在本地进行测试。

注册 – 将提供程序注册到 CloudFormation,以便可以在 CloudFormation 模板中使用。

对资源建模
资源的架构必须符合资源提供程序定义架构。它定义了资源及其属性。属性可以定义为只读、只写和只创建;这为 CloudFormation 提供所需具备的信息,以便在对堆栈执行操作时能够修改现有资源。以下是一个简单的定义:

{
  "additionalProperties": false,
  "createOnlyProperties": [
    "/properties/Name"
  ],
  "primaryIdentifier": [
    "/properties/Name"
  ],
  "properties": {
    "Name": {
      "description": "The name of the configuration set.",
      "maxLength": 64,
      "pattern": "^[a-zA-Z0-9_-]{0,64}$",
      "type": "string"
    }
  },
  "typeName": "AWS::SES::ConfigurationSet",
  "description": "A sample resource"
}

开发
处理程序利用框架执行错误处理、限制对下游 API 的调用、凭证管理等。CloudFormation CLI 包含完整的示例代码;您还可以研究 Amazon SES 资源提供程序(或任何其他提供程序)以了解更多信息。

要了解更多信息,请阅读 CloudFormation CLI 文档中的演练:开发资源提供程序

注册
开发并在本地测试资源提供程序之后,需要告知 CloudFormation 该提供程序的相关信息。使用 CloudFormation CLI,您可以将软件包(架构和编译后的处理程序)提交到所需的 AWS 区域。接受过程是异步操作;完成后,便可以在 CloudFormation 模板中使用新的资源类型。

CloudFormation 注册表
CloudFormation 注册表为资源提供程序提供账户级、区域级存储。可以从 CloudFormation 控制台进行访问:

选择公有可查看原生 AWS 资源 (AWS::*::*);选择私有可查看您创建的资源以及从第三方获取的资源。

您还可以使用 RegisterTypeDeregisterTypeListTypesListTypeRegistrationsListTypeVersionsDescribeType 函数,以编程方式访问注册表。

第三方支持
如前所述,在今天的发布之前,一些精选的第三方供应商一直在努力创建资源提供程序。以下是最初清单:

  • Atlassian
  • Datadog
  • Densify
  • Dynatrace
  • Fortinet
  • New Relic
  • Spotinst

注册供应商提供的提供程序之后,您将能够在 CloudFormation 模板中引用相应的资源类型。例如,您可以使用 Datadog::Monitors::Monitor 创建 Datadog 监控工具。

如果您是第三方供应商,并且对为您的产品创建资源提供程序感兴趣,请发送电子邮件至 cfn-registry-onboarding@amazon.com

现已推出
您可以使用 CloudFormation CLI 构建供所有公共 AWS 区域使用的资源提供程序。

本篇作者

Jeff Barr

AWS 首席布道师; 2004年开始发布博客,此后便笔耕不辍。