View a markdown version of this page

的访问控制AWS MarketplaceCatalog API - AWS Marketplace

AWS Marketplace API 参考已重组。有关支持的 API 操作的更多信息,请参阅 AWS Marketplace API 参考

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

的访问控制AWS MarketplaceCatalog API

您可以使用AWS Marketplace Catalog API来管理有市场中的卖家商品AWS Marketplace或体验。但是,首先要确保您的用户或角色可以访问您要调用的 API 功能。

使用 AWS Identity and Access Management (IAM) 创建用户和角色并分配向最终用户授予有限权限的策略。这些策略定义了用户或角色可以通过对您的资源采取的操作AWS Marketplace Catalog API。

例如,您可以定义工程、市场营销和定价等角色。然后,您可以将组织中的用户添加到工程角色中。在该角色中,他们可能会被授予发起变更请求的权限,以发布您的卖家商品的新版本。但是,工程角色不允许用户列出所有更改集。

注意

要销售商品AWS Marketplace,AWS 账户必须将您的账户设置为卖家账户。有关成为AWS Marketplace卖家的更多详情,请参阅《卖家指南》中的AWS Marketplace卖家入门

您可以使用AWS托管策略,也可以创建自己的 IAM 策略,以获得比AWS托管策略更精细的控制。有关这些方法的详细信息,请参阅以下主题。

允许使用以下操作操作AWS托管策略

您可以使用由管理的策略AWS向您的用户或角色授予权限。

要处理您销售的产品AWS Marketplace,您可以使用 AWSMarketplaceSellerFullAccess IAM 托管策略,该策略AWS Marketplace Catalog API除了拥有其他权限外,还拥有对的完全访问权限。您可以使用AWSMarketplaceSellerProductsReadOnly策略授予目录 API 的只读访问权限。有关更多信息,请参阅《卖家指南》中的控制访问权限AWS Marketplace 管理门户、AWS Marketplace卖家的政策和权限,以及针对AWS Marketplace卖家的 AWS 托管政策。AWS Marketplace

要管理私有市场,您可以使用 AWSPrivateMarketplaceAdminFullAccess IAM 托管策略,该策略拥有为您的账户或AWS组织创建和编辑私有市场的完全访问权限。有关更多信息,请参阅《买家指南》中的控制AWS Marketplace订阅访问权限创建私有市场管理员面向AWS Marketplace买家的 AWS 托管政策。AWS Marketplace

或者,您可以创建自己的 IAM 策略,以获得比AWS托管策略更精细的控制。使用以下主题创建您自己的 IAM 策略。

允许对所有资源执行操作

资源是操作可以操作的对象。并非可以为每个操作指定每种资源类型。某些资源类型仅适用于某些操作。有关更多信息,请参阅《服务授权参考》中的 “AWS Marketplace目录” 的操作、资源和条件密钥

目录 API 中有两种资源类型:

  • 实体-实体是私有市场中的卖家产品AWS Marketplace或体验。

  • ChangeSet— 每次使用目录 API 对实体进行更改时,都会返回一个更改集。变更集描述了请求的更改及其状态。如果更改集的状态为该状态,则可以取消该PREPARING更改集。

要允许用户或角色对中的所有实体进行更改AWS 账户,您可以添加以下 IAM 策略。使用此策略,用户或角色可以对所有资源使用StartChangeSet操作 ("*")。

{ "Statement": [ { "Effect": "Allow", "Action": [ "aws-marketplace:StartChangeSet" ], "Resource": "*" } ] }

有关 Catalog API 的所有可用操作的信息,请参阅《服务授权参考》中的 C AWS Marketplaceatalog 的操作、资源和条件键

允许对特定资源执行操作

注意

Resource-level 只有与 Catalog API 一起使用时,才支持StartChangeSet操作的权限和条件上下文密钥。与一起使用时不支持它们AWS Marketplace 管理门户

您可以使用资源级权限来允许对特定资源进行更改,而不是允许对所有资源进行更改。

例如,您可以允许更改中的特定卖家商品,AWS 账户而不是更改所有卖家商品。为此,您可以在 IAM 政策中指定卖家产品的亚马逊资源名称 (ARN)。Resource

注意

要使用创建新更改集的操作指定精细的资源级权限,还需要在资源列表中包含 ChangeSet ARN。ChangeSetARN 必须包含通配符 (/*),以匹配如图所示创建的任何新更改集 ID。

{ "Statement": [ { "Effect": "Allow", "Action": [ "aws-marketplace:StartChangeSet" ], "Resource": [ "arn:aws:aws-marketplace:us-east-1:123456789012:AWSMarketplace/AmiProduct/example1-abcd-1234-5ef6-7890abcdef12", "arn:aws:aws-marketplace:us-east-1:123456789012:AWSMarketplace/ChangeSet/*" ] } ] }

再举一个例子,您可以允许更改私有市场中的特定体验,而不是所有体验。为此,您可以在 IAM 策略中指定体验Resource的 ARN。

注意

要使用创建新更改集的操作指定精细的资源级权限,还需要在资源列表中包含 ChangeSet ARN。ChangeSetARN 必须包含通配符 (/*),以匹配如图所示创建的任何新更改集 ID。

{ "Statement": [ { "Effect": "Allow", "Action": [ "aws-marketplace:StartChangeSet" ], "Resource": [ "arn:aws:aws-marketplace:us-east-1:123456789012:AWSMarketplace/Experience/exp-example12345", "arn:aws:aws-marketplace:us-east-1:123456789012:AWSMarketplace/ChangeSet/*" ] } ] }

允许使用特定的操作 ChangeType 条件键

注意

Resource-level 只有与 Catalog API 一起使用时,才支持StartChangeSet操作的权限和条件上下文密钥。与一起使用时不支持它们AWS Marketplace 管理门户

目录 API 操作StartChangeSet有几种不同的更改类型。您只能允许访问特定的更改类型。

例如,您可能只想允许更改卖家商品的元数据(例如商品名称),而不允许添加新的产品版本。在此示例中,更改类型UpdateInformation允许更改卖家商品的元数据,包括商品名称。有关不同变更类型的更多信息,请参阅 “参AWS Marketplace Catalog API考” 中的 “使用卖家商品” 和 “使用私有市场”。

要将操作限制为一种或多种更改类型,请在条件键ChangeType中指定。在以下示例 IAM 策略中,条件运算符StringEquals指定只有在ChangeType匹配时才允许执行操作UpdateInformation。有关条件密钥的更多信息,请参阅 AWS Identity and Access Management 用户指南中的条件运算符

注意

要使用创建新更改集的操作指定精细的资源级权限,还需要在资源列表中包含 ChangeSet ARN。ChangeSetARN 必须包含通配符 (/*),以匹配如图所示创建的任何新更改集 ID。

{ "Statement": [ { "Effect": "Allow", "Action": [ "aws-marketplace:StartChangeSet" ], "Resource": [ "arn:aws:aws-marketplace:us-east-1:123456789012:AWSMarketplace/AmiProduct/example1-abcd-1234-5ef6-7890abcdef12", "arn:aws:aws-marketplace:us-east-1:123456789012:AWSMarketplace/ChangeSet/*" ], "Condition": { "StringEquals": { "catalog:ChangeType": "UpdateInformation" } } } ] }

允许使用特定的操作 aws:ResourceTag 条件键

注意

Resource-level 只有与 Catalog API 一起使用时,才支持StartChangeSet操作的权限和条件上下文密钥。与一起使用时不支持它们AWS Marketplace 管理门户

您可以允许对一组实体执行操作,而不必不断更新策略并指定可能不断增加的实体 ARN 列表。你可以通过资源标记来做到这一点。为资源添加标签允许您根据这些资源的标签控制对这些资源的访问权限。例如,您可能希望允许描述一组卖家商品,而不必为每个卖家商品指定单独的 ARN。

例如,以下 IAM 策略允许对标签键为product-team且标签值为的任何实体资源 ("*") DescribeEntity 执行操作team-xyz

{ "Statement": [ { "Effect": "Allow", "Action": [ "aws-marketplace:DescribeEntity" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/product-team": "team-xyz" } } } ] }

您还可以允许描述和取消使用特定标签创建的更改集。

例如,以下 IAM 策略允许对标签键为DescribeChangeSet且标签值为的任何更改集资源 ("*") 执行product-teamCancelChangeSet操作team-xyz

{ "Statement": [ { "Effect": "Allow", "Action": [ "aws-marketplace:DescribeChangeSet", "aws-marketplace:CancelChangeSet" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/product-team": "team-xyz" } } } ] }

此外,只有当实体具有特定标签时,才允许在实体上启动更改集。例如,您可以允许更改带有特定标签的卖家商品。

例如,以下 IAM 策略允许对标签键为product-team且标签值为的任何实体资源 ("*") StartChangeSet 执行操作team-xyz。此外,还需要TagResource执行该操作,以便在创建更改集时,使用相同的标签键和值对其进行标记。

注意

如果您的允许StartChangeSet操作的策略包含与特定标签匹配的条件,则同一策略还必须包含该TagResource操作。这是因为策略条件必须与实体上的标签和变更请求所产生的新创建的更改集上的标签相匹配。因此,它要求用户或角色还具有标记新创建的更改集的权限。有关启动更改集并标记变更集的示例,请参见示例:向实体添加标签并在创建过程中更改集

{ "Statement": [ { "Effect": "Allow", "Action": [ "aws-marketplace:StartChangeSet", "aws-marketplace:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/product-team": "team-xyz" } } } ] }

创建自定义 IAM 角色

想要使用转售授权 ChangeType 或 CPPO 的客户 ChangeType需要创建自定义 AWS Identity and Access Management (IAM) 角色。这将支持创建转售授权产品生命周期。

创建自定义 IAM 角色
  1. 登录 IAM 控制台 (https://console.aws.amazon.com/iam/)。

  2. 访问管理下,选择策略

  3. 选择 Create policy (创建策略)

  4. 对于步骤 1:指定权限

    1. 策略编辑器中,选择 JSON 按钮,然后添加以下策略:

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Sid": "AllowResaleAuthorizationShareActionsRAMCreate", "Effect": "Allow", "Action": [ "ram:CreateResourceShare", "ram:AssociateResourceShare" ], "Resource": [ "arn:aws:ram:*:*:*" ], "Condition": { "ArnLikeIfExists": { "ram:ResourceArn": "arn:aws:aws-marketplace:*:*:AWSMarketplace/ResaleAuthorization/*" }, "StringEqualsIfExists": { "ram:RequestedResourceType": "aws-marketplace:Entity" } } }, { "Sid": "AllowResaleAuthorizationShareActionsRAMAccept", "Effect": "Allow", "Action": [ "ram:AcceptResourceShareInvitation", "ram:GetResourceShareInvitations", "ram:GetResourcePolicies", "ram:GetResourceShareAssociations" ], "Resource": [ "arn:aws:ram:*:*:*" ] }, { "Sid": "AllowResaleAuthorizationShareActionsMarketplace", "Effect": "Allow", "Action": [ "aws-marketplace:PutResourcePolicy", "aws-marketplace:GetResourcePolicy", "aws-marketplace:DescribeEntity" ], "Resource": "arn:aws:aws-marketplace:*:*:AWSMarketplace/ResaleAuthorization/*" } ] }
    2. 选择下一步

  5. 对于步骤 2:查看和创建

    1. 有关策略的详细信息,请在策略名称FullResaleAuthorizationAccess下输入并输入可选的描述

    2. 审核此策略中定义的权限

    3. 对于添加标签,添加标签(可选)。

    4. 选择创建策略

      您已创建FullResaleAuthorizationAccess策略。

  6. Access management(访问管理)下,请选择 Roles(角色)。

  7. 选择创建角色

  8. 对于步骤 1:选择可信实体

    1. 对于可信实体类型,选择自定义信任策略

    2. 将以下自定义信任策略复制粘贴到 JSON 编辑器中。

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "resale-authorization.marketplace.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    3. 选择下一步

  9. 对于步骤 2:添加权限

    1. 在搜索栏中输入 FullResaleAuthorizationAccess

    2. 选择FullResaleAuthorizationAccess权限策略,然后选择 “下一步”。

  10. 对于步骤 3:命名、查看和创建

  1. 有关角色的详细信息FullResaleAuthorizationAccess,请输入角色名称并输入可选的描述

  2. 在 “步骤 1:选择可信实体” 下,确保您选择的策略名称已附加到该角色。

  3. 在 “步骤 2:添加权限” 下,查看策略名称

  4. 步骤 3:添加标签下,添加标签(可选)。

  5. 选择创建角色

    您已创建FullResaleAuthorizationAccess角色。

管理资源标签

您可以添加、列出和移除现有实体或更改集中的标签。

向资源添加标签

要向实体或更改集添加标签,请使用 TagResource API 操作。

请求

POST /TagResource HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ResourceArn": "string", "Tags": [ { "Key": "string", "Value": "string" } ... ] }

请求参数包括:

  • 目录(字符串)-(必填)必须是AWSMarketplace

  • ResourceArn (字符串)-(必填)更改集或实体的 ARN。更改集描述了您使用目录 API 所做的更改。实体可以是私有市场中的卖家产品AWS Marketplace或体验。

  • 标签(对象数组)-(必填)指定每个标签键和值的对象列表。允许的对象数量:1—50。

    • 密钥(字符串)-(必填)标签的名称。

      • 正则表达式模式 — ^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$

      • 字符长度 — 1—128

    • 值(字符串)-(必填)标签的值。

      • 正则表达式模式 — ^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$

      • 字符长度 — 0—256

响应

{}

从资源中删除标签

要从实体或更改集中移除标签或标签列表,请使用 UntagResource API 操作。

请求

POST /UntagResource HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ResourceArn": "string", "TagKeys": [ "string" ... ] }

请求参数包括:

  • 目录(字符串)-(必填)必须是AWSMarketplace

  • ResourceArn (字符串)-(必填)更改集或实体的 ARN。更改集描述了您使用目录 API 所做的更改。实体可以是私有市场中的卖家产品AWS Marketplace或体验。

  • 标签(对象数组)-(必填)要删除的标签的键名列表。允许的字符串数量:0—256。

响应

{}

列出资源上的所有标签

要列出已添加到更改集或实体但尚未从中删除的所有标签,请使用 ListTagsForResource API 操作。

请求

POST /ListTagsForResource HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ResourceArn": "string" }

请求参数包括:

  • 目录(字符串)-(必填)必须是AWSMarketplace

  • ResourceArn (字符串)-(必填)更改集或实体的 ARN。更改集描述了您使用目录 API 所做的更改。实体可以是私有市场中的卖家产品AWS Marketplace或体验。

响应

{ "ResourceArn": "string", "Tags": [ { "Key": "string", "Value": "string" } ... ] }

请求更改资源时管理标签

您可以在创建实体或更改集时添加标签。

示例:在创建更改集时向更改集添加标签

以下是更新卖家商品的商品元数据的StartChangeSet请求示例。此请求通过在ChangeSetTags属性中添加标记,将标签添加到通过此请求创建的更改集中。

POST /StartChangeSet HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ChangeSet": [ { "ChangeType":"UpdateInformation", "Entity": { "Identifier":"example1-abcd-1234-5ef6-7890abcdef12", "Type":"AmiProduct@1.0" }, "Details": "{\"ProductTitle\":\"My updated title\"}" } ], "ChangeSetTags": [ { "Key": "product-team", "Value": "team-xyz" } ] }

有关管理卖家商品的更多信息,请参阅 “AWS Marketplace Catalog API参考” 中的 “处理卖家商品”。

示例:向实体添加标签并在创建过程中更改集

以下是创建私有市场体验实体的StartChangeSet请求示例。该请求通过在和ChangeSetTags属性中添加标签,为通过此请求创建的实体资源EntityTags和更改集资源添加标签。使用这些标签,可以将用户或角色的权限策略指定为仅允许描述或取消此请求创建的更改集,或者仅允许在此请求创建的实体上创建更多更改集。有关更多信息,请参阅 授予仅使用标签创建实体和更改集的权限

POST /StartChangeSet HTTP/1.1 Content-type: application/json { "Catalog": "AWSMarketplace", "ChangeSet": [ { "ChangeType": "CreateExperience", "Entity": { "Type": "Experience@1.0" }, "Details": "{\"Name\": \"ExamplePrivateMarketplace\"}", "EntityTags": [ { "Key": "product-team", "Value": "team-xyz" } ] } ], "ChangeSetTags": [ { "Key": "product-team", "Value": "team-xyz" } ] }

有关管理私有市场的更多信息,请参阅AWS Marketplace Catalog API参考资料中的使用私有市场

授予管理资源标签的权限

要允许用户或角色在所有实体或更改集上添加、删除和列出标签,他们需要以下 IAM 策略。

{ "Statement": [ { "Effect": "Allow", "Action": [ "aws-marketplace:TagResource", "aws-marketplace:UntagResource", "aws-marketplace:ListTagsForResource" ], "Resource": "*" } ] }

仅当资源具有特定标签时,才授予管理这些资源的标签的权限

您可以允许用户或角色在具有特定标签的实体或更改集上添加、移除和列出标签。以下 IAM 策略允许对标签键为product-team且标签值为的任何实体资源 ("*") 执行这些操作team-xyz

{ "Statement": [ { "Effect": "Allow", "Action": [ "aws-marketplace:TagResource", "aws-marketplace:UntagResource", "aws-marketplace:ListTagsForResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/product-team": "team-xyz" } } } ] }

授予仅使用标签创建实体和更改集的权限

注意

Resource-level 只有与 Catalog API 一起使用时,才支持StartChangeSet操作的权限和条件上下文密钥。与一起使用时不支持它们AWS Marketplace 管理门户

您可以在创建实体或更改集时强制标记。添加以下策略以允许StartChangeSetTagResource操作,条件是指定标签键匹配product-team且标签值匹配team-xyz。此策略条件必须与新创建的实体上的标签和根据创建请求生成的新创建的更改集上的标签相匹配。有关在创建实体时标记实体的示例,请参阅示例:向实体添加标签并在创建过程中更改集

对于现有实体,在请求对这些实体进行更改时,此策略还会强制对变更集进行标记。这还要求现有实体具有此现有标签。这是因为策略条件必须同时匹配现有实体上的标签和变更请求所产生的新创建的更改集。有关向变更请求添加标签的示例,请参阅示例:在创建更改集时向更改集添加标签

{ "Statement": [ { "Effect": "Allow", "Action": [ "aws-marketplace:StartChangeSet", "aws-marketplace:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/product-team": "team-xyz" } } } ] }