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

集成 AWS 开发工具包 Java 和 RegisterUsage

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

  1. 要创建新的容器产品,请向 发送电子邮件。您将收到一封电子邮件,其中详细说明了向 AWS Marketplace 注册您的产品应采取的步骤。

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

  3. 访问您从 AWS Marketplace 收到的电子邮件中包含的 S3 存储桶。从 S3 存储桶下载 AWS Marketplace Metering Service .jar 文件,并确保它在您的应用程序类路径中。这让您能够访问 AWS Marketplace Metering Service 上的 RegisterUsage 操作。所有可公开访问的 AWS 开发工具包都具有包含 RegisterUsage 的 AWS Marketplace Metering Service 版本。

  4. (可选)如果要执行数字签名验证,则需要在应用程序类路径中配置 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>
  5. 从您的产品中的每个付费 容器映像调用 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 }
  6. 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..."
  7. 重建包含 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任务的私有注册表身份验证中的步骤操作。

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

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

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

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

  12. 如果您从 RegisterUsage 获得有效响应,请向 发送电子邮件并包含 Amazon ECS task-idproduct-code。AWS Marketplace 可以确认我们已成功收到您的调用并将计量软件用量。

预览模式

在使用所有必要元数据和定价信息发布您的产品之前,您无法完全测试集成。但是,RegisterUsage 还支持尚未完全载入 AWS Marketplace 的付费容器产品的预览模式,从而允许卖家在没有完全发布的产品的情况下安全地与 RegisterUsage 集成。AWS Marketplace 目录运营团队也可在预览模式下验证是否收到您的计量记录,以确保您在产品发布期间提交的容器映像可成功地与 RegisterUsage 集成。预览模式和完全载入的产品的功能相同,以下内容除外:

  • RegisterUsage 在第一个成功调用后的 30 分钟内返回有效响应。此响应还包含缩短的 12 分钟的 TimeToLiveInMillis。30 分钟后,您将获得 CustomerNotEntitledException 并可采取适当的操作,这与客户在生产使用期间无权使用您的产品时完全一样。

  • 预览模式 执行客户订阅(即权限)的验证。

本页内容: