

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Configurando a medição personalizada para produtos AMI com AWS Marketplace Metering Service
<a name="custom-metering-with-mp-metering-service"></a>

**nota**  
Para produtos baseados em AMI com preços de medição personalizados, seu software deve chamar a [MeterUsage API](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-metering_MeterUsage.html) usando AWS credenciais temporárias da função do IAM para o Amazon Elastic Compute Cloud anexado à instância do Amazon EC2. O uso das chaves de acesso de longo prazo não é compatível.

O Serviço de medição do AWS Marketplace é um recurso de definição de preço e de medição que os vendedores podem usar para cobrar diretamente por seu software por categoria de uso. Há cinco categorias de uso: usuários, dados, largura de banda, hosts ou unidade. É possível usar o Serviço de medição com produtos baseados em imagem de máquina da Amazon (AMI), em contêiner e em software como serviço (SaaS). As seções a seguir fornecem mais informações sobre como configurar a medição personalizada com o AWS Marketplace Metering Service. 

O Serviço de medição do AWS Marketplace permite vários novos cenários. Por exemplo, se o seu software monitora hosts, você pode cobrar pelos hosts monitorados. Você pode ter preços diferentes com base no tamanho do host e cobrar pelo número de hosts simultâneos monitorados por hora. Da mesma forma, se o seu software permite que muitos usuários em uma organização façam login, você pode cobrar pelo número de usuários. A cada hora, o cliente será cobrado pelo número total de usuários provisionados. 

Para obter mais informações, consulte a [https://docs.aws.amazon.com/marketplacemetering/latest/APIReference/Welcome.html](https://docs.aws.amazon.com/marketplacemetering/latest/APIReference/Welcome.html).

*Para obter mais informações sobre a integração AWS Marketplace Metering Service da API para produtos baseados em AMI com preços de medição personalizados, consulte o laboratório Listar [produtos AMI com preços por unidades personalizadas](https://catalog.workshops.aws/mpseller/en-US/ami/list-ami-custom-units) do workshop do vendedor.AWS Marketplace *

**Topics**
+ [Requisitos](#metering-service-requirements)
+ [Chamar o Serviço de medição do AWS Marketplace](#call-aws-marketplace-metering-service)
+ [Tratamento de falhas](#important-information-about-failure-handling)
+ [Limitações](#limitations)
+ [Exemplo de código](#ami-metering-code-example)

## Requisitos
<a name="metering-service-requirements"></a>

Todos os softwares baseados na AMI que usam o Serviço de medição devem atender aos seguintes requisitos: 
+ Seu software deve ser lançado AWS Marketplace por meio de uma Amazon Machine Image (AMI). 
+ Se você já tiver um produto em AWS Marketplace, deverá enviar uma nova AMI e criar um novo produto para habilitar esse recurso. 
+ Todo software deve ser provisionado com uma função AWS Identity and Access Management (IAM). Será necessário que o cliente final adicione um perfil do IAM à instância do Amazon Elastic Compute Cloud (Amazon EC2) que o usuário estiver provisionando com o software. O uso de uma função do IAM é opcional quando você implanta software por meio de AWS Marketplace. É obrigatório quando você implanta o software do Serviço de medição do AWS Marketplace. 
+ O software deve ser capaz de determinar o consumo de alguma forma. 

## Chamar o Serviço de medição do AWS Marketplace
<a name="call-aws-marketplace-metering-service"></a>

 O software deve chamar o Serviço de medição a cada hora e registrar o valor do consumo relativo a essa hora. 

 Quando o software é iniciado, ele deve registrar o minute-of-the-hour local em que foi iniciado. Isso é chamado de *start-minute*. A cada hora no start-minute, o software deve determinar o valor do consumo relativo a essa hora e chamar o Serviço de medição. Para obter informações sobre como obter esse valor, consulte [Modificação do software para usar o Serviço de medição](https://docs.aws.amazon.com/marketplace/latest/userguide/custom-metering-pricing-ami-products.html#modifying-your-software-to-use-the-metering-service).

 Para despertar a cada hora no start-minute, o software deverá usar uma das seguintes abordagens: 
+  Uma thread dentro do software. 
+  Um processo de daemon que é iniciado com a instância ou o software. 
+  Um trabalho cron que é configurado durante a inicialização do aplicativo. 
**nota**  
 O software deve chamar o Serviço de medição do AWS Marketplace usando o perfil do IAM configurada na instância do cliente e especificar a quantidade e dimensão do consumo. 

Seu software pode usar o AWS SDK para chamar o AWS Marketplace Metering Service, semelhante ao exemplo de implementação a seguir: 

1. Use o perfil de instância para criar um cliente de serviço. Isso requer a função configurada para a instância do EC2. As credenciais da função são atualizadas automaticamente pelo SDK.

1. A cada hora, leia o estado e a configuração do software par determinar os valores de consumo para essa hora. Isso pode incluir a coleta de um value-per-dimension. 

1. Chame o método `meterUsage` no cliente do SDK com os seguintes parâmetros (faça chamadas adicionais para cada dimensão com uso): 
   + `timestamp`: timestamp da hora que está sendo registrada (em UTC). 
   + `productCode`: código do produto atribuído ao software. 
   + `dimension`: dimensão (ou dimensões) atribuída ao software. 
   + `quantity`: valor de consumo da hora. 
   + `allocations`: (opcional) você pode fornecer alocações para o uso nas propriedades rastreadas. Essas alocações devem somar o consumo total no registro. Para o comprador, elas são exibidas como possíveis etiquetas de alocação de custos em suas ferramentas de cobrança (como o Gerenciamento de Faturamento e Custos da AWS console). O comprador deve ativar as tags em sua conta para rastrear os custos usando essas tags.

Além disso, o software deve chamar um endpoint do Serviço de medição do AWS Marketplace na região. O produto deve ter uma configuração de endpoint regional correta, para que `us-east-1` envie registros para o endpoint `us-east-1` e `us-west-2` envie registros para o endpoint `us-west-2`. Fazer chamadas na região fornece aos compradores uma experiência mais estável e evita situações em que a disponibilidade de uma região não relacionada pode afetar a execução do software em outra região. 

Ao enviar registros de medição ao serviço, é necessário se conectar ao Serviço de medição do AWS Marketplace na sua região. Use o método auxiliar `getCurrentRegion()` para determinar a região na qual a instância do EC2 está sendo executada e passe essas informações de região para o construtor `MeteringServiceClient`. Se você não especificar um Região da AWS no construtor do SDK, a `us-east-1` região padrão será usada. Se o aplicativo tentar realizar chamadas entre regiões para o serviço, elas serão rejeitadas. Para obter mais informações, consulte [Determinando a região atual de um aplicativo](https://java.awsblog.com/post/Tx3GBOIEN1JJMQ5/Determining-an-Application-s-Current-Region) e [getCurrentRegion()](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/regions/Regions.html#getCurrentRegion()). 

## Tratamento de falhas
<a name="important-information-about-failure-handling"></a>

O produto deve enviar registros de medição ao serviço, um endpoint de Internet pública, para que o uso possa ser capturado e faturado. Como é possível que um cliente modifique as configurações de rede de tal forma que impeça que os registros de medição sejam entregues, o produto deve considerar isso escolhendo um modo de falha. 

**nota**  
Algumas falhas de medição podem ser problemas transitórios na conexão com o. AWS Marketplace Metering Service AWS Marketplace recomenda fortemente a implementação de novas tentativas por até 30 minutos, com recuo exponencial, para evitar interrupções de curto prazo ou problemas de rede.

Normalmente, o software pode falhar aberto (fornecer uma mensagem de aviso, mas mantém toda a funcionalidade) ou falhar fechado (desativar todas as funcionalidades no aplicativo até que uma conexão seja restabelecida). Você pode optar por falhar aberto, fechado ou algo específico par ao aplicativo. É altamente recomendável que você evite deixar de encerrar depois de menos de duas horas de falhas de medição. 

Como exemplo de falha parcialmente aberto, você pode continuar a permitir o acesso ao software, mas não permitir que o comprador modifique as configurações do software. Ou, um comprador ainda pode acessar o software, mas não seria capaz de criar usuários adicionais. O software é responsável por definir e impor esse modo de falha. O modo de falha do software deve ser incluído ao enviar a AMI e não pode ser alterado posteriormente. 

## Limitações
<a name="limitations"></a>

 Mantenha as seguintes limitações em mente ao projetar e enviar software habilitado para Serviço de medição: 
+ **Requisitos do perfil do IAM e do gateway da Internet para seus clientes**: os clientes devem ter um gateway da Internet e devem iniciar o software com um perfil do IAM com permissões específicas. Para obter mais informações, consulte [AWS Marketplace permissões da API de medição e titulação](iam-user-policy-for-aws-marketplace-actions.md). O software não poderá se conectar ao Serviço de medição se essas duas condições não forem atendidas. 
+  **Incapacidade de adicionar ou alterar nova categoria de uso ao produto existente no Serviço de medição**: quando os clientes assinam seu produto de software, estão concordando com os termos e condições. A alteração das categorias de uso em produtos com o Serviço de medição exige um novo produto e uma nova assinatura. 
+ **Incapacidade de alterar dimensões no produto existente no Serviço de medição**: quando os clientes assinam seu produto de software, estão concordando com os termos e condições. A alteração das dimensões em produtos com o Serviço de medição exige um novo produto e uma nova assinatura. Você *pode* adicionar novas dimensões aos produtos existentes, até o limite de 24.
+  **Falta de avaliação gratuita e de assinaturas anuais**: os produtos no Serviço de medição não são compatíveis com avaliações gratuitas e assinaturas anuais na inicialização. 
+  **Considerações sobre a implantação de várias instâncias ou com base em cluster**: alguns softwares serão implantados como parte de uma implantação de várias instâncias. Ao projetar o software, considere como e onde o consumo é medido e onde os registros de medição são emitidos. 

## Exemplo de código
<a name="ami-metering-code-example"></a>

O exemplo de código a seguir é fornecido para ajudá-lo a integrar seu produto AMI com o AWS Marketplace APIs necessário para publicar e manter seu produto.

### `MeterUsage` com marcação de alocação de uso (opcional)
<a name="ami-meterusage-code-example"></a>

O exemplo de código a seguir é relevante para produtos de AMI com modelos de definição de preço de consumo. O exemplo do Python envia um registro de medição com as tags de alocação de uso apropriadas para AWS Marketplace cobrar taxas de seus clientes. pay-as-you-go

```
# NOTE: Your application will need to aggregate usage for the 
#       customer for the hour and set the quantity as seen below. 
# AWS Marketplace can only accept records for up to an hour in the past. 
#
# productCode is supplied after the AWS Marketplace Ops team has 
# published the product to limited

# Import AWS Python SDK
import boto3
import time

usageRecord = [
    { 
        "AllocatedUsageQuantity": 2, 
        "Tags": 
            [ 
                { "Key": "BusinessUnit", "Value": "IT" },
                { "Key": "AccountId", "Value": "123456789" },
            ]

    },
    { 
        "AllocatedUsageQuantity": 1, 
        "Tags": 
            [ 
                { "Key": "BusinessUnit", "Value": "Finance" },
                { "Key": "AccountId", "Value": "987654321" },
            ]

    }
]

marketplaceClient = boto3.client("meteringmarketplace")

response = marketplaceClient.meter_usage(
    ProductCode="testProduct",
    Timestamp=int(time.time()),
    UsageDimension="Dimension1",
    UsageQuantity=3,
    DryRun=False,
    UsageAllocations=usageRecord 
)
```

Para obter mais informações sobre`MeterUsage`, consulte [MeterUsage](https://docs.aws.amazon.com/marketplacemetering/latest/APIReference/API_MeterUsage.html)na *Referência da API do AWS Marketplace Metering Service*.

### Exemplo de resposta
<a name="ami-meterusage-code-response"></a>

```
{ "MeteringRecordId": "string" }
```