AWS Marketplace
针对 AWS Marketplace 提供商的用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

集成 AWS 开发工具包 Java 和 RegisterUsage

以下步骤概述使用AWS SDK for Java与 AWS Marketplace Metering Service 集成的示例实施。有关完整源代码,请参阅 Java 集成示例。其中许多步骤适用于任何语言。

RegisterUsage 集成的示例步骤

  1. AWS Marketplace Management Portal 中,选择 Containers (容器) 以开始创建新容器产品。您可以使用为产品生成的产品代码与您的容器映像集成。有关发布的更多信息,请参阅发布容器产品。有关设置 IAM 权限的信息,请参阅AWS Marketplace 计量和权限服务 API 权限

  2. 下载公有的 AWS Java 开发工具包

  3. (可选)如果要执行数字签名验证,则需要在应用程序类路径中配置 BouncyCastle 签名验证库。如果要使用 JSON Web Token (JWT),则还必须在应用程序类路径中包括 JWT Java 库。使用 JWT 可提供更简单的签名验证方法,但不是必需的,您可以改用独立的 BouncyCastle。无论您使用的是 JWT 还是 BouncyCastle,都需要使用 Maven 之类的构建系统以在应用程序类路径中包括 BouncyCastle 或 JWT 的传递依赖项。

    // Required for signature verification using code sample <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcpkix-jdk15on</artifactId> <version>1.60</version> </dependency> // This one is only required for JWT <dependency> <groupId>com.nimbusds</groupId> <artifactId>nimbus-jose-jwt</artifactId> <version>6.0</version> </dependency>
  4. 从您的产品中的每个付费 容器映像调用 RegisterUsageProductCodePublicKeyVersion 是必需参数,所有其他输入都是可选的。以下是 RegisterUsage 的示例负载。

    { "ProductCode" : "string", // (required) "PublicKeyVersion": 1, // (required) "Nonce": "string", // (optional) to scope down the registration // to a specific running software // instance and guard against // replay attacks }
  5. RegisterUsage 使用 SHA-256 生成可用于验证请求真实性的 RSA-PSS 数字签名。该签名包括以下字段:ProductCodePublicKeyVersionNonce。要验证数字签名,您必须保留请求中的这些字段。以下代码是 RegisterUsage 调用的示例响应。

    { "Signature": "<<JWT Token>>" } // Where the JWT Token is composed of 3 dot-separated, // base-64 URL Encoded sections. // e.g. eyJhbGcVCJ9.eyJzdWIMzkwMjJ9.rrO9Qw0SXRWTe // Section 1: Header/Algorithm { "alg": "PS256", "typ": "JWT" } // Section 2: Payload { "ProductCode" : "string", "PublicKeyVersion": 1, "Nonce": "string", "iat": date // JWT issued at claim } // Section 3: RSA-PSS SHA256 signature "rrO9Q4FEi3gweH3X4lrt2okf5zwIatUUwERlw016wTy_21Nv8S..."
  6. 重建包含 RegisterUsage 调用的新版本的 Docker 容器映像,标记容器,然后将其推送至与 Amazon ECS 兼容的任何 Docker 注册表,如 Amazon ECR 或 Docker Hub。如果您使用的是 Amazon ECR,请确保启动 Amazon ECS 任务的账户对 Amazon ECR 存储库拥有权限,否则 Amazon ECS 任务执行将失败。

    注意

    如果您使用私有 Docker Hub 存储库,请按照 Amazon Elastic Container Service Developer Guide任务的私有注册表身份验证中的步骤操作。

  7. 创建向您的容器授予调用 RegisterUsage 的权限的 IAM 角色,如以下代码中所定义的。您必须在 Amazon ECS 任务定义的任务角色参数中提供此 IAM 角色。

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "aws-marketplace:RegisterUsage" ], "Effect": "Allow", "Resource": "*" } ] }
  8. 创建引用了已与 AWS Marketplace 集成的容器并引用了您在步骤 #7 中创建的 IAM 角色的 Amazon ECS 任务定义。如果要查看日志记录,则应在任务定义中启用 AWS CloudTrail 日志记录。

  9. 创建 Amazon ECS 集群来执行您的任务。有关更多信息,请参阅 Amazon Elastic Container Service 开发人员指南 中的创建集群

  10. 在 us-east-1 区域中配置 Amazon ECS 集群并启动您在步骤 #8 中创建的 Amazon ECS 任务定义。

  11. 当您从 RegisterUsage 获得有效的响应时,您可以开始创建您的容器产品。有关更多信息,请参阅 发布容器产品。如有任何其他问题,请联系 AWS Marketplace 卖家运营团队。

预览模式

在使用所有必要元数据和定价信息发布您的产品之前,您无法完全测试集成。但是,RegisterUsage 为尚未在 AWS Marketplace 上公开提供的付费容器产品提供了预览模式。通过在预览模式下使用 RegisterUsage,您可以在没有完全发布的产品的情况下安全地进行集成。根据请求,AWS Marketplace 目录操作可以验证在预览模式下收到的计量记录。使用这种方法有助于确保您提交的容器映像将成功地与 RegisterUsage 集成。预览模式与生产模式相同,但预览模式不对客户订阅执行验证。也就是说,它不验证使用您的产品的授权。

本页内容: