在 CloudFormation 中使用公有扩展 - Amazon CloudFormation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

在 CloudFormation 中使用公有扩展

公有扩展是 CloudFormation 扩展,例如资源类型,它们可通过 CloudFormation 注册表获得以在模板中使用。公有扩展可以由第三方发布者和 Amazon 在 CloudFormation 注册表中发布。

注意

与私有扩展一样,来自第三方发布者的公有扩展可能会实现在资源创建、读取、更新、列出和删除堆栈操作期间运行的事件处理程序。因此,在 CloudFormation 堆栈中使用这些扩展时,可能会在您的账户中产生费用。这不包括创建的资源产生的任何费用。有关更多信息,请参阅 Amazon CloudFormation 定价

公有扩展是 CloudFormation 扩展,例如资源类型或模块,它们在注册表中公开发布,供所有 CloudFormation 用户使用。这包括 Amazon 发布的所有扩展。第三方也可以发布公有扩展。

公有扩展有两种:

  • Amazon 公有扩展

    Amazon 发布的扩展始终是公有扩展,原定设置下激活,因此您在自己的账户中使用它们之前无需采取任何操作。此外,Amazon 掌握扩展的版本控制,因此您使用的始终是最新的可用版本。

  • 第三方公有扩展

    这些扩展可由 Amazon 以外的发布者普遍使用。要使用公有扩展,您必须首先在自己的账户和区域中激活它。

    您可以发布自己的第三方扩展,以使其对一般 CloudFormation 用户可用。有关更多信息,请参阅 CloudFormation 命令行界面用户指南 中的发布扩展

激活公有扩展以便在您的账户中使用

为了在模板中使用公有第三方扩展,您必须首先为要使用它的账户和区域激活该扩展。启用扩展使其可在已激活该扩展的账户和区域内的堆栈操作中使用。当您激活公有第三方扩展时,CloudFormation 会在您账户的扩展注册表中为已激活的扩展创建一个条目,作为私有扩展。这允许您通过以下方式自定义扩展义,因为它已在您的账户中激活

  • 指定要使用的别名,而不是公有第三方扩展名称。这有助于避免第三方扩展之间发生命名冲突。

  • 指定在有新的次要版本或补丁版本可用时是否自动更新扩展。

  • 指定 CloudFormation 用于激活扩展以及为扩展配置日志记录的执行角色。

激活公有第三方扩展时,还可以设置该扩展包含的任何配置属性。配置属性定义了为给定账户和区域配置扩展的方式。有关更多信息,请参阅在账户级别配置扩展

将 CloudFormation 设置为自动使用新版本的扩展

激活扩展时,您还可以指定是否希望 CloudFormation 在扩展发布者每次发布时自动更新为使用新的次要版本。例如,假设您已经为扩展指定了自动更新,并且发布者在激活扩展后发布了一个新的次要版本。下次使用包含该扩展的模板执行堆栈操作(例如创建或更新堆栈)时,CloudFormation 将使用新的次要版本。

自动或手动更新到新扩展版本不会影响已在堆栈中预置的任何扩展实例。

这仅适用于次要版本更新。CloudFormation 将扩展的主要版本更新视为可能包含重大更改,因此需要您手动更新到扩展的新主要版本。

原定设置下,Amazon 发布的公有扩展将对可用的所有账户和区域激活,并始终使用每个区域可用的最新版本。

重要

请注意,由于您可以控制已激活公有扩展是否以及何时更新到最新版本,因此最终可能会在不同账户和区域中部署同一扩展的不同版本。在这些账户和区域中使用包含该扩展的同一模板时,这可能会导致意外的结果。

指定别名以引用扩展

在给定账户和区域中,您不能使用指定名称激活多个扩展。由于不同的发布者可能会提供使用相同扩展名称的公有扩展,因此 CloudFormation 允许您为自己激活的任何第三方公有扩展指定别名。

如果您为扩展指定别名,CloudFormation 会将该别名视为账户和区域内的扩展类型名称。您必须在模板、API 调用和 CloudFormation 控制台中使用别名来引用扩展。

扩展别名在给定账户和区域内必须保持唯一。您可以使用不同类型的名称别名在同一账户和区域中多次激活同一公有资源。

重要

虽然扩展别名只需在给定账户和区域中保持唯一,但我们强烈建议用户不要将相同别名分配给不同账户和区域的第三方公有扩展。跨多个账户或区域使用包含扩展别名的模板时,这样做可能会导致意外的结果。

激活扩展时指定执行角色

激活资源时,您可以指定在账户和区域中调用该扩展时 CloudFormation 要担任的 IAM 执行角色。

为了让 CloudFormation 承担执行角色,该角色必须具有通过 CloudFormation 定义的信任策略。例如:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "resources.cloudformation.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

有关更多信息,请参阅 Amazon Identity and Access Management 用户指南中的修改角色信任策略

使用 CloudFormation 控制台激活公有扩展以便在您的账户中使用

  1. CloudFormation 控制台中,从 CloudFormation 导航窗格的 CloudFormation registry(CloudFormation 注册表)下选择 Public extensions(公有扩展)。

    注册表显示您账户中可用的公有扩展。

  2. 使用 Filter(筛选条件)选择扩展类型,然后选择 Third party(第三方)。(Amazon 发布的扩展原定设置为激活。)

  3. 选择扩展,然后选择 Activate(激活)。

    注意

    如果扩展有多个版本可用,则可以使用 Version(版本)菜单选择要激活的扩展版本。原定设置为最新版本。

  4. 使用 Activate extension(激活扩展)页面上的选项自定义在此账户中激活扩展的方式。

    • 使用扩展类型别名激活扩展:

      1. 选择 Override default(覆盖原定设置)

      2. 输入要用于此扩展的扩展类型别名。确保别名遵循扩展类型的推荐格式。

      有关更多信息,请参阅指定别名以引用扩展

    • 如果您启用私有资源,则可以在调用该扩展时为 CloudFormation 指定 IAM 角色。有关详细信息,请参阅激活扩展时指定执行角色

    • 如果需要,在 Logging config(日志记录配置)下,指定扩展的日志记录配置信息。

      请注意,logRoleArnlogGroupName 键名称区分大小写。例如:

      { "logRoleArn": "arn:aws:iam::account:role/rolename", "logGroupName": "log-group-name" }
    • 使用 Versioning(版本控制)下的选项指定在发布新的次要版本时 CloudFormation 是否自动更新此账户和区域中的扩展。有关更多信息,请参阅将 CloudFormation 设置为自动使用新版本的扩展

  5. 如有必要,指定配置数据(可选)。

    如果扩展需要在账户和区域级别进行其他配置,则 CloudFormation 会在 Activate extension(激活扩展)页面上包含 Configuration(配置)部分。您可以选择立即指定配置数据,或者在激活扩展之后指定。

    • 启用扩展时指定配置数据:

      1. 选择 Configure now(立即配置),然后选择 Activate extension and continue(激活扩展并继续)。

        CloudFormation 显示 Configure extension(配置扩展)页面。要查看扩展的当前配置架构,请确保已激活 View configuration schema(查看配置架构)。

      2. Configuration JSON(配置 JSON)文本框中,输入一个代表您要为此扩展指定的配置架构的 JSON 字符串。

      3. 选择 Configure extension(配置扩展)。

    • 随后指定配置数据:

      • 选择 Configure later(随后配置),然后选择 Activate extension(激活扩展)。

      要为已激活的扩展指定配置数据,请参阅在账户级别配置扩展

    如果扩展不需要配置,您将看不到 Configuration(配置)部分。选择 Activate extension(激活扩展)。

    成功激活扩展后,CloudFormation 将显示该扩展的详细信息页面。

使用 CloudFormation 控制台更新账户中已激活的公有扩展

在账户和区域中激活扩展后,您可以在激活该扩展时更新它的以下属性,包括:

  • 配置架构

  • 是否激活自动版本更新

  • 对于已注册的私有扩展,要使用的执行角色

  • 日志记录配置信息

  1. 使用 CloudFormation 注册表查找扩展

  2. Actions(操作)菜单中,选择 Edit(编辑),然后选择适当的编辑选项:

    • 要更新配置架构,请参阅在 CloudFormation 控制台中为扩展指定配置属性

    • 激活或停用自动更新:

      1. 选择 Edit automatic updates(编辑自动更新)。

      2. 选择 On(打开)或 Off(关闭),然后选择 Save(保存)。

    • 更新执行角色:

      1. 选择 Edit execution role(编辑执行角色)。

      2. 指定调用此扩展时您要 CloudFormation 使用的 IAM 角色的 ARN,然后选择 Save(保存)。

    • 更新日志记录配置:

      1. 选择 Edit logging config(编辑日志记录配置)。

      2. 编辑日志记录配置 JSON,然后选择 Save(保存)。

使用 CloudFormation 控制台停用账户中的公有扩展

  1. 使用 CloudFormation 注册表查找扩展

  2. Actions(操作)菜单中,选择 Deactivate(停用)。

  3. 选择 Deactivate(停用)。

使用 Amazon CLI 激活公有扩展以便在您的账户中使用

  • 使用 activate-type 激活扩展,并指定在发布扩展的新次要版本时是否自动更新扩展。

    下面的示例指定了要为此账户激活的公有扩展的公有 ARN。此外,它还可指定每次发布新的次要版本时 CloudFormation 是否自动更新扩展。CloudFormation 返回此账户和区域特有的已激活扩展的 Amazon 资源编号 (ARN)。

    PROMPT> aws cloudformation activate-type --public-type-arn public_extension_ARN --auto-update-activated { "Arn": "624af370-311a-11e8-b6b7-500cexample" }

使用 Amazon CLI 手动更新公有扩展的版本

  • 使用 activate-type 再次激活扩展。使用 --version-update 参数指定是否将扩展更新为最新的主要版本、最新的次要版本,或者扩展是否自动更新。有关更多信息,请参阅 ActivateType