/*
* 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.
*/
/*
* Do not modify this file. This file is generated from the meteringmarketplace-2016-01-14.normal.json service model.
*/
using System;
using System.Runtime.ExceptionServices;
using System.Threading;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Net;
using Amazon.AWSMarketplaceMetering.Model;
using Amazon.AWSMarketplaceMetering.Model.Internal.MarshallTransformations;
using Amazon.AWSMarketplaceMetering.Internal;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
using Amazon.Runtime.Internal.Auth;
using Amazon.Runtime.Internal.Transform;
namespace Amazon.AWSMarketplaceMetering
{
///
/// Implementation for accessing AWSMarketplaceMetering
///
/// AWS Marketplace Metering Service
///
/// This reference provides descriptions of the low-level AWS Marketplace Metering Service
/// API.
///
///
///
/// AWS Marketplace sellers can use this API to submit usage data for custom usage dimensions.
///
///
///
/// For information on the permissions you need to use this API, see AWS
/// Marketplace metering and entitlement API permissions in the AWS Marketplace
/// Seller Guide.
///
///
///
/// Submitting Metering Records
///
/// -
///
/// MeterUsage - Submits the metering record for an AWS Marketplace product.
MeterUsage
/// is called from an EC2 instance or a container running on EKS or ECS.
///
/// -
///
/// BatchMeterUsage - Submits the metering record for a set of customers.
BatchMeterUsage
/// is called from a software-as-a-service (SaaS) application.
///
///
///
/// Accepting New Customers
///
/// -
///
/// ResolveCustomer - Called by a SaaS application during the registration process.
/// When a buyer visits your website during the registration process, the buyer submits
/// a Registration Token through the browser. The Registration Token is resolved through
/// this API to obtain a
CustomerIdentifier
along with the CustomerAWSAccountId
/// and ProductCode
.
///
///
///
/// Entitlement and Metering for Paid Container Products
///
/// -
///
/// Paid container software products sold through AWS Marketplace must integrate with
/// the AWS Marketplace Metering Service and call the
RegisterUsage
operation
/// for software entitlement and metering. Free and BYOL products for Amazon ECS or Amazon
/// EKS aren't required to call RegisterUsage
, but you can do so if you want
/// to receive usage data in your seller reports. For more information on using the RegisterUsage
/// operation, see Container-Based
/// Products.
///
///
///
/// BatchMeterUsage
API calls are captured by AWS CloudTrail. You can use
/// Cloudtrail to verify that the SaaS metering records that you sent are accurate by
/// searching for records with the eventName
of BatchMeterUsage
.
/// You can also use CloudTrail to audit records over time. For more information, see
/// the AWS
/// CloudTrail User Guide.
///
///
public partial class AmazonAWSMarketplaceMeteringClient : AmazonServiceClient, IAmazonAWSMarketplaceMetering
{
private static IServiceMetadata serviceMetadata = new AmazonAWSMarketplaceMeteringMetadata();
#region Constructors
///
/// Constructs AmazonAWSMarketplaceMeteringClient with the credentials loaded from the application's
/// default configuration, and if unsuccessful from the Instance Profile service on an EC2 instance.
///
/// Example App.config with credentials set.
///
/// <?xml version="1.0" encoding="utf-8" ?>
/// <configuration>
/// <appSettings>
/// <add key="AWSProfileName" value="AWS Default"/>
/// </appSettings>
/// </configuration>
///
///
///
public AmazonAWSMarketplaceMeteringClient()
: base(FallbackCredentialsFactory.GetCredentials(), new AmazonAWSMarketplaceMeteringConfig()) { }
///
/// Constructs AmazonAWSMarketplaceMeteringClient with the credentials loaded from the application's
/// default configuration, and if unsuccessful from the Instance Profile service on an EC2 instance.
///
/// Example App.config with credentials set.
///
/// <?xml version="1.0" encoding="utf-8" ?>
/// <configuration>
/// <appSettings>
/// <add key="AWSProfileName" value="AWS Default"/>
/// </appSettings>
/// </configuration>
///
///
///
/// The region to connect.
public AmazonAWSMarketplaceMeteringClient(RegionEndpoint region)
: base(FallbackCredentialsFactory.GetCredentials(), new AmazonAWSMarketplaceMeteringConfig{RegionEndpoint = region}) { }
///
/// Constructs AmazonAWSMarketplaceMeteringClient with the credentials loaded from the application's
/// default configuration, and if unsuccessful from the Instance Profile service on an EC2 instance.
///
/// Example App.config with credentials set.
///
/// <?xml version="1.0" encoding="utf-8" ?>
/// <configuration>
/// <appSettings>
/// <add key="AWSProfileName" value="AWS Default"/>
/// </appSettings>
/// </configuration>
///
///
///
/// The AmazonAWSMarketplaceMeteringClient Configuration Object
public AmazonAWSMarketplaceMeteringClient(AmazonAWSMarketplaceMeteringConfig config)
: base(FallbackCredentialsFactory.GetCredentials(config), config){}
///
/// Constructs AmazonAWSMarketplaceMeteringClient with AWS Credentials
///
/// AWS Credentials
public AmazonAWSMarketplaceMeteringClient(AWSCredentials credentials)
: this(credentials, new AmazonAWSMarketplaceMeteringConfig())
{
}
///
/// Constructs AmazonAWSMarketplaceMeteringClient with AWS Credentials
///
/// AWS Credentials
/// The region to connect.
public AmazonAWSMarketplaceMeteringClient(AWSCredentials credentials, RegionEndpoint region)
: this(credentials, new AmazonAWSMarketplaceMeteringConfig{RegionEndpoint = region})
{
}
///
/// Constructs AmazonAWSMarketplaceMeteringClient with AWS Credentials and an
/// AmazonAWSMarketplaceMeteringClient Configuration object.
///
/// AWS Credentials
/// The AmazonAWSMarketplaceMeteringClient Configuration Object
public AmazonAWSMarketplaceMeteringClient(AWSCredentials credentials, AmazonAWSMarketplaceMeteringConfig clientConfig)
: base(credentials, clientConfig)
{
}
///
/// Constructs AmazonAWSMarketplaceMeteringClient with AWS Access Key ID and AWS Secret Key
///
/// AWS Access Key ID
/// AWS Secret Access Key
public AmazonAWSMarketplaceMeteringClient(string awsAccessKeyId, string awsSecretAccessKey)
: this(awsAccessKeyId, awsSecretAccessKey, new AmazonAWSMarketplaceMeteringConfig())
{
}
///
/// Constructs AmazonAWSMarketplaceMeteringClient with AWS Access Key ID and AWS Secret Key
///
/// AWS Access Key ID
/// AWS Secret Access Key
/// The region to connect.
public AmazonAWSMarketplaceMeteringClient(string awsAccessKeyId, string awsSecretAccessKey, RegionEndpoint region)
: this(awsAccessKeyId, awsSecretAccessKey, new AmazonAWSMarketplaceMeteringConfig() {RegionEndpoint=region})
{
}
///
/// Constructs AmazonAWSMarketplaceMeteringClient with AWS Access Key ID, AWS Secret Key and an
/// AmazonAWSMarketplaceMeteringClient Configuration object.
///
/// AWS Access Key ID
/// AWS Secret Access Key
/// The AmazonAWSMarketplaceMeteringClient Configuration Object
public AmazonAWSMarketplaceMeteringClient(string awsAccessKeyId, string awsSecretAccessKey, AmazonAWSMarketplaceMeteringConfig clientConfig)
: base(awsAccessKeyId, awsSecretAccessKey, clientConfig)
{
}
///
/// Constructs AmazonAWSMarketplaceMeteringClient with AWS Access Key ID and AWS Secret Key
///
/// AWS Access Key ID
/// AWS Secret Access Key
/// AWS Session Token
public AmazonAWSMarketplaceMeteringClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken)
: this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonAWSMarketplaceMeteringConfig())
{
}
///
/// Constructs AmazonAWSMarketplaceMeteringClient with AWS Access Key ID and AWS Secret Key
///
/// AWS Access Key ID
/// AWS Secret Access Key
/// AWS Session Token
/// The region to connect.
public AmazonAWSMarketplaceMeteringClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, RegionEndpoint region)
: this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonAWSMarketplaceMeteringConfig{RegionEndpoint = region})
{
}
///
/// Constructs AmazonAWSMarketplaceMeteringClient with AWS Access Key ID, AWS Secret Key and an
/// AmazonAWSMarketplaceMeteringClient Configuration object.
///
/// AWS Access Key ID
/// AWS Secret Access Key
/// AWS Session Token
/// The AmazonAWSMarketplaceMeteringClient Configuration Object
public AmazonAWSMarketplaceMeteringClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, AmazonAWSMarketplaceMeteringConfig clientConfig)
: base(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, clientConfig)
{
}
#endregion
#region Overrides
///
/// Creates the signer for the service.
///
protected override AbstractAWSSigner CreateSigner()
{
return new AWS4Signer();
}
///
/// Customize the pipeline
///
///
protected override void CustomizeRuntimePipeline(RuntimePipeline pipeline)
{
pipeline.RemoveHandler();
pipeline.AddHandlerAfter(new AmazonAWSMarketplaceMeteringEndpointResolver());
}
///
/// Capture metadata for the service.
///
protected override IServiceMetadata ServiceMetadata
{
get
{
return serviceMetadata;
}
}
#endregion
#region Dispose
///
/// Disposes the service client.
///
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
}
#endregion
#region BatchMeterUsage
///
/// BatchMeterUsage
is called from a SaaS application listed on AWS Marketplace
/// to post metering records for a set of customers.
///
///
///
/// For identical requests, the API is idempotent; requests can be retried with the same
/// records or a subset of the input records.
///
///
///
/// Every request to BatchMeterUsage
is for one product. If you need to meter
/// usage for multiple products, you must make multiple calls to BatchMeterUsage
.
///
///
///
/// Usage records are expected to be submitted as quickly as possible after the event
/// that is being recorded, and are not accepted more than 6 hours after the event.
///
///
///
/// BatchMeterUsage
can process up to 25 UsageRecords
at a
/// time.
///
///
///
/// A UsageRecord
can optionally include multiple usage allocations, to provide
/// customers with usage data split into buckets by tags that you define (or allow the
/// customer to define).
///
///
///
/// BatchMeterUsage
returns a list of UsageRecordResult
objects,
/// showing the result for each UsageRecord
, as well as a list of UnprocessedRecords
,
/// indicating errors in the service side that you should retry.
///
///
///
/// BatchMeterUsage
requests must be less than 1MB in size.
///
///
///
/// For an example of using BatchMeterUsage
, see
/// BatchMeterUsage code example in the AWS Marketplace Seller Guide.
///
///
///
/// Container for the necessary parameters to execute the BatchMeterUsage service method.
///
/// The response from the BatchMeterUsage service method, as returned by AWSMarketplaceMetering.
///
/// The API is disabled in the Region.
///
///
/// An internal error has occurred. Retry your request. If the problem persists, post
/// a message with details on the AWS forums.
///
///
/// You have metered usage for a CustomerIdentifier
that does not exist.
///
///
/// The product code passed does not match the product code used for publishing the product.
///
///
/// The tag is invalid, or the number of tags is greater than 5.
///
///
/// The usage allocation objects are invalid, or the number of allocations is greater
/// than 500 for a single usage record.
///
///
/// The usage dimension does not match one of the UsageDimensions
associated
/// with products.
///
///
/// The calls to the API are throttled.
///
///
/// The timestamp
value passed in the UsageRecord
is out of
/// allowed range.
///
///
///
/// For BatchMeterUsage
, if any of the records are outside of the allowed
/// range, the entire batch is not processed. You must remove invalid records and try
/// again.
///
///
/// REST API Reference for BatchMeterUsage Operation
public virtual BatchMeterUsageResponse BatchMeterUsage(BatchMeterUsageRequest request)
{
var options = new InvokeOptions();
options.RequestMarshaller = BatchMeterUsageRequestMarshaller.Instance;
options.ResponseUnmarshaller = BatchMeterUsageResponseUnmarshaller.Instance;
return Invoke(request, options);
}
///
/// BatchMeterUsage
is called from a SaaS application listed on AWS Marketplace
/// to post metering records for a set of customers.
///
///
///
/// For identical requests, the API is idempotent; requests can be retried with the same
/// records or a subset of the input records.
///
///
///
/// Every request to BatchMeterUsage
is for one product. If you need to meter
/// usage for multiple products, you must make multiple calls to BatchMeterUsage
.
///
///
///
/// Usage records are expected to be submitted as quickly as possible after the event
/// that is being recorded, and are not accepted more than 6 hours after the event.
///
///
///
/// BatchMeterUsage
can process up to 25 UsageRecords
at a
/// time.
///
///
///
/// A UsageRecord
can optionally include multiple usage allocations, to provide
/// customers with usage data split into buckets by tags that you define (or allow the
/// customer to define).
///
///
///
/// BatchMeterUsage
returns a list of UsageRecordResult
objects,
/// showing the result for each UsageRecord
, as well as a list of UnprocessedRecords
,
/// indicating errors in the service side that you should retry.
///
///
///
/// BatchMeterUsage
requests must be less than 1MB in size.
///
///
///
/// For an example of using BatchMeterUsage
, see
/// BatchMeterUsage code example in the AWS Marketplace Seller Guide.
///
///
///
/// Container for the necessary parameters to execute the BatchMeterUsage service method.
///
/// A cancellation token that can be used by other objects or threads to receive notice of cancellation.
///
///
/// The response from the BatchMeterUsage service method, as returned by AWSMarketplaceMetering.
///
/// The API is disabled in the Region.
///
///
/// An internal error has occurred. Retry your request. If the problem persists, post
/// a message with details on the AWS forums.
///
///
/// You have metered usage for a CustomerIdentifier
that does not exist.
///
///
/// The product code passed does not match the product code used for publishing the product.
///
///
/// The tag is invalid, or the number of tags is greater than 5.
///
///
/// The usage allocation objects are invalid, or the number of allocations is greater
/// than 500 for a single usage record.
///
///
/// The usage dimension does not match one of the UsageDimensions
associated
/// with products.
///
///
/// The calls to the API are throttled.
///
///
/// The timestamp
value passed in the UsageRecord
is out of
/// allowed range.
///
///
///
/// For BatchMeterUsage
, if any of the records are outside of the allowed
/// range, the entire batch is not processed. You must remove invalid records and try
/// again.
///
///
/// REST API Reference for BatchMeterUsage Operation
public virtual Task BatchMeterUsageAsync(BatchMeterUsageRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
{
var options = new InvokeOptions();
options.RequestMarshaller = BatchMeterUsageRequestMarshaller.Instance;
options.ResponseUnmarshaller = BatchMeterUsageResponseUnmarshaller.Instance;
return InvokeAsync(request, options, cancellationToken);
}
#endregion
#region MeterUsage
///
/// API to emit metering records. For identical requests, the API is idempotent. It simply
/// returns the metering record ID.
///
///
///
/// MeterUsage
is authenticated on the buyer's AWS account using credentials
/// from the EC2 instance, ECS task, or EKS pod.
///
///
///
/// MeterUsage
can optionally include multiple usage allocations, to provide
/// customers with usage data split into buckets by tags that you define (or allow the
/// customer to define).
///
///
///
/// Usage records are expected to be submitted as quickly as possible after the event
/// that is being recorded, and are not accepted more than 6 hours after the event.
///
///
/// Container for the necessary parameters to execute the MeterUsage service method.
///
/// The response from the MeterUsage service method, as returned by AWSMarketplaceMetering.
///
/// Exception thrown when the customer does not have a valid subscription for the product.
///
///
/// A metering record has already been emitted by the same EC2 instance, ECS task, or
/// EKS pod for the given {usageDimension
, timestamp
} with a
/// different usageQuantity
.
///
///
/// An internal error has occurred. Retry your request. If the problem persists, post
/// a message with details on the AWS forums.
///
///
/// The endpoint being called is in a AWS Region different from your EC2 instance, ECS
/// task, or EKS pod. The Region of the Metering Service endpoint and the AWS Region of
/// the resource must match.
///
///
/// The product code passed does not match the product code used for publishing the product.
///
///
/// The tag is invalid, or the number of tags is greater than 5.
///
///
/// The usage allocation objects are invalid, or the number of allocations is greater
/// than 500 for a single usage record.
///
///
/// The usage dimension does not match one of the UsageDimensions
associated
/// with products.
///
///
/// The calls to the API are throttled.
///
///
/// The timestamp
value passed in the UsageRecord
is out of
/// allowed range.
///
///
///
/// For BatchMeterUsage
, if any of the records are outside of the allowed
/// range, the entire batch is not processed. You must remove invalid records and try
/// again.
///
///
/// REST API Reference for MeterUsage Operation
public virtual MeterUsageResponse MeterUsage(MeterUsageRequest request)
{
var options = new InvokeOptions();
options.RequestMarshaller = MeterUsageRequestMarshaller.Instance;
options.ResponseUnmarshaller = MeterUsageResponseUnmarshaller.Instance;
return Invoke(request, options);
}
///
/// API to emit metering records. For identical requests, the API is idempotent. It simply
/// returns the metering record ID.
///
///
///
/// MeterUsage
is authenticated on the buyer's AWS account using credentials
/// from the EC2 instance, ECS task, or EKS pod.
///
///
///
/// MeterUsage
can optionally include multiple usage allocations, to provide
/// customers with usage data split into buckets by tags that you define (or allow the
/// customer to define).
///
///
///
/// Usage records are expected to be submitted as quickly as possible after the event
/// that is being recorded, and are not accepted more than 6 hours after the event.
///
///
/// Container for the necessary parameters to execute the MeterUsage service method.
///
/// A cancellation token that can be used by other objects or threads to receive notice of cancellation.
///
///
/// The response from the MeterUsage service method, as returned by AWSMarketplaceMetering.
///
/// Exception thrown when the customer does not have a valid subscription for the product.
///
///
/// A metering record has already been emitted by the same EC2 instance, ECS task, or
/// EKS pod for the given {usageDimension
, timestamp
} with a
/// different usageQuantity
.
///
///
/// An internal error has occurred. Retry your request. If the problem persists, post
/// a message with details on the AWS forums.
///
///
/// The endpoint being called is in a AWS Region different from your EC2 instance, ECS
/// task, or EKS pod. The Region of the Metering Service endpoint and the AWS Region of
/// the resource must match.
///
///
/// The product code passed does not match the product code used for publishing the product.
///
///
/// The tag is invalid, or the number of tags is greater than 5.
///
///
/// The usage allocation objects are invalid, or the number of allocations is greater
/// than 500 for a single usage record.
///
///
/// The usage dimension does not match one of the UsageDimensions
associated
/// with products.
///
///
/// The calls to the API are throttled.
///
///
/// The timestamp
value passed in the UsageRecord
is out of
/// allowed range.
///
///
///
/// For BatchMeterUsage
, if any of the records are outside of the allowed
/// range, the entire batch is not processed. You must remove invalid records and try
/// again.
///
///
/// REST API Reference for MeterUsage Operation
public virtual Task MeterUsageAsync(MeterUsageRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
{
var options = new InvokeOptions();
options.RequestMarshaller = MeterUsageRequestMarshaller.Instance;
options.ResponseUnmarshaller = MeterUsageResponseUnmarshaller.Instance;
return InvokeAsync(request, options, cancellationToken);
}
#endregion
#region RegisterUsage
///
/// Paid container software products sold through AWS Marketplace must integrate with
/// the AWS Marketplace Metering Service and call the RegisterUsage
operation
/// for software entitlement and metering. Free and BYOL products for Amazon ECS or Amazon
/// EKS aren't required to call RegisterUsage
, but you may choose to do so
/// if you would like to receive usage data in your seller reports. The sections below
/// explain the behavior of RegisterUsage
. RegisterUsage
performs
/// two primary functions: metering and entitlement.
///
/// -
///
/// Entitlement:
RegisterUsage
allows you to verify that the customer
/// running your paid software is subscribed to your product on AWS Marketplace, enabling
/// you to guard against unauthorized use. Your container image that integrates with RegisterUsage
/// is only required to guard against unauthorized use at container startup, as such a
/// CustomerNotSubscribedException
or PlatformNotSupportedException
/// will only be thrown on the initial call to RegisterUsage
. Subsequent
/// calls from the same Amazon ECS task instance (e.g. task-id) or Amazon EKS pod will
/// not throw a CustomerNotSubscribedException
, even if the customer unsubscribes
/// while the Amazon ECS task or Amazon EKS pod is still running.
///
/// -
///
/// Metering:
RegisterUsage
meters software use per ECS task, per
/// hour, or per pod for Amazon EKS with usage prorated to the second. A minimum of 1
/// minute of usage applies to tasks that are short lived. For example, if a customer
/// has a 10 node Amazon ECS or Amazon EKS cluster and a service configured as a Daemon
/// Set, then Amazon ECS or Amazon EKS will launch a task on all 10 cluster nodes and
/// the customer will be charged: (10 * hourly_rate). Metering for software use is automatically
/// handled by the AWS Marketplace Metering Control Plane -- your software is not required
/// to perform any metering specific actions, other than call RegisterUsage
/// once for metering of software use to commence. The AWS Marketplace Metering Control
/// Plane will also continue to bill customers for running ECS tasks and Amazon EKS pods,
/// regardless of the customers subscription state, removing the need for your software
/// to perform entitlement checks at runtime.
///
///
///
/// Container for the necessary parameters to execute the RegisterUsage service method.
///
/// The response from the RegisterUsage service method, as returned by AWSMarketplaceMetering.
///
/// Exception thrown when the customer does not have a valid subscription for the product.
///
///
/// The API is disabled in the Region.
///
///
/// An internal error has occurred. Retry your request. If the problem persists, post
/// a message with details on the AWS forums.
///
///
/// The product code passed does not match the product code used for publishing the product.
///
///
/// Public Key version is invalid.
///
///
/// RegisterUsage
must be called in the same AWS Region the ECS task was
/// launched in. This prevents a container from hardcoding a Region (e.g. withRegion(“us-east-1”)
/// when calling RegisterUsage
.
///
///
/// AWS Marketplace does not support metering usage from the underlying platform. Currently,
/// Amazon ECS, Amazon EKS, and AWS Fargate are supported.
///
///
/// The calls to the API are throttled.
///
/// REST API Reference for RegisterUsage Operation
public virtual RegisterUsageResponse RegisterUsage(RegisterUsageRequest request)
{
var options = new InvokeOptions();
options.RequestMarshaller = RegisterUsageRequestMarshaller.Instance;
options.ResponseUnmarshaller = RegisterUsageResponseUnmarshaller.Instance;
return Invoke(request, options);
}
///
/// Paid container software products sold through AWS Marketplace must integrate with
/// the AWS Marketplace Metering Service and call the RegisterUsage
operation
/// for software entitlement and metering. Free and BYOL products for Amazon ECS or Amazon
/// EKS aren't required to call RegisterUsage
, but you may choose to do so
/// if you would like to receive usage data in your seller reports. The sections below
/// explain the behavior of RegisterUsage
. RegisterUsage
performs
/// two primary functions: metering and entitlement.
///
/// -
///
/// Entitlement:
RegisterUsage
allows you to verify that the customer
/// running your paid software is subscribed to your product on AWS Marketplace, enabling
/// you to guard against unauthorized use. Your container image that integrates with RegisterUsage
/// is only required to guard against unauthorized use at container startup, as such a
/// CustomerNotSubscribedException
or PlatformNotSupportedException
/// will only be thrown on the initial call to RegisterUsage
. Subsequent
/// calls from the same Amazon ECS task instance (e.g. task-id) or Amazon EKS pod will
/// not throw a CustomerNotSubscribedException
, even if the customer unsubscribes
/// while the Amazon ECS task or Amazon EKS pod is still running.
///
/// -
///
/// Metering:
RegisterUsage
meters software use per ECS task, per
/// hour, or per pod for Amazon EKS with usage prorated to the second. A minimum of 1
/// minute of usage applies to tasks that are short lived. For example, if a customer
/// has a 10 node Amazon ECS or Amazon EKS cluster and a service configured as a Daemon
/// Set, then Amazon ECS or Amazon EKS will launch a task on all 10 cluster nodes and
/// the customer will be charged: (10 * hourly_rate). Metering for software use is automatically
/// handled by the AWS Marketplace Metering Control Plane -- your software is not required
/// to perform any metering specific actions, other than call RegisterUsage
/// once for metering of software use to commence. The AWS Marketplace Metering Control
/// Plane will also continue to bill customers for running ECS tasks and Amazon EKS pods,
/// regardless of the customers subscription state, removing the need for your software
/// to perform entitlement checks at runtime.
///
///
///
/// Container for the necessary parameters to execute the RegisterUsage service method.
///
/// A cancellation token that can be used by other objects or threads to receive notice of cancellation.
///
///
/// The response from the RegisterUsage service method, as returned by AWSMarketplaceMetering.
///
/// Exception thrown when the customer does not have a valid subscription for the product.
///
///
/// The API is disabled in the Region.
///
///
/// An internal error has occurred. Retry your request. If the problem persists, post
/// a message with details on the AWS forums.
///
///
/// The product code passed does not match the product code used for publishing the product.
///
///
/// Public Key version is invalid.
///
///
/// RegisterUsage
must be called in the same AWS Region the ECS task was
/// launched in. This prevents a container from hardcoding a Region (e.g. withRegion(“us-east-1”)
/// when calling RegisterUsage
.
///
///
/// AWS Marketplace does not support metering usage from the underlying platform. Currently,
/// Amazon ECS, Amazon EKS, and AWS Fargate are supported.
///
///
/// The calls to the API are throttled.
///
/// REST API Reference for RegisterUsage Operation
public virtual Task RegisterUsageAsync(RegisterUsageRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
{
var options = new InvokeOptions();
options.RequestMarshaller = RegisterUsageRequestMarshaller.Instance;
options.ResponseUnmarshaller = RegisterUsageResponseUnmarshaller.Instance;
return InvokeAsync(request, options, cancellationToken);
}
#endregion
#region ResolveCustomer
///
/// ResolveCustomer
is called by a SaaS application during the registration
/// process. When a buyer visits your website during the registration process, the buyer
/// submits a registration token through their browser. The registration token is resolved
/// through this API to obtain a CustomerIdentifier
along with the CustomerAWSAccountId
/// and ProductCode
.
///
///
///
/// The API needs to called from the seller account id used to publish the SaaS application
/// to successfully resolve the token.
///
///
///
/// For an example of using ResolveCustomer
, see
/// ResolveCustomer code example in the AWS Marketplace Seller Guide.
///
///
///
/// Container for the necessary parameters to execute the ResolveCustomer service method.
///
/// The response from the ResolveCustomer service method, as returned by AWSMarketplaceMetering.
///
/// The API is disabled in the Region.
///
///
/// The submitted registration token has expired. This can happen if the buyer's browser
/// takes too long to redirect to your page, the buyer has resubmitted the registration
/// token, or your application has held on to the registration token for too long. Your
/// SaaS registration website should redeem this token as soon as it is submitted by the
/// buyer's browser.
///
///
/// An internal error has occurred. Retry your request. If the problem persists, post
/// a message with details on the AWS forums.
///
///
/// Registration token is invalid.
///
///
/// The calls to the API are throttled.
///
/// REST API Reference for ResolveCustomer Operation
public virtual ResolveCustomerResponse ResolveCustomer(ResolveCustomerRequest request)
{
var options = new InvokeOptions();
options.RequestMarshaller = ResolveCustomerRequestMarshaller.Instance;
options.ResponseUnmarshaller = ResolveCustomerResponseUnmarshaller.Instance;
return Invoke(request, options);
}
///
/// ResolveCustomer
is called by a SaaS application during the registration
/// process. When a buyer visits your website during the registration process, the buyer
/// submits a registration token through their browser. The registration token is resolved
/// through this API to obtain a CustomerIdentifier
along with the CustomerAWSAccountId
/// and ProductCode
.
///
///
///
/// The API needs to called from the seller account id used to publish the SaaS application
/// to successfully resolve the token.
///
///
///
/// For an example of using ResolveCustomer
, see
/// ResolveCustomer code example in the AWS Marketplace Seller Guide.
///
///
///
/// Container for the necessary parameters to execute the ResolveCustomer service method.
///
/// A cancellation token that can be used by other objects or threads to receive notice of cancellation.
///
///
/// The response from the ResolveCustomer service method, as returned by AWSMarketplaceMetering.
///
/// The API is disabled in the Region.
///
///
/// The submitted registration token has expired. This can happen if the buyer's browser
/// takes too long to redirect to your page, the buyer has resubmitted the registration
/// token, or your application has held on to the registration token for too long. Your
/// SaaS registration website should redeem this token as soon as it is submitted by the
/// buyer's browser.
///
///
/// An internal error has occurred. Retry your request. If the problem persists, post
/// a message with details on the AWS forums.
///
///
/// Registration token is invalid.
///
///
/// The calls to the API are throttled.
///
/// REST API Reference for ResolveCustomer Operation
public virtual Task ResolveCustomerAsync(ResolveCustomerRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
{
var options = new InvokeOptions();
options.RequestMarshaller = ResolveCustomerRequestMarshaller.Instance;
options.ResponseUnmarshaller = ResolveCustomerResponseUnmarshaller.Instance;
return InvokeAsync(request, options, cancellationToken);
}
#endregion
}
}