

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á.

# Implantar e testar a aplicação de exemplo de event fork pipelines do Amazon SNS
<a name="sns-deploy-test-fork-pipelines-sample-application"></a>

Para acelerar o desenvolvimento de seus aplicativos orientados a eventos, você pode inscrever pipelines de tratamento de eventos — desenvolvidos pelo AWS Event Fork Pipelines — em tópicos do Amazon SNS. AWS O Event Fork Pipelines é um conjunto de [aplicativos aninhados](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-nested-applications.html) de código aberto, baseado no [AWS Serverless Application Model](https://aws.amazon.com/serverless/sam/) (AWS SAM), que você pode implantar diretamente do [pacote AWS Event Fork Pipelines](https://serverlessrepo.aws.amazon.com/applications?query=aws-event-fork-pipelines) (escolha **Mostrar aplicativos que criam funções personalizadas do IAM** ou políticas de recursos) em sua conta. AWS Para obter mais informações, consulte [Como funciona o AWS Event Fork Pipelines](sns-fork-pipeline-as-subscriber.md#how-sns-fork-works).

Esta página mostra como você pode usar o Console de gerenciamento da AWS para implantar e testar o aplicativo de amostra AWS Event Fork Pipelines.

**Importante**  
Para evitar custos indesejados após concluir a implantação do aplicativo de amostra AWS Event Fork Pipelines, exclua sua pilha. CloudFormation Para obter mais informações, consulte [Excluir uma pilha no console do CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html) no *Manual do usuário do AWS CloudFormation *.

# AWS Exemplo de caso de uso do Event Fork Pipelines
<a name="example-sns-fork-use-case"></a>

O cenário a seguir descreve um aplicativo de comércio eletrônico sem servidor e orientado por eventos que usa AWS o Event Fork Pipelines. Você pode usar esse [exemplo de aplicativo de comércio eletrônico](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:077246666028:applications~fork-example-ecommerce-checkout-api) no AWS Serverless Application Repository e depois implantá-lo no AWS Lambda console, onde você pode testá-lo e examinar seu código-fonte GitHub. Conta da AWS 

![\[A arquitetura de um aplicativo de comércio eletrônico de tecnologia sem servidor que se integra a Serviços da AWS. Ele mostra o fluxo de usuários de comércio eletrônico que fazem pedidos por meio de um API Gateway para diferentes canais de processamento, incluindo armazenamento de pedidos, análise de pesquisa e reprodução, mostrando como os eventos são gerenciados e analisados por meio do Amazon SNS, Lambda, Amazon SQS, DynamoDB e Kibana.\]](http://docs.aws.amazon.com/pt_br/sns/latest/dg/images/sns-fork-example-use-case.png)


Esse aplicativo de comércio eletrônico recebe pedidos de compradores por meio de uma RESTful API hospedada pelo API Gateway e apoiada pela AWS Lambda função`CheckoutApiBackendFunction`. Essa função publica todos os pedidos recebidos em um tópico do Amazon SNS chamado `CheckoutEventsTopic` que, por sua vez, envia os pedidos para quatro pipelines diferentes.

O primeiro pipeline é o pipeline de processamento de checkout usual projetado e implementado pelo proprietário do aplicativo de comércio eletrônico. Esse pipeline tem a fila do Amazon SQS `CheckoutQueue` que armazena em buffer todos os pedidos recebidos, uma AWS Lambda função chamada `CheckoutFunction` que pesquisa a fila para processar esses pedidos e a tabela do DynamoDB que salva com segurança todos os pedidos feitos. `CheckoutTable`

## Aplicação de AWS tubulações Event Fork
<a name="applying-sns-fork-pipelines"></a>

Os componentes do aplicativo de comércio eletrônico processam a lógica de negócios central. No entanto, o proprietário do aplicativo de comércio eletrônico também precisa abordar o seguinte:
+ **Conformidade**: backups seguros e compactados, criptografados em repouso e limpeza de informações confidenciais
+ **Resiliência**: repetição dos pedidos mais recentes em caso de interrupção do processo de atendimento
+ **Capacidade de pesquisa**: execução de análise e geração de métricas nos pedidos realizados

Em vez de implementar essa lógica de processamento de eventos, o proprietário do aplicativo pode inscrever o AWS Event Fork Pipelines no tópico do Amazon `CheckoutEventsTopic` SNS
+ O [O pipeline de armazenamento e backup de eventos](sns-fork-pipeline-as-subscriber.md#sns-fork-event-storage-and-backup-pipeline) é configurado com o intuito de transformar dados para remover detalhes de cartões de crédito, armazenar os dados em buffer durante 60 segundos, compactá-los usando GZIP e criptografá-los usando a chave mestra de cliente (CMK) padrão do Amazon S3. Essa chave é gerenciada AWS e alimentada pelo AWS Key Management Service (AWS KMS).

  Para obter mais informações, consulte [Escolher o Amazon S3 para seu destino](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html#create-destination-s3), [Transformação de dados do Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/data-transformation.html) e [Ajustar configurações](https://docs.aws.amazon.com/firehose/latest/dev/create-configure.html) no *Guia do desenvolvedor do Amazon Data Firehose*.
+ O [O pipeline de pesquisa e análise de eventos](sns-fork-pipeline-as-subscriber.md#sns-fork-event-search-and-analytics-pipeline) é configurado com uma duração de nova tentativa do índice de 30 segundos, um bucket para armazenar os pedidos que não são indexados no domínio de pesquisa e uma política de filtro para restringir o conjunto de pedidos indexados.

  Para obter mais informações, consulte [Escolha o OpenSearch serviço para seu destino](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html#create-destination-elasticsearch) no Guia do *desenvolvedor do Amazon Data Firehose*.
+ O [O pipeline de reprodução de eventos](sns-fork-pipeline-as-subscriber.md#sns-fork-event-replay-pipeline) é configurado com a parte da fila do Amazon SQS do pipeline de processamento de pedidos usual projetado e implementado pela proprietária da aplicação de comércio eletrônico.

  Para obter mais informações, consulte [Queue Name and URL](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-general-identifiers.html#queue-name-url) (“Nome e URL da fila”) no *Guia do desenvolvedor do Amazon Simple Queue Service*.

A seguinte política de filtro JSON é definida na configuração do pipeline de pesquisa e análise de eventos. Ela corresponde apenas aos pedidos de entrada em que a quantidade total for de 100 USD ou superior. Para obter mais informações, consulte [Filtragem de mensagens do Amazon SNS](sns-message-filtering.md).

```
{				
   "amount": [{ "numeric": [ ">=", 100 ] }]
}
```

Usando o padrão AWS Event Fork Pipelines, o proprietário do aplicativo de comércio eletrônico pode evitar a sobrecarga de desenvolvimento que geralmente segue a lógica indiferenciadora de codificação para tratamento de eventos. Em vez disso, ela pode implantar o AWS Event Fork Pipelines diretamente de AWS Serverless Application Repository dentro dela. Conta da AWS

# Etapa 1: implantar a aplicação de amostra do Amazon SNS
<a name="deploy-sample-application"></a>

1. Faça login no [console do AWS Lambda](https://console.aws.amazon.com/lambda/).

1. No painel de navegação, escolha **Functions (Funções)** e selecione **Create function (Criar função)**.

1. Na página **Create function (Criar função)**, faça o seguinte:

   1. Escolha **Browse serverless app repository** (Procurar no repositório de aplicações sem servidor), **Public applications** (Aplicações públicas), **Show apps that create custom IAM roles or resource policies** (Mostrar aplicações que criam funções do IAM ou políticas de recursos).

   1. Procure `fork-example-ecommerce-checkout-api` e escolha o aplicativo.

1. Na página **fork-example-ecommerce-checkout-api**, faça o seguinte:

   1. Na seção **Application settings (Configurações do aplicativo)**, insira um **Application name (Nome de aplicativo)** (por exemplo, `fork-example-ecommerce-my-app`).
**nota**  
Para encontrar facilmente seus recursos posteriormente, mantenha o prefixo `fork-example-ecommerce`.
Para cada implantação, o nome do aplicativo deve ser exclusivo. Se você reutilizar o nome de um aplicativo, a implantação atualizará somente a CloudFormation pilha implantada anteriormente (em vez de criar uma nova).

   1. (Opcional) Insira uma das seguintes **LogLevel**configurações para a execução da função Lambda do seu aplicativo:
      + `DEBUG`
      + `ERROR`
      + `INFO` (padrão)
      + `WARNING`

1. Escolha **I acknowledge that this app creates custom IAM roles, resource policies and deploys nested applications. (Eu reconheço que este aplicativo cria funções personalizadas do IAM, políticas de recursos e implanta aplicativos aninhados.)** e, na parte inferior da página, selecione **Deploy (Implantar)**.

Na *my-app* página **Status de implantação para fork-example-ecommerce -**, o Lambda exibe o status **Seu aplicativo está sendo implantado**.

Na seção **Recursos**, CloudFormation começa a criar a pilha e exibe o status **CREATE\$1IN\$1PROGRESS** de cada recurso. Quando o processo estiver concluído, CloudFormation exibirá o status **CREATE\$1COMPLETE**.

**nota**  
Pode levar entre 20–30 minutos para que todos os recursos sejam implantados.

Quando a implantação for concluída, o Lambda exibirá o status **Your application has been deployed** (Sua aplicação foi implantada).

# Etapa 2: executar a aplicação de amostra vinculado ao SNS
<a name="execute-sample-application"></a>

1. No AWS Lambda console, no painel de navegação, escolha **Aplicativos**.

1. Na página **Aplicativos**, no campo de pesquisa, busque `serverlessrepo-fork-example-ecommerce-my-app` e escolha o aplicativo.

1. Na seção **Recursos**, faça o seguinte:

   1. Para encontrar o recurso cujo tipo é **ApiGatewayRestApi**, classifique os recursos por **Tipo**, por exemplo`ServerlessRestApi`, e expanda o recurso.

   1. Dois recursos aninhados são exibidos, dos tipos **ApiGatewayDeployment** e **ApiGatewayStage**.

   1. Copie o link **Endpoint da API de produção** e anexe `/checkout` a ele, por exemplo: 

      ```
      https://abcdefghij.execute-api.us-east-2.amazonaws.com/Prod/checkout
      ```

1. Copie o JSON a seguir em um arquivo denominado `test_event.json`.

   ```
   {
      "id": 15311,
      "date": "2019-03-25T23:41:11-08:00",
      "status": "confirmed",
      "customer": {
         "id": 65144,		
   	 "quantity": 2,
         "price": 25.00,
         "subtotal": 50.00
      }]
   }
   ```

1. Para enviar uma solicitação HTTPS ao endpoint da API, envie a carga do evento de exemplo como entrada, executando um comando `curl`, por exemplo:

   ```
   curl -d "$(cat test_event.json)" https://abcdefghij.execute-api.us-east-2.amazonaws.com/Prod/checkout
   ```

   A API retorna a seguinte resposta vazia, indicando uma execução bem-sucedida:

   ```
   { }
   ```

# Etapa 3: verificar o desempenho do aplicativo e do pipeline do Amazon SNS
<a name="verify-sample-application-pipelines"></a>

## Etapa 1: verificar a execução do pipeline de checkout de exemplo
<a name="verify-execution-checkout-pipeline"></a>

1. Faça login no [console do Amazon DynamoDB](https://console.aws.amazon.com/dynamodb/).

1. No painel de navegação, escolha **Tables (Tabelas)**.

1. Busque `serverlessrepo-fork-example` e escolha `CheckoutTable`.

1. Na página de detalhes da tabela, escolha **Items (Itens)** e selecione o item criado.

   Os atributos armazenados são exibidos.

## Etapa 2: verificar a execução do pipeline de armazenamento e backup de eventos
<a name="verify-execution-event-storage-backup-pipeline"></a>

1. Faça login no [console do Amazon S3](https://console.aws.amazon.com/s3/).

1. No painel de navegação, selecione **Buckets**.

1. Busque `serverlessrepo-fork-example` e escolha `CheckoutBucket`.

1. Navegue pela hierarquia de diretórios até encontrar um arquivo com a extensão `.gz`.

1. Para fazer download do arquivo, escolha **Ações**, **Abrir**.

1. O pipeline está configurado com uma função do Lambda que limpa as informações de cartão de crédito por motivos de conformidade.

   Para verificar se a carga JSON armazenada não contém informações de cartão de crédito, descompacte o arquivo.

## Etapa 3: verificar a execução do pipeline de pesquisa e análise de eventos
<a name="verify-execution-event-search-analytics-pipeline"></a>

1. Faça login no [console OpenSearch de serviço](https://console.aws.amazon.com/aos/).

1. No painel de navegação, em **Meus domínios**, escolha o domínio prefixado com `serverl-analyt`.

1. O pipeline está configurado com uma política de filtro de assinatura do Amazon SNS que define uma condição de correspondência numérica.

   ****Para verificar se o evento está indexado porque se refere a um pedido cujo valor é maior que USD \$1100, na *abcdefgh1ijk* página **servidor-analista, escolha Índices, checkout\$1events**.****

## Etapa 4: verificar a execução do pipeline de repetição de eventos
<a name="verify-execution-event-replay-pipeline"></a>

1. Faça login no [console do Amazon SQS](https://console.aws.amazon.com/sqs/).

1. Na lista de filas, busque `serverlessrepo-fork-example` e escolha `ReplayQueue`.

1. Escolha **Enviar e receber mensagens**.

1. Na caixa de *123ABCD4E5F6* diálogo **Enviar e receber mensagens em fork-example-ecommerce -*my-app*... ReplayP- ReplayQueue -**, escolha **Sondagem** de mensagens. 

1. Para verificar se o evento está enfileirado, escolha **Mais detalhes** ao lado da mensagem que aparece na fila.

# Etapa 4: simular um problema e repetir eventos para recuperação
<a name="simulate-issue-replay-events-for-recovery"></a>

## Etapa 1: habilitar o problema simulado e enviar uma segunda solicitação da API
<a name="enable-simulated-issue-send-second-api-request"></a>

1. Faça login no [console do AWS Lambda](https://console.aws.amazon.com/lambda/).

1. No painel de navegação, escolha **Functions (Funções)**.

1. Busque `serverlessrepo-fork-example` e escolha `CheckoutFunction`.

1. No **fork-example-ecommerce- *my-app* - CheckoutFunction -*ABCDEF*...** **página, na seção **Variáveis de ambiente**, defina a variável **BUG\$1ENABLED como** **verdadeira e escolha** Salvar.**

1. Copie o JSON a seguir em um arquivo denominado `test_event_2.json`.

   ```
   {
   	   "id": 9917,
   	   "date": "2019-03-26T21:11:10-08:00",
   	   "status": "confirmed",
   	   "customer": {
   	      "id": 56999,
   "quantity": 1,
   	      "price": 75.00,
   	      "subtotal": 75.00
   	   }]
   	}
   ```

1. Para enviar uma solicitação HTTPS ao endpoint da API, envie a carga do evento de exemplo como entrada, executando um comando `curl`, por exemplo:

   ```
   curl -d "$(cat test_event_2.json)" https://abcdefghij.execute-api.us-east-2.amazonaws.com/Prod/checkout
   ```

   A API retorna a seguinte resposta vazia, indicando uma execução bem-sucedida:

   ```
   { }
   ```

## Etapa 2: verificar a corrupção de dados simulados
<a name="verify-simulated-data-corruption"></a>

1. Faça login no [console do Amazon DynamoDB](https://console.aws.amazon.com/dynamodb/).

1. No painel de navegação, escolha **Tables (Tabelas)**.

1. Busque `serverlessrepo-fork-example` e escolha `CheckoutTable`.

1. Na página de detalhes da tabela, escolha **Items (Itens)** e selecione o item criado.

   Os atributos armazenados são exibidos, alguns marcados como **CORROMPIDOS\$1**

## Etapa 3: desabilitar o problema simulado
<a name="disable-simulated-issue"></a>

1. Faça login no [console do AWS Lambda](https://console.aws.amazon.com/lambda/).

1. No painel de navegação, escolha **Functions (Funções)**.

1. Busque `serverlessrepo-fork-example` e escolha `CheckoutFunction`.

1. No **fork-example-ecommerce- *my-app* - CheckoutFunction -*ABCDEF*...** **página, na seção **Variáveis de ambiente**, defina a variável **BUG\$1ENABLED** **como falsa e escolha** Salvar.**

## Etapa 4: habilitar a repetição a fim de recuperar do problema
<a name="enable-replay-recover-from-simulated-issue"></a>

1. No AWS Lambda console, no painel de navegação, escolha **Funções**.

1. Busque `serverlessrepo-fork-example` e escolha `ReplayFunction`.

1. Expanda a seção **Designer**, escolha o bloco **SQS** e, na seção **SQS**, selecione **Habilitado**.
**nota**  
Leva aproximadamente 1 minuto para que o acionador da origem de eventos do Amazon SQS seja habilitado.

1. Escolha **Salvar**.

1. Para visualizar os atributos recuperados, volte ao console do Amazon DynamoDB.

1. Para desativar a repetição, retorne ao AWS Lambda console e desative o gatilho de origem de eventos do Amazon SQS para. `ReplayFunction`