搭配 AWS Marketplace AWS CLI 和 使用 Commerce Analytics Service AWS SDK for Java - AWS Marketplace

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

搭配 AWS Marketplace AWS CLI 和 使用 Commerce Analytics Service AWS SDK for Java

透過 AWS Marketplace Commerce Analytics Service,您可以透過程式設計方式存取產品和客戶資料 AWS Marketplace。Commerce Analytics Service AWS Marketplace 透過 AWS 開發套件提供。您可以使用 AWS CLIAWS SDK for Java與 Commerce Analytics Service 互動。這些章節說明如何使用適用於 Java 的 AWS CLI 和 開發套件來實作 Commerce Analytics Service。

Commerce Analytics Service 的 IAM 政策

若要允許您的使用者使用 Commerce Analytics Service,需要下列許可。

使用下列 IAM 許可政策註冊 AWS Marketplace Commerce Analytics Service。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:ListRoles", "iam:CreateRole", "iam:CreatePolicy", "iam:AttachRolePolicy", "aws-marketplace-management:viewReports" ], "Resource": "*" } ] }

使用以下 IAM 許可政策,允許使用者向 AWS Marketplace Commerce Analytics Service 提出請求。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "marketplacecommerceanalytics:GenerateDataSet", "Resource": "*" } ] }

如需詳細資訊,請參閱《IAM 使用者指南》中的在 IAM 主控台中建立政策

使用 提出請求 AWS CLI

若要開始使用,請下載 AWS CLI。下列 AWS CLI 範例會針對 2017 年 10 月 1 日的每小時/每月訂閱資料集提出請求。此資料集會使用字首 demo-prefix 發佈至示範儲存貯體 Amazon S3 儲存貯體,並將通知訊息傳送至示範主題 Amazon SNS 主題。

aws marketplacecommerceanalytics generate-data-set \ --data-set-type "customer_subscriber_hourly_monthly_subscriptions" \ --data-set-publication-date "2017-10-01T00:00:00Z" \ --role-name-arn "arn:aws:iam::123412341234:role/MarketplaceCommerceAnalyticsRole" \ --destination-s3-bucket-name "demo-bucket" \ --destination-s3-prefix "demo-prefix" \ --sns-topic-arn "arn:aws:sns:us-west-2:123412341234:demo-topic"

此請求會傳回每個請求的唯一識別符。您可以使用此識別符,將請求與發佈至 Amazon SNS 主題的通知建立關聯。下列範例是此識別符的範例。

{ "dataSetRequestId": "646dd4ed-6806-11e5-a6d8-fd5dbcaa74ab" }

使用 提出請求 AWS SDK for Java

若要開始,請下載 AWS Java 開發套件。下列 AWS SDK for Java 範例會針對 2015 年 10 月 1 日的每小時/每月訂閱資料集提出請求。此資料集會使用字首 demo-prefix 發佈至示範儲存貯體 Amazon S3 儲存貯體,並將通知訊息傳送至示範主題 Amazon SNS 主題。

/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; import com.amazonaws.AmazonClientException; import com.amazonaws.AmazonServiceException; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Region; import com.amazonaws.regions.Regions; import com.amazonaws.services.marketplacecommerceanalytics.AWSMarketplaceCommerceAnalyticsClient; import com.amazonaws.services.marketplacecommerceanalytics.model.GenerateDataSetRequest; import com.amazonaws.services.marketplacecommerceanalytics.model.GenerateDataSetResult; /** * This sample demonstrates how to make basic requests to the AWS Marketplace Commerce * Analytics service using the AWS SDK for Java. * <p> * <b>Prerequisites:</b> Follow the on-boarding guide: {URL OR SOMETHING} * <p> * Fill in your AWS access credentials in the provided credentials file * template, and be sure to move the file to the default location * (~/.aws/credentials) where the sample code will load the credentials from. * <p> * <b>WARNING:</b> To avoid accidental leakage of your credentials, DO NOT keep * the credentials file in your source directory. * <p> * http://aws.amazon.com/security-credentials */ public class MarketplaceCommerceAnalyticsSample { public static void main(String[] args) throws ParseException { /* * The ProfileCredentialsProvider will return your [default] * credential profile by reading from the credentials file located at * (~/.aws/credentials). */ AWSCredentials credentials = null; try { credentials = new ProfileCredentialsProvider().getCredentials(); } catch (Exception e) { throw new AmazonClientException("Cannot load the credentials from the credential profiles " + "file. Make sure that your credentials file is at the correct " + "location (~/.aws/credentials), and is in valid format.", e); } AWSMarketplaceCommerceAnalyticsClient client = new AWSMarketplaceCommerceAnalyticsClient(credentials); Region usEast1 = Region.getRegion(Regions.US_EAST_1); client.setRegion(usEast1); System.out.println("==============================================================="); System.out.println("Getting Started with AWS Marketplace Commerce Analytics Service"); System.out.println("===============================================================\n"); // Create a data set request with the desired parameters GenerateDataSetRequest request = new GenerateDataSetRequest(); request.setDataSetType("customer_subscriber_hourly_monthly_subscriptions"); request.setDataSetPublicationDate(convertIso8601StringToDateUtc("2014-06-09T00:00:00Z")); request.setRoleNameArn("arn:aws:iam::864545609859:role/MarketplaceCommerceAnalyticsRole"); request.setDestinationS3BucketName("awsmp-goldmine-seller"); request.setDestinationS3Prefix("java-sdk-test"); request.setSnsTopicArn("arn:aws:sns:us-west-2:864545609859:awsmp-goldmine-seller-topic"); System.out.println( String.format("Creating a request for data set %s for publication date %s.", request.getDataSetType(), request.getDataSetPublicationDate())); try { // Make the request to the service GenerateDataSetResult result = client.generateDataSet(request); // The Data Set Request ID is a unique identifier that you can use to correlate the // request with responses on your Amazon SNS topic System.out.println("Request successful, unique ID: " + result.getDataSetRequestId()); } catch (AmazonServiceException ase) { System.out.println("Caught an AmazonServiceException, which means your request made it " + "to the AWS Marketplace Commerce Analytics service, but was rejected with an " + "error response for some reason."); System.out.println("Error Message: " + ase.getMessage()); System.out.println("HTTP Status Code: " + ase.getStatusCode()); System.out.println("AWS Error Code: " + ase.getErrorCode()); System.out.println("Error Type: " + ase.getErrorType()); System.out.println("Request ID: " + ase.getRequestId()); } catch (AmazonClientException ace) { System.out.println("Caught an AmazonClientException, which means the client encountered " + "a serious internal problem while trying to communicate with the AWS Marketplace" + "Commerce Analytics service, such as not being able to access the " + "network."); System.out.println("Error Message: " + ace.getMessage()); } } private static Date convertIso8601StringToDateUtc(String dateIso8601) throws ParseException { TimeZone utcTimeZone = TimeZone.getTimeZone("UTC"); DateFormat utcDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX"); utcDateFormat.setTimeZone(utcTimeZone); return utcDateFormat.parse(dateIso8601); } }

您應該預期類似此範例的結果。

=============================================================== Getting Started with AWS Marketplace Commerce Analytics Service =============================================================== Creating a request for data set customer_subscriber_hourly_monthly_subscriptions for publication date Sun Jun 08 17:00:00 PDT 2014. Request successful, unique ID: c59aff81-6875-11e5-a6d8-fd5dbcaa74ab