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

在 CloudFormation 中使用私有扩展

私有扩展是指您显式注册以在Amazon账户中使用的第三方扩展。

私有扩展有两种:

  • 已激活私有扩展

    这些是您为自己的账户和区域激活的第三方扩展的本地副本。激活第三方公有扩展时,CloudFormation 会在您账户的注册表中创建该扩展的本地副本。

  • 已注册私有扩展

    您还可以激活未在公有 CloudFormation 注册表中列出的私有扩展。这些可能是您自己创建的扩展,也可能是您的组织或其他第三方与您共享的扩展。要在您的账户中使用此类私有扩展,您必须先注册它。

    有关开发自己的私有扩展的信息,请参阅 CloudFormation 命令行界面用户指南中的创建资源类型

注册私有扩展

要使用未在 CloudFormation 注册表中列出的私有扩展(您自己开发的扩展或与您共享的扩展),您必须先在要使用它们的账户和区域中通过 CloudFormation 中注册它们。注册扩展会将其副本上载到账户中的 CloudFormation 注册表,并激活它。注册私有扩展后,其会显示在该账户和区域的 CloudFormation 注册表中,您可以在堆栈模板中使用该扩展。

您可以使用 Amazon CLI 的 register-type 命令或 CloudFormation CLI 的 submit 命令注册扩展。要使用 CloudFormation CLI 注册私有扩展,请参阅 CloudFormation CLI 用户指南中的注册扩展

注册私有扩展的 IAM 权限

作为注册私有扩展的一部分,您可以指定包含扩展项目程序包的 S3 存储桶。此软件包中包含您要注册的扩展所需的任何源文件。注册扩展的用户必须能够访问该 S3 存储桶中的项目包。也就是说,用户需要具有扩展包的 GetObject 权限。

无论您使用 Amazon CLI 的 register-type 命令还是 CloudFormation CLI 的 submit 命令,都是如此。

有关更多信息,请参阅 Amazon Identity and Access Management 用户指南中的 Amazon S3 的操作、资源和条件键

使用 Amazon CLI 注册资源类型

  1. 找到包含要在您的账户中注册的私有扩展的项目包的 S3 存储桶。

  2. 使用 register-type 命令在您的账户中注册扩展:

    RegisterType 是一个异步操作并返回一个注册令牌,您可以使用该令牌跟踪注册请求进度。

    注意

    如果您的扩展调用 Amazon API 作为其功能的一部分,您必须创建一个包含调用这些 AWS API 所需的权限的 IAM 执行角色,并在您的账户中预置该执行角色。然后,您可以使用 --execution-role-arn 参数指定该执行角色。接下来,CloudFormation 担任该执行角色,以便为您的资源类型提供相应的凭证。

    例如,以下命令在当前 Amazon 账户中注册 My::Resource::Example 资源类型:

    aws cloudformation register-type --type-name My::Resource::Example --schema-handler-package [s3 object path] --type RESOURCE { "RegistrationToken": "f5525280-104e-4d35-bef5-8f1fexample" }
  3. 可选:将注册令牌与 describe-type-registration 命令一起使用以跟踪注册请求进度。

    在 CloudFormation 完成注册请求时,它将请求的进度状态设置为 COMPLETE

    以下示例使用上面的 RegisterType 命令返回的注册令牌以返回注册状态信息。

    aws cloudformation describe-type-registration --registration-token f5525280-104e-4d35-bef5-8f1fexample { "ProgressStatus": "COMPLETE", "TypeArn": "arn:aws:cloudformation:us-east-1:012345678910:type/resource/My-Resource-Example", "Description": "Deployment is currently in DEPLOY_STAGE of status COMPLETED; ", "TypeVersionArn": "arn:aws:cloudformation:us-east-1:012345678910:type/resource/My-Resource-Example/00000001" }

在账户级别配置扩展

扩展可以包括用于应用于扩展在给定账户和区域中的所有实例的配置属性。例如,如果扩展需要访问第三方 Web 服务,则扩展作者可能已在扩展配置定义中包含了属性,您可以通过它为该服务指定凭证。当您设置配置属性时,CloudFormation 会在账户和区域级别保存此信息。从那时起,CloudFormation 可以在涉及该扩展在您的账户和区域中的任何实例的操作期间访问这些配置属性。这样,配置属性在所有扩展操作期间都对 CloudFormation 可用,而不仅限于明确涉及堆栈模板的扩展操作。例如,CloudFormation 可以在 readlist 事件期间访问配置属性,这些操作未明确涉及堆栈模板。

如果扩展的配置属性包括任何必需属性,则必须先指定这些属性,然后才能在账户和区域中使用扩展。

有关在开发扩展时定义配置数据的更多信息,请参阅 CloudFormation CLI 用户指南中的定义扩展的账户级配置

在 CloudFormation 控制台中为扩展指定配置属性

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

  2. Actions(操作)中,选择 Edit(编辑),然后选择 Edit configuration(编辑配置)。

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

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

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

使用 Amazon CLI 为扩展指定配置属性

  • 使用 set-type-configuration 命令指定在此账户和区域中与扩展一起使用的配置设置。为指定配置属性而传递的 JSON 必须根据扩展架构的 typeConfiguration 元素中定义的架构进行验证。

在 CloudFormation 控制台中查看扩展的当前配置数据

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

  2. 选择扩展名称以查看扩展详细信息。

  3. 在扩展详细信息页面上,选择 Configuration(配置)选项卡。

在 Amazon CLI 中查看扩展的当前配置数据

  • 使用 describe-type 命令返回有关扩展的详细信息。ConfigurationSchema 元素包含扩展在给定账户和区域中的当前配置属性。

指定要使用的私有扩展版本

随着时间的推移,您可能会注册同一扩展的多个版本。您可以指定要用于 CloudFormation 操作的扩展版本。

使用 Amazon CLI 指定要使用的扩展版本

  • 使用 set-type-default-version 命令指定用于您账户中 CloudFormation 操作的扩展版本。

    例如,以下命令将当前账户的 My::Resource::Example 资源类型的默认版本设置为 00000003

    aws cloudformation set-type-default-version --type RESOURCE --type-name My::Resource::Example --version-id 00000003