

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

# Analytics
<a name="analytics-pattern-list"></a>

**Topics**
+ [Analisar dados do Amazon Redshift no Microsoft SQL Server Analysis Services](analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services.md)
+ [Analise e visualize dados JSON aninhados com o Amazon Athena e o Amazon Quick Sight](analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight.md)
+ [Automatize a ingestão de dados do Amazon AWS Data Exchange S3](automate-data-ingestion-from-aws-data-exchange-into-amazon-s3.md)
+ [Automatize a aplicação da criptografia no AWS Glue usando um modelo da AWS CloudFormation](automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template.md)
+ [Crie um pipeline de dados para ingerir, transformar e analisar dados do Google Analytics usando o AWS DataOps Development Kit](build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit.md)
+ [Crie um pipeline de processamento de vídeo usando o Amazon Kinesis Video Streams e o AWS Fargate](build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate.md)
+ [Criar um pipeline de serviços de ETL para carregar dados incrementalmente do Amazon S3 ao Amazon Redshift usando o AWS Glue](build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue.md)
+ [Crie uma malha de dados corporativa com a Amazon DataZone, AWS CDK, e AWS CloudFormation](build-enterprise-data-mesh-amazon-data-zone.md)
+ [Calcule o value at risk (VaR – valor em risco) usando os serviços da AWS](calculate-value-at-risk-var-by-using-aws-services.md)
+ [Configurar o acesso entre contas para um Catálogo de Dados do AWS Glue compartilhado usando o Amazon Athena](configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena.md)
+ [Converta o atributo temporal Teradata NORMALIZE em Amazon Redshift SQL](convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql.md)
+ [Converter o atributo Teradata RESET WHEN para Amazon Redshift SQL](convert-the-teradata-reset-when-feature-to-amazon-redshift-sql.md)
+ [Implante e gerencie um data lake de tecnologia sem servidor na Nuvem AWS usando a infraestrutura como código](deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code.md)
+ [Imponha a marcação dos clusters do Amazon EMR no lançamento](enforce-tagging-of-amazon-emr-clusters-at-launch.md)
+ [Garanta que o registro do Amazon EMR no Amazon S3 esteja habilitado no lançamento](ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch.md)
+ [Gerar dados de teste usando um trabalho do AWS Glue e Python](generate-test-data-using-an-aws-glue-job-and-python.md)
+ [Ingerir dados de IoT de forma econômica diretamente no Amazon S3 usando o AWS IoT Greengrass](cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.md)
+ [Executar uma tarefa do Spark em um cluster EMR transitório usando uma função do Lambda](launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function.md)
+ [Migração de workloads do Apache Cassandra para o Amazon Keyspaces usando o AWS Glue](migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.md)
+ [Migrar o Oracle Business Intelligence 12c para a Nuvem AWS a partir de servidores on-premises](migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.md)
+ [Migre um pilha ELK para a Nuvem Elastic na AWS](migrate-an-elk-stack-to-elastic-cloud-on-aws.md)
+ [Migre dados para o Nuvem AWS usando o Starburst](migrate-data-to-the-aws-cloud-by-using-starburst.md)
+ [Otimize a ingestão de ETL do tamanho do arquivo de entrada na AWS](optimize-the-etl-ingestion-of-input-file-size-on-aws.md)
+ [Organize um pipeline de ETL com validação, transformação e particionamento usando AWS Step Functions](orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.md)
+ [Execute análises avançadas usando o Amazon Redshift ML](perform-advanced-analytics-using-amazon-redshift-ml.md)
+ [Consulte tabelas do Amazon DynamoDB com SQL usando o Amazon Athena](query-amazon-dynamodb-tables-sql-amazon-athena.md)
+ [Acesse, consulte e una tabelas do Amazon DynamoDB usando o Athena](access-query-and-join-amazon-dynamodb-tables-using-athena.md)
+ [Configure a classificação específica do idioma para os resultados da consulta do Amazon Redshift usando uma UDF escalar do Python](set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf.md)
+ [Assine uma função do Lambda para notificações de eventos de buckets do S3 em diferentes regiões da AWS](subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions.md)
+ [Três tipos de trabalho de ETL do AWS Glue para converter dados em Apache Parquet](three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet.md)
+ [Visualize os registros de auditoria do Amazon Redshift usando o Amazon Athena e o Amazon QuickSight](visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight.md)
+ [Visualize relatórios de credenciais do IAM para todas as contas da AWS usando o Amazon Quick Sight](visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight.md)
+ [Mais padrões](analytics-more-patterns-pattern-list.md)

# Analisar dados do Amazon Redshift no Microsoft SQL Server Analysis Services
<a name="analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services"></a>

*Sunil Vora, Amazon Web Services*

## Resumo
<a name="analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services-summary"></a>

Esse padrão descreve como conectar e analisar dados do Amazon Redshift no Microsoft SQL Server Analysis Services, usando o Intellisoft OLE DB Provider ou o CData ADO.NET Provider para acesso ao banco de dados.

O Amazon Redshift é um serviço de data warehouse totalmente gerenciado e em escala de petabytes na Nuvem . O SQL Server Analysis Services é uma ferramenta de processamento analítico on-line (OLAP) que você pode usar para analisar dados de data marts e data warehouses, como o Amazon Redshift. Você pode usar o SQL Server Analysis Services para criar cubos OLAP a partir de seus dados para uma análise de dados rápida e avançada.  

## Pré-requisitos e limitações
<a name="analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services-prereqs"></a>

**Suposições**
+ Esse padrão descreve como configurar o SQL Server Analysis Services e o Intellisoft OLE DB Provider ou CData ADO.NET Provider para o Amazon Redshift em uma instância do Amazon Elastic Compute Cloud (Amazon). EC2 Como alternativa, você pode instalar ambos em um host em seu datacenter corporativo.

**Pré-requisitos **
+ Uma conta AWS ativa
+ Um cluster do Amazon Redshift com credenciais

## Arquitetura
<a name="analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services-architecture"></a>

**Pilha de tecnologia de origem**
+ Um cluster do Amazon Redshift

**Pilha de tecnologias de destino**
+ Microsoft SQL Server Analysis Services

**Arquitetura de origem e destino**

![\[Analisar dados do Amazon Redshift no Microsoft SQL Server Analysis Services\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/e444fec0-e00f-4cc6-acc6-4ffc61b654a0/images/6f29dab5-1ea7-452f-9b07-d1d23ae469a2.png)


## Ferramentas
<a name="analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services-tools"></a>
+ [Microsoft Visual Studio 2019 (Community Edition)](https://visualstudio.microsoft.com/vs/)
+ [Intellisoft OLE DB Provider para Amazon Redshift (teste](https://www.pgoledb.com/index.php?option=com_filecabinet&view=files&id=1&Itemid=68)) [ CData ou ADO.NET Provider para Amazon Redshift](https://www.cdata.com/kb/tech/redshift-ado-ssas.rst) (teste)

## Épicos
<a name="analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services-epics"></a>

### Analisar tabelas
<a name="analyze-tables"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Analise as tabelas e os dados a serem importados. | Identifique as tabelas do Amazon Redshift a serem importadas e seus tamanhos. | DBA | 

### Configurar a EC2 instância e instalar ferramentas
<a name="set-up-ec2-instance-and-install-tools"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure uma EC2 instância. | Na sua conta da AWS, crie uma EC2 instância em uma sub-rede pública ou privada. | Administrador de sistemas | 
| Instale ferramentas para acesso ao banco de dados. | Baixe e instale o [Intellisoft OLE DB Provider para Amazon Redshift](https://www.pgoledb.com/index.php?option=com_filecabinet&view=files&id=1&Itemid=68) ([CData ou ADO.NET Provider para Amazon](https://www.cdata.com/kb/tech/redshift-ado-ssas.rst) Redshift).  | Administrador de sistemas | 
| Instale o Visual Studio. | Baixe e instale o [Visual Studio 2019 (Community Edition)](https://visualstudio.microsoft.com/vs/).  | Administrador de sistemas | 
| Iniciar as extensões. | Instale a extensão **Microsoft Analysis Services Projects** no Visual Studio. | Administrador de sistemas | 
| Crie um projeto. | Crie um novo projeto de modelo tabular no Visual Studio para armazenar seus dados do Amazon Redshift. No Visual Studio, escolha a opção **Projeto tabular do Analysis Services** ao criar seu projeto. | DBA | 

### Criar fonte de dados e importar tabelas
<a name="create-data-source-and-import-tables"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie uma fonte de dados do Amazon Redshift. | Crie uma fonte de dados do Amazon Redshift usando o Intellisoft OLE DB Provider para Amazon Redshift (ou ADO.NET CData Provider para Amazon Redshift) e suas credenciais do Amazon Redshift. | Amazon Redshift, DBA | 
| Importar tabelas. | Selecione e importe tabelas e visualizações do Amazon Redshift para seu projeto do SQL Server Analysis Services. | Amazon Redshift, DBA | 

### Limpar após a migração
<a name="clean-up-after-migration"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Exclua a EC2 instância. | Exclua a EC2 instância que você executou anteriormente. | Administrador de sistemas | 

## Recursos relacionados
<a name="analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services-resources"></a>
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/) (documentação do AWS)
+ [Instalar o SQL Server Analysis Services](https://docs.microsoft.com/en-us/analysis-services/instances/install-windows/install-analysis-services?view=asallproducts-allversions) (documentação da Microsoft)
+ [Designer de modelo tabular](https://docs.microsoft.com/en-us/analysis-services/tabular-models/tabular-model-designer-ssas?view=asallproducts-allversions) (documentação da Microsoft)
+ [Visão geral dos cubos OLAP para análises avançadas](https://docs.microsoft.com/en-us/system-center/scsm/olap-cubes-overview?view=sc-sm-2019) (documentação da Microsoft)
+ [Microsoft Visual Studio 2019 (Community Edition)](https://visualstudio.microsoft.com/vs/)
+ [Intellisoft OLE DB Provider para Amazon Redshift (teste)](https://www.pgoledb.com/index.php?option=com_filecabinet&view=files&id=1&Itemid=68) 
+ [CData Provedor ADO.NET para Amazon Redshift (teste)](https://www.cdata.com/kb/tech/redshift-ado-ssas.rst)

# Analise e visualize dados JSON aninhados com o Amazon Athena e o Amazon Quick Sight
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight"></a>

*Anoop Singh, Amazon Web Services*

## Resumo
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-summary"></a>

Esse padrão explica como traduzir uma estrutura de dados aninhada e formatada em JSON em uma visualização tabular usando o Amazon Athena e, em seguida, visualizar os dados no Amazon Quick Sight.

É possível usar dados em formato JSON de feeds de dados com tecnologia de API usando sistemas operacionais para criar produtos de dados. Esses dados também podem ajudar você a compreender melhor seus clientes e as interações deles com seus produtos, permitindo personalizar a experiência do usuário e prever resultados.

## Pré-requisitos e limitações
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS
+ Um arquivo JSON que representa uma estrutura de dados aninhada (este padrão fornece um arquivo de amostra)

**Limitações:**
+ Os recursos do JSON funcionam de forma integrada com as funções orientadas por SQL já existentes no Athena. No entanto, não há compatibilidade com SQL padrão ANSI, e espera-se que o arquivo JSON contenha cada registro em uma linha separada. Pode ser necessário configurar a propriedade `ignore.malformed.json` no Athena para indicar se registros JSON em formatos incorretos devem ser convertidos em valores nulos ou gerar erros. Para obter mais informações, consulte [Práticas recomendadas de leitura de dados JSON](https://docs.aws.amazon.com/athena/latest/ug/parsing-JSON.html) na documentação do Athena.
+ Este padrão considera somente volumes reduzidos e simples de dados formatados em JSON. Se você deseja aplicar esses conceitos em grande escala, considere usar o particionamento de dados e consolidar os dados em arquivos maiores.

## Arquitetura
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-architecture"></a>

O diagrama apresentado a seguir ilustra a arquitetura e o fluxo de trabalho para este padrão. As estruturas de dados aninhadas são armazenadas no Amazon Simple Storage Service (Amazon S3) no formato JSON. No Athena, os dados em JSON são mapeados para uma estrutura de dados compatível com o Athena. Em seguida, você cria uma visualização para analisar os dados e visualizar a estrutura de dados no Quick Sight.

![\[Análise e visualização de dados JSON aninhados na AWS.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/e9ad39a1-e0a4-4429-bdc0-594b68707761/images/474e8747-626f-468c-9c27-c007af79bf2d.png)


## Ferramentas
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-tools"></a>

**Serviços da AWS**
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados. Este padrão usa o Amazon S3 para armazenar o arquivo JSON.
+ O [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) é um serviço de consultas interativas que facilita a análise de dados diretamente no Amazon S3 usando SQL padrão. Esse padrão usa o Athena para realizar consultas e transformar os dados em JSON. Com algumas ações no Console de gerenciamento da AWS, você pode direcionar o Athena para seus dados no Amazon S3 e usar o SQL padrão para executar consultas únicas. O Athena é um serviço com tecnologia sem servidor, portanto não há infraestrutura para configurar ou gerenciar, e você paga somente pelas consultas que executar. O Athena escala automaticamente e executa consultas em paralelo, garantindo resultados rápidos mesmo com grandes volumes de dados e consultas complexas.     
+ [O Amazon Quick Sight](https://docs.aws.amazon.com/quicksuite/latest/userguide/quick-bi.html) é um serviço de inteligência de negócios (BI) em escala de nuvem que ajuda você a visualizar, analisar e relatar seus dados em um único painel. O Quick Sight permite criar e publicar facilmente painéis interativos que incluem insights de aprendizado de máquina (ML). Você pode acessar esses painéis de qualquer dispositivo e incorporá-los em suas aplicações, portais e sites.

**Código de exemplo**

O arquivo JSON apresentado a seguir fornece uma estrutura de dados aninhada que você pode usar neste padrão.

```
{
  "symbol": "AAPL",
  "financials": [
    {
      "reportDate": "2017-03-31",
      "grossProfit": 20591000000,
      "costOfRevenue": 32305000000,
      "operatingRevenue": 52896000000,
      "totalRevenue": 52896000000,
      "operatingIncome": 14097000000,
      "netIncome": 11029000000,
      "researchAndDevelopment": 2776000000,
      "operatingExpense": 6494000000,
      "currentAssets": 101990000000,
      "totalAssets": 334532000000,
      "totalLiabilities": 200450000000,
      "currentCash": 15157000000,
      "currentDebt": 13991000000,
      "totalCash": 67101000000,
      "totalDebt": 98522000000,
      "shareholderEquity": 134082000000,
      "cashChange": -1214000000,
      "cashFlow": 12523000000,
      "operatingGainsLosses": null
    }
  ]
}
```

## Épicos
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-epics"></a>

### Configuração de um bucket do S3
<a name="set-up-an-s3-bucket"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar um bucket do S3. | Para criar um bucket para armazenar o arquivo JSON, faça login no Console de gerenciamento da AWS, abra o console do [Amazon S3](https://console.aws.amazon.com/s3/) e **escolha** Create bucket. Para obter mais informações, consulte [Criar um bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) na documentação do Amazon S3.  | Administrador de sistemas | 
| Adicione os dados em JSON aninhados. | Faça upload do arquivo JSON no bucket do S3. Para obter um arquivo JSON de amostra, consulte a seção anterior. Para obter instruções, consulte [Fazer uploads de objetos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) na documentação do Amazon S3. | Administrador de sistemas | 

### Análise de dados no Athena
<a name="analyze-data-in-ate"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie uma tabela destinada ao mapeamento dos dados em JSON. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight.html)Para obter mais informações sobre como criar tabelas, consulte a [documentação do Athena](https://docs.aws.amazon.com/athena/latest/ug/creating-tables.html). | Desenvolvedor | 
| Crie uma visualização destinada à análise de dados. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight.html)Para obter mais informações sobre como criar visualizações, consulte a [documentação do Athena](https://docs.aws.amazon.com/athena/latest/ug/create-view.html). | Desenvolvedor | 
| Realize a análise e a validação dos dados. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight.html) | Desenvolvedor | 

### Visualize dados no Quick Sight
<a name="visualize-data-in-qsight"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure o Athena como fonte de dados no Quick Sight. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight.html) | Administrador de sistemas | 
| Visualize dados no Quick Sight. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight.html) | Analista de dados | 

## Recursos relacionados
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-resources"></a>
+ [Documentação do Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/getting-started.html)
+ [Tutoriais do Amazon Quick Sight](https://docs.aws.amazon.com/quicksuite/latest/userguide/example-analysis.html)
+ [Working with nested JSON](https://aws.amazon.com/blogs/big-data/create-tables-in-amazon-athena-from-nested-json-and-mappings-using-jsonserde/) (publicação do blog)

# Automatize a ingestão de dados do Amazon AWS Data Exchange S3
<a name="automate-data-ingestion-from-aws-data-exchange-into-amazon-s3"></a>

*Adnan Alvee e Manikanta Gona, Amazon Web Services*

## Resumo
<a name="automate-data-ingestion-from-aws-data-exchange-into-amazon-s3-summary"></a>

Esse padrão fornece um CloudFormation modelo que permite que você consuma automaticamente dados do AWS Data Exchange seu data lake no Amazon Simple Storage Service (Amazon S3). 

AWS Data Exchange é um serviço que facilita a troca segura de conjuntos de dados baseados em arquivos na nuvem da AWS. AWS Data Exchange os conjuntos de dados são baseados em assinatura. Como assinante, você também pode acessar as revisões do conjunto de dados à medida que os provedores publicam novos dados. 

O CloudFormation modelo cria um evento no Amazon CloudWatch Events e uma AWS Lambda função. O evento observa todas as atualizações do conjunto de dados no qual você se inscreveu. Se houver uma atualização, CloudWatch inicia uma função Lambda, que copia os dados para o bucket do S3 que você especificar. Quando os dados forem copiados com sucesso, o Lambda enviará uma notificação enviada pelo Amazon Simple Notification Service (Amazon SNS).

## Pré-requisitos e limitações
<a name="automate-data-ingestion-from-aws-data-exchange-into-amazon-s3-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS
+ Assinatura de um conjunto de dados em AWS Data Exchange

**Limitações**
+ O CloudFormation modelo deve ser implantado separadamente para cada conjunto de dados inscrito em. AWS Data Exchange

## Arquitetura
<a name="automate-data-ingestion-from-aws-data-exchange-into-amazon-s3-architecture"></a>

**Pilha de tecnologias de destino**
+ AWS Lambda
+ Amazon S3
+ AWS Data Exchange
+ Amazon CloudWatch
+ Amazon SNS

**Arquitetura de destino**

![\[CloudWatch inicia uma função Lambda para copiar dados para o bucket do S3 e enviar uma notificação ao Amazon SNS.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/059816dc-5a71-4942-9c7f-ac977072eebc/images/ec021620-47c1-4fb5-95a9-3b8985accc56.png)


**Automação e escala**

Você pode usar o CloudFormation modelo várias vezes para os conjuntos de dados que deseja ingerir no data lake.

## Ferramentas
<a name="automate-data-ingestion-from-aws-data-exchange-into-amazon-s3-tools"></a>
+ [AWS Data Exchange](https://docs.aws.amazon.com/data-exchange/latest/userguide/what-is.html)facilita que os AWS clientes troquem com segurança conjuntos de dados baseados em arquivos no. Nuvem AWS Como assinante, você pode encontrar e assinar centenas de produtos de provedores de dados qualificados. Em seguida, você pode baixar rapidamente o conjunto de dados ou copiá-lo para o Amazon S3 para uso em uma variedade de serviços de AWS análise e aprendizado de máquina. Qualquer pessoa com um Conta da AWS pode ser AWS Data Exchange assinante.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) permite que você execute código sem provisionar ou gerenciar servidores. O Lambda executa o código somente quando necessário e dimensiona automaticamente, desde algumas solicitações por dia até milhares por segundo. Você paga somente pelo tempo de computação utilizado; não há cobrança quando seu código não está em execução. Com o Lambda, é possível executar código para praticamente qualquer tipo de aplicação ou serviço de backend sem precisar de administração. O Lambda executa seu código em uma infraestrutura de computação de alta disponibilidade e gerencia todos os recursos computacionais, incluindo a manutenção de servidores e de sistemas operacionais, o provisionamento de capacidade e o ajuste de escala automático, o monitoramento do código e o registro em log.
+ O [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html) fornece capacidade de armazenamento para a internet. Você pode utilizar o Amazon S3 para armazenar e recuperar qualquer volume de dados, a qualquer momento, de qualquer lugar na web.
+ [A Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html) fornece um fluxo quase em tempo real de eventos do sistema que descrevem mudanças nos AWS recursos. Usando regras simples que você pode configurar rapidamente, você pode combinar eventos e roteá-los para uma ou mais funções ou fluxos de destino. CloudWatch Os eventos ficam cientes das mudanças operacionais à medida que elas ocorrem. Ele responde a essas alterações operacionais e executa a ação corretiva conforme necessário, enviando mensagens para responder ao ambiente, ativando funções, fazendo alterações e capturando informações de estado. **Você também pode usar CloudWatch Eventos para programar ações automatizadas que se iniciam automaticamente em determinados momentos usando expressões **cron** ou rate.**
+ O [Amazon Simple Notiﬁcation Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) habilita aplicações, usuários finais e dispositivos a enviar e receber notificações de forma imediata a partir da nuvem. O Amazon SNS fornece tópicos (canais de comunicação) para mensagens de alta taxa de transferência, baseadas em push. many-to-many Usando tópicos do Amazon SNS, os editores podem distribuir mensagens para um grande número de assinantes para processamento paralelo, incluindo filas do Amazon Simple Queue Service (Amazon SQS), funções Lambda e webhooks. HTTP/S Também é possível usar o Amazon SNS para enviar notificações para usuários finais usando push móvel, SMS e e-mail.

## Épicos
<a name="automate-data-ingestion-from-aws-data-exchange-into-amazon-s3-epics"></a>

### Inscrever-se em um conjunto de dados
<a name="subscribe-to-a-data-set"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Assine um conjunto de dados | No AWS Data Exchange console, assine um conjunto de dados. Para obter instruções, consulte [Assinatura de produtos de dados AWS Data Exchange na](https://docs.aws.amazon.com/data-exchange/latest/userguide/subscribe-to-data-sets.html) AWS documentação. | AWS geral | 
| Observe os atributos do conjunto de dados. | Anote Região da AWS o ID e o ID da revisão do conjunto de dados. Você precisará disso para o CloudFormation modelo na próxima etapa. | AWS geral | 

### Implante o CloudFormation modelo
<a name="deploy-the-cfn-template"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um bucket e uma pasta no S3. | Se você já tiver um data lake no Amazon S3, crie uma pasta para armazenar os dados a serem ingeridos. AWS Data Exchange Se você estiver implantando o modelo para fins de teste, crie um novo bucket do S3 e anote o nome do bucket e o prefixo da pasta para a próxima etapa. | AWS geral | 
| Implante o CloudFormation modelo. | Implante o CloudFormation modelo fornecido como anexo a esse padrão. Para obter instruções, consulte a [documentação do CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html).**Configure os seguintes parâmetros para corresponder às suas configurações Conta da AWS, do conjunto de dados e do bucket do S3: **conjunto** de dados Região da AWS, ID do **conjunto de dados, ID** da **revisão**, **nome do bucket do S3** (por exemplo,`DOC-EXAMPLE-BUCKET`), **prefixo da pasta** (por exemplo,`myfolder/`) e e-mail para notificação do SNS.** Você pode definir o parâmetro **Nome do conjunto de dados** com qualquer nome. Quando você implanta o modelo, ele executa uma função do Lambda para ingerir automaticamente o primeiro conjunto de dados disponível no conjunto de dados. A ingestão subsequente ocorre automaticamente, à medida que novos dados chegam ao conjunto de dados. | AWS geral | 

## Recursos relacionados
<a name="automate-data-ingestion-from-aws-data-exchange-into-amazon-s3-resources"></a>
+ [Assinatura de produtos de dados em AWS Data Exchange](https://docs.aws.amazon.com/data-exchange/latest/userguide/subscribe-to-data-sets.html) (AWS Data Exchange documentação)

## Anexos
<a name="attachments-059816dc-5a71-4942-9c7f-ac977072eebc"></a>

Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo: [ attachment.zip](samples/p-attach/059816dc-5a71-4942-9c7f-ac977072eebc/attachments/attachment.zip)

# Automatize a aplicação da criptografia no AWS Glue usando um modelo da AWS CloudFormation
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template"></a>

*Diogo Guedes, Amazon Web Services*

## Resumo
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template-summary"></a>

Esse padrão mostra como configurar e automatizar a aplicação da criptografia no AWS Glue usando um CloudFormation modelo da AWS. O modelo cria todas as configurações e recursos necessários para aplicar a criptografia. Esses recursos incluem uma configuração inicial, um controle preventivo criado por uma EventBridge regra da Amazon e uma função do AWS Lambda.

## Pré-requisitos e limitações
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Permissões para implantar o CloudFormation modelo e seus recursos

**Limitações**

Esse controle de segurança é regional. Você deve implementar o controle de segurança em cada região da AWS em que deseja configurar a aplicação da criptografia no AWS Glue.

## Arquitetura
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template-architecture"></a>

**Pilha de tecnologias de destino**
+ Amazon CloudWatch Logs (do AWS Lambda)
+  EventBridge Regra da Amazon
+ Pilha da AWS CloudFormation 
+ AWS CloudTrail
+ Perfil e política gerenciada do AWS do perfil do Identity and Access Management (IAM)
+ AWS Key Management Service (AWS KMS)
+ AWS KMS: alias
+ Função do AWS Lambda
+ AWS Systems Manager Parameter Store

**Arquitetura de destino**

O diagrama a seguir mostra como automatizar a aplicação da criptografia no AWS Glue.

![\[O diagrama mostra como automatizar a aplicação da criptografia no AWS Glue usando um CloudFormation modelo.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/d50d0659-5592-44d0-8fcb-7a2983712640/images/272a7fb2-ecbc-41f7-a556-d555e4e39a59.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. Um [CloudFormation modelo](https://github.com/aws-samples/aws-custom-guardrail-event-driven/blob/main/CloudFormation/aws-custom-guardrail-event-driven.yaml) cria todos os recursos, incluindo a configuração inicial e o controle de detetive para a aplicação da criptografia no AWS Glue.

1. Uma EventBridge regra detecta uma alteração de estado na configuração de criptografia.

1. Uma função Lambda é invocada para avaliação e registro por meio de registros. CloudWatch Para uma detecção não compatível, o Parameter Store é recuperado com um nome de recurso da nome do recurso da Amazon (ARN) (ARN) para uma chave do AWS KMS. O serviço é corrigido para o status compatível com a criptografia ativada.

**Automação e escala**

Se você estiver usando o [AWS Organizations](https://aws.amazon.com/organizations/), poderá usar CloudFormation StackSets a [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) para implantar esse modelo em várias contas nas quais deseja habilitar a aplicação da criptografia no AWS Glue.

## Ferramentas
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template-tools"></a>
+  CloudWatchA [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) ajuda você a monitorar as métricas dos seus recursos da AWS e dos aplicativos que você executa na AWS em tempo real.
+  EventBridgeA [Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) é um serviço de ônibus de eventos sem servidor que ajuda você a conectar seus aplicativos com dados em tempo real de várias fontes. Por exemplo, funções do Lambda, endpoints de invocação HTTP usando destinos de API ou barramentos de eventos em outras contas da AWS.
+  CloudFormationA [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) ajuda você a configurar recursos da AWS, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em todas as contas e regiões da AWS.
+  CloudTrailA [AWS](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) ajuda você a viabilizar a auditoria operacional e de risco, a governança e a conformidade da sua conta da AWS.
+ O [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) é um serviço de extração, transformação e carregamento (ETL) totalmente gerenciado. Ele ajuda você a categorizar de forma confiável, limpar, enriquecer e mover dados de forma confiável entre armazenamento de dados e fluxos de dados.
+ O [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) ajuda você a criar e controlar chaves criptográficas para proteger seus dados.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda você a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ O [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) ajuda você a gerenciar seus aplicativos e infraestrutura em execução na nuvem AWS. Isso simplifica o gerenciamento de aplicações e recursos, diminui o tempo para detectar e resolver problemas operacionais e ajuda você a gerenciar seus recursos da AWS de modo seguro e em grande escala.

**Código **

O código desse padrão está disponível no repositório GitHub [aws-custom-guardrail-eventcontrolado](https://github.com/aws-samples/aws-custom-guardrail-event-driven/blob/main/CloudFormation/aws-custom-guardrail-event-driven.yaml).

## Práticas recomendadas
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template-best-practices"></a>

O AWS Glue oferece suporte à criptografia de dados em repouso para [trabalhos de criação no AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/author-job-glue.html) e [desenvolvimento de scripts usando endpoints de desenvolvimento](https://docs.aws.amazon.com/glue/latest/dg/dev-endpoint.html).

Considere as seguintes práticas recomendadas:
+ Você pode configurar trabalhos de ETL e endpoints de desenvolvimento para usar chaves do AWS KMS para gravar dados criptografados em repouso.
+ Criptografe os metadados armazenados no [Catálogo de Dados do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/components-overview.html#data-catalog-intro) usando chaves que você gerencia por meio do AWS KMS.
+ Além disso, você pode usar a chave do AWS KMS para criptografar marcadores de trabalho e os logs gerados pelos [crawlers](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html) e trabalhos de ETL.

## Épicos
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template-epics"></a>

### Inicie o CloudFormation modelo
<a name="launch-the-cloudformation-template"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implante o CloudFormation modelo. | Baixe o `aws-custom-guardrail-event-driven.yaml` modelo do GitHub [repositório](https://github.com/aws-samples/aws-custom-guardrail-event-driven/blob/main/CloudFormation/aws-custom-guardrail-event-driven.yaml) e, em seguida, [implante](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/deploy/index.html) o modelo. O `CREATE_COMPLETE` status indica que seu modelo foi implantado com sucesso.Não são necessários parâmetros de entrada para este modelo. | Arquiteto de nuvem | 

### Verifique as configurações de criptografia no AWS Glue
<a name="verify-the-encryption-settings-in-aws-glue"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Verifique as configurações das chaves do AWS KMS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template.html) | Arquiteto de nuvem | 

### Teste a aplicação da criptografia
<a name="test-the-encryption-enforcement"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Identifique a configuração de criptografia em CloudFormation. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template.html) | Arquiteto de nuvem | 
| Mude a infraestrutura provisionada para um estado incompatível. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template.html)A barreira de proteção detecta o estado de inconformidade no AWS Glue depois que você desmarca as caixas de seleção e, em seguida, impõe a conformidade ao corrigir automaticamente a configuração incorreta da criptografia. Como resultado, as caixas de seleção de criptografia devem ser marcadas novamente após a atualização da página. | Arquiteto de nuvem | 

## Recursos relacionados
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template-resources"></a>
+ [Criação de uma pilha no CloudFormation console da AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) ( CloudFormation documentação da AWS)
+ [Criação de uma regra de CloudWatch eventos que é acionada em uma chamada de API da AWS usando a AWS (documentação da CloudTrail](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/Create-CloudWatch-Events-CloudTrail-Rule.html) Amazon CloudWatch )
+ [Configuração da criptografia no AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/set-up-encryption.html) (documentação do AWS Glue)

# Crie um pipeline de dados para ingerir, transformar e analisar dados do Google Analytics usando o AWS DataOps Development Kit
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit"></a>

*Anton Kukushkin e Rudy Puig, Amazon Web Services*

## Resumo
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-summary"></a>

Esse padrão descreve como criar um pipeline de dados para ingerir, transformar e analisar dados do Google Analytics usando o AWS DataOps Development Kit (AWS DDK) e outros. Serviços da AWS O AWS DDK é uma estrutura de desenvolvimento de código aberto que ajuda você a criar fluxos de trabalho de dados e uma arquitetura de dados moderna. AWS Um dos principais objetivos do AWS DDK é economizar o tempo e o esforço normalmente dedicados às tarefas trabalhosas do pipeline de dados, como orquestrar pipelines, criar infraestrutura e criar a base dessa infraestrutura. DevOps Você pode transferir essas tarefas trabalhosas para o AWS DDK para se concentrar em escrever código e outras atividades de alto valor.

## Pré-requisitos e limitações
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS
+ Um AppFlow conector Amazon para o Google Analytics, [configurado](https://docs.aws.amazon.com/appflow/latest/userguide/google-analytics.html)
+ [Python](https://www.python.org/downloads/) e [pip](https://pip.pypa.io/en/stable/cli/pip_download/) (gerenciador de pacotes do Python)
+ Git, instalado e [configurado](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup)
+ AWS Command Line Interface (AWS CLI), [instalado](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [configurado](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)
+ O AWS Cloud Development Kit (AWS CDK), [instalado](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_install)

**Versões do produto**
+ Python 3.7 ou superior
+ pip 9.0.3 ou superior

## Arquitetura
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-architecture"></a>

**Pilha de tecnologia**
+ Amazon AppFlow
+ Amazon Athena
+ Amazon CloudWatch
+ Amazon EventBridge
+ Amazon Simple Storage Service (Amazon S3)
+ Amazon Simple Queue Service (Amazon SQS)
+ AWS DataOps Kit de desenvolvimento (AWS DDK)
+ AWS Lambda

**Arquitetura de destino**

O diagrama a seguir mostra o processo orientado por eventos que ingere, transforma e analisa os dados do Google Analytics.

![\[Ingestão, transformação e análise de dados do Google Analytics com os serviços da AWS.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/edf40222-2867-4d4a-9153-ab29785b6662/images/8c38b472-153b-4497-982c-8efb97d2f7a5.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. Uma regra de evento CloudWatch agendado da Amazon invoca a Amazon. AppFlow

1. A Amazon AppFlow ingere dados do Google Analytics em um bucket do S3.

1. Depois que os dados são ingeridos pelo bucket do S3, as notificações de eventos EventBridge são geradas, capturadas por uma regra de CloudWatch eventos e, em seguida, colocadas em uma fila do Amazon SQS.

1. Uma função Lambda consome eventos da fila do Amazon SQS, lê os respectivos objetos do S3, transforma os objetos no formato Apache Parquet, grava os objetos transformados no bucket do S3 e, em seguida, cria ou atualiza a definição da tabela. AWS Glue Data Catalog 

1. Uma consulta do Athena é executada na tabela.

## Ferramentas
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-tools"></a>

**AWS ferramentas**
+  AppFlowA [Amazon](https://docs.aws.amazon.com/appflow/latest/userguide/what-is-appflow.html) é um serviço de integração totalmente gerenciado que permite que você troque dados com segurança entre aplicativos de software como serviço (SaaS).
+ O [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) é um serviço de consultas interativas que facilita a análise de dados diretamente no Amazon S3 usando SQL padrão.
+  CloudWatchA [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) ajuda você a monitorar as métricas dos seus AWS recursos e dos aplicativos em que você executa AWS em tempo real.
+  EventBridgeA [Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) é um serviço de ônibus de eventos sem servidor que ajuda você a conectar seus aplicativos com dados em tempo real de várias fontes. Por exemplo, AWS Lambda funções, endpoints de invocação HTTP usando destinos de API ou barramentos de eventos em outros. Contas da AWS
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
+ O [Amazon Simple Queue Service (Amazon SQS)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) fornece uma fila hospedada segura, durável e disponível que ajuda a integrar e desacoplar sistemas e componentes de software distribuídos.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)é uma estrutura para definir a infraestrutura de nuvem em código e provisioná-la por meio dela. CloudFormation
+ [AWS DataOps O Development Kit (AWS DDK)](https://github.com/awslabs/aws-ddk) é uma estrutura de desenvolvimento de código aberto para ajudá-lo a criar fluxos de trabalho de dados e uma arquitetura de dados moderna. AWS

**Código **

O código desse padrão está disponível no GitHub [AWS DataOps Development Kit (AWS DDK)](https://github.com/awslabs/aws-ddk) e na [análise de dados do Google Analytics com os repositórios Amazon AppFlow, Amazon Athena AWS DataOps e Development](https://github.com/aws-samples/aws-ddk-examples/tree/main/google-analytics-data-using-appflow/python) Kit.

## Épicos
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-epics"></a>

### Prepare o ambiente
<a name="prepare-the-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clone o código-fonte. | Para clonar o código-fonte, execute o seguinte comando:<pre>git clone https://github.com/aws-samples/aws-ddk-examples.git</pre> | DevOps engenheiro | 
| Crie um ambiente virtual. | Navegue até o diretório do código-fonte e execute o seguinte comando para criar um ambiente virtual:<pre>cd google-analytics-data-using-appflow/python && python3 -m venv .venv</pre> | DevOps engenheiro | 
| Instale as dependências. | Para ativar o ambiente virtual e instalar as dependências, execute o seguinte comando:<pre>source .venv/bin/activate && pip install -r requirements.txt</pre> | DevOps engenheiro | 

### Implante o aplicativo que usa seu pipeline de dados
<a name="deploy-the-application-that-uses-your-data-pipeline"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Inicialize o ambiente do . | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit.html) | DevOps engenheiro | 
| Implante os dados. | Para implantar o pipeline de dados, execute o comando `cdk deploy --profile [AWS_PROFILE]`. | DevOps engenheiro | 

### Teste a implantação
<a name="test-the-deployment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Valide o status da pilha. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit.html) | DevOps engenheiro | 

## Solução de problemas
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| A implantação falha durante a criação de um recurso `AWS::AppFlow::Flow` e você recebe o seguinte erro: `Connector Profile with name ga-connection does not exist` | Confirme se você criou um AppFlow conector Amazon para o Google Analytics e o nomeou`ga-connection`.Para obter instruções, consulte [o Google Analytics](https://docs.aws.amazon.com/appflow/latest/userguide/google-analytics.html) na AppFlow documentação da Amazon. | 

## Recursos relacionados
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-resources"></a>
+ [AWS DataOps Kit de desenvolvimento (AWS DDK) (GitHub)](https://github.com/awslabs/aws-ddk)
+ [AWS Exemplos de DDK](https://github.com/aws-samples/aws-ddk-examples) () GitHub

## Mais informações
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-additional"></a>

AWS Os pipelines de dados do DDK são compostos por um ou vários estágios. Nos exemplos de código a seguir, você usa `AppFlowIngestionStage` para ingerir dados do Google Analytics, `SqsToLambdaStage` lidar com a transformação de dados e `AthenaSQLStage` para executar a consulta do Athena.

Primeiro, os estágios de transformação e ingestão de dados são criados, conforme mostra o exemplo de código a seguir:

```
        appflow_stage = AppFlowIngestionStage(
            self,
            id="appflow-stage",
            flow_name=flow.flow_name,
        )
        sqs_lambda_stage = SqsToLambdaStage(
            self,
            id="lambda-stage",
            lambda_function_props={
                "code": Code.from_asset("./ddk_app/lambda_handlers"),
                "handler": "handler.lambda_handler",
                "layers": [
                    LayerVersion.from_layer_version_arn(
                        self,
                        id="layer",
                        layer_version_arn=f"arn:aws:lambda:{self.region}:336392948345:layer:AWSDataWrangler-Python39:1",
                    )
                ],
                "runtime": Runtime.PYTHON_3_9,
            },
        )
        # Grant lambda function S3 read & write permissions
        bucket.grant_read_write(sqs_lambda_stage.function)
        # Grant Glue database & table permissions
        sqs_lambda_stage.function.add_to_role_policy(
            self._get_glue_db_iam_policy(database_name=database.database_name)
        )
        athena_stage = AthenaSQLStage(
            self,
            id="athena-sql",
            query_string=[
                (
                    "SELECT year, month, day, device, count(user_count) as cnt "
                    f"FROM {database.database_name}.ga_sample "
                    "GROUP BY year, month, day, device "
                    "ORDER BY cnt DESC "
                    "LIMIT 10; "
                )
            ],
            output_location=Location(
                bucket_name=bucket.bucket_name, object_key="query-results/"
            ),
            additional_role_policy_statements=[
                self._get_glue_db_iam_policy(database_name=database.database_name)
            ],
        )
```

Em seguida, a `DataPipeline` construção é usada para “conectar” os estágios usando EventBridge regras, como mostra o exemplo de código a seguir:

```
        (
            DataPipeline(self, id="ingestion-pipeline")
            .add_stage(
                stage=appflow_stage,
                override_rule=Rule(
                    self,
                    "schedule-rule",
                    schedule=Schedule.rate(Duration.hours(1)),
                    targets=appflow_stage.targets,
                ),
            )
            .add_stage(
                stage=sqs_lambda_stage,
                # By default, AppFlowIngestionStage stage emits an event after the flow run finishes successfully
                # Override rule below changes that behavior to call the the stage when data lands in the bucket instead
                override_rule=Rule(
                    self,
                    "s3-object-created-rule",
                    event_pattern=EventPattern(
                        source=["aws.s3"],
                        detail={
                            "bucket": {"name": [bucket.bucket_name]},
                            "object": {"key": [{"prefix": "ga-data"}]},
                        },
                        detail_type=["Object Created"],
                    ),
                    targets=sqs_lambda_stage.targets,
                ),
            )
            .add_stage(stage=athena_stage)
        )
```

Para ver mais exemplos de código, consulte o repositório GitHub [Analisando dados do Google Analytics com Amazon AppFlow, Amazon Athena e AWS DataOps Development Kit](https://github.com/aws-samples/aws-ddk-examples/tree/main/google-analytics-data-using-appflow/python).

# Crie um pipeline de processamento de vídeo usando o Amazon Kinesis Video Streams e o AWS Fargate
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate"></a>

*Piotr Chotkowski e Pushparaju Thangavel, Amazon Web Services*

## Resumo
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-summary"></a>

Esse padrão demonstra como usar o [Amazon Kinesis Video Streams e](https://aws.amazon.com/kinesis/video-streams/) o [AWS Fargate](https://aws.amazon.com/fargate) para extrair quadros de um stream de vídeo e armazená-los como arquivos de imagem para processamento adicional [no Amazon Simple Storage Service](https://aws.amazon.com/s3/) (Amazon S3). 

O padrão fornece um aplicativo de amostra na forma de um projeto Java Maven. Esse aplicativo define a infraestrutura da AWS usando o [AWS Cloud Development Kit](https://aws.amazon.com/cdk/) (AWS CDK). Tanto a lógica de processamento de quadros quanto as definições de infraestrutura são escritas na linguagem de programação Java. Você pode usar esse aplicativo de amostra como base para desenvolver seu próprio pipeline de processamento de vídeo em tempo real ou para criar a etapa de pré-processamento de vídeo de um pipeline de machine learning. 

## Pré-requisitos e limitações
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Java SE Development Kit (JDK) 11 instalado
+ [Apache Maven](https://maven.apache.org/), instalado
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html), instalado
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) versão 2, instalado
+ [Docker](https://docs.docker.com/get-docker/) (necessário para criar imagens do Docker para usar nas definições de tarefas do AWS Fargate), instalado

**Limitações**

Esse padrão serve como uma prova de conceito ou como base para um maior desenvolvimento. Ele não deve ser usado na sua forma atual para implantações de produção.

**Versões do produto**
+ Esse padrão foi testado com o AWS CDK versão 1.77.0 (consulte as [versões do AWS CDK)](https://docs.aws.amazon.com/cdk/api/latest/versions.html)
+ JDK 11
+ AWS CLI versão 2

## Arquitetura
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-architecture"></a>

**Pilha de tecnologias de destino**
+ Amazon Kinesis Video Streams
+ Tarefa do AWS Fargate
+ Fila do Amazon Simple Queue Service (Amazon SQS)
+ Bucket do Amazon S3.

**Arquitetura de destino**

![\[Arquitetura para usar o Kinesis Video Streams e o Fargate para desenvolver um pipeline de processamento de vídeo.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/9d1442c2-f3ee-47fd-8cce-90d9206ce4d4/images/a60e585f-27be-4dd6-897b-c38adf1d283f.png)


O usuário cria um stream de vídeo do Kinesis, carrega um vídeo e envia uma mensagem JSON que contém detalhes sobre o stream de vídeo do Kinesis de entrada e o bucket S3 de saída para uma fila SQS. O AWS Fargate, que está executando o aplicativo principal em um contêiner, extrai a mensagem da fila do SQS e começa a extrair os quadros. Cada quadro é salvo em um arquivo de imagem e armazenado no bucket S3 de destino.

**Automação e escala**

O aplicativo de amostra pode escalar horizontal e verticalmente em uma única região da AWS. A escalabilidade horizontal pode ser alcançada aumentando o número de tarefas implantadas do AWS Fargate que são lidas da fila do SQS. O dimensionamento vertical pode ser obtido aumentando o número de segmentos de divisão de quadros e publicação de imagens no aplicativo. Essas configurações são passadas como variáveis de ambiente para o aplicativo na definição do [QueueProcessingFargateService](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-ecs-patterns.QueueProcessingFargateService.html)recurso no AWS CDK. Devido à natureza da implantação do AWS CDK stack, você pode implantar esse aplicativo em várias regiões e contas da AWS sem nenhum esforço adicional.

## Ferramentas
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-tools"></a>

**Ferramentas**
+ O [AWS CDK](https://aws.amazon.com/cdk/) é uma estrutura de desenvolvimento de software para definir sua infraestrutura e seus recursos de nuvem usando linguagens de programação como TypeScript, Python JavaScript, Java e C\$1/.Net.
+ O [Amazon Kinesis Video Streams](https://aws.amazon.com/kinesis/video-streams/) é um serviço da AWS totalmente gerenciado que você pode usar para fazer streaming de vídeos ao vivo de dispositivos para a Nuvem AWS ou criar aplicativos para processamento de vídeo em tempo real ou análise de vídeo orientada por lotes.
+ [O AWS Fargate](https://aws.amazon.com/fargate) é um mecanismo de computação de tecnologia sem servidor para contêineres. O Fargate elimina a necessidade de provisionar e gerenciar servidores e permite que você se concentre no desenvolvimento de seus aplicativos.
+ O [Amazon S3](https://aws.amazon.com/s3/) é um serviço de armazenamento de objetos que oferece escalabilidade, disponibilidade de dados, segurança e desempenho.
+ O [Amazon SQS](https://aws.amazon.com/sqs/) é um serviço de filas de mensagens totalmente gerenciado que facilita o desacoplamento e a escala de microsserviços, sistemas distribuídos e aplicativos com tecnologia sem servidor.

**Código **
+ Um arquivo .zip do projeto de aplicativo de amostra (`frame-splitter-code.zip`) está anexado.

## Épicos
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-epics"></a>

### Implante a infraestrutura
<a name="deploy-the-infrastructure"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Inicie o daemon do Docker. | Inicie o daemon do Docker em seu sistema local. O AWS CDK usa o Docker para criar a imagem que é usada na tarefa do AWS Fargate. Você deve executar o Docker antes de prosseguir para a próxima etapa. | Desenvolvedor, DevOps engenheiro | 
| Crie o projeto. | Baixe o aplicativo de amostra `frame-splitter-code` (anexado) e extraia seu conteúdo em uma pasta na sua máquina local. Antes de implantar a infraestrutura, você precisa criar o projeto [Java Maven](https://maven.apache.org/). Em um prompt de comando, navegue até o diretório raiz do projeto e crie o projeto executando o comando: <pre>mvn clean install</pre> | Desenvolvedor, DevOps engenheiro | 
| Faça o bootstrap do AWS CDK. | (Somente usuários iniciantes do AWS CDK) Se for a primeira vez que você usa o AWS CDK, talvez seja necessário fazer o bootstrap do ambiente executando o comando da AWS CLI:<pre>cdk bootstrap --profile "$AWS_PROFILE_NAME" </pre>onde `$AWS_PROFILE_NAME` contém o nome do perfil da AWS a partir de suas credenciais da AWS. Ou você pode remover esse parâmetro para usar o perfil padrão. Para obter mais informações, consulte a [documentação do AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html). | Desenvolvedor, DevOps engenheiro | 
| Implante a pilha de CDK da AWS. | Nesta etapa, você cria os recursos de infraestrutura necessários (fila SQS, bucket S3, definição de tarefa do AWS Fargate) em sua conta da AWS, cria a imagem do Docker necessária para a tarefa do AWS Fargate e implanta o aplicativo. Em um prompt de comando, navegue até o diretório raiz do projeto e execute o comando:<pre>cdk deploy --profile "$AWS_PROFILE_NAME" --all </pre>onde `$AWS_PROFILE_NAME` contém o nome do perfil da AWS a partir de suas credenciais da AWS. Ou você pode remover esse parâmetro para usar o perfil padrão. Confirme a implantação. Observe os valores **QueueUrl**e o **Bucket** da saída de implantação do CDK; você precisará deles em etapas posteriores. O AWS CDK cria os ativos, os carrega na sua conta da AWS e cria todos os recursos de infraestrutura. Você pode observar o processo de criação de recursos no [ CloudFormation console da AWS](https://console.aws.amazon.com/cloudformation/). Para obter mais informações, consulte a [ CloudFormation documentação da AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) e a [documentação do AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/hello_world.html#hello_world_tutorial_deploy). | Desenvolvedor, DevOps engenheiro | 
| Crie um streaming de vídeo. | Nesta etapa, você cria um stream de vídeo do Kinesis que servirá como stream de entrada para processamento de vídeo. Certifique-se de que a AWS CLI esteja instalada e configurada. Na AWS CLI, execute:<pre>aws kinesisvideo --profile "$AWS_PROFILE_NAME" create-stream --stream-name "$STREAM_NAME" --data-retention-in-hours "24" </pre>onde `$AWS_PROFILE_NAME` contém o nome do perfil da AWS de suas credenciais da AWS (ou remove esse parâmetro para usar o perfil padrão) e `$STREAM_NAME` é qualquer nome de stream válido. Como alternativa, você pode criar um stream de vídeo usando o console do Kinesis seguindo as etapas na documentação do [Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/gs-createstream.html#gs-createstream-console). Observe o nome de recurso da AWS (ARN) do stream criado; você precisará dele mais tarde. | Desenvolvedor, DevOps engenheiro | 

### Execute um exemplo
<a name="run-an-example"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Faça o upload do vídeo para o stream. | Na pasta do projeto do aplicativo `frame-splitter-code` de amostra, abra o arquivo `ProcessingTaskTest.java` na pasta `src/test/java/amazon/awscdk/examples/splitter`. Substitua as variáveis `profileName`** ** e `streamName`** **pelos valores que você usou nas etapas anteriores. Para fazer o upload do vídeo de exemplo para o stream de vídeo do Kinesis que você criou na etapa anterior, execute:  <pre>amazon.awscdk.examples.splitter.ProcessingTaskTest#testExample test</pre>Como alternativa, você pode enviar seu vídeo usando um dos métodos descritos na [documentação do Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-sdk.html). | Desenvolvedor, DevOps engenheiro | 
| Inicie o processamento de vídeo. | Agora que você enviou um vídeo para o stream de vídeo do Kinesis, pode começar a processá-lo. Para iniciar a lógica de processamento, você precisa enviar uma mensagem com detalhes para a fila do SQS que o AWS CDK criou durante a implantação. Para enviar uma mensagem usando a AWS CLI, execute:<pre>aws sqs --profile "$AWS_PROFILE_NAME" send-message --queue-url QUEUE_URL --message-body MESSAGE </pre>where `$AWS_PROFILE_NAME` contém o nome do perfil da AWS a partir de suas credenciais da AWS (remova esse parâmetro para usar o perfil padrão), `QUEUE_URL` é o **QueueUrl**valor da saída do AWS CDK e `MESSAGE` é uma string JSON no seguinte formato: <pre>{ "streamARN": "STREAM_ARN", "bucket": "BUCKET_NAME", "s3Directory": "test-output" }</pre>onde `STREAM_ARN` é o ARN do stream de vídeo que você criou em uma etapa anterior e `BUCKET_NAME` é o valor do **Bucket** da saída do AWS CDK. O envio dessa mensagem inicia o processamento do vídeo. Como alternativa, você pode enviar uma mensagem usando o console do Amazon SQS, conforme descrito na [documentação do Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-using-send-messages.html). | Desenvolvedor, DevOps engenheiro | 
| Visualize imagens dos quadros de vídeo. | Você pode ver as imagens resultantes no bucket de saída `s3://BUCKET_NAME/test-output` do S3, onde `BUCKET_NAME` está o valor do **bucket** da saída do AWS CDK. | Desenvolvedor, DevOps engenheiro | 

## Recursos relacionados
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-resources"></a>
+ [Documentação do AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/home.html)
+ [Referência da API AWS CDK](https://docs.aws.amazon.com/cdk/api/latest/docs/aws-construct-library.html)
+ [Workshop introdutório do AWS CDK](https://cdkworkshop.com/)
+ [Documentação do Amazon Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/what-is-kinesis-video.html)
+ [Exemplo: identificação de objetos em fluxos de vídeo usando SageMaker](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/examples-sagemaker.html)
+ [Exemplo: análise e renderização de fragmentos do Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/examples-renderer.html)
+ [Analise vídeos ao vivo em grande escala em tempo real usando o Amazon Kinesis Video Streams SageMaker](https://aws.amazon.com/blogs/machine-learning/analyze-live-video-at-scale-in-real-time-using-amazon-kinesis-video-streams-and-amazon-sagemaker/) e a Amazon (publicação no blog do AWS Machine Learning)
+ [Conceitos básicos do AWS Fargate](https://aws.amazon.com/fargate/getting-started/)

## Mais informações
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-additional"></a>

**Escolhendo um IDE**

Recomendamos que você use seu IDE Java favorito para criar e explorar esse projeto.  

**Liberar**

Depois de concluir a execução deste exemplo, remova todos os recursos implantados para evitar custos adicionais de infraestrutura da AWS. 

Para remover a infraestrutura e o stream de vídeo, use esses dois comandos na AWS CLI:

```
cdk destroy --profile "$AWS_PROFILE_NAME" --all
```

```
aws kinesisvideo --profile "$AWS_PROFILE_NAME" delete-stream --stream-arn "$STREAM_ARN"
```

Como alternativa, você pode remover os recursos manualmente usando o CloudFormation console da AWS para remover a CloudFormation pilha da AWS e o console do Kinesis para remover o stream de vídeo do Kinesis. Observe que `cdk destroy` não remove o bucket S3 de saída nem as imagens nos repositórios () do Amazon Elastic Container Registry (Amazon ECR) (`aws-cdk/assets`). Você precisa removê-los manualmente.

## Anexos
<a name="attachments-9d1442c2-f3ee-47fd-8cce-90d9206ce4d4"></a>

Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo: [ attachment.zip](samples/p-attach/9d1442c2-f3ee-47fd-8cce-90d9206ce4d4/attachments/attachment.zip)

# Criar um pipeline de serviços de ETL para carregar dados incrementalmente do Amazon S3 ao Amazon Redshift usando o AWS Glue
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue"></a>

*Rohan Jamadagni e Arunabha Datta, Amazon Web Services*

## Resumo
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue-summary"></a>

Esse padrão fornece orientação sobre como configurar o Amazon Simple Storage Service (Amazon S3) para obter o desempenho ideal do data lake e, em seguida, carregar alterações incrementais de dados do Amazon S3 para o Amazon Redshift usando o AWS Glue, executando operações de extração, transformação e carregamento (ETL). 

Os arquivos de origem no Amazon S3 podem ter formatos diferentes, incluindo valores separados por vírgula (CSV), XML e arquivos JSON. Esse padrão descreve como você pode usar o AWS Glue para converter os arquivos de origem em um formato com custo otimizado e desempenho, como o Apache Parquet. Você pode consultar arquivos do Parquet diretamente do Amazon Athena e do Amazon Redshift Spectrum. Você também pode carregar arquivos do Parquet no Amazon Redshift, agregá-los e compartilhar os dados agregados com os consumidores, ou visualizar os dados usando o Amazon Quick Sight.

## Pré-requisitos e limitações
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Um bucket de origem do S3 que tem os privilégios certos e contém arquivos CSV, XML ou JSON.

**Suposições**
+ Os arquivos de origem CSV, XML ou JSON já estão carregados no Amazon S3 e podem ser acessados na conta em que o AWS Glue e o Amazon Redshift estão configurados.
+ As melhores práticas para carregar os arquivos, dividir os arquivos, compactar e usar um manifesto são seguidas, conforme discutido na [documentação do Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/t_Loading-data-from-S3.html).
+ A estrutura do arquivo de origem permanece inalterada.
+ O sistema de origem é capaz de ingerir dados no Amazon S3 seguindo a estrutura de pastas definida no Amazon S3.
+ O cluster do Amazon Redshift abrange uma única zona de disponibilidade. (Essa arquitetura é apropriada porque o AWS Lambda, o AWS Glue e o Amazon Athena têm tecnologia sem servidor.) Para alta disponibilidade, os instantâneos do cluster são tirados com frequência regular.

**Limitações**
+ Os formatos de arquivo são limitados aos que [atualmente são compatíveis com o AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format.html).
+ Não há suporte para relatórios downstream em tempo real.

## Arquitetura
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue-architecture"></a>

**Pilha de tecnologia de origem**
+ Bucket S3 com arquivos CSV, XML ou JSON

**Pilha de tecnologias de destino**
+ Data lake S3 (com armazenamento de arquivos Parquet particionado)
+ banco de dados de origem

**Arquitetura de destino**

![\[Arquitetura para o carregamento de alterações incrementais do Amazon S3 para o Amazon Redshift usando o AWS Glue.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/105b58ec-56c1-464a-8e69-f625360caa14/images/626aa365-e6e6-4874-a873-1c71adbe5306.png)


 

**Fluxo de dados**

![\[Fluxo de dados para o carregamento de alterações incrementais do Amazon S3 para o Amazon Redshift usando o AWS Glue.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/105b58ec-56c1-464a-8e69-f625360caa14/images/29569e48-9f2d-4f48-bc59-1f33949d01ca.png)


## Ferramentas
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue-tools"></a>
+ [Amazon S3](https://aws.amazon.com/s3/): o Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos altamente escalável. O Amazon S3 pode ser usado para uma ampla variedade de soluções de armazenamento, incluindo sites, aplicativos móveis, backups e data lakes.
+ [AWS Lambda](https://aws.amazon.com/lambda/): o AWS Lambda permite executar código sem provisionar ou gerenciar servidores. O AWS Lambda é um serviço orientado por eventos; você pode configurar seu código para iniciar automaticamente a partir de outros serviços da AWS.
+ [Amazon Redshift](https://aws.amazon.com/redshift/): o Amazon Redshift é um serviço de data warehouse em escala de petabytes totalmente gerenciado. Com o Amazon Redshift, você pode consultar petabytes de dados estruturados e semiestruturados em seu data warehouse e em seu data lake usando SQL padrão.
+ [AWS Glue](https://aws.amazon.com/glue/): o AWS Glue é um serviço de ETL totalmente gerenciado que facilita a preparação e o carregamento de dados para análise. O AWS Glue descobre seus dados e armazena os metadados associados (por exemplo, definições de tabela e esquema) no Catálogo de dados do AWS Glue. Depois de catalogados, os dados se tornarão imediatamente pesquisáveis, consultáveis e disponíveis para ETL.
+ [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/): o AWS Secrets Manager facilita a proteção e o gerenciamento centralizado dos segredos necessários para o acesso a aplicativos ou serviços. O serviço armazena credenciais de banco de dados, chaves de API e outros segredos, além de eliminar a necessidade de codificar informações confidenciais em formato de texto sem formatação. O Secrets Manager também oferece rotação de chaves para atender às necessidades de segurança e conformidade. Ele tem integração integrada com o Amazon Redshift, Amazon Relational Database Service (Amazon RDS) e Amazon DocumentDB. Você pode armazenar e gerenciar centralmente segredos usando o console do Secrets Manager, a interface de linha de comando (CLI) ou a API Secrets Manager e. SDKs
+ [Amazon Athena](https://aws.amazon.com/athena/): o Amazon Athena é um serviço de consultas interativas que facilita a análise de dados armazenada no Amazon S3. O Athena tem tecnologia sem servidor e está integrado ao AWS Glue, portanto, pode consultar diretamente os dados que são catalogados usando o AWS Glue. O Athena é dimensionado de forma elástica para oferecer desempenho de consultas interativas.

## Épicos
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue-epics"></a>

### Crie os buckets e a estrutura de pastas do S3
<a name="create-the-s3-buckets-and-folder-structure"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Analise os sistemas de origem quanto à estrutura e aos atributos dos dados. | Execute essa tarefa para cada fonte de dados que contribui para o data lake do Amazon S3. | Engenheiro de dados | 
| Defina a estratégia de partição e acesso. | Essa estratégia deve ser baseada na frequência das capturas de dados, no processamento delta e nas necessidades de consumo. Certifique-se de que os buckets do S3 não estejam abertos ao público e que o acesso seja controlado somente por políticas específicas baseadas em perfis de serviço. Para mais informações, consulte a [documentação do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/using-folders.html). | Engenheiro de dados | 
| Crie buckets S3 separados para cada tipo de fonte de dados e um bucket S3 separado por fonte para os dados processados (Parquet). | Crie um bucket separado para cada fonte e, em seguida, crie uma estrutura de pastas com base na frequência de ingestão de dados do sistema de origem; por exemplo, `s3://source-system-name/date/hour`. Para os arquivos processados (convertidos para o formato Parquet), crie uma estrutura semelhante; por exemplo, `s3://source-processed-bucket/date/hour`. Para obter mais informações sobre como ciar buckets do S3, consulte a [Documentação do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html). | Engenheiro de dados | 

### Criar um data warehouse no Amazon Redshift
<a name="create-a-data-warehouse-in-amazon-redshift"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Inicie o cluster do Amazon Redshift com os grupos de parâmetros e a estratégia de manutenção e backup apropriados. | Use o segredo do banco de dados do Secrets Manager para credenciais de usuário administrador ao criar o cluster Amazon Redshift. Para obter informações sobre como criar e dimensionar um cluster do Amazon Redshift, consulte a [documentação do Amazon Redshift](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/event-publishing-redshift-cluster.html) e o whitepaper [Dimensionamento de Data Warehouses na nuvem](https://d1.awsstatic.com/whitepapers/Size-Cloud-Data-Warehouse-on-AWS.pdf). | Engenheiro de dados | 
| criar e associar o perfil de serviço do IAM ao cluster do Amazon Redshift. | O perfil de serviço AWS Identity and Access Management (IAM) garante acesso ao Secrets Manager e aos buckets de origem do S3. Para obter mais informações, consulte a documentação da AWS sobre [autorização](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html) e [adição de uma função](https://docs.aws.amazon.com/redshift/latest/dg/c-getting-started-using-spectrum-add-role.html). | Engenheiro de dados | 
| Crie o esquema do banco de dados. | Siga as práticas recomendadas do Amazon Redshift para design de tabelas. Com base no caso de uso, escolha as chaves de classificação e distribuição apropriadas e a melhor codificação de compactação possível. Para obter as melhores práticas, consulte a [documentação da AWS](https://docs.aws.amazon.com/redshift/latest/dg/c_designing-tables-best-practices.html). | Engenheiro de dados | 
| Configure o gerenciamento do workload. | Configure filas de workload (WLM - workload management), aceleração de consultas curtas (SQA - short query acceleration) ou escalabilidade de simultaneidade, dependendo de suas necessidades. Para obter mais informações, consulte [Implementar o gerenciamento de workload](https://docs.aws.amazon.com/redshift/latest/dg/cm-c-implementing-workload-management.html) na documentação do Amazon Redshift. | Engenheiro de dados | 

### Crie um segredo no Secrets Manager
<a name="create-a-secret-in-secrets-manager"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um novo segredo para armazenar as credenciais de login do Amazon Redshift no Secrets Manager. | Esse segredo armazena as credenciais do usuário administrador, bem como dos usuários individuais do serviço de banco de dados. Para obter instruções, consulte a [documentação do Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html). Escolha o **Amazon Redshift Cluster** como o tipo de segredo. Além disso, na página de **rotação secreta**, ative a rotação. Isso criará o usuário apropriado no cluster do Amazon Redshift e alternará os segredos da chave em intervalos definidos. | Engenheiro de dados | 
| Crie uma política do IAM para restringir o acesso ao Secrets Manager. | Restrinja o acesso ao Secrets Manager somente aos administradores do Amazon Redshift e ao AWS Glue. | Engenheiro de dados | 

### Configurar o AWS Glue
<a name="configure-aws-glue"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| No Catálogo de Dados do AWS Glue, adicione uma conexão para o Amazon Redshift. | Para obter instruções, consulte a [documentação do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/console-connections.html). | Engenheiro de dados | 
| Crie e anexe um perfil de serviço do IAM para o AWS Glue acessar os buckets do Secrets Manager, do Amazon Redshift e do S3. | Para obter mais informações, consulte a [documentação do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/create-service-policy.html). | Engenheiro de dados | 
| Defina o Catálogo de dados do AWS Glue para a fonte. | Essa etapa envolve a criação de um banco de dados e das tabelas necessárias no Catálogo de Dados do AWS Glue. Você pode usar um crawler para catalogar as tabelas no banco de dados AWS Glue ou defini-las como tabelas externas do Amazon Athena. Você também pode acessar as tabelas externas definidas no Athena por meio do Catálogo de Dados do AWS Glue. Consulte a documentação da AWS para obter mais informações sobre como [definir o catálogo de dados](https://docs.aws.amazon.com/glue/latest/dg/populate-data-catalog.html) e [criar uma tabela externa](https://docs.aws.amazon.com/athena/latest/ug/creating-tables.html) no Athena. | Engenheiro de dados | 
| Crie um trabalho do AWS Glue para processar dados de origem. | O trabalho do AWS Glue pode ser um shell Python ou PySpark padronizar, desduplicar e limpar os arquivos de dados de origem. Para otimizar o desempenho e evitar a necessidade de consultar todo o bucket de origem do S3, particione o bucket do S3 por data, dividido por ano, mês, dia e hora como uma redução de predicado para o trabalho do AWS Glue. Para obter mais informações, consulte a [documentação do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-partitions.html). Carregue os dados processados e transformados nas partições de bucket do S3 processadas no formato Parquet. Você pode consultar os arquivos do Parquet do Athena. | Engenheiro de dados | 
| Crie um trabalho do AWS Glue para carregar dados no Amazon Redshift. | O trabalho do AWS Glue pode ser um shell Python ou PySpark carregar os dados atualizando os dados, seguido por uma atualização completa. Para obter detalhes, consulte a [documentação do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/author-job.html) e a seção *Informações adicionais*. | Engenheiro de dados | 
| (Opcional) Programe trabalhos do AWS Glue usando gatilhos conforme necessário. | A carga incremental de dados é impulsionada principalmente por um evento do Amazon S3 que faz com que uma função do Lambda da AWS chame a tarefa do AWS Glue. Use o agendamento baseado em gatilho do AWS Glue para qualquer carga de dados que exija agendamento baseado em tempo em vez de agendamento baseado em eventos. | Engenheiro de dados | 

### Criar uma função do Lambda
<a name="create-a-lambda-function"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie e anexe uma função vinculada ao serviço do IAM para que o AWS Lambda acesse buckets do S3 e o trabalho do AWS Glue. | Crie uma função vinculada ao serviço do IAM para o AWS Lambda com uma política para ler objetos e buckets do Amazon S3 e uma política para acessar a API do AWS Glue para iniciar um trabalho do AWS Glue. Para obter mais informações, consulte o [Centro de Conhecimentos](https://aws.amazon.com/premiumsupport/knowledge-center/lambda-execution-role-s3-bucket/). | Engenheiro de dados | 
| Crie uma função do Lambda para executar o trabalho do AWS Glue com base no evento definido do Amazon S3. | A função do Lambda deve ser iniciada pela criação do arquivo de manifesto do Amazon S3. A função Lambda deve passar a localização da pasta Amazon S3 (por exemplo, bucket/year/month/date/hour source\$1) para o trabalho do AWS Glue como parâmetro. O trabalho do AWS Glue usará esse parâmetro como uma redução de predicado para otimizar o acesso a arquivos e o desempenho do processamento de trabalhos. Para obter mais informações, consulte a [documentação do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html). | Engenheiro de dados | 
| Crie um evento de objeto PUT do Amazon S3 para detectar a criação de objetos e chame a respectiva função do Lambda. | O evento de objeto PUT do Amazon S3 deve ser iniciado somente pela criação do arquivo de manifesto. O arquivo de manifesto controla a função do Lambda e a simultaneidade de trabalhos do AWS Glue e processa a carga como um lote, em vez de processar arquivos individuais que chegam em uma partição específica do bucket de origem do S3. Para obter mais informações, consulte a[ documentação do Lambda](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html). | Engenheiro de dados | 

## Recursos relacionados
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue-resources"></a>
+ [Documentação do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html)
+ [Documentação do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)
+ [Documentação do Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html)
+ [AWS Lambda](https://aws.amazon.com/lambda/)
+ [Amazon Athena](https://aws.amazon.com/athena/)
+ [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/)

## Mais informações
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue-additional"></a>

**Abordagem detalhada para atualização inicial e completa**

**Upsert**: para conjuntos de dados que exigem agregação histórica, dependendo do caso de uso comercial. Siga uma das abordagens descritas em [Atualização e inserção de novos dados](https://docs.aws.amazon.com/redshift/latest/dg/t_updating-inserting-using-staging-tables-.html) (documentação do Amazon Redshift) com base nas necessidades da sua empresa.

**Atualização completa**: para pequenos conjuntos de dados que não precisam de agregações históricas. Siga uma dessas abordagens:

1. Leve a tabela do Amazon Redshift.

1. Carregue a partição atual da área de armazenamento

ou:

1. Crie uma tabela temporária com dados de partição atuais.

1. Spçte a tabela de destino no Amazon Redshift.

1. Renomeie a tabela temporária para tabela de destino.

# Crie uma malha de dados corporativa com a Amazon DataZone, AWS CDK, e AWS CloudFormation
<a name="build-enterprise-data-mesh-amazon-data-zone"></a>

*Dhrubajyoti Mukherjee, Ravi Kumar, Weizhou Sun e Adjoa Taylor, Amazon Web Services*

## Resumo
<a name="build-enterprise-data-mesh-amazon-data-zone-summary"></a>

Na Amazon Web Services (AWS), os clientes entendem que os dados são a chave para acelerar a inovação e gerar valor comercial para sua empresa. Para gerenciar esse volume massivo de dados, você pode adotar uma arquitetura descentralizada como data mesh. Uma arquitetura de data mesh facilita o pensamento voltado ao produto, uma mentalidade que leva em consideração os clientes, as metas e o mercado. A data mesh também ajuda a estabelecer um modelo de governança federada que fornece acesso rápido e seguro aos seus dados.

[Strategies for building a data mesh-based enterprise solution on AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/strategy-data-mesh/introduction.html) discute como você pode usar a Data Mesh Strategy Framework para formular e implementar uma estratégia de data mesh para sua organização. Ao usar a Data Mesh Strategy Framework, você pode otimizar a organização das equipes e suas interações para acelerar sua jornada de data mesh.

Este documento fornece orientação sobre como criar uma malha de dados corporativa com a [Amazon DataZone](https://docs.aws.amazon.com/datazone/latest/userguide/what-is-datazone.html). DataZone A Amazon é um serviço de gerenciamento de dados para catalogar, descobrir, compartilhar e governar dados armazenados localmente e em AWS fontes terceirizadas. O padrão inclui artefatos de código que ajudam você a implantar a infraestrutura de solução de dados baseada em malha de dados usando e. AWS Cloud Development Kit (AWS CDK) AWS CloudFormation Esse padrão é destinado a arquitetos e DevOps engenheiros de nuvem.

Para obter informações sobre os objetivos desse padrão e o escopo da solução, consulte a seção [Informações adicionais](#build-enterprise-data-mesh-amazon-data-zone-additional).

## Pré-requisitos e limitações
<a name="build-enterprise-data-mesh-amazon-data-zone-prereqs"></a>

**Pré-requisitos **
+ Um mínimo de dois ativos Contas da AWS: um para a conta de governança central e outro para a conta do membro
+ AWS credenciais de administrador para a conta de governança central em seu ambiente de desenvolvimento
+ AWS Command Line Interface (AWS CLI) [instalado](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) para gerenciar seu a Serviços da AWS partir da linha de comando
+ Node.js e Node Package Manager (npm) [instalados](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) para gerenciar aplicativos AWS CDK 
+ AWS CDK Kit de ferramentas [instalado](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_install) globalmente em seu ambiente de desenvolvimento usando npm, para sintetizar e implantar aplicativos AWS CDK 

  ```
  npm install -g aws-cdk
  ```
+ Python versão 3.12 instalada em seu ambiente de desenvolvimento
+ TypeScript instalado em seu ambiente de desenvolvimento ou instalado globalmente usando o compilador npm:

  ```
  npm install -g typescript
  ```
+ Docker instalado em seu ambiente de desenvolvimento
+ Um sistema de controle de versão, como o Git, para manter o código-fonte da solução (recomendado)
+ Um ambiente de desenvolvimento integrado (IDE) ou editor de texto com suporte para Python e TypeScript (altamente recomendado)

**Limitações**
+ A solução foi testada somente em máquinas com Linux ou macOS em execução.
+ Na versão atual, a solução não suporta a integração da Amazon DataZone e, Centro de Identidade do AWS IAM por padrão. No entanto, é possível configurá-la para ser compatível com essa integração.

**Versões do produto**
+ Python versão 3.12

## Arquitetura
<a name="build-enterprise-data-mesh-amazon-data-zone-architecture"></a>

O diagrama a seguir mostra uma arquitetura de referência de data mesh. A arquitetura é baseada na Amazon DataZone e usa o Amazon Simple Storage Service (Amazon S3) AWS Glue Data Catalog e como fontes de dados. O Serviços da AWS que você usa com a Amazon DataZone em sua implementação de malha de dados pode ser diferente, com base nos requisitos da sua organização.

![\[Fluxo de trabalho em cinco etapas para contas de membros e conta de governança central.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/79056dd9-e669-4302-afb8-21e3e0e8a136/images/eacbffca-4f25-405a-a7c8-f89d0fee5682.png)


1. Nas contas do produtor, os dados brutos são adequados para consumo em sua forma atual ou são transformados para consumo por meio do uso AWS Glue. Os metadados técnicos dos dados são armazenados no Amazon S3 e avaliados usando AWS Glue um rastreador de dados. A qualidade dos dados é medida usando o [AWS Glue Data Quality](https://docs.aws.amazon.com/glue/latest/dg/glue-data-quality.html). O banco de dados de origem no catálogo de dados é registrado como um ativo no DataZone catálogo da Amazon. O DataZone catálogo da Amazon é hospedado na conta de governança central usando trabalhos de fonte DataZone de dados da Amazon.

1. A conta de governança central hospeda o DataZone domínio da Amazon e o portal de DataZone dados da Amazon. Os produtores e consumidores Contas da AWS de dados estão associados ao DataZone domínio da Amazon. Os DataZone projetos da Amazon dos produtores e consumidores de dados são organizados sob as unidades de DataZone domínio correspondentes da Amazon.

1. Os usuários finais dos ativos de dados fazem login no portal de DataZone dados da Amazon usando suas credenciais AWS Identity and Access Management (IAM) ou login único (com integração por meio do IAM Identity Center). Eles pesquisam, filtram e visualizam informações de ativos (por exemplo, informações sobre qualidade de dados ou metadados comerciais e técnicos) no catálogo de DataZone dados da Amazon.

1. Depois que um usuário final encontra o ativo de dados que deseja, ele usa o recurso de DataZone assinatura da Amazon para solicitar acesso. O proprietário dos dados da equipe de produtores recebe uma notificação e avalia a solicitação de assinatura no portal de DataZone dados da Amazon. O proprietário dos dados aprova ou rejeita a solicitação de assinatura com base em sua validade.

1. Depois que a solicitação de assinatura é concedida e atendida, o ativo é acessado na conta do consumidor para as seguintes atividades:
   + Desenvolvimento de modelos de IA/ML usando Amazon AI SageMaker 
   + Análise e relatórios usando o Amazon Athena e o Amazon Quick

## Ferramentas
<a name="build-enterprise-data-mesh-amazon-data-zone-tools"></a>

**Serviços da AWS**
+ O [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) é um serviço de consultas interativas que ajuda a análise de dados diretamente no Amazon Simple Storage Service (Amazon S3) usando SQL padrão.
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)é uma estrutura de desenvolvimento de software que ajuda você a definir e provisionar Nuvem AWS infraestrutura em código.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em Contas da AWS e. Regiões da AWS
+  DataZoneA [Amazon](https://docs.aws.amazon.com/datazone/latest/userguide/what-is-datazone.html) é um serviço de gerenciamento de dados que ajuda você a catalogar, descobrir, compartilhar e controlar dados armazenados localmente e em fontes terceirizadas. AWS
+ O [Amazon Quick](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) é um serviço de inteligência de negócios (BI) em escala de nuvem que ajuda você a visualizar, analisar e relatar seus dados em um único painel.
+ O [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/?id=docs_gateway) é um serviço gerenciado de aprendizado de máquina (ML) que ajuda você a criar e treinar modelos de ML e depois implantá-los em um ambiente hospedado pronto para produção.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
+ O [Amazon Simple Queue Service (Amazon SQS)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) fornece uma fila hospedada segura, durável e disponível que ajuda a integrar e desacoplar sistemas e componentes de software distribuídos.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

**Repositório de código**

A solução está disponível no repositório GitHub [data-mesh-datazone-cdk-cloudformation](https://github.com/aws-samples/data-mesh-datazone-cdk-cloudformation).

## Épicos
<a name="build-enterprise-data-mesh-amazon-data-zone-epics"></a>

### Configurar o ambiente
<a name="set-up-the-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clonar o repositório. | Para clonar o repositório, execute o seguinte comando em seu ambiente de desenvolvimento local (Linux ou macOS):<pre>git clone https://github.com/aws-samples/data-mesh-datazone-cdk-cloudformation</pre> | Arquiteto de nuvem, DevOps engenheiro | 
| Criar o ambiente | Para criar o ambiente virtual do Python, execute os seguintes comandos:<pre> python3 -m venv .venv<br /> source .venv/bin/activate<br /> pip install -r requirements.txt</pre> | Arquiteto de nuvem, DevOps engenheiro | 
| Inicialize a conta. | Para inicializar a conta de governança central usando AWS CDK, execute o seguinte comando:<pre>cdk bootstrap aws://<GOVERNANCE_ACCOUNT_ID>/<AWS_REGION></pre>Faça login no Console de gerenciamento da AWS, abra o console central da conta de governança e obtenha o Amazon Resource Name (ARN) da função de AWS CDK execução. | Arquiteto de nuvem, DevOps engenheiro | 
| Construa o arquivo `DzDataMeshMemberStackSet.yaml`. | Para construir o arquivo `DzDataMeshMemberStackSet.yaml`, no diretório-raiz do repositório, inicie o seguinte script bash:<pre>./lib/scripts/create_dz_data_mesh_member_stack_set.sh</pre> | Arquiteto de nuvem, DevOps engenheiro | 
| Confirme a criação do modelo. | Certifique-se de que o arquivo de CloudFormation modelo seja criado no `lib/cfn-templates/DzDataMeshMemberStackSet.yaml` local. | Arquiteto de nuvem, DevOps engenheiro | 

### Implantar recursos na conta de governança central
<a name="deploy-resources-in-the-central-governance-account"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Modifique o arquivo de configuração. | No arquivo `config/Config.ts`, modifique os seguintes parâmetros:<pre>DZ_APPLICATION_NAME - Name of the application.<br />DZ_STAGE_NAME - Name of the stage. <br />DZ_DOMAIN_NAME - Name of the Amazon DataZone domain<br />DZ_DOMAIN_DESCRIPTION - Description of the Amazon DataZone domain<br />DZ_DOMAIN_TAG - Tag of the Amazon DataZone domain<br />DZ_ADMIN_PROJECT_NAME - Name of the Amazon DataZone project for administrators<br />DZ_ADMIN_PROJECT_DESCRIPTION - Description of the Amazon DataZone project for administrators<br />CDK_EXEC_ROLE_ARN - ARN of the cdk execution role<br />DZ_ADMIN_ROLE_ARN - ARN of the administrator role</pre>Mantenha os parâmetros restantes vazios. | Arquiteto de nuvem, DevOps engenheiro | 
| Atualize a configuração do DataZone glossário da Amazon. | Para atualizar a configuração do DataZone glossário da Amazon no `lib/utils/glossary_config.json` arquivo, use o seguinte exemplo de configuração:<pre>{<br />    "GlossaryName": "PII Data",<br />    "GlossaryDescription": "If data source contains PII attributes",<br />    "GlossaryTerms": [{<br />            "Name": "Yes",<br />            "ShortDescription": "Yes",<br />            "LongDescription": "Yes Glossary Term"<br />        },<br />        {<br />            "Name": "No",<br />            "ShortDescription": "No",<br />            "LongDescription": "No Glossary Term"<br />        }<br />    ]<br />}</pre> | Arquiteto de nuvem, DevOps engenheiro | 
| Atualize a configuração do formulário de DataZone metadados da Amazon. | Para atualizar a configuração do formulário de DataZone metadados da Amazon no`lib/utils/metadata_form_config.json file`, use o seguinte exemplo de configuração:<pre>{<br />    "FormName": "ScheduleDataRefresh",<br />    "FormDescription": "Form for data refresh schedule",<br />    "FormSmithyModel": "@amazon.datazone#displayname(defaultName: \"Data Refresh Schedule\")\nstructure ScheduleDataRefresh {\n    @documentation(\"Schedule of Data Refresh\")\n    @required\n    @amazon.datazone#searchable\n    @amazon.datazone#displayname(defaultName: \"Data Refresh Schedule\")\n    data_refresh_schedule: String\n}"<br />}</pre> | Arquiteto de nuvem, DevOps engenheiro | 
| Exporte as AWS credenciais. | Para exportar AWS credenciais para seu ambiente de desenvolvimento para a função do IAM com permissões administrativas, use o seguinte formato:<pre>export AWS_ACCESS_KEY_ID=<br />export AWS_SECRET_ACCESS_KEY=<br />export AWS_SESSION_TOKEN=</pre> | Arquiteto de nuvem, DevOps engenheiro | 
| Sintetize o modelo. | Para sintetizar o CloudFormation modelo, execute o seguinte comando:<pre>npx cdk synth</pre> | Arquiteto de nuvem, DevOps engenheiro | 
| Implante a solução. | Para implantar a solução, execute o seguinte comando:<pre>npx cdk deploy --all</pre> | Arquiteto de nuvem, DevOps engenheiro | 

### Configurar novas contas de membros
<a name="configure-new-member-accounts"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implante o modelo. | Implante o CloudFormation modelo localizado `lib/cfn-templates/DzDataMeshCfnStackSetExecutionRole.yaml` na conta do membro com os seguintes parâmetros de entrada: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/build-enterprise-data-mesh-amazon-data-zone.html) | Arquiteto de nuvem, DevOps engenheiro | 
| Atualize ARNs o. | Para atualizar a lista de funções ARNs de CloudFormation StackSet execução das contas dos membros, use o código a seguir:<pre>DZ_MEMBER_STACK_SET_EXEC_ROLE_LIST  - List of Stack set execution role arns for the member accounts.</pre> | Arquiteto de nuvem, DevOps engenheiro | 
| Sintetize e implante. | Para sintetizar o CloudFormation modelo e implantar a solução, execute os seguintes comandos:<pre>npx cdk synth<br />npx cdk deploy --all</pre> | Arquiteto de nuvem, DevOps engenheiro | 
| Associe a conta de membro. | Para associar a conta de membro à conta de governança central, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/build-enterprise-data-mesh-amazon-data-zone.html) | Arquiteto de nuvem, DevOps engenheiro | 
| Atualize os parâmetros. | Para atualizar os parâmetros específicos da conta de membro no arquivo de configuração em `config/Config.ts`, use o seguinte formato:<pre>export const DZ_MEMBER_ACCOUNT_CONFIG: memberAccountConfig = {<br />  '123456789012' : {<br />    PROJECT_NAME: 'TEST-PROJECT-123456789012',<br />    PROJECT_DESCRIPTION: 'TEST-PROJECT-123456789012',<br />    PROJECT_EMAIL: 'user@xyz.com'<br />  }<br />}</pre> | Arquiteto de nuvem, DevOps engenheiro | 
| Sintetize e implante o modelo. | Para sintetizar o CloudFormation modelo e implantar a solução, execute os seguintes comandos:<pre>npx cdk synth<br />npx cdk deploy --all</pre> | Arquiteto de nuvem, DevOps engenheiro | 
| Adicione contas de membro. | Para criar e configurar contas de membros adicionais na solução de dados, repita as etapas anteriores para cada conta de membro.Essa solução não diferencia entre produtores e consumidores de dados. | Arquiteto de nuvem, DevOps engenheiro | 

### Limpeza
<a name="clean-up"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Desassocie as contas de membro. | Para desassociar as contas, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/build-enterprise-data-mesh-amazon-data-zone.html) | Arquiteto de nuvem, DevOps engenheiro | 
| Exclua as instâncias de pilha. | Para excluir as instâncias da CloudFormation pilha, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/build-enterprise-data-mesh-amazon-data-zone.html) | Arquiteto de nuvem, DevOps engenheiro | 
| Destrua todos os recursos. | Para destruir recursos, implemente as seguintes etapas em seu ambiente de desenvolvimento local (Linux ou macOS):[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/build-enterprise-data-mesh-amazon-data-zone.html) | Arquiteto de nuvem, DevOps engenheiro | 

## Recursos relacionados
<a name="build-enterprise-data-mesh-amazon-data-zone-resources"></a>
+ [ DataZone Início rápido da Amazon com dados AWS Glue](https://docs.aws.amazon.com/datazone/latest/userguide/quickstart-glue.html)
+ [Tutorial: Crie seu primeiro AWS CDK aplicativo](https://docs.aws.amazon.com/cdk/v2/guide/hello_world.html)
+ [Começando com CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/GettingStarted.html)
+ [Estratégias para criar uma solução corporativa baseada em malha de dados em AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/strategy-data-mesh/introduction.html)

## Mais informações
<a name="build-enterprise-data-mesh-amazon-data-zone-additional"></a>

**Objetivos**

A implementação deste padrão resulta no seguinte:
+ **Propriedade descentralizada dos dados**: transfira a propriedade dos dados de uma equipe central para equipes que representam os sistemas de origem, as unidades de negócios ou os casos de uso da sua organização.
+ **Pensamento voltado ao produto**: adote uma mentalidade baseada em produtos que inclua clientes, o mercado e outros fatores ao considerar os ativos de dados em sua organização.
+ **Governança federada**: melhore as barreiras de proteção de segurança, os controles e a conformidade em todos os produtos de dados da sua organização.
+ **Suporte para várias contas e vários projetos**: ofereça suporte para o compartilhamento e a colaboração de dados de maneira eficiente e segura entre as unidades de negócios ou projetos de sua organização.
+ **Monitoramento e notificações centralizados** ‒ Monitore os recursos de nuvem de sua malha de dados usando a Amazon CloudWatch e notifique os usuários quando uma nova conta de membro for associada.
+ **Escalabilidade e extensibilidade**: adicione novos casos de uso à data mesh à medida que sua organização evolui.

**Escopo da solução**

Ao usar esta solução, você pode começar aos poucos e escalar à medida que avança em sua jornada de data mesh. Geralmente, quando uma conta de membro adota a solução de dados, ela contém configurações de conta específicas para a organização, projeto ou unidade de negócios. Essa solução acomoda essas diversas Conta da AWS configurações oferecendo suporte aos seguintes recursos:
+ AWS Glue Data Catalog como fonte de dados para a Amazon DataZone
+ Gerenciamento do domínio de DataZone dados da Amazon e do portal de dados relacionado
+ O gerenciamento da adição de contas de membros na solução de dados baseada em data mesh
+ Gestão de DataZone projetos e ambientes da Amazon
+ Gerenciamento de DataZone glossários e formulários de metadados da Amazon
+ O gerenciamento de perfis do IAM que correspondem aos usuários da solução de dados baseada em data mesh
+ A notificação de usuários da solução de dados baseada em data mesh
+ O monitoramento da infraestrutura de nuvem provisionada

  Essa solução usa AWS CDK e implementa CloudFormation a infraestrutura em nuvem. Ele costuma CloudFormation fazer o seguinte:
  + Definir e implementar recursos de nuvem em um nível mais baixo de abstração.
  + Implemente recursos de nuvem a partir do Console de gerenciamento da AWS. Ao usar esta abordagem, você pode implantar a infraestrutura sem um ambiente de desenvolvimento.

  A solução de malha de dados é usada AWS CDK para definir recursos em um nível de abstração mais alto. Como resultado, a solução fornece uma abordagem desacoplada, modular e escalável ao escolher a ferramenta relevante para implantar os recursos em nuvem.

**Próximas etapas**

Você pode entrar em contato com AWS[especialistas](https://aws.amazon.com/professional-services) para obter orientação sobre como criar uma malha de dados com a Amazon DataZone.

A natureza modular desta solução oferece suporte à criação de soluções de gerenciamento de dados com diferentes arquiteturas, como data fabric e data lakes. Além disso, com base nos requisitos da sua organização, você pode estender a solução para outras fontes de DataZone dados da Amazon.

# Calcule o value at risk (VaR – valor em risco) usando os serviços da AWS
<a name="calculate-value-at-risk-var-by-using-aws-services"></a>

*Sumon Samanta, Amazon Web Services*

## Resumo
<a name="calculate-value-at-risk-var-by-using-aws-services-summary"></a>

Esse padrão descreve como implementar um sistema de cálculo de valor em risco (VaR) usando os serviços da AWS. Em um ambiente on-premises, a maioria dos sistemas VaR usa uma infraestrutura grande e dedicada e um software de agendamento de rede interno ou comercial para executar processos em lote. Esse padrão apresenta uma arquitetura simples, confiável e escalável para lidar com o processamento de VaR na nuvem AWS. Ele cria uma arquitetura sem servidor que usa o Amazon Kinesis Data Streams como um serviço de streaming, o Amazon Simple Queue Service (Amazon SQS) como um serviço gerenciado de filas, a Amazon como um serviço de cache e o ElastiCache AWS Lambda para processar pedidos e calcular riscos.

O VaR é uma medida estatística que os negociadores e gerentes de risco usam para estimar a perda potencial em seu portfólio além de um certo nível de confiança. A maioria dos sistemas VaR envolve a execução de um grande número de cálculos matemáticos e estatísticos e o armazenamento dos resultados. Esses cálculos exigem recursos computacionais significativos, portanto, os processos em lote do VaR precisam ser divididos em conjuntos menores de tarefas computacionais. É possível dividir um lote grande em tarefas menores porque essas tarefas são, em sua maioria, independentes (ou seja, os cálculos de uma tarefa não dependem de outras tarefas). 

Outro requisito importante para uma arquitetura VaR é a escalabilidade computacional. Esse padrão usa uma arquitetura com tecnologia sem servidor que aumenta ou diminui automaticamente com base na carga computacional. Como a demanda de computação em lote ou on-line é difícil de prever, o escalonamento dinâmico é necessário para concluir o processo dentro do cronograma imposto por um Acordo de Serviço (SLA). Além disso, uma arquitetura com custo otimizado deve ser capaz de reduzir a escala verticalmente para cada recurso computacional assim que as tarefas desse recurso forem concluídas. 

Os serviços da AWS são adequados para cálculos de VaR porque oferecem capacidade de computação e armazenamento escalável, serviços de análise para processamento de forma econômica e diferentes tipos de agendadores para executar seus fluxos de trabalho de gerenciamento de riscos. Além disso, você paga apenas pelos recursos de computação e armazenamento que usa na AWS.

## Pré-requisitos e limitações
<a name="calculate-value-at-risk-var-by-using-aws-services-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Arquivos de entrada, que dependem dos requisitos da sua empresa. Um caso de uso típico envolve os seguintes arquivos de entrada:
  + Arquivo de dados de mercado (entrada para o mecanismo de cálculo do VaR)
  + Arquivo de dados comerciais (a menos que os dados comerciais venham por meio de um fluxo).
  + Arquivo de dados de configuração (modelo e outros dados estáticos de configuração)
  + Arquivos de modelo do mecanismo de cálculo (bibliotecas quantitativas)
  + Arquivo de dados de séries temporais (para dados históricos, como o preço das ações nos últimos cinco anos)
+ Se os dados de mercado ou outras informações chegarem por meio de um stream, o Amazon Kinesis Data Streams será configurado e as permissões do Amazon Identity and Access Management (IAM) serão configuradas para gravar no stream.  

Esse padrão cria uma arquitetura na qual os dados comerciais são gravados de um sistema de negociação em um fluxo de dados do Kinesis. Em vez de usar um serviço de streaming, você pode salvar os dados de negociação em pequenos lotes, armazená-los em um bucket do Amazon Simple Storage Service (Amazon S3) e invocar um evento para começar a processar os dados.

**Limitações**
+ O sequenciamento do fluxo de dados do Kinesis é garantido em cada fragmento, portanto, não é garantido que as ordens de negociação gravadas em vários fragmentos sejam entregues na mesma ordem das operações de gravação.
+ Atualmente, o limite de runtime do AWS Lambda é de 15 minutos. (Para obter mais informações, consulte as [perguntas frequentes do Lambda](https://aws.amazon.com/lambda/faqs/).)

## Arquitetura
<a name="calculate-value-at-risk-var-by-using-aws-services-architecture"></a>

**Arquitetura de destino**

O diagrama de arquitetura a seguir mostra os serviços e fluxos de trabalho da AWS para o sistema de avaliação de risco.

![\[Sistema de cálculo de VaR com serviços da AWS\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/eb615fc5-3cc3-445a-af2c-8446ee7b5276/images/c60aec03-ff6c-410c-8ee8-f1f6efa22cf7.png)


O diagrama ilustra o seguinte:

1. As negociações chegam do sistema de gerenciamento de pedidos.

1. A função do Lambda de *compensação da posição do tíquete* processa os pedidos e grava mensagens consolidadas para cada ticker em uma fila de risco no Amazon SQS.

1. A função Lambda *do mecanismo de cálculo de risco* processa as mensagens do Amazon SQS, realiza cálculos de risco e atualiza as informações de lucros e perdas (PnL) do VaR no cache de risco na Amazon. ElastiCache

1. A função Lambda de *leitura de ElastiCache dados* recupera os resultados de risco e os armazena em um banco de dados ElastiCache e em um bucket do S3.

Para obter mais informações sobre esses serviços e etapas, consulte a seção *Épicos*.

**Automação e escala**

Você pode implantar toda a arquitetura usando o AWS Cloud Development Kit (AWS CDK) ou os CloudFormation modelos da AWS. A arquitetura pode suportar tanto o processamento em lote quanto o processamento intradiário (em tempo real).

O dimensionamento é incorporado à arquitetura. À medida que mais negociações são gravadas no fluxo de dados do Kinesis e aguardam para serem processadas, funções adicionais do Lambda podem ser invocadas para processar essas negociações e, em seguida, podem reduzir a escala verticalmente após a conclusão do processamento. O processamento por meio de várias filas de cálculo de risco do Amazon SQS também é uma opção. Se for necessária uma ordenação ou consolidação estritas nas filas, o processamento não poderá ser paralelizado. No entanto, para um end-of-the-day lote ou um mini lote intradiário, as funções Lambda podem processar paralelamente e armazenar os resultados finais em. ElastiCache 

## Ferramentas
<a name="calculate-value-at-risk-var-by-using-aws-services-tools"></a>

** Serviços da AWS**
+ O [Amazon Aurora MySQL-Compatible Edition](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMySQL.html) é um mecanismo de banco de dados relacional totalmente gerenciado e compatível com MySQL que ajuda você a configurar, operar e dimensionar implantações do MySQL. Esse padrão usa o MySQL como exemplo, mas você pode usar qualquer sistema RDBMS para armazenar dados.
+  ElastiCacheA [Amazon](https://docs.aws.amazon.com/elasticache/) ajuda você a configurar, gerenciar e escalar ambientes distribuídos de cache na memória na nuvem da AWS.
+ O [Amazon Kinesis Data Streams](https://docs.aws.amazon.com/streams/latest/dev/introduction.html) ajuda a coletar e processar grandes fluxos de registros de dados em tempo real.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda você a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ O [Amazon Simple Queue Service (Amazon SQS)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) fornece uma fila hospedada segura, durável e disponível que ajuda a integrar e desacoplar sistemas e componentes de software distribuídos.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

**Código **

Esse padrão fornece um exemplo de arquitetura para um sistema VaR na Nuvem AWS e descreve como você pode usar funções do Lambda para cálculos de VaR. Para criar suas funções do Lambda, consulte os exemplos de código na [documentação do Lambda](https://docs.aws.amazon.com/lambda/latest/dg/service_code_examples.html). Para obter ajuda, entre em contato com o [AWS Professional Services](https://pages.awscloud.com/AWS-Professional-Services.html).

## Práticas recomendadas
<a name="calculate-value-at-risk-var-by-using-aws-services-best-practices"></a>
+ Mantenha cada tarefa de computação do VaR tão pequena e leve quanto possível. Experimente diferentes números de negociações em cada tarefa de computação para ver qual delas é a mais otimizada para tempo e custo de computação.
+ Armazene objetos reutilizáveis na Amazon. ElastiCache Use uma estrutura como o Apache Arrow para reduzir a serialização e a desserialização.
+ Considere a limitação de tempo do Lambda. Se você acha que suas tarefas de computação podem exceder 15 minutos, tente dividi-las em tarefas menores para evitar o tempo limite do Lambda. Se isso não for possível, considere uma solução de orquestração de contêiner com o AWS Fargate, o Amazon Elastic Container Service (Amazon ECS) e o Amazon Elastic Kubernetes Service (Amazon EKS).

## Épicos
<a name="calculate-value-at-risk-var-by-using-aws-services-epics"></a>

### Fluxo comercial para o sistema de risco
<a name="trade-flow-to-risk-system"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Comece a escrever negociações.  | Negociações novas, liquidadas ou parcialmente liquidadas são gravadas do sistema de gerenciamento de pedidos em um fluxo de risco. Esse padrão usa o Amazon Kinesis como serviço de streaming gerenciado. O hash do ticker da ordem comercial é usado para colocar ordens comerciais em vários fragmentos. | Amazon Kinesis | 

### Execute funções do Lambda para processamento de pedidos
<a name="run-lambda-functions-for-order-processing"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Inicie o processamento de riscos com o Lambda. | Execute uma função do AWS Lambda para os novos pedidos. Com base no número de pedidos de negociação pendentes, o Lambda será escalado automaticamente. Cada instância do Lambda tem um ou mais pedidos e recupera a posição mais recente de cada ticker da Amazon. ElastiCache (Você pode usar uma ID CUSIP, um nome de curva ou um nome de índice para outros produtos derivados financeiros como uma chave para armazenar e recuperar dados.) ElasticCache Em ElastiCache, a posição total (quantidade) e o par de valores-chave < *ticker*, *posição líquida >, em que a posição* *líquida* é o fator de escala, são atualizados uma vez para cada ticker.  | Amazon Kinesis, AWS Lambda, Amazon ElastiCache | 

### Escreva mensagens para cada ticker na fila
<a name="write-messages-for-each-ticker-into-queue"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Grave mensagens consolidadas na fila de risco. | Escrever a mensagem em uma fila. Esse padrão usa o Amazon SQS como um serviço gerenciado de filas. Uma única instância do Lambda pode receber um pequeno lote de ordens comerciais a qualquer momento, mas gravará somente uma única mensagem para cada ticker no Amazon SQS. Um fator de escala é calculado: (*posição líquida antiga* \$1 *posição atual*) */posição líquida antiga*. | Amazon SQS, AWS Lambda | 

### Invoque o mecanismo de risco
<a name="invoke-risk-engine"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Inicie os cálculos de risco. | A função do Lambda para o mecanismo de risco do lambda é invocada. Cada posição é processada por uma única função do Lambda. No entanto, para fins de otimização, cada função do Lambda pode processar várias mensagens do Amazon SQS. | Amazon SQS, AWS Lambda | 

### Recupere resultados de risco do cache
<a name="retrieve-risk-results-from-cache"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Recupere e atualize o cache de riscos. | O Lambda recupera a posição líquida atual de cada ticker de. ElastiCache Ele também recupera uma matriz de lucros e perdas (PnL) do VaR para cada ticker de. ElastiCache Se a matriz PnL já existir, a função do Lambda atualiza a matriz e o VaR com uma escala, que vem da mensagem do Amazon SQS escrita pela função netting Lambda. Se a matriz PnL não estiver ativada ElasticCache, um novo PnL e VaR serão calculados usando dados simulados da série de preços do ticker. | Amazon SQS, AWS Lambda, Amazon ElastiCache | 

### Atualize dados no Elastic Cache e armazene no banco de dados
<a name="update-data-in-elastic-cache-and-store-in-database"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Armazene os resultados de risco. | Depois que os números VaR e PnL são atualizados ElastiCache, uma nova função Lambda é invocada a cada cinco minutos. Essa função lê todos os dados armazenados ElastiCache e os armazena em um banco de dados compatível com o Aurora MySQL e em um bucket do S3. | AWS Lambda, Amazon ElastiCache | 

## Recursos relacionados
<a name="calculate-value-at-risk-var-by-using-aws-services-resources"></a>
+ [Estrutura VaR de Basileia](https://www.bis.org/basel_framework/chapter/DIS/50.htm)

# Configurar o acesso entre contas para um Catálogo de Dados do AWS Glue compartilhado usando o Amazon Athena
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena"></a>

*Denis Avdonin, Amazon Web Services*

## Resumo
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena-summary"></a>

Esse padrão fornece step-by-step instruções, incluindo exemplos de políticas do AWS Identity and Access Management (IAM), para configurar o compartilhamento entre contas de um conjunto de dados armazenado em um bucket do Amazon Simple Storage Service (Amazon S3) usando o AWS Glue Data Catalog. Você pode armazenar o conjunto de dados em um bucket do S3. Os metadados são coletados por um crawler do AWS Glue e colocados no catálogo de dados do AWS Glue. O bucket do S3 e o Catálogo de Dados do AWS Glue residem em uma conta da AWS chamada de *conta de dados*. Você pode fornecer acesso às entidades principais do IAM em outra conta da AWS chamada de *conta do consumidor*. Os usuários podem consultar os dados na conta do consumidor usando o mecanismo de consulta de tecnologia sem servidor Amazon Athena.

## Pré-requisitos e limitações
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena-prereqs"></a>

**Pré-requisitos **
+ Duas [contas da AWS](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-creating.html) ativas.
+ Um [bucket do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) em uma das contas da AWS
+ [Mecanismo do Athena versão 2](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-reference.html#engine-versions-reference-0002)
+ AWS Command Line Interface (AWS CLI)[,](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) instalada [e](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) configurada (ou [AWS](https://aws.amazon.com/cloudshell/) para executar comandos CloudShell da AWS CLI)

**Versões do produto**

Esse padrão funciona somente com a [versão 2 do mecanismo Athena](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-reference-0002.html) e a [versão 3 do mecanismo Athena](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-reference-0003.html). Recomendamos que você faça upgrade para a versão 3 do mecanismo Athena. Se não for possível atualizar da versão 1 para a versão 3 do mecanismo do Athena, siga a abordagem descrita em [Cross-account AWS Glue Data Catalog access with Amazon Athena](https://aws.amazon.com/blogs/big-data/cross-account-aws-glue-data-catalog-access-with-amazon-athena/) no Blog de big data da AWS.

## Arquitetura
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena-architecture"></a>

**Pilha de tecnologias de destino**
+ Amazon Athena
+ Amazon Simple Storage Service (Amazon S3)
+ AWS Glue
+ AWS Identity and Access Management (IAM)
+ AWS Key Management Service (AWS KMS)

O diagrama a seguir mostra uma arquitetura que usa permissões do IAM para compartilhar dados em um bucket do S3 em uma conta da AWS (conta de dados) com outra conta da AWS (conta de consumidor) por meio do Catálogo de Dados do AWS Glue.

![\[Compartilhamento de um conjunto de dados em um bucket do S3 entre uma conta de dados e uma conta consumidora usando o Catálogo de Dados do AWS Glue.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/4ee1d6f5-f8e1-4acb-8a9c-7601c832a87d/images/e73a2b47-c0b1-49f1-be66-9c563c11c9f9.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. A política de bucket do S3 na conta de dados concede permissões para um perfil do IAM na conta do consumidor e para o perfil de serviço do crawler AWS Glue na conta de dados.

1. A política de chaves do AWS KMS na conta de dados concede permissões para o perfil do IAM na conta do consumidor e para o perfil de serviço do crawler AWS Glue na conta de dados.

1. O crawler do AWS Glue na conta de dados descobre o esquema dos dados armazenados no bucket do S3.

1. A política de recursos do Catálogo de Dados do AWS Glue na conta de dados concede acesso ao perfil do IAM na conta do consumidor.

1. Um usuário cria uma referência de catálogo nomeada na conta do consumidor usando um comando da AWS CLI.

1. Uma política do IAM concede a um perfil do IAM na conta do consumidor acesso aos recursos na conta de dados. A política de confiança do perfil do IAM permite que usuários na conta consumidora assumam o perfil do IAM.

1. Um usuário na conta do consumidor assume o perfil do IAM e acessa objetos no catálogo de dados usando consultas SQL.

1.  O mecanismo de tecnologia sem servidor do Athena executa as consultas SQL.

**nota**  
As [práticas recomendadas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) recomendam que você conceda permissões a um perfil do IAM e use [federação de identidades](https://aws.amazon.com/identity/federation/).

## Ferramentas
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena-tools"></a>
+ O [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) é um serviço de consultas interativas que facilita a análise de dados diretamente no Amazon S3 usando SQL padrão.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
+ O [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) é um serviço de extração, transformação e carregamento (ETL) totalmente gerenciado. Ele ajuda você a categorizar de forma confiável, limpar, enriquecer e mover dados de forma confiável entre armazenamento de dados e fluxos de dados.
+ O [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus recursos da AWS, controlando quem está autenticado e autorizado a usá-los.
+ O [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) ajuda você a criar e controlar chaves criptográficas para proteger seus dados.

## Épicos
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena-epics"></a>

### Configurar permissões na conta de dados
<a name="set-up-permissions-in-the-data-account"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Conceder acesso aos dados no bucket do S3. | [Crie uma política de bucket do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html) com base no modelo a seguir e atribua a política ao bucket em que os dados estão armazenados.<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Principal": {<br />                "AWS": [<br />                     "arn:aws:iam::<consumer account id>:role/<role name>",<br />                     "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler"<br />                ]<br />            },<br />            "Action": "s3:GetObject",<br />            "Resource": "arn:aws:s3:::data-bucket/*"<br />        },<br />        {<br />            "Effect": "Allow",<br />            "Principal": {<br />                "AWS": [<br />                      "arn:aws:iam::<consumer account id>:role/<role name>",<br />                      "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler"<br />                ]<br />            },<br />            "Action": "s3:ListBucket",<br />            "Resource": "arn:aws:s3:::data-bucket"<br />        }<br />    ]<br />}</pre>A política de bucket concede permissões para o perfil do IAM na conta do consumidor e para o perfil de serviço do crawler AWS Glue na conta de dados. | Administrador de nuvem | 
| (Se necessário) Conceder acesso à chave de criptografia de dados. | Se o bucket do S3 for criptografado por uma chave do AWS KMS, conceda permissão `kms:Decrypt` na chave para o perfil do IAM na conta do consumidor e para o perfil de serviço do crawler do AWS Glue na conta de dados.Atualize a [política de chave](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) com a seguinte instrução:<pre>{<br />    "Effect": "Allow",<br />    "Principal": {<br />        "AWS": [<br />            "arn:aws:iam::<consumer account id>:role/<role name>",<br />            "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler"<br />        ]<br />    },<br />    "Action": "kms:Decrypt",<br />    "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>"<br />}</pre> | Administrador de nuvem | 
| Conceder ao crawler o acesso aos dados. | Anexe a seguinte política do IAM ao perfil de serviço do crawler:<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Action": "s3:GetObject",<br />            "Resource": "arn:aws:s3:::data-bucket/*"<br />        },<br />        {<br />            "Effect": "Allow",<br />            "Action": "s3:ListBucket",<br />            "Resource": "arn:aws:s3:::data-bucket"<br />        }<br />    ]<br />} </pre> | Administrador de nuvem | 
| (Se necessário) Conceder ao crawler o acesso à chave de criptografia de dados. | Se o bucket do S3 for criptografado por uma chave do AWS KMS, conceda a permissão `kms:Decrypt` sobre a chave para o perfil de serviço do crawler, anexando a ela a seguinte política:<pre>{<br />    "Effect": "Allow",<br />    "Action": "kms:Decrypt",<br />    "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>"<br />}</pre> | Administrador de nuvem | 
| Conceder ao perfil do IAM na conta do consumidor e ao crawler o acesso ao catálogo de dados. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena.html)<pre>{<br />    "Version" : "2012-10-17",<br />    "Statement" : [ <br />        {<br />            "Effect" : "Allow",<br />            "Principal" : {<br />                "AWS" : [<br />                     "arn:aws:iam::<consumer account id>:role/<role name>",<br />                    "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler"<br />                ]<br />            },<br />            "Action" : "glue:*",<br />            "Resource" : [ <br />                 "arn:aws:glue:<region>:<data account id>:catalog", <br />                 "arn:aws:glue:<region>:<data account id>:database/*", <br />                 "arn:aws:glue:<region>:<data account id>:table/*" <br />            ]<br />        } <br />    ]<br />}</pre>Essa política permite todas as ações do AWS Glue em todos os bancos de dados e tabelas na conta de dados. Você pode personalizar a política para conceder somente as permissões necessárias aos consumidores das entidades principais. Por exemplo, você pode fornecer acesso somente de leitura a tabelas ou visualizações específicas em um banco de dados. | Administrador de nuvem | 

### Acessar os dados da conta do consumidor
<a name="access-data-from-the-consumer-account"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar uma referência nomeada para o catálogo de dados. | Para criar uma referência de catálogo de dados nomeada, use [CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/getting-started.html)ou uma AWS CLI instalada localmente para executar o seguinte comando:<pre>aws athena create-data-catalog --name <shared catalog name> --type GLUE --parameters catalog-id=<data account id></pre> | Administrador de nuvem | 
| Conceder ao perfil do IAM na conta do consumidor o acesso aos dados. | Anexe a política a seguir ao perfil do IAM na conta do consumidor para conceder ao perfil o acesso entre contas aos dados:<pre>{<br />     "Version": "2012-10-17",		 	 	 <br />     "Statement": [<br />        {<br />             "Effect": "Allow",<br />             "Action": "s3:GetObject",<br />             "Resource": "arn:aws:s3:::data-bucket/*"<br />        },<br />        {<br />             "Effect": "Allow",<br />             "Action": "s3:ListBucket",<br />             "Resource": "arn:aws:s3:::data-bucket"<br />        },<br />        {<br />            "Effect": "Allow",<br />            "Action": "glue:*",<br />            "Resource": [<br />                 "arn:aws:glue:<region>:<data account id>:catalog",<br />                 "arn:aws:glue:<region>:<data account id>:database/*",<br />                 "arn:aws:glue:<region>:<data account id>:table/*"<br />            ]<br />        }<br />    ]<br />}</pre>Em seguida, use o modelo a seguir para especificar quais usuários podem aceitar o perfil do IAM em sua política de confiança:<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />       {<br />            "Effect": "Allow",<br />            "Principal": {<br />                "AWS": "arn:aws:iam::<consumer account id>:user/<IAM user>"<br />            },<br />            "Action": "sts:AssumeRole"<br />        }<br />    ]<br />}</pre>Por fim, conceda permissões ao usuário para assumir o perfil do IAM anexando a mesma política ao grupo de usuários ao qual ele pertence. | Administrador de nuvem | 
| (Se necessário) Conceder ao perfil do IAM na conta do consumidor o acesso à chave de criptografia de dados. | Se o bucket do S3 for criptografado por uma chave do AWS KMS, conceda a permissão `kms:Decrypt` sobre a chave para o perfil do IAM na conta do consumidor, anexando a ela a seguinte política:<pre>{<br />     "Effect": "Allow",<br />     "Action": "kms:Decrypt",<br />     "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>"<br />}</pre> | Administrador de nuvem | 
| Mudar para o perfil do IAM na conta do consumidor para acessar os dados. | Como consumidor de dados, [mude para o perfil do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) para acessar os dados na conta de dados. | Consumidor de dados | 
| Acessar os dados. | Dados da consulta usando o Athena. Por exemplo, abra o editor de consultas do Athena e execute a seguinte consulta:<pre>SELECT *<br />  FROM <shared catalog name>.<database name>.<table name></pre>Em vez de usar uma referência de catálogo nomeada, você também pode se referir ao catálogo pelo seu nome do recurso da Amazon (ARN).Se você usar uma referência de catálogo dinâmica em uma consulta ou visualização, coloque a referência com aspas duplas escapadas (\$1”). Por exemplo:<pre>SELECT * <br />  FROM \"glue:arn:aws:glue:<region>:<data account id>:catalog\".<database name>.<table name></pre>Para obter mais informações, consulte [Acesso entre contas aos catálogos de dados do AWS Glue](https://docs.aws.amazon.com/athena/latest/ug/security-iam-cross-account-glue-catalog-access.html) no Guia do usuário do Amazon Athena. | Consumidor de dados | 

## Recursos relacionados
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena-resources"></a>
+ [Acesso entre contas aos catálogos de dados do AWS Glue](https://docs.aws.amazon.com/athena/latest/ug/security-iam-cross-account-glue-catalog-access.html) (documentação do Athena)
+ [(AWS CLI) (Referência de comandos create-data-catalog da CLI da AWS)](https://docs.aws.amazon.com/cli/latest/reference/athena/create-data-catalog.html)
+ [Acesso entre contas ao Catálogo de Dados do AWS Glue com o Amazon Athena](https://aws.amazon.com/blogs/big-data/cross-account-aws-glue-data-catalog-access-with-amazon-athena/) (blog de big data da AWS)
+ [Práticas recomendadas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) (documentação do IAM)

## Mais informações
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena-additional"></a>

**Usando o Lake Formation como uma alternativa para compartilhamento entre contas**

Você também pode usar o AWS Lake Formation para compartilhar o acesso aos objetos do catálogo do AWS Glue entre contas. O Lake Formation fornece controle de acesso refinado no nível de coluna e linha, controle de acesso baseado em tags, tabelas governadas para transações ACID e outras funcionalidades. Embora o Lake Formation esteja bem integrado ao Athena, ele requer configuração adicional em comparação com a abordagem exclusiva de IAM desse padrão. Recomendamos que você considere a decisão de usar o Lake Formation ou os controles de acesso somente do IAM dentro do contexto mais amplo da arquitetura geral da solução. As considerações incluem quais outros serviços estão envolvidos e como eles se integram às duas abordagens.

# Converta o atributo temporal Teradata NORMALIZE em Amazon Redshift SQL
<a name="convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql"></a>

*Po Hong, Amazon Web Services*

## Resumo
<a name="convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql-summary"></a>

**NORMALIZE** é uma extensão Teradata do padrão ANSI SQL. Quando uma tabela SQL inclui uma coluna que tem um tipo de dados **PERIOD**, **NORMALIZE** combina valores que se encontram ou se sobrepõem nessa coluna para formar um único período que consolida vários valores de períodos individuais. Para usar **NORMALIZE**, pelo menos uma coluna na lista SQL **SELECT** deve ser do tipo de dados **PERIOD** temporal do Teradata. Para obter mais informações sobre **NORMALIZE**, consulte a [Documentação do Teradata](https://docs.teradata.com/reader/2_MC9vCtAJRlKle2Rpb0mA/MIGI5UMEwgERC3Un7tEZ6g). 

O Amazon Redshift não é compatível com **NORMALIZE**, mas você pode implementar essa funcionalidade usando a sintaxe SQL nativa e a função de janela **LAG** no Amazon Redshift. Esse padrão se concentra no uso da extensão **NORMALIZE** do Teradata com a condição **ON MEETS OR OVERLAPS**, que é o formato mais popular. Ele explica como esse atributo funciona no Teradata e como ele pode ser convertido na sintaxe SQL nativa do Amazon Redshift.

## Pré-requisitos e limitações
<a name="convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql-prereqs"></a>

**Pré-requisitos **
+ Conhecimento e experiência básicos em Teradata SQL
+ Conhecimento e experiência no Amazon Redshift

## Arquitetura
<a name="convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql-architecture"></a>

**Pilha de tecnologia de origem**
+ Data warehouse Teradata

**Pilha de tecnologias de destino**
+ banco de dados de origem

**Arquitetura de destino**

Para obter uma arquitetura de alto nível para migrar um banco de dados Teradata para o Amazon Redshift, consulte o padrão [Migrar um banco de dados Teradata para o Amazon Redshift usando agentes de extração de dados da AWS SCT](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-a-teradata-database-to-amazon-redshift-using-aws-sct-data-extraction-agents.html). A migração não converte automaticamente a frase **NORMALIZE** do Teradata para SQL do Amazon Redshift. Você pode converter essa extensão do Teradata seguindo as diretrizes nesse padrão.

## Ferramentas
<a name="convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql-tools"></a>

**Código **

Para ilustrar o conceito e a funcionalidade do **NORMALIZE**, considere a seguinte definição de tabela no Teradata:

```
CREATE TABLE systest.project
     (    emp_id        INTEGER,
          project_name  VARCHAR(20),
          dept_id       INTEGER,
          duration      PERIOD(DATE)
     );
```

Execute o código SQL a seguir para inserir dados de exemplo na tabela:

```
BEGIN TRANSACTION;

INSERT INTO systest.project VALUES (10, 'First Phase', 1000,  PERIOD(DATE '2010-01-10', DATE '2010-03-20') );
INSERT INTO systest.project VALUES (10, 'First Phase', 2000,  PERIOD(DATE '2010-03-20', DATE '2010-07-15') );

INSERT INTO systest.project VALUES (10, 'Second Phase', 2000,  PERIOD(DATE '2010-06-15', DATE '2010-08-18') );
INSERT INTO systest.project VALUES (20, 'First Phase', 2000,  PERIOD(DATE '2010-03-10', DATE '2010-07-20') );

INSERT INTO systest.project VALUES (20, 'Second Phase', 1000,  PERIOD(DATE '2020-05-10', DATE '2020-09-20') );

END TRANSACTION;
```

Resultados:

```
select * from systest.project order by 1,2,3;
 
 *** Query completed. 4 rows found. 4 columns returned.
 *** Total elapsed time was 1 second.
 
     emp_id  project_name              dept_id  duration
-----------  --------------------  -----------  ------------------------
         10  First Phase                  1000  ('10/01/10', '10/03/20')        
         10  First Phase                  2000  ('10/03/20', '10/07/15')
         10  Second Phase                 2000  ('10/06/15', '10/08/18')
         20  First Phase                  2000  ('10/03/10', '10/07/20')
         20  Second Phase                 1000  ('20/05/10', '20/09/20')
```

*Caso de uso do Teradata NORMALIZE*

Agora, adicione a cláusula Teradata **NORMALIZE** SQL à instrução **SELECT**:

```
SELECT NORMALIZE ON MEETS OR OVERLAPS emp_id, duration 
FROM systest.project 
ORDER BY 1,2;
```

Essa operação **NORMALIZE** é executada em uma única coluna (`emp_id`). Pois`emp_id=10`, os três valores de período sobrepostos em duração se aglutinam em um único valor de período, da seguinte forma:  

```
     emp_id  duration
-----------  ------------------------
         10  ('10/01/10', '10/08/18')
         20  ('10/03/10', '10/07/20')
         20  ('20/05/10', '20/09/20')
```

A instrução **SELECT** a seguir executa uma operação **`project_name`NORMALIZE** em e. `dept_id` Observe que a lista **SELECT** contém somente uma coluna **PERIOD**,`duration`.

```
SELECT NORMALIZE project_name, dept_id, duration 
FROM systest.project;
```

Saída:

```
project_name              dept_id  duration
--------------------  -----------  ------------------------
First Phase                  1000  ('10/01/10', '10/03/20')
Second Phase                 1000  ('20/05/10', '20/09/20')
First Phase                  2000  ('10/03/10', '10/07/20')
Second Phase                 2000  ('10/06/15', '10/08/18')
```

*SQL equivalente ao Amazon Redshift*

No momento, o Amazon Redshift não oferece suporte ao tipo de dados **PERIOD** em uma tabela. Em vez disso, você precisa dividir um campo de dados do Teradata **PERIOD** em duas partes:`start_date, end_date`, da seguinte forma:  

```
CREATE TABLE systest.project
     (    emp_id        INTEGER,
          project_name  VARCHAR(20),
          dept_id       INTEGER,
          start_date  DATE,
          end_date    DATE
     );
```

Insira os dados de amostra na tabela:

```
BEGIN TRANSACTION;
 
INSERT INTO systest.project VALUES (10, 'First Phase', 1000,  DATE '2010-01-10', DATE '2010-03-20' );
INSERT INTO systest.project VALUES (10, 'First Phase', 2000,  DATE '2010-03-20', DATE '2010-07-15');
 
INSERT INTO systest.project VALUES (10, 'Second Phase', 2000,  DATE '2010-06-15', DATE '2010-08-18' );
INSERT INTO systest.project VALUES (20, 'First Phase', 2000,  DATE '2010-03-10', DATE '2010-07-20' );
 
INSERT INTO systest.project VALUES (20, 'Second Phase', 1000,  DATE '2020-05-10', DATE '2020-09-20' );
 
END TRANSACTION;
```

Saída:

```
 emp_id | project_name | dept_id | start_date |  end_date
--------+--------------+---------+------------+------------
     10 | First Phase  |    1000 | 2010-01-10 | 2010-03-20
     10 | First Phase  |    2000 | 2010-03-20 | 2010-07-15
     10 | Second Phase |    2000 | 2010-06-15 | 2010-08-18
     20 | First Phase  |    2000 | 2010-03-10 | 2010-07-20
     20 | Second Phase |    1000 | 2020-05-10 | 2020-09-20
(5 rows)
```

Para reescrever a cláusula **NORMALIZE** do Teradata, você pode usar a [função de janela LAG](https://docs.aws.amazon.com/redshift/latest/dg/r_WF_LAG.html) no Amazon Redshift. Esta função retorna os valores para uma linha em determinado deslocamento acima (antes) da linha atual na partição.

Você pode usar a função **LAG** para identificar cada linha que inicia um novo período determinando se um período atende ou se sobrepõe ao período anterior (0 se sim e 1 se não). Quando esse sinalizador é resumido cumulativamente, ele fornece um identificador de grupo que pode ser usado na cláusula externa **Group By** para chegar ao resultado desejado no Amazon Redshift.  

Aqui está um exemplo de instrução SQL do Amazon Redshift que usa **LAG()**:

```
SELECT emp_id, start_date, end_date, 
            (CASE WHEN start_date <= LAG(end_date) OVER (PARTITION BY emp_id ORDER BY start_date, end_date) THEN 0 ELSE 1 END) AS GroupStartFlag
FROM systest.project 
ORDER BY 1,2;
```

Saída:

```
 emp_id | start_date |  end_date  | groupstartflag
--------+------------+------------+----------------
     10 | 2010-01-10 | 2010-03-20 |              1
     10 | 2010-03-20 | 2010-07-15 |              0
     10 | 2010-06-15 | 2010-08-18 |              0
     20 | 2010-03-10 | 2010-07-20 |              1
     20 | 2020-05-10 | 2020-09-20 |              1
(5 rows)
```

A seguinte instrução SQL do Amazon Redshift se normaliza somente na coluna: `emp_id`

```
SELECT T2.emp_id, MIN(T2.start_date) as new_start_date, MAX(T2.end_date) as new_end_date
FROM 
( SELECT T1.*, SUM(GroupStartFlag) OVER (PARTITION BY emp_id ORDER BY start_date ROWS UNBOUNDED PRECEDING) As GroupID
FROM ( SELECT emp_id, start_date, end_date, 
            (CASE WHEN start_date <= LAG(end_date) OVER (PARTITION BY emp_id ORDER BY start_date, end_date) THEN 0 ELSE 1 END) AS GroupStartFlag
FROM systest.project ) T1
) T2
GROUP BY T2.emp_id, T2.GroupID
ORDER BY 1,2;
```

Saída:  

```
 emp_id | new_start_date | new_end_date
--------+----------------+------------------------------------
     10 | 2010-01-10     | 2010-08-18
     20 | 2010-03-10     | 2010-07-20
     20 | 2020-05-10     | 2020-09-20
(3 rows)
```

** **

A seguinte instrução SQL do Amazon Redshift se normaliza nas colunas e: `project_name` `dept_id`

```
SELECT T2.project_name, T2.dept_id, MIN(T2.start_date) as new_start_date, MAX(T2.end_date) as new_end_date
FROM 
( SELECT T1.*, SUM(GroupStartFlag) OVER (PARTITION BY project_name, dept_id ORDER BY start_date ROWS UNBOUNDED PRECEDING) As GroupID
FROM ( SELECT project_name, dept_id, start_date, end_date, 
            (CASE WHEN start_date <= LAG(end_date) OVER (PARTITION BY project_name, dept_id ORDER BY start_date, end_date) THEN 0 ELSE 1 END) AS GroupStartFlag
FROM systest.project ) T1
) T2
GROUP BY T2.project_name, T2.dept_id, T2.GroupID
ORDER BY 1,2,3;
```

Saída:

```
 project_name | dept_id | new_start_date | new_end_date
--------------+---------+----------------+--------------
 First Phase  |    1000 | 2010-01-10     | 2010-03-20
 First Phase  |    2000 | 2010-03-10     | 2010-07-20
 Second Phase |    1000 | 2020-05-10     | 2020-09-20
 Second Phase |    2000 | 2010-06-15     | 2010-08-18
(4 rows)
```

## Épicos
<a name="convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql-epics"></a>

### Converta NORMALIZE em Amazon Redshift SQL
<a name="convert-normalize-to-amazon-redshift-sql"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie o seu código SQL do Teradata. | Use a frase NORMALIZE de acordo com as suas necessidades. | SQL Developer | 
| Converter o código para Amazon Redshift SQL. | Para converter seu código, siga as diretrizes na seção “Ferramentas” desse padrão. | SQL Developer | 
| Executar o código no Amazon Redshift. | Crie sua tabela, carregue dados na tabela e execute seu código no Amazon Redshift. | SQL Developer | 

## Recursos relacionados
<a name="convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql-resources"></a>

**Referências**
+ [Atributo temporal do Teradata NORMALIZE](https://docs.teradata.com/reader/2_MC9vCtAJRlKle2Rpb0mA/MIGI5UMEwgERC3Un7tEZ6g) (documentação do Teradata)
+ [Função de janela LAG](https://docs.aws.amazon.com/redshift/latest/dg/r_WF_LAG.html) (documentação do Amazon Redshift)
+ [Migre para o Amazon Redshift](https://aws.amazon.com/redshift/data-warehouse-migration/) (site da AWS)
+ [Migre um banco de dados Teradata para o Amazon Redshift usando agentes de extração de dados da AWS SCT](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-a-teradata-database-to-amazon-redshift-using-aws-sct-data-extraction-agents.html) (Recomendações da AWS)
+ [Converta o atributo Teradata RESET WHEN para o Amazon Redshift SQL](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/convert-the-teradata-reset-when-feature-to-amazon-redshift-sql.html) (Recomendações da AWS)

**Ferramentas**
+ [AWS Schema Conversion Tool (AWS SCT)](https://aws.amazon.com/dms/schema-conversion-tool/)

**Parceiros**
+ [Parceiros de competência em migração da AWS](https://aws.amazon.com/migration/partner-solutions/#delivery)

# Converter o atributo Teradata RESET WHEN para Amazon Redshift SQL
<a name="convert-the-teradata-reset-when-feature-to-amazon-redshift-sql"></a>

*Po Hong, Amazon Web Services*

## Resumo
<a name="convert-the-teradata-reset-when-feature-to-amazon-redshift-sql-summary"></a>

**RESET WHEN** é um atributo do Teradata usado nas funções de janela analítica do SQL. É uma extensão do padrão ANSI SQL. **RESET WHEN** determina a partição na qual uma função de janela SQL opera com base em alguma condição especificada. Se a condição for avaliada como **TRUE**, uma nova subpartição dinâmica será criada dentro da partição da janela existente. Para obter mais informações sobre **RESET WHEN**, consulte a [Documentação do Teradata](https://docs.teradata.com/reader/1DcoER_KpnGTfgPinRAFUw/b7wL86OoMTPno6hrSPNdDg).

O Amazon Redshift não oferece suporte para **RESET WHEN** em funções de janela SQL. Para implementar essa funcionalidade, você precisa converter **RESET WHEN** para a sintaxe SQL nativa no Amazon Redshift e usar várias funções aninhadas. Esse padrão demonstra como você pode usar o atributo do Teradata **RESET WHEN** e como convertê-lo para a sintaxe SQL do Amazon Redshift. 

## Pré-requisitos e limitações
<a name="convert-the-teradata-reset-when-feature-to-amazon-redshift-sql-prereqs"></a>

**Pré-requisitos **
+ Conhecimento básico do data warehouse Teradata e sua sintaxe SQL
+ Bom entendimento do Amazon Redshift e de sua sintaxe SQL

## Arquitetura
<a name="convert-the-teradata-reset-when-feature-to-amazon-redshift-sql-architecture"></a>

**Pilha de tecnologia de origem**
+ Data warehouse Teradata

**Pilha de tecnologias de destino**
+ banco de dados de origem

**Arquitetura**

Para obter uma arquitetura de alto nível para migrar um banco de dados Teradata para o Amazon Redshift, consulte o padrão [Migrar um banco de dados Teradata para o Amazon Redshift usando agentes de extração de dados do AWS SCT](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-a-teradata-database-to-amazon-redshift-using-aws-sct-data-extraction-agents.html). A migração não converte automaticamente a frase **RESET WHEN** do Teradata em SQL do Amazon Redshift. Você pode converter essa extensão do Teradata seguindo as diretrizes na próxima seção.

## Ferramentas
<a name="convert-the-teradata-reset-when-feature-to-amazon-redshift-sql-tools"></a>

**Código **

Para ilustrar o conceito e a funcionalidade do **RESET WHEN**, considere a seguinte definição de tabela no Teradata:

```
create table systest.f_account_balance                                
( account_id integer NOT NULL,
  month_id integer,
  balance integer )
unique primary index (account_id, month_id);
```

Execute o código SQL a seguir para inserir dados de exemplo na tabela:

```
BEGIN TRANSACTION;
Insert Into systest.f_account_balance values (1,1,60);
Insert Into systest.f_account_balance values (1,2,99);
Insert Into systest.f_account_balance values (1,3,94);
Insert Into systest.f_account_balance values (1,4,90);
Insert Into systest.f_account_balance values (1,5,80);
Insert Into systest.f_account_balance values (1,6,88);
Insert Into systest.f_account_balance values (1,7,90);
Insert Into systest.f_account_balance values (1,8,92);
Insert Into systest.f_account_balance values (1,9,10);
Insert Into systest.f_account_balance values (1,10,60);
Insert Into systest.f_account_balance values (1,11,80);
Insert Into systest.f_account_balance values (1,12,10);
END TRANSACTION;
```

A tabela de amostra tem os seguintes dados:


| 
| 
| account\$1id | month\$1id | balance | 
| --- |--- |--- |
| 1 | 1 | 60 | 
| 1 | 2 | 99 | 
| 1 | 3 | 94 | 
| 1 | 4 | 90 | 
| 1 | 5 | 80 | 
| 1 | 6 | 88 | 
| 1 | 7 | 90 | 
| 1 | 8 | 92 | 
| 1 | 9 | 10 | 
| 1 | 10 | 60 | 
| 1 | 11 | 80 | 
| 1 | 12 | 10 | 

Para cada conta, suponhamos que você queira analisar a sequência de aumentos de saldo mensais consecutivos. Quando o saldo de um mês for menor ou igual ao saldo do mês anterior, o requisito é zerar o contador e reiniciá-lo.

*Caso de uso do RESET WHEN do Teradata*

Para analisar esses dados, o Teradata SQL usa uma função de janela com um agregado aninhado e uma frase **RESET WHEN**, da seguinte forma:

```
SELECT account_id, month_id, balance,
 ( ROW_NUMBER() OVER (PARTITION BY account_id ORDER BY month_id
RESET WHEN balance <= SUM(balance) over (PARTITION BY account_id ORDER BY month_id ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) ) -1 ) as balance_increase
FROM systest.f_account_balance
ORDER BY 1,2;
```

Saída:


| 
| 
|  account\$1id | month\$1id | balance | balance\$1increase | 
| --- |--- |--- |--- |
| 1 | 1 | 60 | 0 | 
| 1 | 2 | 99 | 1 | 
| 1 | 3 | 94 | 0 | 
| 1 | 4 | 90 | 0 | 
| 1 | 5 | 80 | 0 | 
| 1 | 6 | 88 | 1 | 
| 1 | 7 | 90 | 2 | 
| 1 | 8 | 92 | 3 | 
| 1 | 9 | 10 | 0 | 
| 1 | 10 | 60 | 1 | 
| 1 | 11 | 80 | 2 | 
| 1 | 12 | 10 | 0 | 

A consulta é processada da seguinte forma no Teradata:

1. A função agregada **SUM (balance)** calcula a soma de todos os saldos de uma determinada conta em um determinado mês.

1. Verificamos se o saldo em um determinado mês (para uma determinada conta) é maior que o saldo do mês anterior.

1. Se o saldo aumentar, rastreamos um valor de contagem cumulativa. Se a condição **RESET WHEN** avalia como **falsa**, o que significa que o saldo aumentou em meses sucessivos, a contagem continua aumentando.

1. A função analítica ordenada **ROW\$1NUMBER ()** calcula o valor da contagem. Quando atingimos um mês cujo saldo é menor ou igual ao saldo do mês anterior, a condição **RESET WHEN** é avaliada como **verdadeira**. Nesse caso, iniciamos uma nova partição e **ROW\$1NUMBER ()** reinicia a contagem a partir de 1. Usamos **LINHAS ENTRE 1 ANTERIOR E 1 ANTERIOR** para acessar o valor da linha anterior.

1. Subtraímos 1 para garantir que o valor da contagem comece com 0.

*SQL equivalente ao Amazon Redshift*

O Amazon Redshift não oferece suporte para **RESET WHEN** em uma função de janela SQL analítica.  Para produzir o mesmo resultado, você deve reescrever o SQL Teradata usando a sintaxe SQL nativa do Amazon Redshift e subconsultas aninhadas, da seguinte forma: 

```
SELECT account_id, month_id, balance,
   (ROW_NUMBER() OVER(PARTITION BY account_id, new_dynamic_part ORDER BY month_id) -1) as balance_increase
FROM
( SELECT account_id, month_id, balance, prev_balance,
SUM(dynamic_part) OVER (PARTITION BY account_id ORDER BY month_id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) As new_dynamic_part
FROM ( SELECT account_id, month_id, balance,
SUM(balance) over (PARTITION BY account_id ORDER BY month_id ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) as prev_balance,
(CASE When balance <= prev_balance Then 1 Else 0 END) as dynamic_part
FROM systest.f_account_balance ) A
) B
ORDER BY 1,2;
```

Como o Amazon Redshift não oferece suporte a funções de janela aninhadas na cláusula **SELECT** de uma única instrução SQL, você deve usar duas subconsultas aninhadas.
+ Na subconsulta interna (alias A), um indicador de partição dinâmica (**dynamic\$1part**) é criado e preenchido. O **dynamic\$1part** é definido como 1 se o saldo de um mês for menor ou igual ao saldo do mês anterior; caso contrário, será definido como 0. 
+ Na próxima camada (alias B), um atributo **new\$1dynamic\$1part** é gerado como resultado de uma função de janela **SUM**. 
+ Por fim, você adiciona **new\$1dynamic\$1part** como um novo atributo de partição (**partição dinâmica**) ao atributo de partição existente (**account\$1id**) e aplica a mesma função de janela **ROW\$1NUMBER()** usada no Teradata (subtraindo um). 

Depois dessas alterações, o Amazon Redshift SQL gera a mesma saída que o Teradata.

## Épicos
<a name="convert-the-teradata-reset-when-feature-to-amazon-redshift-sql-epics"></a>

### Converter o RESET WHEN para Amazon Redshift SQL
<a name="convert-reset-when-to-amazon-redshift-sql"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar sua função de janela Teradata. | Use agregados aninhados e a frase RESET WHEN de acordo com as suas necessidades. | SQL Developer | 
| Converter o código para Amazon Redshift SQL. | Para converter seu código, siga as diretrizes na seção “Ferramentas” desse padrão. | SQL Developer | 
| Executar o código no Amazon Redshift. | Crie sua tabela, carregue dados na tabela e execute seu código no Amazon Redshift. | SQL Developer | 

## Recursos relacionados
<a name="convert-the-teradata-reset-when-feature-to-amazon-redshift-sql-resources"></a>

**Referências**
+ [Frase RESET WHEN](https://docs.teradata.com/reader/1DcoER_KpnGTfgPinRAFUw/b7wL86OoMTPno6hrSPNdDg) (documentação da Teradata)
+ [Explicação do RESET WHEN](https://stackoverflow.com/questions/53344536/teradata-reset-when-partition-by-order-by) (estouro de pilha)
+ [Migre para o Amazon Redshift](https://aws.amazon.com/redshift/data-warehouse-migration/) (site da AWS)
+ [Migre um banco de dados Teradata para o Amazon Redshift usando agentes de extração de dados do AWS SCT](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-a-teradata-database-to-amazon-redshift-using-aws-sct-data-extraction-agents.html) (Recomendações da AWS)
+ [Converta o atributo temporal Teradata NORMALIZE no Amazon Redshift SQL](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql.html) (Recomendações da AWS)

**Ferramentas**
+ [AWS Schema Conversion Tool (AWS SCT)](https://aws.amazon.com/dms/schema-conversion-tool/)

**Parceiros**
+ [Parceiros de competência em migração da AWS](https://aws.amazon.com/migration/partner-solutions/#delivery)

# Implante e gerencie um data lake de tecnologia sem servidor na Nuvem AWS usando a infraestrutura como código
<a name="deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code"></a>

*Kirankumar Chandrashekar e Abdel Jaidi, Amazon Web Services*

## Resumo
<a name="deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code-summary"></a>

Este padrão descreve como usar a [computação de tecnologia sem servidor](https://aws.amazon.com/serverless/) e a [infraestrutura como código](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html) (IaC) para implementar e administrar um data lake na Nuvem da Amazon Web Services (AWS). Esse padrão é baseado no workshop da [serverless data lake framework (SDLF) (Estrutura de data lake de tecnologia sem servidor)](https://sdlf.workshop.aws/) desenvolvido pela AWS.

A SDLF é uma coleção de recursos reutilizáveis que aceleram a entrega de data lakes corporativos na Nuvem AWS e ajudam a acelerar a implantação na produção. Ela é usada para implementar a estrutura básica de um data lake seguindo as práticas recomendadas.

O SDLF implementa um processo de integração contínua/implantação contínua (CI/CD) em toda a implantação do código e da infraestrutura usando serviços da AWS, como AWS, AWS e CodePipeline AWS. CodeBuild CodeCommit

Esse padrão usa vários serviços de tecnologia sem servidor da AWS para simplificar o gerenciamento de data lake. Isso inclui o Amazon Simple Storage Service (Amazon S3) e o Amazon DynamoDB para armazenamento, o AWS Lambda e o AWS Glue para computação e o Amazon Events, o Amazon Simple Queue Service (Amazon SQS) CloudWatch e o AWS Step Functions para orquestração.

A AWS CloudFormation e os serviços de código da AWS atuam como a camada de IaC para fornecer implantações rápidas e reproduzíveis com operações e administração fáceis.

## Pré-requisitos e limitações
<a name="deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html), instalada e configurada. 
+ Um cliente Git, instalado e configurado.
+ O [workshop da SDLF](https://sdlf.workshop.aws/), aberto em uma janela do navegador da web e pronto para uso. 

## Arquitetura
<a name="deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code-architecture"></a>

![\[Implementação e administração de um data lake na Nuvem AWS.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/f4fc3ad2-1c4f-45ea-bc86-2db13105a173/images/e0cfff30-f0f8-4fc1-8e84-a152ef615c58.png)


 O diagrama de arquitetura ilustra um processo orientado por eventos com as etapas a seguir. 

1. Depois que um arquivo é adicionado ao bucket do S3 de dados brutos, uma notificação de evento do Amazon S3 é colocada em uma fila do SQS. Cada notificação é entregue como um arquivo JSON, que contém metadados como o nome do bucket do S3, a chave do objeto ou o timestamp.

1. Essa notificação é consumida por uma função do Lambda que roteia o evento para o processo correto de extração, transformação e carregamento (ETL) com base nos metadados. A função do Lambda também pode usar configurações contextuais armazenadas em uma tabela do Amazon DynamoDB. Essa etapa permite o desacoplamento e o escalonamento para vários aplicativos no data lake.

1. O evento é roteado para a primeira função do Lambda no processo de ETL, que transforma e move dados da área de dados brutos para a área de preparação do data lake. A primeira etapa é atualizar o catálogo abrangente. Essa é uma tabela do DynamoDB que contém todos os metadados do arquivo do data lake. Cada linha nessa tabela contém metadados operacionais sobre um único objeto armazenado no Amazon S3. Uma chamada síncrona é feita para uma função do Lambda que executa uma transformação leve, que é uma operação computacionalmente barata (como converter um arquivo de um formato para outro), no objeto S3. Como um novo objeto foi adicionado ao bucket temporário do S3, o catálogo abrangente é atualizado e uma mensagem é enviada para a fila do SQS aguardando a próxima fase no ETL.

1. Uma regra de CloudWatch eventos aciona uma função Lambda a cada 5 minutos. Essa função verifica se as mensagens foram entregues à fila SQS da fase ETL anterior. Se uma mensagem foi entregue, a função do Lambda inicia a segunda função do [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/sample-start-workflow.html) no processo de ETL.

1. Uma transformação intensa é então aplicada em um lote de arquivos. Essa transformação pesada é uma operação computacionalmente cara, como uma chamada síncrona para uma tarefa do AWS Glue, uma tarefa do AWS Fargate, uma etapa do Amazon EMR ou um notebook da Amazon. SageMaker Os metadados da tabela são extraídos dos arquivos de saída usando um crawler do AWS Glue, que atualiza o catálogo do AWS Glue. Os metadados do arquivo também são adicionados à tabela abrangente do catálogo no DynamoDB. Por fim, uma etapa de qualidade de dados aproveitando o [Deequ](https://github.com/awslabs/deequ) também é executada.

**Pilha de tecnologia**
+  CloudWatch Eventos da Amazon
+ AWS CloudFormation
+ AWS CodePipeline
+ AWS CodeBuild
+ AWS CodeCommit
+ Amazon DynamoDB
+ AWS Glue
+ AWS Lambda
+ Amazon S3
+ Amazon SQS
+ AWS Step Functions

## Ferramentas
<a name="deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code-tools"></a>
+ [Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html) — CloudWatch Events fornece um fluxo quase em tempo real de eventos do sistema que descrevem mudanças nos recursos da AWS.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) — CloudFormation ajuda a criar e provisionar implantações de infraestrutura da AWS de forma previsível e repetida.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) — CodeBuild é um serviço de construção totalmente gerenciado que compila seu código-fonte, executa testes unitários e produz artefatos prontos para implantação.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) — CodeCommit é um serviço de controle de versão hospedado pela AWS que você pode usar para armazenar e gerenciar ativos de forma privada (como código-fonte e arquivos binários).
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) — CodePipeline é um serviço de entrega contínua que você pode usar para modelar, visualizar e automatizar as etapas necessárias para liberar suas alterações de software continuamente.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html): o DynamoDB é um serviço de banco de dados NoSQL totalmente gerenciado que fornece uma performance rápida e previsível com escalabilidade. 
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html): o AWS Glue é um serviço de ETL totalmente gerenciado que facilita a preparação e o carregamento de dados para análise.
+ [AWS Lambda:](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) o Lambda é compatível com a execução de código sem provisionar ou gerenciar servidores. O Lambda executa o código somente quando necessário e dimensiona automaticamente, desde algumas solicitações por dia até milhares por segundo. 
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html): o Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos altamente escalável. O Amazon S3 pode ser usado para uma ampla variedade de soluções de armazenamento, incluindo sites, aplicativos móveis, backups e data lakes.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html): o AWS Step Functions é um orquestrador de funções de tecnologia sem servidor que facilita o sequenciamento de funções do Lambda na AWS e a multiplicação dos serviços da AWS em aplicativos essenciais para os negócios.
+ [Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html): o Amazon Simple Queue Service (Amazon SQS) é um serviço de enfileiramento de mensagens totalmente gerenciado que ajuda você a desacoplar e escalar microsserviços, sistemas distribuídos e aplicativos de tecnologia sem servidor.
+ [Deequ](https://github.com/awslabs/deequ): o Deequ é uma ferramenta que ajuda você a calcular métricas de qualidade de dados para grandes conjuntos de dados, definir e verificar restrições de qualidade de dados e se manter informado sobre mudanças na distribuição de dados.

**Repositório de código**

O código-fonte e os recursos do SDLF estão disponíveis no [ GitHub repositório do AWS Labs](https://github.com/awslabs/aws-serverless-data-lake-framework/).

## Épicos
<a name="deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code-epics"></a>

### Configurar o CI/CD pipeline para provisionar IaC
<a name="set-up-the-ci-cd-pipeline-to-provision-iac"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure o CI/CD pipeline para gerenciar o IaC para o data lake. | Faça login no Console de Gerenciamento da AWS e siga as etapas da seção [Configuração inicial](https://sdlf.workshop.aws/en/10-deployment/100-setup.html) do workshop da SDLF. Isso cria os CI/CD recursos iniciais, como CodeCommit repositórios, CodeBuild ambientes e CodePipeline pipelines que provisionam e gerenciam a IaC para o data lake. | DevOps engenheiro | 

### Controle de versão do IaC
<a name="version-control-the-iac"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clone o CodeCommit repositório em sua máquina local. | Siga as etapas da seção [Deploying the foundations (Implantação dos fundamentos](https://sdlf.workshop.aws/en/10-deployment/200-foundations.html) do workshop da SDLF. Isso ajuda você a clonar o repositório Git que hospeda o IaC em seu ambiente local. Para obter mais informações, consulte [Conexão com CodeCommit repositórios](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html) na CodeCommit documentação. | DevOps engenheiro | 
| Modifique os CloudFormation modelos. | Use sua estação de trabalho local e um editor de código para modificar os CloudFormation modelos de acordo com seus casos de uso ou requisitos. Confirme-os no repositório Git clonado localmente. Para obter mais informações, consulte Como [trabalhar com CloudFormation modelos da AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html) na CloudFormation documentação da AWS. | DevOps engenheiro | 
| Envie as alterações para o CodeCommit repositório.  | Seu código de infraestrutura agora está sob controle de versão e as modificações em sua base de código são rastreadas. Quando você envia uma alteração para o CodeCommit repositório, a aplica CodePipeline automaticamente à sua infraestrutura e a entrega para CodeBuild. Se você usa a CLI do AWS SAM em CodeBuild, execute os comandos `sam package` e. `sam deploy` Se você usa a AWS CLI, execute os comandos `aws cloudformation package` e `aws cloudformation deploy`. | DevOps engenheiro | 

## Recursos relacionados
<a name="deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code-resources"></a>

**Configurar o CI/CD pipeline para provisionar IaC**
+ [Workshop SDLF: configuração inicial](https://sdlf.workshop.aws/en/10-deployment/100-setup.html)

**Controle de versão do IaC **
+ [Workshop da SDLF: Deploying the foundations (Implantação das fundações)](https://sdlf.workshop.aws/en/10-deployment/200-foundations.html)
+ [Conectando-se a CodeCommit repositórios](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html)
+ [Trabalhando com CloudFormation modelos da AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html)

**Outros recursos**
+ [AWS serverless data analytics pipeline reference architecture (Arquitetura de referência do pipeline de análise de dados sem servidor da AWS)](https://aws.amazon.com/blogs/big-data/aws-serverless-data-analytics-pipeline-reference-architecture/)
+ [Documentação da SDLF](https://sdlf.readthedocs.io/en/latest/)

# Imponha a marcação dos clusters do Amazon EMR no lançamento
<a name="enforce-tagging-of-amazon-emr-clusters-at-launch"></a>

*Priyanka Chaudhary, Amazon Web Services*

## Resumo
<a name="enforce-tagging-of-amazon-emr-clusters-at-launch-summary"></a>

Esse padrão fornece um controle de segurança que garante que os clusters do Amazon EMR sejam marcados quando são criados. 

O Amazon EMR é um serviço da Amazon Web Services (AWS) para processar e analisar grandes quantidades de dados. O Amazon EMR oferece um serviço expansível e de baixa configuração como uma alternativa mais fácil à execução da computação em cluster interna. Você pode usar tags para categorizar os recursos da AWS de diferentes formas, como por finalidade, proprietário ou ambiente. Por exemplo, você pode marcar seus clusters do Amazon EMR atribuindo metadados personalizados a cada cluster. Uma tag consiste em uma chave e um valor que você define. Recomendamos criar um conjunto consistente de tags para atender às necessidades da sua organização. Quando você adiciona uma tag a um cluster do Amazon EMR, a tag também é propagada para cada instância ativa do Amazon Elastic Compute Cloud (Amazon EC2) associada ao cluster. Da mesma forma, quando você remove uma tag de um cluster do Amazon EMR, essa tag também é removida de cada EC2 instância ativa associada.

O controle de detetives monitora as chamadas de API e inicia um evento Amazon CloudWatch Events para o [RunJobFlow](https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html), [AddTags[RemoveTags](https://docs.aws.amazon.com/emr/latest/APIReference/API_RemoveTags.html)](https://docs.aws.amazon.com/emr/latest/APIReference/API_AddTags.html), e. [CreateTags](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html) APIs O evento chama de AWS Lambda, que executa um script do Python. A função Python obtém o ID do cluster do Amazon EMR da entrada JSON do evento e executa as seguintes verificações:
+ Verifique se o cluster do Amazon EMR está configurado com nomes de tag que você especifica.
+ Caso contrário, envie uma notificação do Amazon Simple Notification Service (Amazon SNS) ao usuário com as informações relevantes: nome do cluster do Amazon EMR, detalhes da violação, região da AWS, conta da AWS e o nome do recurso da Amazon (ARN) do Lambda, de onde essa notificação foi originada.

## Pré-requisitos e limitações
<a name="enforce-tagging-of-amazon-emr-clusters-at-launch-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Um bucket do Amazon Simple Storage Service (Amazon S3) para carregar o código do Lambda fornecido. Ou você pode criar um bucket do S3 para essa finalidade, conforme descrito na seção *Épicos *.
+ Um endereço de e-mail ativo no qual você deseja receber notificações de violação.
+ Uma lista de tags obrigatórias que você deseja verificar.

**Limitações**
+ Esse controle de segurança é regional. Você deve implantá-lo em cada região da AWS que você deseja monitorar.

**Versões do produto**
+ Versão 4.8.0 e posterior do Amazon EMR.

## Arquitetura
<a name="enforce-tagging-of-amazon-emr-clusters-at-launch-architecture"></a>

**Arquitetura de fluxo de trabalho**

![\[Lançamento do cluster, uso do monitoramento APIs, geração de eventos, chamada da função Lambda, notificação enviada.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/1a4fc0f8-b0c9-4391-9c79-9eb3898d6ecb/images/0d95c414-69d1-4f29-a9e7-09f202e27014.png)


**Automação e escala**
+ Se você estiver usando o [AWS Organizations](https://aws.amazon.com/organizations/), poderá usar o [AWS Cloudformation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) para implantar esse modelo em várias contas que você deseja monitorar.

## Ferramentas
<a name="enforce-tagging-of-amazon-emr-clusters-at-launch-tools"></a>

**Serviços da AWS**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) — CloudFormation A AWS ajuda você a modelar e configurar seus recursos da AWS, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida. Você pode usar um modelo para descrever seus recursos e as dependências deles, além de inicializá-los e configurá-los juntos como uma pilha, em vez de gerenciar recursos individualmente. Você pode gerenciar e provisionar pilhas em várias contas e regiões da AWS.
+ [Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html) — A Amazon CloudWatch Events fornece um fluxo quase em tempo real de eventos do sistema que descrevem mudanças nos recursos da AWS.
+ [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html): o Amazon EMR é um serviço web que simplifica a execução de estruturas de big data e o processamento eficiente de grandes quantidades de dados. 
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html): o AWS Lambda é um serviço de computação que permite a execução do código sem provisionar ou gerenciar servidores. O Lambda executa o código somente quando necessário e dimensiona automaticamente, desde algumas solicitações por dia até milhares por segundo. 
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html): o Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos. Você pode utilizar o Amazon S3 para armazenar e recuperar qualquer volume de dados, a qualquer momento, de qualquer lugar na web.
+ [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html): o Amazon Simple Notification Service (Amazon SNS) coordena e gerencia a entrega ou o envio de mensagens entre publicadores e clientes, incluindo servidores da Web e endereços de e-mail. Os assinantes recebem todas as mensagens publicadas nos tópicos para os quais eles se inscrevem, e todos os assinantes em um tópico recebem as mesmas mensagens.

**Código **

Esse padrão inclui os seguintes anexos:
+ `EMRTagValidation.zip`: o código Lambda para o controle de segurança.
+ `EMRTagValidation.yml`— O CloudFormation modelo que configura o evento e a função Lambda.

## Épicos
<a name="enforce-tagging-of-amazon-emr-clusters-at-launch-epics"></a>

### Configurar o bucket do S3
<a name="set-up-the-s3-bucket"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Definir o bucket do S3. | No [console do Amazon S3](https://console.aws.amazon.com/s3/), escolha ou crie um bucket do S3 para hospedar o arquivo .zip do código Lambda. O bucket do S3 deve estar na mesma região da AWS que o cluster do Amazon EMR que você deseja monitorar. Um nome de bucket do Amazon S3 é globalmente exclusivo, e o namespace é compartilhado por todas as contas da AWS. O nome do bucket do S3 não pode incluir barras iniciais. | Arquiteto de nuvem | 
| Fazer o upload do código do Lambda. | Faça upload do arquivo .zip do código do Lambda fornecido na seção *Anexos* no bucket do S3.                                               | Arquiteto de nuvem | 

### Implemente o CloudFormation modelo da AWS
<a name="deploy-the-aws-cloudformation-template"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Inicie o CloudFormation modelo da AWS. | Abra o [ CloudFormation console da AWS](https://console.aws.amazon.com/cloudformation/.) na mesma região da AWS do seu bucket do S3 e implante o modelo. Para obter mais informações sobre a implantação de CloudFormation modelos da AWS, consulte [Como criar uma pilha no CloudFormation console da AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) na CloudFormation documentação. | Arquiteto de nuvem | 
| Preencher os parâmetros no modelo. | Ao iniciar o modelo, você será solicitado a fornecer as seguintes informações:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/enforce-tagging-of-amazon-emr-clusters-at-launch.html) | Arquiteto de nuvem | 

### Confirmar a assinatura
<a name="confirm-the-subscription"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Confirmar a assinatura. | Quando o CloudFormation modelo é implantado com sucesso, ele envia um e-mail de assinatura para o endereço de e-mail que você forneceu. Você deve confirmar essa assinatura de e-mail para começar a receber notificações de violação. | Arquiteto de nuvem | 

## Recursos relacionados
<a name="enforce-tagging-of-amazon-emr-clusters-at-launch-resources"></a>
+ [Guia do desenvolvedor do AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)
+ [Como colocar tags nos clusters do Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html)

## Anexos
<a name="attachments-1a4fc0f8-b0c9-4391-9c79-9eb3898d6ecb"></a>

Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo: [ attachment.zip](samples/p-attach/1a4fc0f8-b0c9-4391-9c79-9eb3898d6ecb/attachments/attachment.zip)

# Garanta que o registro do Amazon EMR no Amazon S3 esteja habilitado no lançamento
<a name="ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch"></a>

*Priyanka Chaudhary, Amazon Web Services*

## Resumo
<a name="ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch-summary"></a>

Esse padrão fornece um controle de segurança que monitora a configuração de log para clusters do Amazon EMR executados na Amazon Web Services (AWS).

O Amazon EMR é uma ferramenta da AWS para processamento e análise de big data. O Amazon EMR oferece o serviço expansível de baixa configuração como alternativa à execução da computação em cluster interna. O Amazon EMR fornece dois tipos de clusters EMR.
+ **Clusters transitórios do Amazon EMR**: os clusters transitórios do Amazon EMR são desligados automaticamente e param de incorrer em custos quando o processamento é concluído.
+ **Clusters persistentes do Amazon EMR**: os clusters persistentes do Amazon EMR continuam em execução após a conclusão do trabalho de processamento de dados.

Tanto o Amazon EMR como o Hadoop produzem arquivos de log que informam o status no cluster. Por padrão, eles são gravados no nó principal no diretório **mnt/var/log//.** Dependendo de como você configura o cluster ao iniciá-lo, também poderá salvar esses logs no Amazon Simple Storage Service (Amazon S3) e visualizá-los por meio da ferramenta de depuração gráfica. Observe que o registro em log do Amazon S3 só pode ser especificado quando o cluster é iniciado. Com essa configuração, os registros são enviados do nó primário para o local do Amazon S3 a cada cinco minutos. Para clusters transitórios, o registro no Amazon S3 é importante porque os clusters desaparecem quando o processamento é concluído, e esses arquivos de log podem ser usados para depurar qualquer trabalho com falha.

O padrão usa um CloudFormation modelo da AWS para implantar um controle de segurança que monitora as chamadas de API e inicia o Amazon CloudWatch Events em "”RunJobFlow. O gatilho invoca o AWS Lambda, que executa um script Python. A função do Lambda recupera o ID do cluster EMR da entrada JSON do evento e também verifica se há um URI de log do Amazon S3. Se um URI do Amazon S3 não for encontrado, a função do Lambda enviará uma notificação do Amazon Simple Notiﬁcation Service (Amazon SNS) detalhando o nome do cluster do EMR, os detalhes da violação, a região da AWS, a conta da AWS e o nome do recurso da Amazon (ARN) do Lambda do qual a notificação foi originada.

## Pré-requisitos e limitações
<a name="ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Um bucket S3 para o arquivo .zip do código Lambda
+ Um endereço de e-mail no qual você deseja receber a notificação de violação

**Limitações**
+ Esse controle de detetive é regional e deve ser implantado nas regiões da AWS que você pretende monitorar.

**Versões do produto**
+ Versão 4.8.0 e posterior do Amazon EMR

## Arquitetura
<a name="ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch-architecture"></a>

**Pilha de tecnologias de destino**
+ Evento Amazon CloudWatch Events
+ Amazon EMR
+ Função do Lambda
+ Bucket do S3
+ Amazon SNS

**Arquitetura de destino**

![\[Fluxo de trabalho para garantir que o registro em log do Amazon EMR no Amazon S3 esteja habilitado no momento da inicialização.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/079af32e-0418-4bb2-bc20-c67ea5ac3b6e/images/3ba125cb-018a-4ace-838f-8c20992ecc20.png)


**Automação e escala**
+ Se você estiver usando o AWS Organizations, poderá usar CloudFormation StackSets a [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) para implantar esse modelo em várias contas que você deseja monitorar.

## Ferramentas
<a name="ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch-tools"></a>

**Ferramentas**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) — CloudFormation A AWS ajuda você a modelar e configurar recursos da AWS usando a infraestrutura como código.
+ [Eventos do AWS Cloudwatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html) — O AWS CloudWatch Events fornece um fluxo quase em tempo real de eventos do sistema que descrevem mudanças nos recursos da AWS.
+ [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html): o Amazon EMR é uma plataforma de cluster gerenciada que simplifica a execução de frameworks de Big Data.
+ [AWS Lambda](https://aws.amazon.com/lambda/): o AWS Lambda oferece suporte à execução de código sem provisionar ou gerenciar servidores. O Lambda executa o código somente quando necessário e dimensiona automaticamente, desde algumas solicitações por dia até milhares por segundo.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html): o Amazon S3 é uma interface de serviços da web que você pode usar para armazenar e recuperar qualquer quantidade de dados, a qualquer momento, em qualquer lugar da web.
+ [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html): o Amazon SNS é um serviço da Web que coordena e gerencia a entrega ou o envio de mensagens entre editores e clientes, incluindo servidores da Web e endereços de e-mail.

**Código **
+ Um arquivo .zip do projeto está disponível como anexo.

## Épicos
<a name="ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch-epics"></a>

### Definir o bucket do S3
<a name="define-the-s3-bucket"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Definir o bucket do S3. | Para hospedar o arquivo .zip do código Lambda, escolha ou crie um bucket do S3 com um nome exclusivo que não contenha barras iniciais. Um nome de bucket do S3 é globalmente exclusivo, e o namespace é compartilhado por todas as contas da AWS. Seu bucket do S3 precisa estar na mesma região da AWS do cluster do Amazon EMR que está sendo avaliado. | Arquiteto de nuvem | 

### Carregar o código do Lambda para o bucket do S3
<a name="upload-the-lambda-code-to-the-s3-bucket"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Carregue o código do Lambda para o bucket do S3. | Faça upload do arquivo .zip do código Lambda fornecido na seção “Anexos” para o bucket do S3. O bucket do S3 deve estar na mesma região da que o cluster do Amazon EMR que está sendo avaliado. | Arquiteto de nuvem | 

### Implemente o CloudFormation modelo da AWS
<a name="deploy-the-aws-cloudformation-template"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implante o CloudFormation modelo da AWS. | No CloudFormation console da AWS, na mesma região do seu bucket do S3, implante o CloudFormation modelo da AWS que é fornecido como anexo a esse padrão. No próximo épico, forneça os valores para os parâmetros. Para obter mais informações sobre a implantação de CloudFormation modelos da AWS, consulte a seção “Recursos relacionados”. | Arquiteto de nuvem | 

### Preencha os parâmetros no CloudFormation modelo da AWS
<a name="complete-the-parameters-in-the-aws-cloudformation-template"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Dê um nome ao bucket do S3. | Em seguida, informe o nome do bucket do S3 que você criou no primeiro épico. | Arquiteto de nuvem | 
| Forneça a chave do Amazon S3. | Forneça a localização do arquivo .zip do código Lambda em seu bucket do S3, sem barras iniciais (por exemplo, <diretório>/<nome do arquivo>.zip). | Arquiteto de nuvem | 
| Forneça um endereço de e-mail. | Forneça um endereço de e-mail ativo para receber notificações do Amazon SNS. | Arquiteto de nuvem | 
| Defina o nível de registro em log. | Defina o nível de registro e a frequência da sua função do Lambda. O termo “Info” designa mensagens informativas detalhadas a respeito do andamento da aplicação. O termo “Error” representa eventos de erro que podem ocorrer sem interromper o funcionamento da aplicação. O termo “Warning” indica situações potencialmente prejudiciais. | Arquiteto de nuvem | 

### Confirmar a assinatura
<a name="confirm-the-subscription"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Confirmar a assinatura. | Quando o modelo é implantado com sucesso, ele envia uma mensagem de e-mail de assinatura para o endereço de e-mail fornecido. Você deve confirmar essa assinatura de e-mail para receber notificações de violação. | Arquiteto de nuvem | 

## Recursos relacionados
<a name="ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch-resources"></a>
+ [AWS Lambda](https://aws.amazon.com/lambda/)
+ [Registro em log no Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-debugging.html)
+ [Implantação de modelos da AWS CloudFormation ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)

## Anexos
<a name="attachments-079af32e-0418-4bb2-bc20-c67ea5ac3b6e"></a>

Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo:[ attachment.zip](samples/p-attach/079af32e-0418-4bb2-bc20-c67ea5ac3b6e/attachments/attachment.zip)

# Gerar dados de teste usando um trabalho do AWS Glue e Python
<a name="generate-test-data-using-an-aws-glue-job-and-python"></a>

*Moinul Al-Mamun, Amazon Web Services*

## Resumo
<a name="generate-test-data-using-an-aws-glue-job-and-python-summary"></a>

Este padrão mostra como gerar de forma rápida e fácil milhões de arquivos de exemplo simultaneamente criando um trabalho do AWS Glue escrito em Python. Os arquivos de exemplo são armazenados em um bucket do Amazon Simple Storage Service (Amazon S3). A capacidade de gerar rapidamente um grande número de arquivos de exemplo é importante para testar ou avaliar serviços na Nuvem AWS. Por exemplo, você pode testar o desempenho das DataBrew tarefas do AWS Glue Studio ou do AWS Glue realizando análises de dados em milhões de arquivos pequenos em um prefixo do Amazon S3.

Embora você possa usar outros serviços da AWS para gerar conjuntos de dados de exemplo, recomendamos que você use o AWS Glue. Você não precisa gerenciar nenhuma infraestrutura porque o AWS Glue é um serviço de processamento de dados com tecnologia sem servidor. Você pode simplesmente trazer seu código e executá-lo em um cluster do AWS Glue. Além disso, o AWS Glue provisiona, configura e escala os recursos necessários para executar seus trabalhos. Você paga apenas pelos recursos que o seu trabalho utilizar quando estiver sendo executado.

## Pré-requisitos e limitações
<a name="generate-test-data-using-an-aws-glue-job-and-python-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ AWS Command Line Interface (AWS CLI), [instalada](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [configurada](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) para sua conta da AWS

**Versões do produto**
+ Python 3.9
+ AWS CLI versão 2

**Limitações**

O número máximo de trabalhos do AWS Glue por Trigger é 50. Para obter mais informações, consulte [Endpoints e cotas do AWS Glue](https://docs.aws.amazon.com/general/latest/gr/glue.html).

## Arquitetura
<a name="generate-test-data-using-an-aws-glue-job-and-python-architecture"></a>

O diagrama a seguir mostra um exemplo de arquitetura centrada em um trabalho do AWS Glue que grava sua saída (ou seja, arquivos de exemplo) em um bucket do S3.

![\[O fluxo de trabalho demonstra que a AWS CLI inicia um trabalho do AWS Glue e envia a saída para um bucket do S3.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/f35943e8-3b2b-410e-a3f0-05e1ebd357d0/images/452ccbda-71f2-42b8-976d-bcc968bb1dab.png)


O diagrama inclui o seguinte fluxo de trabalho:

1. Você usa a AWS CLI, o Console de gerenciamento da AWS ou uma API para iniciar o trabalho do AWS Glue. A AWS CLI ou API permite que você automatize a paralelização do trabalho invocado e reduza o runtime para gerar arquivos de exemplo.

1. O trabalho do AWS Glue gera conteúdo de arquivo aleatoriamente, converte o conteúdo em formato CSV e, em seguida, armazena o conteúdo como um objeto do Amazon S3 sob um prefixo comum. Cada arquivo tem menos de um kilobyte. O trabalho do AWS Glue aceita dois parâmetros de trabalho definidos pelo usuário: `START_RANGE` e `END_RANGE`. Você pode usar esses parâmetros para definir os nomes dos arquivos e o número de arquivos gerados no Amazon S3 por cada execução de trabalho. Você pode executar várias instâncias desse trabalho em paralelo (por exemplo, 100 instâncias).

## Ferramentas
<a name="generate-test-data-using-an-aws-glue-job-and-python-tools"></a>
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
+ A ‭[AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)‭ é uma ferramenta de código aberto que permite que você interaja com serviços da AWS usando comandos no shell da linha de comando.
+ O [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) é um serviço de extração, transformação e carregamento (ETL) totalmente gerenciado. Ele ajuda você a categorizar de forma confiável, limpar, enriquecer e mover dados de forma confiável entre armazenamento de dados e fluxos de dados.
+ O [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus recursos da AWS, controlando quem está autenticado e autorizado a usá-los.

## Práticas recomendadas
<a name="generate-test-data-using-an-aws-glue-job-and-python-best-practices"></a>

Considere as seguintes práticas recomendadas do AWS Glue ao implementar esse padrão:
+ **Use o tipo certo de processamento do AWS Glue para reduzir custos.** Recomendamos que você entenda as diferentes propriedades dos tipos de trabalhadores e, em seguida, escolha o tipo de trabalhador certo para sua workload com base nos requisitos de CPU e memória. Para esse padrão, recomendamos que você use um trabalho de shell do Python como seu tipo de trabalho para minimizar a DPU e reduzir os custos. Para obter mais informações, consulte [Adicionar trabalhos no AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/add-job.html), no Guia do desenvolvedor do AWS Glue.
+ **Use o limite correto de simultaneidade para escalar seu trabalho.** Recomendamos que você baseie a simultaneidade máxima do seu trabalho no AWS Glue na sua necessidade de tempo e no número necessário de arquivos.
+ **Comece a gerar um pequeno número de arquivos primeiro.** Para reduzir custos e economizar tempo ao criar seus trabalhos do AWS Glue, comece com um pequeno número de arquivos (como 1.000). Isso pode facilitar a solução de problemas. Se a geração de um pequeno número de arquivos for bem-sucedida, você poderá escalar para um número maior de arquivos.
+ **Execute localmente primeiro.** Para reduzir custos e economizar tempo ao criar seus trabalhos do AWS Glue, inicie o desenvolvimento localmente e teste seu código. Para obter instruções sobre como configurar um contêiner do Docker que possa ajudar você a escrever trabalhos de extração, transformação e carregamento (ETL) do AWS Glue em um shell e em um ambiente de desenvolvimento integrado (IDE), consulte a postagem [Desenvolver trabalhos de ETL do AWS Glue localmente usando um contêiner](https://aws.amazon.com/blogs/big-data/developing-aws-glue-etl-jobs-locally-using-a-container/) do blog AWS Big Data.

Para obter mais práticas recomendadas do AWS Glue, consulte [Práticas recomendadas](https://docs.aws.amazon.com/prescriptive-guidance/latest/serverless-etl-aws-glue/best-practices.html) na documentação do AWS Glue.

## Épicos
<a name="generate-test-data-using-an-aws-glue-job-and-python-epics"></a>

### Criar um bucket do S3 e um perfil do IAM de destino
<a name="create-a-destination-s3-bucket-and-iam-role"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar um bucket do S3 para armazenar os arquivos. | Crie um [bucket do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) e um [prefixo](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html) dentro dele.Este padrão usa a localização `s3://{your-s3-bucket-name}/small-files/` apenas para fins de demonstração. | Desenvolvedor de aplicativos | 
| Criar e configurar um perfil do IAM. | Você deve criar um perfil do IAM que seu trabalho do AWS Glue possa usar para gravar em seu bucket do S3.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/generate-test-data-using-an-aws-glue-job-and-python.html) | Desenvolvedor de aplicativos | 

### Criar e configurar um trabalho do AWS Glue para lidar com execuções simultâneas
<a name="create-and-configure-an-aws-glue-job-to-handle-concurrent-runs"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar um trabalho do AWS Glue. | Você deve criar um trabalho do AWS Glue que gere seu conteúdo e o armazene em um bucket do S3.Crie um [trabalho do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/console-jobs.html) e, em seguida, configure seu trabalho seguindo as seguintes etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/generate-test-data-using-an-aws-glue-job-and-python.html) | Desenvolvedor de aplicativos | 
| Atualizar o código do trabalho. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/generate-test-data-using-an-aws-glue-job-and-python.html) | Desenvolvedor de aplicativos | 

### Execute o trabalho do AWS Glue na linha de comando ou no console
<a name="run-the-aws-glue-job-from-the-command-line-or-console"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Execute o trabalho do AWS Glue na linha de comando. | Para executar seu trabalho do AWS Glue a partir da AWS CLI, execute o seguinte comando usando seus valores:<pre>cmd:~$ aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"0","--END_RANGE":"1000000"}'<br />cmd:~$ aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1000000","--END_RANGE":"2000000"}'</pre>Para obter instruções sobre como executar o trabalho do AWS Glue usando o Console de Gerenciamento da AWS, consulte a história *Execute o trabalho do AWS Glue no Console de Gerenciamento da AWS* neste padrão.Recomendamos usar a AWS CLI para executar trabalhos do AWS Glue se você desejar realizar diversas execuções simultaneamente com parâmetros diferentes, como mostrado no exemplo acima.Para gerar todos os comandos da AWS CLI necessários para obter um número definido de arquivos usando um determinado fator de paralelização, execute o seguinte código bash (usando os seus valores):<pre># define parameters<br />NUMBER_OF_FILES=10000000;<br />PARALLELIZATION=50; <br /> <br /># initialize<br />_SB=0;<br />      <br /># generate commands<br />for i in $(seq 1 $PARALLELIZATION); <br />do <br />      echo aws glue start-job-run --job-name create_small_files --arguments "'"'{"--START_RANGE":"'$(((NUMBER_OF_FILES/PARALLELIZATION) * (i-1) + _SB))'","--END_RANGE":"'$(((NUMBER_OF_FILES/PARALLELIZATION) * (i)))'"}'"'";<br />      _SB=1; <br />done</pre>Se você usar o script acima, considere o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/generate-test-data-using-an-aws-glue-job-and-python.html) Para obter um exemplo de saída do script acima, consulte a seção *Saída do script de shell* na seção *Informações adicionais* deste padrão. | Desenvolvedor de aplicativos | 
| Execute o trabalho do AWS Glue no Console de Gerenciamento da AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/generate-test-data-using-an-aws-glue-job-and-python.html) | Desenvolvedor de aplicativos | 
| Verificar o status do trabalho do AWS Glue. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/generate-test-data-using-an-aws-glue-job-and-python.html) | Desenvolvedor de aplicativos | 

## Recursos relacionados
<a name="generate-test-data-using-an-aws-glue-job-and-python-resources"></a>

**Referências**
+ [Registry of Open Data on AWS](https://registry.opendata.aws/)
+ [Conjuntos de dados para análise](https://aws.amazon.com/marketplace/solutions/data-analytics/data-sets)
+ [Dados abertos na AWS](https://aws.amazon.com/opendata/)
+ [Adicionar trabalhos no AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/add-job.html)
+ [Conceitos básicos do AWS Glue](https://aws.amazon.com/glue/getting-started/)

**Guias e padrões**
+ [Práticas recomendadas do AWS Glue](https://docs.aws.amazon.com/prescriptive-guidance/latest/serverless-etl-aws-glue/best-practices.html)
+ [Aplicativos de teste de carga](https://docs.aws.amazon.com/prescriptive-guidance/latest/load-testing/welcome.html)

## Mais informações
<a name="generate-test-data-using-an-aws-glue-job-and-python-additional"></a>

**Teste de benchmarking**

Esse padrão foi usado para gerar 10 milhões de arquivos usando diferentes parâmetros de paralelização como parte de um teste de benchmarking. A seguinte tabela mostra a saída do teste:


| 
| 
| Paralelização | Número de arquivos gerados pela execução de um trabalho | Duração do trabalho | Velocidade | 
| --- |--- |--- |--- |
| 10 | 1.000.000 | 6 horas e 40 minutos | Muito lento | 
| 50 | 200.000 | 80 minutos | Moderada | 
| 100 | 100.000 | 40 minutos | Fast | 

Se quiser tornar o processo mais rápido, você pode configurar mais execuções simultâneas na configuração do seu trabalho. Você pode ajustar facilmente a configuração do trabalho com base nos seus requisitos, mas lembre-se de que há um limite de Service Quotas do AWS Glue. Para obter mais informações, consulte [Endpoints e cotas do AWS Glue](https://docs.aws.amazon.com/general/latest/gr/glue.html).

**Saída de script de shell**

O exemplo a seguir mostra a saída do script de shell do histórico de *Execução do trabalho do AWS Glue a partir da linha de comando* nesse padrão.

```
user@MUC-1234567890 MINGW64 ~
  $ # define parameters
  NUMBER_OF_FILES=10000000;
  PARALLELIZATION=50;
  # initialize
  _SB=0;
   
  # generate commands
  for i in $(seq 1 $PARALLELIZATION);
   do
         echo aws glue start-job-run --job-name create_small_files --arguments "'"'{"--START_RANGE":"'$(((NUMBER_OF_FILES/PARALLELIZATION)  (i-1) + SB))'","--ENDRANGE":"'$(((NUMBER_OF_FILES/PARALLELIZATION)  (i)))'"}'"'";
         _SB=1;
   done
   
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"0","--END_RANGE":"200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"200001","--END_RANGE":"400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"400001","--END_RANGE":"600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"600001","--END_RANGE":"800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"800001","--END_RANGE":"1000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1000001","--END_RANGE":"1200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1200001","--END_RANGE":"1400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1400001","--END_RANGE":"1600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1600001","--END_RANGE":"1800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1800001","--END_RANGE":"2000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"2000001","--END_RANGE":"2200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"2200001","--END_RANGE":"2400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"2400001","--END_RANGE":"2600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"2600001","--END_RANGE":"2800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"2800001","--END_RANGE":"3000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"3000001","--END_RANGE":"3200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"3200001","--END_RANGE":"3400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"3400001","--END_RANGE":"3600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"3600001","--END_RANGE":"3800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"3800001","--END_RANGE":"4000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"4000001","--END_RANGE":"4200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"4200001","--END_RANGE":"4400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"4400001","--END_RANGE":"4600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"4600001","--END_RANGE":"4800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"4800001","--END_RANGE":"5000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"5000001","--END_RANGE":"5200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"5200001","--END_RANGE":"5400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"5400001","--END_RANGE":"5600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"5600001","--END_RANGE":"5800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"5800001","--END_RANGE":"6000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"6000001","--END_RANGE":"6200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"6200001","--END_RANGE":"6400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"6400001","--END_RANGE":"6600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"6600001","--END_RANGE":"6800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"6800001","--END_RANGE":"7000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"7000001","--END_RANGE":"7200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"7200001","--END_RANGE":"7400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"7400001","--END_RANGE":"7600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"7600001","--END_RANGE":"7800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"7800001","--END_RANGE":"8000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"8000001","--END_RANGE":"8200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"8200001","--END_RANGE":"8400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"8400001","--END_RANGE":"8600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"8600001","--END_RANGE":"8800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"8800001","--END_RANGE":"9000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"9000001","--END_RANGE":"9200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"9200001","--END_RANGE":"9400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"9400001","--END_RANGE":"9600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"9600001","--END_RANGE":"9800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"9800001","--END_RANGE":"10000000"}'
  
  user@MUC-1234567890 MINGW64 ~
```

**PERGUNTAS FREQUENTES**

*Quantas execuções simultâneas ou trabalhos paralelos devo usar?*

O número de execuções simultâneas e trabalhos paralelos depende do tempo necessário e do número desejado de arquivos de teste. Recomendamos que você verifique o tamanho dos arquivos que estão sendo criados. Primeiro, verifique quanto tempo um trabalho do AWS Glue leva para gerar o número desejado de arquivos. Em seguida, use o número certo de execuções simultâneas para atingir suas metas. Por exemplo, se você presumir que 100.000 arquivos levam 40 minutos para concluir a execução, mas seu tempo alvo é 30 minutos, você deve aumentar a configuração de simultaneidade para o seu trabalho do AWS Glue.

*Que tipo de conteúdo posso criar usando esse padrão?*

Você pode criar qualquer tipo de conteúdo, como arquivos de texto com delimitadores diferentes (por exemplo, PIPE, JSON ou CSV). Esse padrão usa o Boto3 para gravar em um arquivo e depois salva o arquivo em um bucket do S3.

*De que nível de permissão do IAM eu preciso no bucket do S3?*

É necessário ter uma política baseada em identidade que permita o acesso `Write` a objetos em seu bucket do S3. Para obter mais informações, consulte [Amazon S3: permite acesso de leitura e gravação a objetos em um bucket do S3](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_s3_rw-bucket.html) na documentação do Amazon S3.

# Ingerir dados de IoT de forma econômica diretamente no Amazon S3 usando o AWS IoT Greengrass
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass"></a>

*Sebastian Viviani e Rizwan Syed, Amazon Web Services*

## Resumo
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-summary"></a>

Este padrão mostra como ingerir dados da Internet das Coisas (IoT) de forma econômica diretamente em um bucket do Amazon Simple Storage Service (Amazon S3) usando um dispositivo AWS IoT Greengrass versão 2. O dispositivo executa um componente personalizado que lê os dados da IoT e os salva em armazenamento persistente (ou seja, um disco ou volume local). Em seguida, o dispositivo compacta os dados de IoT em um arquivo Apache Parquet e carrega os dados periodicamente em um bucket do S3.

A quantidade e a velocidade dos dados de IoT que você ingere são limitadas apenas pelos recursos de hardware de borda e pela largura de banda da rede. É possível usar o Amazon Athena para analisar de forma econômica os dados ingeridos. O Athena suporta arquivos compactados do Apache Parquet e visualização de dados usando o [Amazon Managed Grafana](https://docs.aws.amazon.com/grafana/latest/userguide/what-is-Amazon-Managed-Service-Grafana.html).

## Pré-requisitos e limitações
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Um [gateway de borda](https://docs.aws.amazon.com/greengrass/v1/developerguide/quick-start.html) que é executado no [AWS IoT Greengrass versão 2](https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-v2-whats-new.html) e coleta dados de sensores (as fontes de dados e o processo de coleta de dados estão além do escopo desse padrão, mas você pode usar praticamente qualquer tipo de dados de sensor. Esse padrão usa um corretor MQTT[https://mqtt.org/](https://mqtt.org/) local com sensores ou gateways que publicam dados localmente.)
+ [Componentes](https://docs.aws.amazon.com/greengrass/v2/developerguide/develop-greengrass-components.html), [funções](https://docs.aws.amazon.com/greengrass/v1/developerguide/service-role.html) e [dependências do SDK](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#installation) do AWS IoT Greengrass
+ Um [componente do gerenciador de fluxo](https://docs.aws.amazon.com/greengrass/v2/developerguide/stream-manager-component.html) para carregar os dados no bucket do S3
+ [AWS SDK para](https://aws.amazon.com/sdk-for-java/) Java, [AWS SDK para ou AWS SDK JavaScript](https://aws.amazon.com/sdk-for-javascript/) [para Python (Boto3) para](https://docs.aws.amazon.com/pythonsdk/) executar o APIs

**Limitações**
+ Os dados nesse padrão não são enviados em tempo real para o bucket do S3. Há um período de atraso e você pode configurar esse período. Os dados são armazenados temporariamente no dispositivo de borda e, em seguida, carregados quando o período expira.
+ O SDK está disponível apenas em Java, Node.js e Python.

## Arquitetura
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-architecture"></a>

**Pilha de tecnologias de destino**
+ Amazon S3
+ AWS IoT Greengrass
+ Operador MQTT
+ Componente gerenciador de fluxo

**Arquitetura de destino**

O diagrama a seguir mostra uma arquitetura projetada para ingerir dados de sensores de IoT e armazená-los em um bucket do S3.

![\[Diagrama de arquitetura\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/b9032ae2-fffb-4750-b161-09810e19d878/images/8c28e639-5dcf-4950-b4a6-8015ec1a2894.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. Várias atualizações de sensores (por exemplo, temperatura e válvula) são publicadas em um corretor MQTT local.

1. O compressor de arquivos Parquet que está inscrito nesses sensores atualiza os tópicos e recebe essas atualizações.

1. O compressor de arquivos Parquet armazena as atualizações localmente.

1. Após o término do período, os arquivos armazenados são compactados em arquivos Parquet e transmitidos ao gerenciador de fluxo para serem carregados no bucket do S3 especificado.

1. O gerenciador de fluxo carrega os arquivos Parquet para o bucket do S3.

**nota**  
O gerenciador de fluxo (`StreamManager`) é um componente gerenciado. Para obter exemplos de como exportar dados para o Amazon S3, consulte [Gerenciador de fluxo](https://docs.aws.amazon.com/greengrass/v2/developerguide/stream-manager-component.html) na documentação do AWS IoT Greengrass. Você pode usar um corretor MQTT local como componente ou outro corretor como o [Eclipse Mosquitto](https://mosquitto.org/).

## Ferramentas
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-tools"></a>

**Ferramentas da AWS**
+ O [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) é um serviço de consultas interativas que facilita a análise de dados diretamente no Amazon S3 usando SQL padrão.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
+ O [AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/what-is-iot-greengrass.html) é um serviço de nuvem e runtime de borda da IoT de código aberto que ajuda você a criar, implantar e gerenciar aplicativos de IoT em seus dispositivos.

**Outras ferramentas**
+ O [Apache Parquet](https://parquet.apache.org/) é um formato de arquivos de dados orientados por colunas de código aberto projetado para armazenamento e recuperação.
+ O [MQTT](https://docs.aws.amazon.com/iot/latest/developerguide/mqtt.html) (Message Queuing Telemetry Transport) é um protocolo de mensagens leve projetado para dispositivos restritos.

## Práticas recomendadas
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-best-practices"></a>

**Use o formato de partição correto para dados carregados**

Não há requisitos específicos para os nomes do prefixo raiz no bucket do S3 (por exemplo, `"myAwesomeDataSet/"` ou`"dataFromSource"`), mas recomendamos que você use uma partição e um prefixo significativos para facilitar a compreensão da finalidade do conjunto de dados.

Também recomendamos que você use o particionamento correto no Amazon S3 para que as consultas sejam executadas de maneira ideal no conjunto de dados. No exemplo a seguir, os dados são particionados no formato HIVE para que a quantidade de dados digitalizados por cada consulta do Athena seja otimizada. Isso melhora o desempenho e reduz os custos.

`s3://<ingestionBucket>/<rootPrefix>/year=YY/month=MM/day=DD/HHMM_<suffix>.parquet`

## Épicos
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-epics"></a>

### Configurar o ambiente
<a name="set-up-your-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar um bucket do S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | Desenvolvedor de aplicativos | 
| Adicionar permissões do IAM para o bucket do S3. | Para conceder aos usuários acesso de gravação ao bucket e ao prefixo do S3 que você criou anteriormente, adicione a seguinte política do IAM à sua função do AWS IoT Greengrass:<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Sid": "S3DataUpload",<br />            "Effect": "Allow",<br />            "Action": [<br />                "s3:List*",<br />                "s3:Put*"<br />            ],<br />            "Resource": [<br />                "arn:aws:s3:::<ingestionBucket>",<br />                "arn:aws:s3:::<ingestionBucket>/<prefix>/*"<br />            ]<br />        }<br />    ]<br />}</pre>Para obter mais informações, consulte [Criar uma política do IAM para acessar recursos do Amazon S3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.Authorizing.IAM.S3CreatePolicy.html) na documentação do Aurora.Em seguida, atualize a política de recursos (se necessário) do bucket do S3 para permitir o acesso de gravação com as [entidades principais](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-bucket-user-policy-specifying-principal-intro.html) corretas da AWS. | Desenvolvedor de aplicativos | 

### Criar e implantar o componente AWS IoT Greengrass
<a name="build-and-deploy-the-aws-iot-greengrass-component"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Atualizar os componentes da fórmula. | [Atualize a configuração do componente](https://docs.aws.amazon.com/greengrass/v2/developerguide/update-component-configurations.html) ao [criar uma implantação](https://docs.aws.amazon.com/greengrass/v2/developerguide/create-deployments.html) com base no exemplo a seguir:<pre>{<br />  "region": "<region>",<br />  "parquet_period": <period>,<br />  "s3_bucket": "<s3Bucket>",<br />  "s3_key_prefix": "<s3prefix>"<br />}</pre>Substitua `<region>` por sua região da AWS, `<period>` por seu intervalo periódico, `<s3Bucket>` por seu bucket do S3 e `<s3prefix>` por seu prefixo. | Desenvolvedor de aplicativos | 
| Criar o componente. | Execute um destes procedimentos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | Desenvolvedor de aplicativos | 
| Atualize o cliente MQTT. | O código de amostra não usa autenticação porque o componente se conecta localmente ao corretor. Se seu cenário for diferente, atualize a seção do cliente MQTT conforme necessário. Além disso, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | Desenvolvedor de aplicativos | 

### Adicione o componente ao dispositivo principal do AWS IoT Greengrass versão 2
<a name="add-the-component-to-the-aws-iot-greengrass-version-2-core-device"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Atualize a implantação do dispositivo principal. | Se a implantação do dispositivo principal do AWS IoT Greengrass versão 2 já existir, [revise a implantação](https://docs.aws.amazon.com/greengrass/v2/developerguide/revise-deployments.html). Se a implantação não existir, [crie uma nova implantação](https://docs.aws.amazon.com/greengrass/v2/developerguide/create-deployments.html).Para dar ao componente o nome correto, [atualize a configuração do gerenciador de logs](https://docs.aws.amazon.com/greengrass/v2/developerguide/log-manager-component.html) para o novo componente (se necessário) com base no seguinte:<pre>{<br />  "logsUploaderConfiguration": {<br />    "systemLogsConfiguration": {<br />    ...<br />    },<br />    "componentLogsConfigurationMap": {<br />      "<com.iot.ingest.parquet>": {<br />        "minimumLogLevel": "INFO",<br />        "diskSpaceLimit": "20",<br />        "diskSpaceLimitUnit": "MB",<br />        "deleteLogFileAfterCloudUpload": "false"<br />      }<br />      ...<br />    }<br />  },<br />  "periodicUploadIntervalSec": "300"<br />}</pre>Por fim, conclua a revisão da implantação do seu dispositivo principal do AWS IoT Greengrass. | Desenvolvedor de aplicativos | 

### Verificar a ingestão de dados no bucket do S3
<a name="verify-data-ingestion-into-the-s3-bucket"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Verificar os registros do volume do AWS IoT Greengrass. | Verifique o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | Desenvolvedor de aplicativos | 
| Verificar o bucket do S3. | Verifique se os dados estão sendo carregados para o bucket do S3. Você pode ver os arquivos sendo enviados em cada período.Você também pode verificar se os dados foram carregados no bucket do S3 ao consultar os dados na próxima seção. | Desenvolvedor de aplicativos | 

### Configurar a consulta do Athena
<a name="set-up-querying-from-athena"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar banco de dados e tabela. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | Desenvolvedor de aplicativos | 
| Conceda ao Athena o acesso aos dados. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | Desenvolvedor de aplicativos | 

## Solução de problemas
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| O cliente MQTT não consegue se conectar | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | 
| O cliente MQTT não consegue se inscrever | Valide as permissões no corretor MQTT. Se você tiver um corretor MQTT da AWS, consulte o [corretor MQTT 3.1.1 (Moquette)](https://docs.aws.amazon.com/greengrass/v2/developerguide/mqtt-broker-moquette-component.html) e o corretor [MQTT 5 (EMQX)](https://docs.aws.amazon.com/greengrass/v2/developerguide/mqtt-broker-emqx-component.html). | 
| Os arquivos Parquet não são criados | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | 
| Os objetos não são carregados no bucket do S3 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | 

## Recursos relacionados
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-resources"></a>
+ [DataFrame](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html)(Documentação do Pandas)
+ [Documentação do Apache Parquet](https://parquet.apache.org/docs/) (documentação do Parquet)
+ [Desenvolva componentes do AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/develop-greengrass-components.html) (Guia do desenvolvedor do AWS IoT Greengrass, versão 2)
+ [Implante componentes do AWS IoT Greengrass em dispositivos](https://docs.aws.amazon.com/greengrass/v2/developerguide/manage-deployments.html) (Guia do desenvolvedor do AWS IoT Greengrass, versão 2)
+ [Interaja com dispositivos de IoT locais](https://docs.aws.amazon.com/greengrass/v2/developerguide/interact-with-local-iot-devices.html) (Guia do desenvolvedor do AWS IoT Greengrass, versão 2)
+ [Corretor MQTT 3.1.1 (Moquette)](https://docs.aws.amazon.com/greengrass/v2/developerguide/mqtt-broker-moquette-component.html) (Guia do desenvolvedor do AWS IoT Greengrass, versão 2)
+ [Corretor MQTT 5 (EMQX)](https://docs.aws.amazon.com/greengrass/v2/developerguide/mqtt-broker-emqx-component.html) (Guia do desenvolvedor do AWS IoT Greengrass, versão 2)

## Mais informações
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-additional"></a>

**Análise de custos**

O cenário de análise de custos a seguir demonstra como a abordagem de ingestão de dados abordada nesse padrão pode impactar os custos de ingestão de dados na Nuvem AWS. Os exemplos de preços nesse cenário são baseados nos preços no momento da publicação. Os preços estão sujeitos a alterações. Além disso, seus custos podem variar dependendo da sua região da AWS, das Service Quotas da AWS e de outros fatores relacionados ao seu ambiente de nuvem.

*Conjunto de sinais de entrada*

Essa análise usa o seguinte conjunto de sinais de entrada como base para comparar os custos de ingestão de IoT com outras alternativas disponíveis.


| 
| 
| Número de sinais | Frequência | Dados por sinal | 
| --- |--- |--- |
| 125 | 25 Hz | 8 bytes | 

Nesse cenário, o sistema recebe 125 sinais. Cada sinal tem 8 bytes e ocorre a cada 40 milissegundos (25 Hz). Esses sinais podem vir individualmente ou agrupados em um payload comum. Você tem a opção de dividir e empacotar esses sinais com base em suas necessidades. Você também pode determinar a latência. A latência consiste no período de tempo para receber, acumular e ingerir os dados.

Para fins de comparação, a operação de ingestão para esse cenário é baseada na `us-east-1`região da AWS. A comparação de custos se aplica somente aos serviços da AWS. Outros custos, como hardware ou conectividade, não são considerados na análise.

*Comparações de custos*

A tabela a seguir mostra o custo mensal em dólares americanos (USD) para cada método de ingestão.


| 
| 
| Método | Custo mensal | 
| --- |--- |
| *AWS IoT \$1 SiteWise* | USD 331,77 | 
| AWS IoT SiteWise Edge com pacote de processamento de dados (mantendo todos os dados na borda) | USD 200 | 
| Regras do AWS IoT Core e do Amazon S3 para acessar dados brutos | USD 84,54 | 
| Compressão de arquivos Parquet na borda e upload para o Amazon S3 | USD 0,50 | 

\$1Os dados devem ser reduzidos para cumprir as Service Quotas. Isso significa que há alguma perda de dados com esse método.

*Métodos alternativos*

Esta seção mostra os custos equivalentes dos seguintes métodos alternativos:
+ **AWS IoT SiteWise** — Cada sinal deve ser carregado em uma mensagem individual. Portanto, o número total de mensagens por mês é 125 × 25 × 3600 × 24 × 30, ou 8,1 bilhões de mensagens por mês. No entanto, o AWS IoT SiteWise pode lidar com apenas 10 pontos de dados por segundo por propriedade. Supondo que a resolução dos dados seja reduzida para 10 Hz, o número de mensagens por mês é reduzido para 125 × 10 × 3600 × 24 × 30, ou 3,24 bilhões. Se você usar o componente de publicador que agrupa as medidas em grupos de 10 (a USD 1 por milhão de mensagens), obterá um custo mensal de USD 324 por mês. Supondo que cada mensagem tenha 8 bytes (1 Kb/125), são 25,92 Gb de armazenamento de dados. Isso adiciona um custo mensal de USD 7,77 por mês. O custo total do primeiro mês é de USD 331,77 e aumenta em USD 7,77 a cada mês.
+ **AWS IoT SiteWise Edge com pacote de processamento de dados, incluindo todos os modelos e sinais totalmente processados na borda (ou seja, sem ingestão de nuvem)** — Você pode usar o pacote de processamento de dados como alternativa para reduzir custos e configurar todos os modelos que são calculados na borda. Isso pode funcionar apenas para armazenamento e visualização, mesmo que nenhum cálculo real seja realizado. Nesse caso, é necessário usar um hardware poderoso para o gateway de borda. Há um custo fixo de USD 200 por mês.
+ **Ingestão direta no AWS IoT Core pelo MQTT e uma regra de IoT para armazenar os dados brutos no Amazon S3**: supondo que todos os sinais sejam publicados em uma payload comum, o número total de mensagens publicadas no AWS IoT Core é de 25 × 3600 × 24 × 30, ou 64,8 milhões por mês. Com USD 1 por milhão de mensagens, esse é um custo mensal de USD 64,8 por mês. Com USD 0,15 por milhão de ativações de regras e com uma regra por mensagem, isso adiciona um custo mensal de USD 19,44 por mês. Com um custo de USD 0,023 por Gb de armazenamento no Amazon S3, isso adiciona mais USD 1,50 por mês (aumentando a cada mês para refletir os novos dados). O custo total do primeiro mês é de USD 84,54 e aumenta em USD 1,50 a cada mês.
+ **Compressão de dados na borda de um arquivo Parquet e upload para o Amazon S3 (método proposto**): a taxa de compactação depende do tipo de dados. Com os mesmos dados industriais testados para o MQTT, o total de dados de saída de um mês inteiro é de 1,2 Gb. Isso custa USD 0,03 por mês. As taxas de compressão (usando dados aleatórios) descritas em outros benchmarks são da ordem de 66 por cento (mais próximas do pior cenário). O total de dados é de 21 Gb e custa USD 0,50 por mês.

**Gerador de arquivos Parquet**

O exemplo de código a seguir mostra a estrutura de um gerador de arquivos Parquet escrito em Python. O exemplo de código serve apenas para fins ilustrativos e não funcionará se for colado em seu ambiente.

```
import queue
import paho.mqtt.client as mqtt
import pandas as pd

#queue for decoupling the MQTT thread
messageQueue = queue.Queue()
client = mqtt.Client()
streammanager = StreamManagerClient()

def feederListener(topic, message):
    payload = {
        "topic" : topic,
        "payload" : message,
    }
    messageQueue.put_nowait(payload)

def on_connect(client_instance, userdata, flags, rc):
    client.subscribe("#",qos=0)

def on_message(client, userdata, message):
    feederListener(topic=str(message.topic), message=str(message.payload.decode("utf-8")))


filename = "tempfile.parquet"
streamname = "mystream"
destination_bucket= "amzn-s3-demo-bucket"
keyname="mykey"
period= 60

client.on_connect = on_connect
client.on_message = on_message
streammanager.create_message_stream(
            MessageStreamDefinition(name=streamname, strategy_on_full=StrategyOnFull.OverwriteOldestData)
        )


while True:
   try:
       message = messageQueue.get(timeout=myArgs.mqtt_timeout)
   except (queue.Empty):
       logger.warning("MQTT message reception timed out")

   currentTimestamp = getCurrentTime()
   if currentTimestamp >= nextUploadTimestamp:
       df = pd.DataFrame.from_dict(accumulator)
       df.to_parquet(filename)
       s3_export_task_definition = S3ExportTaskDefinition(input_url=filename, bucket=destination_bucket, key=key_name)
       streammanager.append_message(streamname, Util.validate_and_serialize_to_json_bytes(s3_export_task_definition))
       accumulator = {}
       nextUploadTimestamp += period
   else:
        accumulator.append(message)
```

# Executar uma tarefa do Spark em um cluster EMR transitório usando uma função do Lambda
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function"></a>

*Dhrubajyoti Mukherjee, Amazon Web Services*

## Resumo
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function-summary"></a>

Esse padrão usa a ação da RunJobFlow API do Amazon EMR para iniciar um cluster transitório para executar um trabalho do Spark a partir de uma função Lambda. Um cluster EMR transitório foi projetado para encerrar assim que a tarefa for concluída ou se ocorrer algum erro. Um cluster transitório proporciona economia de custos porque é executado somente durante o tempo de computação e fornece escalabilidade e flexibilidade em um ambiente de nuvem.

O cluster EMR transitório é executado usando a API Boto3 e a linguagem de programação Python em uma função do Lambda. A função do Lambda, escrita em Python, oferece a flexibilidade adicional de executar o cluster quando necessário.

Para demonstrar um exemplo de computação em lote e resultado, esse padrão executará uma tarefa do Spark em um cluster EMR a partir de uma função do Lambda e realizará um cálculo em lote com base em exemplos de dados de vendas de uma empresa fictícia. O resultado da tarefa do Spark será um arquivo com valores separados por vírgula (CSV) no Amazon Simple Storage Service (Amazon S3). O arquivo de dados de entrada, o arquivo.jar do Spark, um trecho de código e um CloudFormation modelo da AWS para uma nuvem privada virtual (VPC) e as funções do AWS Identity and Access Management (IAM) para executar a computação são fornecidos como anexo.

## Pré-requisitos e limitações
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa

**Limitações**
+ Somente uma tarefa do Spark por vez pode ser executada a partir do código. 

**Versões do produto**
+ Testado no Amazon EMR 6.0.0

## Arquitetura
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function-architecture"></a>

**Pilha de tecnologias de destino**
+ Amazon EMR 
+ AWS Lambda
+ Amazon S3
+ Apache Spark

**Arquitetura de destino**

![\[Lambda para Amazon EMR e Spark para Amazon S3\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/6c999fa7-9550-4929-a5c1-60394142175d/images/eb4fbb3f-2114-44d2-b9da-3fdcb9ca456e.png)


**Automação e escala**

Para automatizar a computação em lote do Spark-EMR, é possível usar uma das opções a seguir.
+ Implemente uma EventBridge regra da Amazon que possa iniciar a função Lambda em um cronograma cron. Para obter mais informações, consulte [Tutorial: Programar funções do AWS Lambda](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-run-lambda-schedule.html) usando o. EventBridge
+ Configure [notificações de eventos do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html) para executar a função do Lambda na chegada do arquivo.
+ Transmita os parâmetros de entrada para a função do AWS Lambda por meio do corpo do evento e das variáveis de ambiente do Lambda. 

## Ferramentas
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function-tools"></a>

**Serviços da AWS**
+ O [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) é uma plataforma de cluster gerenciada que simplifica a execução de frameworks de big data no AWS para processar e analisar grandes volumes de dados.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda você a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

**Outras ferramentas**
+ O [Apache Spark](https://spark.apache.org/docs/latest/) é um mecanismo de análise de várias linguagens para processamento de dados em grande escala.

## Épicos
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function-epics"></a>

### Criar os perfis do IAM do Amazon EMR e do Lambda, além da VPC
<a name="create-the-amazon-emr-and-lambda-iam-roles-and-the-vpc"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar os perfis do IAM e a VPC. | Se você já tiver os perfis do IAM do AWS Lambda e do Amazon EMR, além de uma VPC, poderá ignorar essa etapa. Para executar o código, tanto o cluster EMR quanto a função do Lambda exigem perfis do IAM. O cluster EMR também exige uma VPC com uma sub-rede pública ou uma sub-rede privada com um gateway NAT. *Para criar automaticamente todas as funções do IAM e uma VPC, implante o CloudFormation modelo da AWS anexado como está, ou você pode criar as funções e a VPC manualmente, conforme especificado na seção Informações adicionais.* | Arquiteto de nuvem | 
| Observe as chaves CloudFormation de saída do modelo AWS. | Depois que o CloudFormation modelo for implantado com sucesso, navegue até a guia **Saídas** no console da AWS CloudFormation . Anote as cinco chaves resultantes: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function.html)Você usará os valores dessas chaves ao criar a função do Lambda. | Arquiteto de nuvem | 

### Fazer upload do arquivo .jar do Spark
<a name="upload-the-spark-jar-file"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Fazer upload do arquivo .jar do Spark. | Faça upload do arquivo Spark .jar no bucket do S3 que a pilha da AWS CloudFormation criou. O nome do bucket é o mesmo que a chave resultante `S3Bucket`.  | AWS geral | 

### Criar a função do Lambda para executar o cluster EMR
<a name="create-the-lambda-function-to-launch-the-emr-cluster"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie uma função do Lambda. | No console do Lambda, crie uma função do Lambda do Python 3.9\$1 com uma função de execução. A política da função de execução deve permitir que o Lambda execute um cluster EMR. (Veja o CloudFormation modelo da AWS em anexo.) | Engenheiro de dados, engenheiro de nuvem | 
| Copie e cole o código. | Substitua o código no arquivo `lambda_function.py` pelo código da seção *Informações adicionais* deste padrão. | Engenheiro de dados, engenheiro de nuvem | 
| Altere os parâmetros no código. | Siga os comentários no código para alterar os valores de parâmetro a fim de corresponder à sua conta da AWS. | Engenheiro de dados, engenheiro de nuvem | 
| Execute a função para iniciar o cluster. | Execute a função para iniciar a criação de um cluster EMR transitório com o arquivo .jar do Spark fornecido. Ele executará a tarefa do Spark e será encerrado automaticamente quando a tarefa for concluída. | Engenheiro de dados, engenheiro de nuvem | 
| Verifique o status do cluster EMR. | Depois que o cluster EMR é iniciado, ele aparece no console do Amazon EMR, na guia **Clusters**. Eventuais erros ocorridos ao executar o cluster ou a tarefa podem ser verificados de maneira apropriada. | Engenheiro de dados, engenheiro de nuvem | 

### Configurar e executar a demonstração
<a name="set-up-and-run-the-sample-demo"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Fazer upload do arquivo .jar do Spark.  | Baixe o arquivo .jar do Spark da seção *Anexos* e faça o upload para o bucket do S3. | Engenheiro de dados, engenheiro de nuvem | 
| Faça upload do conjunto de dados de entrada. | Faça upload do arquivo `fake_sales_data.csv` no bucket do S3. | Engenheiro de dados, engenheiro de nuvem | 
| Cole o código do Lambda e altere os parâmetros. | Copie o código da seção **Ferramentas** e cole-o em uma função do Lambda, substituindo o arquivo `lambda_function.py` do código. Altere os valores de parâmetro para corresponder à sua conta. | Engenheiro de dados, engenheiro de nuvem | 
| Execute a função e verifique o resultado. | Depois que a função do Lambda executa o cluster com a tarefa fornecida do Spark, ela gera um arquivo .csv no bucket do S3. | Engenheiro de dados, engenheiro de nuvem | 

## Recursos relacionados
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function-resources"></a>
+ [Desenvolvimento do Spark](https://spark.apache.org/docs/latest/building-spark.html)
+ [Apache Spark e Amazon EMR](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark.html)
+ [Documentação run\$1job\$1flow do Boto3 Docs](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/emr.html#EMR.Client.run_job_flow)
+ [Informações e documentação do Apache Spark](https://spark.apache.org/)

## Mais informações
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function-additional"></a>

**Código **

```
"""
Copy paste the following code in your Lambda function. Make sure to change the following key parameters for the API as per your account

-Name (Name of Spark cluster)
-LogUri (S3 bucket to store EMR logs)
-Ec2SubnetId (The subnet to launch the cluster into)
-JobFlowRole (Service role for EC2)
-ServiceRole (Service role for Amazon EMR)

The following parameters are additional parameters for the Spark job itself. Change the bucket name and prefix for the Spark job (located at the bottom).

-s3://your-bucket-name/prefix/lambda-emr/SparkProfitCalc.jar (Spark jar file)
-s3://your-bucket-name/prefix/fake_sales_data.csv (Input data file in S3)
-s3://your-bucket-name/prefix/outputs/report_1/ (Output location in S3)
"""
import boto3

client = boto3.client('emr')


def lambda_handler(event, context):
    response = client.run_job_flow(
        Name='spark_job_cluster',
        LogUri='s3://your-bucket-name/prefix/logs',
        ReleaseLabel='emr-6.0.0',
        Instances={
            'MasterInstanceType': 'm5.xlarge',
            'SlaveInstanceType': 'm5.large',
            'InstanceCount': 1,
            'KeepJobFlowAliveWhenNoSteps': False,
            'TerminationProtected': False,
            'Ec2SubnetId': 'subnet-XXXXXXXXXXXXXX'
        },
        Applications=[{'Name': 'Spark'}],
        Configurations=[
            {'Classification': 'spark-hive-site',
             'Properties': {
                 'hive.metastore.client.factory.class': 'com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory'}
             }
        ],
        VisibleToAllUsers=True,
        JobFlowRole='EMRLambda-EMREC2InstanceProfile-XXXXXXXXX',
        ServiceRole='EMRLambda-EMRRole-XXXXXXXXX',
        Steps=[
            {
                'Name': 'flow-log-analysis',
                'ActionOnFailure': 'TERMINATE_CLUSTER',
                'HadoopJarStep': {
                    'Jar': 'command-runner.jar',
                    'Args': [
                        'spark-submit',
                        '--deploy-mode', 'cluster',
                        '--executor-memory', '6G',
                        '--num-executors', '1',
                        '--executor-cores', '2',
                        '--class', 'com.aws.emr.ProfitCalc',
                        's3://your-bucket-name/prefix/lambda-emr/SparkProfitCalc.jar',
                        's3://your-bucket-name/prefix/fake_sales_data.csv',
                        's3://your-bucket-name/prefix/outputs/report_1/'
                    ]
                }
            }
        ]
    )
```

**Criação de perfis do IAM e de VPC**

Para executar o cluster EMR em uma função do Lambda, exige-se VPC e perfis do IAM. Você pode configurar as funções de VPC e IAM usando o CloudFormation modelo da AWS na seção Anexos desse padrão ou pode criá-las manualmente usando os links a seguir. 

Os perfis do IAM a seguir são necessários para executar o Lambda e o Amazon EMR. 

*Função de execução do Lambda*

A [função de execução](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) de uma função do Lambda concede a ela permissão para acessar recursos e serviços da AWS.

*Perfis de serviço para o Amazon EMR*

A [função do Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role.html) define as ações permitidas para o Amazon EMR ao provisionar recursos e realizar tarefas de nível de serviço que não são executadas no contexto de uma instância do Amazon Elastic Compute Cloud (Amazon) executada em um cluster. EC2 Por exemplo, a função de serviço é usada para provisionar EC2 instâncias quando um cluster é iniciado.

*Função de serviço para EC2 instâncias*

A [função de serviço para EC2 instâncias de cluster](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role-for-ec2.html) (também chamada de perfil de EC2 instância para Amazon EMR) é um tipo especial de função de serviço que é atribuída a cada EC2 instância em um cluster do Amazon EMR quando a instância é executada. Os processos de aplicativos que são executados no Apache Hadoop assumem essa função para que as permissões interajam com outros serviços da AWS.

*Criação de VPC e sub-rede*

Você pode [criar um VPC](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#create-vpc-and-other-resources) a partir do console VPC. 

## Anexos
<a name="attachments-6c999fa7-9550-4929-a5c1-60394142175d"></a>

Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo: [attachment.zip](samples/p-attach/6c999fa7-9550-4929-a5c1-60394142175d/attachments/attachment.zip)

# Migração de workloads do Apache Cassandra para o Amazon Keyspaces usando o AWS Glue
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue"></a>

*Nikolai Kolesnikov, Karthiga Priya Chandran e Samir Patel, Amazon Web Services*

## Resumo
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-summary"></a>

Esse padrão mostra como migrar suas cargas de trabalho existentes do Apache Cassandra para o Amazon Keyspaces (para Apache Cassandra) usando o AWS Glue. CQLReplicator Você pode usar o CQLReplicator AWS Glue para minimizar o atraso de replicação da migração de suas cargas de trabalho em questão de minutos. Você também aprende a usar um bucket do Amazon Simple Storage Service (Amazon S3) para armazenar dados necessários para a migração, incluindo arquivos, arquivos de configuração e scripts do [Apache Parquet](https://parquet.apache.org/). Esse padrão pressupõe que suas cargas de trabalho do Cassandra estejam hospedadas em instâncias do Amazon Elastic Compute Cloud ( EC2Amazon) em uma nuvem privada virtual (VPC).

## Pré-requisitos e limitações
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-prereqs"></a>

**Pré-requisitos **
+ Cluster Cassandra com uma tabela de origem
+ Tabela de destino no Amazon Keyspaces para replicar a workload
+ Bucket do S3 para armazenar arquivos intermediários do Parquet que contêm alterações incrementais de dados
+ Bucket do S3 para armazenar scripts e arquivos de configuração do trabalho

**Limitações**
+ CQLReplicator no AWS Glue, é necessário algum tempo para provisionar unidades de processamento de dados (DPUs) para as cargas de trabalho do Cassandra. O atraso de replicação entre o cluster do Cassandra e o keyspace e a tabela de destino no Amazon Keyspaces provavelmente durará apenas alguns minutos.

## Arquitetura
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-architecture"></a>

**Pilha de tecnologia de origem**
+ Apache Cassandra
+ DataStax Servidor
+ ScyllaDB

**Pilha de tecnologias de destino**
+ Amazon Keyspaces

**Arquitetura de migração**

O diagrama a seguir mostra um exemplo de arquitetura em que um cluster do Cassandra é hospedado em EC2 instâncias e distribuído por três zonas de disponibilidade. Os nós do Cassandra encontram-se hospedados em sub-redes privadas.

![\[Perfil de serviço personalizado, Amazon Keyspaces e Amazon S3, com o AWS Glue estabelecendo conexão com a VPC dos nós.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/e08048da-8996-4f2c-b8ed-da49fe9e693b/images/76256ab3-a1e6-4c9e-9c40-dc78f51edf0f.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. Um perfil de serviço personalizado fornece acesso ao Amazon Keyspaces e ao bucket do S3.

1. Um trabalho do AWS Glue que realiza a leitura da configuração e dos scripts do trabalho no bucket do S3.

1. O trabalho do AWS Glue se conecta pela porta 9042 para ler dados do cluster Cassandra.

1. O trabalho do AWS Glue se conecta por meio da porta 9142 para gravar dados no Amazon Keyspaces.

## Ferramentas
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-tools"></a>

**Ferramentas e serviços da AWS**
+ A ‭[AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)‭ é uma ferramenta de código aberto que permite que você interaja com serviços da AWS usando comandos no shell da linha de comando.
+  CloudShellA [AWS](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html) é um shell baseado em navegador que você pode usar para gerenciar serviços da AWS usando a AWS Command Line Interface (AWS CLI) e uma variedade de ferramentas de desenvolvimento pré-instaladas.
+ O [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) é um serviço de ETL totalmente gerenciado que ajuda você a categorizar, limpar, enriquecer e mover dados de forma confiável entre armazenamentos de dados e fluxos de dados.
+ O [Amazon Keyspaces (para Apache Cassandra)](https://docs.aws.amazon.com/keyspaces/latest/devguide/what-is-keyspaces.html) é um serviço de banco de dados gerenciado que ajuda você a migrar, executar e escalar suas workloads do Cassandra na nuvem AWS.

**Código **

O código desse padrão está disponível no GitHub [CQLReplicator](https://github.com/aws-samples/cql-replicator/tree/main/glue)repositório.

## Práticas recomendadas
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-best-practices"></a>
+ Para determinar os recursos necessários do AWS Glue para a migração, estime o número de linhas na tabela de origem do Cassandra. Por exemplo, 250 K linhas por 0,25 DPU (2 vCPUs, 4 GB de memória) com disco de 84 GB.
+ Pré-aqueça as tabelas do Amazon Keyspaces antes de executá-las. CQLReplicator Por exemplo, oito CQLReplicator blocos (trabalhos do AWS Glue) podem gravar até 22 K WCUs por segundo, portanto, o alvo deve ser pré-aquecido até 25 a 30 K WCUs por segundo.
+ Para permitir a comunicação entre os componentes do AWS Glue, use uma regra de entrada autorreferenciada para todas as portas TCP no seu grupo de segurança.
+ Use a estratégia de tráfego incremental para distribuir a workload de migração ao longo do tempo.

## Épicos
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-epics"></a>

### Implantar CQLReplicator
<a name="deploy-cqlreplicator"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um espaço de teclas e uma tabela de destino.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | Proprietário do aplicativo, administrador da AWS, DBA, desenvolvedor do aplicativo | 
| Configure o driver do Cassandra para conectar-se ao Cassandra. | Use o seguinte script de configuração:<pre>Datastax-java-driver {<br />  basic.request.consistency = "LOCAL_QUORUM"<br />  basic.contact-points = ["127.0.0.1:9042"]<br />   advanced.reconnect-on-init = true<br />   basic.load-balancing-policy {<br />        local-datacenter = "datacenter1"<br />}<br />advanced.auth-provider = {<br />       class = PlainTextAuthProvider<br />       username = "user-at-sample"<br />       password = "S@MPLE=PASSWORD="<br />}<br />}</pre>O script apresentado acima faz uso do Spark Cassandra Connector. Para obter mais informações, consulte a configuração de referência para o [Cassandra](https://docs.datastax.com/en/developer/java-driver/4.17/manual/core/configuration/reference/). | DBA | 
| Configure o driver do Cassandra para se conectar ao Amazon Keyspaces. | Use o seguinte script de configuração:<pre>datastax-java-driver {<br />basic {<br />  load-balancing-policy {<br />    local-datacenter = us-west-2<br />        }<br />  contact-points = [<br />            "cassandra.us-west-2.amazonaws.com:9142"<br />        ]<br />  request {<br />  page-size = 2500<br />  timeout = 360 seconds<br />  consistency = LOCAL_QUORUM<br />        }<br />    }<br />advanced {<br /> control-connection {<br />  timeout = 360 seconds<br />        }<br /> session-leak.threshold = 6<br /> connection {<br /> connect-timeout = 360 seconds<br /> init-query-timeout = 360 seconds<br /> warn-on-init-error = false<br />        }<br /> auth-provider = {<br />  class = software.aws.mcs.auth.SigV4AuthProvider<br />  aws-region = us-west-2<br /> }<br /><br /> ssl-engine-factory {<br />  class = DefaultSslEngineFactory<br />        }<br />    }<br />}</pre>O script apresentado acima faz uso do Spark Cassandra Connector. Para obter mais informações, consulte a configuração de referência para o [Cassandra](https://docs.datastax.com/en/developer/java-driver/4.17/manual/core/configuration/reference/). | DBA | 
| Crie um perfil do IAM para o trabalho do AWS Glue. | Crie um novo perfil de serviço da AWS chamado `glue-cassandra-migration`, com o AWS Glue como entidade confiável.O código `glue-cassandra-migration` deve fornecer acesso de leitura e gravação ao bucket do S3 e ao Amazon Keyspaces O bucket do S3 contém os arquivos .jar, os arquivos de configuração para o Amazon Keyspaces e para o Cassandra, e os arquivos intermediários em Parquet. Por exemplo, ele contém as políticas gerenciadas `AWSGlueServiceRole`, `AmazonS3FullAccess` e `AmazonKeyspacesFullAccess`. | AWS DevOps | 
| Faça o download CQLReplicator na AWS CloudShell. | Faça o download do projeto na sua pasta inicial executando o seguinte comando:<pre>git clone https://github.com/aws-samples/cql-replicator.git<br />cd cql-replicator/glue<br /># Only for AWS CloudShell, the bc package includes bc and dc. Bc is an arbitrary precision numeric processing arithmetic language<br />sudo yum install bc -y</pre> |  | 
| Modifique os arquivos de configuração de referência. | Copie os arquivos `CassandraConnector.conf` e `KeyspacesConnector.conf` para o diretório `../glue/conf` dentro da pasta do projeto. | AWS DevOps | 
| Dê início ao processo de migração. | O comando a seguir inicializa o CQLReplicator ambiente. A inicialização envolve copiar os artefatos em .jar e criar um conector do AWS Glue, um bucket do S3, um trabalho do AWS Glue, o keyspace `migration` e a tabela `ledger`:<pre>cd cql-replicator/glue/bin<br />./cqlreplicator --state init --sg '"sg-1","sg-2"' \ <br />                --subnet "subnet-XXXXXXXXXXXX" \ <br />                --az us-west-2a --region us-west-2 \ <br />                --glue-iam-role glue-cassandra-migration \ <br />                --landing-zone s3://cql-replicator-1234567890-us-west-2<br /></pre>O comando inclui os seguintes parâmetros:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | AWS DevOps | 
| Valide a implantação. | Após executar o comando anterior, a conta da AWS deve conter o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | AWS DevOps | 

### Corra CQLReplicator
<a name="run-cqlreplicator"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Dê início ao processo de migração. | Para operar CQLReplicator no AWS Glue, você precisa usar o `--state run` comando, seguido por uma série de parâmetros. A configuração exata desses parâmetros depende principalmente dos seus requisitos específicos de migração. Por exemplo, essas definições podem variar se você optar por replicar valores de tempo de vida (TTL, na sigla em inglês) e atualizações, ou se descarregar objetos maiores que 1 MB no Amazon S3.Para replicar a workload do cluster do Cassandra para o Amazon Keyspaces, execute o seguinte comando: <pre>./cqlreplicator --state run --tiles 8  \<br />                --landing-zone s3://cql-replicator-1234567890-us-west-2 \ <br />                --region us-west-2 \                              <br />                --src-keyspace source_keyspace \ <br />                --src-table source_table \  <br />                --trg-keyspace taget_keyspace \<br />                --writetime-column column_name \<br />                --trg-table target_table --inc-traffic</pre>O keyspace e a tabela de origem são `source_keyspace.source_table` no cluster do Cassandra. Enquanto o keyspace e a tabela de destino são `target_keyspace.target_table` no Amazon Keyspaces. O parâmetro `--inc-traffic` ajuda a evitar que o tráfego incremental sobrecarregue o cluster do Cassandra e o Amazon Keyspaces com um grande número de solicitações.Para replicar atualizações, adicione `--writetime-column regular_column_name` à sua linha de comando. A coluna regular será usada como origem do carimbo de data/hora de gravação. | AWS DevOps | 

### Monitoramento do processo de migração
<a name="monitor-the-migration-process"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Valide as linhas do Cassandra migradas durante a fase de migração histórica. | Para obter o número de linhas replicadas durante a fase de preenchimento, execute o seguinte comando:<pre>./cqlreplicator --state stats \<br />                --landing-zone s3://cql-replicator-1234567890-us-west-2 \  <br />                --src-keyspace source_keyspace --src-table source_table --region us-west-2</pre> | AWS DevOps | 

### Interrupção do processo de migração
<a name="stop-the-migration-process"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Use o comando `cqlreplicator` ou o console do AWS Glue. | Para interromper o processo de migração corretamente, execute o seguinte comando:<pre>./cqlreplicator --state request-stop --tiles 8 \                         <br />                --landing-zone s3://cql-replicator-1234567890-us-west-2 \     <br />                --region us-west-2 \                     <br />                --src-keyspace source_keyspace --src-table source_table</pre>Para interromper o processo de migração imediatamente, use o console do AWS Glue. | AWS DevOps | 

### Limpeza
<a name="clean-up"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Exclua os recursos implantados. | O comando apresentado a seguir excluirá o trabalho do AWS Glue, o conector, o bucket do S3 e a tabela `ledger` do Keyspaces:<pre>./cqlreplicator --state cleanup --landing-zone s3://cql-replicator-1234567890-us-west-2</pre> | AWS DevOps | 

## Solução de problemas
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Os trabalhos do AWS Glue falharam e retornaram um erro de falta de memória (OOM, na sigla em inglês). | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | 

## Recursos relacionados
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-resources"></a>
+ [CQLReplicator com o AWS Glue README.MD](https://github.com/aws-samples/cql-replicator/blob/main/glue/README.MD)
+ [Documentação do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)
+ [Documentação do Amazon Keyspaces](https://docs.aws.amazon.com/keyspaces/latest/devguide/what-is-keyspaces.html)
+ [Apache Cassandra](https://cassandra.apache.org/_/index.html)

## Mais informações
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-additional"></a>

**Considerações sobre a migração**

Você pode usar o AWS Glue para migrar seu workload do Cassandra para o Amazon Keyspaces, mantendo seus bancos de dados de origem do Cassandra completamente funcionais durante o processo de migração. Após a conclusão da replicação, você pode optar por transferir seus aplicativos para o Amazon Keyspaces com um atraso mínimo de replicação (menos de minutos) entre o cluster Cassandra e o Amazon Keyspaces. Para manter a consistência de dados, você também pode usar um pipeline similar para replicar os dados de volta para o cluster Cassandra a partir do Amazon Keyspaces.

**Grave cálculos unitários**

Como exemplo, considere que você pretende escrever 500.000.000 com o tamanho da linha 1 KiB durante uma hora. O número total de unidades de gravação (WCUs) do Amazon Keyspaces que você precisa é baseado neste cálculo:

`(number of rows/60 mins 60s) 1 WCU per row = (500,000,000/(60*60s) * 1 WCU) = 69,444 WCUs required`

69.444 WCUs por segundo é a taxa de 1 hora, mas você pode adicionar um pouco de amortecimento para despesas gerais.  Por exemplo, `69,444 * 1.10 = 76,388 WCUs` tem 10% de sobrecarga.

**Criação de um keyspace usando CQL**

Para criar um keyspace usando CQL, execute os seguintes comandos:

```
CREATE KEYSPACE target_keyspace WITH replication = {'class': 'SingleRegionStrategy'}
CREATE TABLE target_keyspace.target_table ( userid uuid, level text, gameid int, description text, nickname text, zip text, email text, updatetime text, PRIMARY KEY (userid, level, gameid) ) WITH default_time_to_live = 0 AND CUSTOM_PROPERTIES = {'capacity_mode':{ 'throughput_mode':'PROVISIONED', 'write_capacity_units':76388, 'read_capacity_units':3612 }} AND CLUSTERING ORDER BY (level ASC, gameid ASC)
```

# Migrar o Oracle Business Intelligence 12c para a Nuvem AWS a partir de servidores on-premises
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers"></a>

*Lane (Lan-Ray) showunmi e Patrick Huang, Amazon Web Services*

## Resumo
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers-summary"></a>

Esse padrão mostra como migrar o [Oracle Business Intelligence Enterprise Edition 12c](https://www.oracle.com/business-analytics/business-intelligence/technologies/bi-enterprise-edition.html) de servidores locais para a Nuvem AWS usando a AWS. CloudFormation Também descreve como você pode usar outros serviços da AWS para implementar componentes do Oracle BI 12c que oferecem alta disponibilidade, segurança, flexibilidade e a capacidade de escalar dinamicamente.

Para obter uma lista das práticas recomendadas relacionadas à migração do Oracle BI 12c para a Nuvem AWS, consulte a seção **Informações adicionais** desse padrão.

**nota**  
É uma prática recomendada executar várias migrações de teste antes de transferir seus dados existentes do Oracle BI 12c para a nuvem. Esses testes ajudam você a ajustar sua abordagem de migração, identificar e corrigir possíveis problemas e estimar os requisitos de tempo de inatividade com mais precisão.

## Pré-requisitos e limitações
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Conectividade de rede segura entre servidores on-premises e a AWS por meio dos serviços da [Rede Privada Virtual da AWS (AWS VPN)](https://aws.amazon.com/vpn/) ou do [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)
+ Licenças de software para seu sistema operacional Oracle, Oracle BI 12c, Oracle Database, Oracle WebLogic Server e Oracle HTTP Server

**Limitações**

Para obter informações sobre limites de tamanho de armazenamento, consulte a documentação do [Amazon Relational Database Service (Amazon RDS) para Oracle](https://aws.amazon.com/rds/oracle/features/).

**Versões do produto**
+ Oracle Business Intelligence Enterprise, edição 12c
+  WebLogic Servidor Oracle 12c
+ Oracle HTTP Server 12c
+ Banco de dados Oracle 12c (ou mais recente)
+ Oracle Java SE 8

## Arquitetura
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers-architecture"></a>

O diagrama a seguir mostra um exemplo de arquitetura para executar componentes do Oracle BI 12c na Nuvem AWS:

![\[Exemplo de arquitetura para executar componentes do Oracle BI 12c na Nuvem AWS.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/8bb72df1-7546-4208-bc70-5789767e3600/images/aae8f8f3-8125-4868-a8e5-eac1cc42812f.png)


 

O diagrama a seguir mostra a arquitetura:

1. O Amazon Route 53 fornece configuração de serviço de nome de domínio (DNS).

1. O Elastic Load Balancing (ELB) distribui o tráfego de rede para melhorar a escalabilidade e a disponibilidade dos componentes do Oracle BI 12c em várias zonas de disponibilidade.

1. Os grupos do Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling hospedam os Oracle HTTP Servers, o servidor Weblogic Admin e os servidores de BI gerenciados em várias zonas de disponibilidade.

1. O Amazon Relational Database Service (Amazon RDS) para banco de dados Oracle armazena metadados do BI Server em várias zonas de disponibilidade.

1. O Amazon Elastic File System (Amazon EFS) é montado em cada componente do Oracle BI 12c para armazenamento compartilhado de arquivos.

**Pilha de tecnologia**
+ Amazon Elastic Block Store (Amazon EBS)
+ Nuvem de computação elástica da Amazon (Amazon EC2)
+ Amazon Elastic File System (Amazon EFS)
+ Amazon RDS para Oracle
+ AWS Certificate Manager (ACM)
+ Elastic Load Balancing (ELB)
+ Oracle BI 12c
+  WebLogic Servidor Oracle 12c
+ Oracle HTTP Server (OHS)

## Ferramentas
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers-tools"></a>
+  CloudFormationA [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) ajuda você a configurar recursos da AWS, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em todas as contas e regiões da AWS.
+ [O AWS Certificate Manager (ACM)](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) ajuda você a criar, armazenar e renovar certificados e chaves SSL/TLS X.509 públicos e privados que protegem seus sites e aplicativos da AWS.
+ O [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) ajuda você a migrar armazenamentos de dados para a Nuvem AWS ou entre combinações de configurações na nuvem e on-premises.
+ [A Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/?id=docs_gateway) fornece capacidade de computação escalável na Nuvem AWS. Você pode iniciar quantos servidores virtuais precisar e escalá-los na vertical rapidamente.
+ [O Amazon EC2 Auto Scaling](https://aws.amazon.com/ec2/autoscaling/) ajuda você a manter a disponibilidade do aplicativo e permite que você adicione ou remova automaticamente EC2 instâncias da Amazon de acordo com as condições definidas por você. 
+ O [Amazon Elastic File System (Amazon EFS)](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) ajuda você a criar e configurar sistemas de arquivos compartilhados na Nuvem AWS.
+ O [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) distribui o tráfego de entrada de aplicativos ou de rede em vários destinos. Por exemplo, você pode distribuir tráfego entre instâncias, contêineres e endereços IP do Amazon Elastic Compute Cloud (Amazon EC2) em uma ou mais zonas de disponibilidade.
+ O [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) ajuda você a configurar, operar e escalar um banco de dados relacional na Nuvem AWS.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
+ A [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) ajuda a iniciar recursos da AWS em uma rede virtual definida por você. Essa rede virtual é semelhante a uma rede tradicional que você operaria no próprio datacenter, com os benefícios de usar a infraestrutura escalável da AWS.
+ O [Oracle Data Pump](https://docs.oracle.com/cd/B19306_01/server.102/b14215/dp_overview.htm) ajuda você a mover dados e metadados de um banco de dados para outro em alta velocidade.
+ O [Oracle Fusion Middleware](https://www.oracle.com/middleware/technologies/business-intelligence-v12214-downloads.html) é um conjunto de ferramentas de desenvolvimento de aplicativos e soluções de integração para gerenciamento de identidade, colaboração e relatórios de business intelligence.
+  GoldenGateA [Oracle](https://www.oracle.com/integration/goldengate/#:~:text=OCI%20GoldenGate%20is%20a%20real,in%20the%20Oracle%20Cloud%20Infrastructure.) ajuda você a projetar, executar, orquestrar e monitorar suas soluções de replicação de dados e streaming de processamento de dados na Oracle Cloud Infrastructure.
+ [O Oracle WebLogic Scripting Tool (WLST)](https://docs.oracle.com/middleware/12213/cross/wlsttasks.htm) fornece uma interface de linha de comando que ajuda você a escalar horizontalmente seus clusters. WebLogic 

## Épicos
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers-epics"></a>

### Avaliar o ambiente de origem
<a name="assess-the-source-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Reunir informações de inventário de software. | Identifique versões e níveis de patch para cada um dos componentes de software da sua pilha de tecnologia de origem, incluindo o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Arquiteto de migração, arquiteto de soluções, proprietário do aplicativo, administrador do Oracle BI | 
| Reunir informações de inventário de computação e armazenamento. | Em seu ambiente de origem, analise as métricas de utilização atuais e históricas para o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html)Certifique-se de considerar os picos históricos de uso. | Arquiteto de migração, arquiteto de soluções, proprietário do aplicativo, administrador do Oracle BI, administrador do sistema | 
| Reunir informações sobre a arquitetura do ambiente de origem e seus requisitos. | Obtenha uma compreensão completa da arquitetura do seu ambiente de origem e de seus requisitos, incluindo o conhecimento do seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Arquiteto de migração, arquiteto de soluções, proprietário do aplicativo, administrador do Oracle BI | 
| Identificar fontes de dados de Java Database Connectivity (JDBC). | Reúna informações sobre as fontes de dados e drivers do JDBC do seu ambiente de origem para cada mecanismo de banco de dados que ele usa. | Arquiteto de migração, proprietário do aplicativo, administrador do Oracle BI, engenheiro ou administrador de banco de dados | 
| Reunir informações sobre configurações específicas do ambiente. | Colete informações sobre definições e configurações específicas do seu ambiente de origem, incluindo o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Arquiteto de migração, arquiteto de soluções, proprietário do aplicativo, administrador do Oracle BI | 
| Identificar quaisquer dependências em outros aplicativos. | Colete informações sobre integrações em seu ambiente de origem que criam dependências com outros aplicativos.Certifique-se de identificar todas as integrações do Lightweight Directory Access Protocol (LDAP) e outros requisitos de rede. | Arquiteto de migração, arquiteto de soluções, proprietário do aplicativo, administrador do Oracle BI | 

### Projetar seu ambiente de destino
<a name="design-your-target-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar um documento de projeto de alto nível. | Crie um documento de projeto de arquitetura de destino. Certifique-se de usar as informações coletadas ao avaliar seu ambiente de origem para compor o documento do projeto. | Arquiteto de soluções, arquiteto de aplicativos, engenheiro de banco de dados, arquiteto de migração | 
| Obter aprovação para o documento do projeto. | Revise o documento do projeto com as partes interessadas e obtenha as aprovações necessárias. | Proprietário do aplicativo ou serviço, arquiteto de soluções, arquiteto de aplicativos | 

### Implantar a infraestrutura
<a name="deploy-the-infrastructure"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Prepare o código de infraestrutura em CloudFormation. | Crie CloudFormation modelos para provisionar sua infraestrutura Oracle BI 12c na Nuvem AWS.Para obter mais informações, consulte Como [trabalhar com CloudFormation modelos da AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html) no *Guia CloudFormation do usuário da AWS*.É uma prática recomendada criar CloudFormation modelos modulares para cada camada do Oracle BI 12c, em vez de um modelo grande para todos os seus recursos. Para obter mais informações sobre as CloudFormation melhores práticas, consulte [8 melhores práticas ao automatizar suas implantações com a AWS CloudFormation no blog](https://aws.amazon.com/blogs/infrastructure-and-automation/best-practices-automating-deployments-with-aws-cloudformation/) da AWS. | Arquiteto de infraestrutura de nuvem, arquiteto de soluções, arquiteto de aplicativos | 
| Download do software necessário. | DDownload o seguinte software junto com as versões e os patches necessários do [site da Oracle](https://www.oracle.com/):[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Arquiteto de migração, engenheiro de banco de dados, arquiteto de aplicativos | 
| Preparar os scripts de instalação. | Crie scripts de instalação de software que executem uma instalação silenciosa. Esses scripts simplificam a automação da implantação.Para obter mais informações, consulte [OBIEE 12c: Como realizar uma instalação silenciosa?](https://support.oracle.com/knowledge/Enterprise%20Performance%20Management%20and%20Business%20Intelligence/2267490_1.html) no site do Oracle Support. Você precisa de uma conta do Oracle Support para ver os documentos. | Arquiteto de migração, engenheiro de banco de dados, arquiteto de aplicativos | 
| Criar uma AMI do Linux baseada no Amazon EBS para seus níveis de web e aplicativos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Arquiteto de migração, engenheiro de banco de dados, arquiteto de aplicativos | 
| Inicie sua infraestrutura da AWS usando CloudFormation. | Implante suas camadas web e de aplicativos do Oracle BI 12c em módulos usando os CloudFormation modelos que você criou.Para obter instruções, consulte [Conceitos básicos da AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/GettingStarted.html) no *Guia CloudFormation do usuário da AWS*. | Arquiteto de infraestrutura de nuvem, arquiteto de soluções, arquiteto de aplicativos | 

### Migrar o Oracle BI 12c para a AWS usando uma nova instalação
<a name="migrate-oracle-bi-12c-to-aws-by-using-a-fresh-installation"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Preparar o software necessário. | Organize o software necessário em um local acessível às EC2 instâncias da Amazon. Por exemplo, você pode configurar o software no Amazon S3 ou em outra EC2 instância da Amazon que estaria acessível aos seus servidores web e de aplicativos. | Arquiteto de migração, arquiteto do Oracle BI, infraestrutura de nuvem, arquiteto de soluções, arquiteto de aplicativos | 
| Preparar seu banco de dados do repositório para a instalação do Oracle BI 12c. | Crie esquemas do Oracle BI 12c executando o [Oracle Repository Creation Utility (RCU)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Resources.RCU.html#Oracle.Resources.RCU.Installing) em uma nova instância de banco de dados do [Amazon RDS para Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html). | Arquiteto de infraestrutura de nuvem, arquiteto de soluções, arquiteto de aplicativos, arquiteto de migração, arquiteto do Oracle BI | 
| Instalar o Oracle Fusion Middleware 12c e o Oracle BI 12c. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Arquiteto de migração, arquiteto do Oracle BI | 
| Configure seu domínio WebLogic do Oracle Server para o Oracle BI 12c. | Configure seu domínio Oracle BI 12c como uma implantação sem cluster. Para obter mais informações, consulte [Configurar o domínio de BI](https://docs.oracle.com/middleware/bi12214/lcm/BIEDG/GUID-FD80C4C4-A2E9-4190-8B6A-7AD659D8FBE2.htm#BIEDG-GUID-D4FC2F0A-88B0-453C-BF14-17D365018252) no *Guia de Implantação Corporativa do Oracle Fusion Middleware para Oracle Business Intelligence*. | Arquiteto de migração, arquiteto do Oracle BI | 
| Aumentar a escala horizontalmente do Oracle BI 12c. | Aumente a escala horizontalmente de um único nó até o número desejado de nós. Para obter mais informações, consulte [Aumentar a escala horizontalmente do Oracle Business Intelligence](https://docs.oracle.com/middleware/bi12214/lcm/BIEDG/GUID-B7BEA45C-A8C0-4591-B748-FC35C587DAE0.htm#BIEDG-GUID-B7BEA45C-A8C0-4591-B748-FC35C587DAE0) no *Guia de Implantação Corporativa do Oracle Fusion Middleware para Oracle Business Intelligence*. | Arquiteto de migração, arquiteto do Oracle BI | 
| Instalar o Oracle HTTP Server 12c. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Arquiteto de migração, arquiteto do Oracle BI | 
| Configurar balanceadores de carga para terminação SSL. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Arquiteto de infraestrutura de nuvem, arquiteto de migração | 
| Migrar artefatos de metadados de inteligência de negócios para a AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Arquiteto de migração, arquiteto do Oracle BI | 
| Executar tarefas pós-migração. | Depois de importar os arquivos BAR, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Arquiteto de migração, arquiteto do Oracle BI | 

### Testar o novo ambiente
<a name="test-the-new-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Testar o novo ambiente Oracle BI 12c. | Realize end-to-end testes no novo ambiente Oracle BI 12c. Use a automação o máximo possível.Exemplos de atividades de teste incluem:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html)Realize testes e validações adicionais conforme necessário. | Arquiteto de migração, arquiteto de soluções, proprietário do aplicativo, administrador do Oracle BI | 

### Transferir para o novo ambiente
<a name="cut-over-to-the-new-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Desconectar o tráfego do ambiente Oracle BI 12c on-premises. | Na janela de substituição indicada, interrompa todo o tráfego para o ambiente on-premises do Oracle BI 12c. | Arquiteto de migração, arquiteto de soluções, proprietário do aplicativo, administrador do Oracle BI | 
| Ressincronizar o novo banco de dados do repositório Oracle BI 12c com o banco de dados de origem. | Ressincronize o banco de dados do repositório Amazon RDS Oracle BI 12c com o banco de dados on-premises.Para sincronizar os bancos de dados, você pode usar uma [atualização do Oracle Data Pump](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Procedural.Importing.DataPump.html) ou uma [captura de dados de alteração (CDC) do AWS DMS](https://aws.amazon.com/blogs/database/migrating-oracle-databases-with-near-zero-downtime-using-aws-dms/). | Administrador do Oracle BI, engenheiro/administrador de banco de dados | 
| Mude seu Oracle BI 12c URLs para apontar para o novo ambiente da AWS. | Atualize o Oracle BI 12c URLs em seus servidores DNS internos para que eles apontem para a nova instalação da AWS. | Arquiteto de migração, arquiteto de soluções, proprietário do aplicativo, administrador do Oracle BI | 
| Monitorar o novo ambiente. | Monitore o novo ambiente Oracle BI 12c usando qualquer uma das seguintes ferramentas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Administrador do Oracle BI, engenheiro/administrador de banco de dados, Administrador do Aplicativo | 
| Obter a aprovação do projeto. | Analise os resultados dos testes com as partes interessadas e obtenha as aprovações necessárias para concluir a migração. | Proprietário do aplicativo, proprietário do serviço, arquiteto de infraestrutura de nuvem, arquiteto de migração, arquiteto do Oracle BI | 

## Recursos relacionados
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers-resources"></a>
+ [Usar o Oracle Repository Creation Utility no Amazon RDS para Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Resources.RCU.html) (*Guia do usuário do Amazon RDS*)
+ [Oracle no Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html) (*Guia do usuário do Amazon RDS*)
+ [Oracle WebLogic Server 12c na AWS](https://d1.awsstatic.com/whitepapers/Oracle-WebLogic-12c-on-AWS.pdf) (whitepaper da AWS)
+ [Implantar o Oracle Business Intelligence para alta disponibilidade](https://docs.oracle.com/middleware/1221/biee/BIESG/highavail.htm#BIESG1584) (Oracle Help Center)
+ [Oracle Business Intelligence Application Archive (BAR)](https://docs.oracle.com/middleware/bi12214/biee/BIESG/GUID-7FCD90A3-E005-49BF-902F-30FBF9B41B07.htm#BIESG2889) (central de ajuda da Oracle)
+ [Como migrar o OBI 12c entre ambientes](https://support.oracle.com/knowledge/Enterprise%20Performance%20Management%20and%20Business%20Intelligence/2203360_1.html) (suporte do Oracle) 

## Mais informações
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers-additional"></a>

A seguir está uma lista das práticas recomendadas relacionadas à migração do Oracle BI 12c para a Nuvem AWS.

**Bancos de dados do repositório**

É uma prática recomendada hospedar esquemas de banco de dados Oracle BI 12c em uma instância do Amazon RDS para Oracle. Esse tipo de instância fornece capacidade econômica e redimensionável enquanto automatiza tarefas administrativas, como provisionamento de hardware, configuração de banco de dados, aplicativo de patches e backups.

Para obter mais informações, consulte [Usar o Oracle Repository Creation Utility no Amazon RDS para Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Resources.RCU.html) no *Guia do usuário do Amazon RDS*.

**Níveis da Web e do aplicativo**

[ EC2 As instâncias Amazon otimizadas para memória](https://aws.amazon.com/ec2/instance-types/) geralmente são adequadas para servidores Oracle BI 12c. Seja qual for o tipo de instância escolhido, certifique-se de que as instâncias que você provisiona atendam aos requisitos de uso de memória do seu sistema. Além disso, certifique-se de [configurar um tamanho de pilha de WebLogic Java Virtual Machine (JVM) suficiente](https://docs.oracle.com/cd/E49933_01/server.770/es_install/src/tins_postinstall_jvm_heap.html#:~:text=The%20default%20JVM%20heap%20size%20for%20WebLogic%20is%203GB.,file%20for%20Linux%20or%20setDomainEnv.) com base na memória disponível da sua EC2 instância Amazon.

**Armazenamento local**

A E/S desempenha um papel importante no desempenho geral do seu aplicativo Oracle BI 12c. O Amazon Elastic Block Store (Amazon EBS) oferece classes de armazenamento diferentes que são otimizadas para padrões de workload diferentes. Certifique-se de escolher um tipo de volume do Amazon EBS adequado ao seu caso de uso.

Para obter mais informações sobre tipos de volumes de EBS, consulte [Atributos do Amazon EBS](https://aws.amazon.com/ebs/features/) na documentação do Amazon EBS.

**Armazenamento compartilhado**

Um domínio em cluster do Oracle BI 12c requer armazenamento compartilhado para os seguintes recursos:
+ Arquivos de configuração
+ Diretório de dados singleton (SDD) Oracle BI 12c
+ Cache global da Oracle
+ Scripts do Oracle BI Scheduler
+ Binários WebLogic do Oracle Server

Você pode atender a esse requisito de armazenamento compartilhado usando o [Amazon EFS](https://aws.amazon.com/efs/), que fornece um sistema de arquivos elástico de rede (NFS) escalável e totalmente gerenciado.

*Ajuste fino do desempenho do armazenamento compartilhado*

O Amazon EFS tem dois [modos de throughput](https://docs.aws.amazon.com/efs/latest/ug/performance.html#throughput-modes): **provisionado** e **intermitente**. O serviço também tem dois [modos de desempenho](https://docs.aws.amazon.com/efs/latest/ug/performance.html#performancemodes): **Uso geral** e **E/S máxima**.

Para ajustar o desempenho, comece testando suas workloads no modo de desempenho de **objetivo geral** e no modo de throughput **provisionada**. A realização desses testes ajudará você a determinar se esses modos de linha de base são suficientes para atender aos níveis de serviço desejados.

Para obter mais informações, consulte o [Desempenho do Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/performance.html) no *Guia do usuário do Amazon EFS*.

**Alta disponibilidade e recuperação de desastres**

É uma prática recomendada implantar componentes do Oracle BI 12c em várias zonas de disponibilidade para proteger esses recursos no caso de uma falha na zona de disponibilidade. A seguir está uma lista das práticas recomendadas de disponibilidade e recuperação de desastres para recursos específicos do Oracle BI 12c hospedados na Nuvem AWS:
+ **Bancos de dados do repositório Oracle BI 12c**: implante uma instância de banco de dados Amazon RDS multi-AZ em seu banco de dados do repositório Oracle BI 12c. Em uma implantação multi-AZ, o Amazon RDS automaticamente provisiona e mantém uma réplica em espera síncrona em outra AZ. Executar uma instância de banco de dados do repositório do Oracle BI 12c em zonas de disponibilidade (AZ) pode aumentar a disponibilidade durante a manutenção planejada do sistema e ajudar a proteger seus bancos de dados contra falhas na instância e na zona de disponibilidade.
+ **Servidores gerenciados Oracle BI 12c**: Para obter tolerância a falhas, é uma prática recomendada implantar componentes do sistema Oracle BI 12c em servidores gerenciados em um grupo Amazon Auto EC2 Scaling configurado para abranger várias zonas de disponibilidade. [O Auto Scaling substitui instâncias defeituosas com base nas verificações de saúde da Amazon. EC2 ](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html) No caso de uma falha em uma zona de disponibilidade, os Servidores HTTP Oracle continuam direcionando o tráfego para os servidores gerenciados na zona de disponibilidade em funcionamento. Em seguida, o ajuste de escala automático inicia instâncias para atender aos requisitos de contagem de hosts. É recomendável habilitar a replicação do estado da sessão HTTP para ajudar a garantir que haja um failover tranquilo das sessões existentes para os servidores gerenciados em funcionamento.
+ **Servidores de Administração Oracle BI 12c:** Para garantir que seu Servidor de Administração tenha alta disponibilidade, hospede-o em um grupo do Amazon EC2 Auto Scaling configurado para abranger várias zonas de disponibilidade. Em seguida, defina o tamanho mínimo e máximo do grupo definido como **1**. Se ocorrer uma falha na zona de disponibilidade, o Amazon EC2 Auto Scaling iniciará um servidor de administração substituto em uma zona de disponibilidade alternativa. Para recuperar qualquer host subjacente com falha dentro da mesma zona de disponibilidade, você pode ativar o [Amazon EC2 Auto Recovery](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-recover.html).
+ **Servidores Oracle Web Tier:** É uma prática recomendada associar seu Oracle HTTP Server ao seu domínio WebLogic do Oracle Server. Para obter alta disponibilidade, implante seu Oracle HTTP Server em um grupo Amazon EC2 Auto Scaling configurado para aspen em várias zonas de disponibilidade. Em seguida, coloque o servidor atrás de um balanceador de carga elástico ELB. Para fornecer proteção adicional contra falhas no host, você pode ativar o Amazon EC2 Auto Recovery.

**Escalabilidade**

A elasticidade da Nuvem AWS ajuda você a escalar aplicativos horizontal ou verticalmente em resposta aos requisitos de workload.

*Escala vertical*

Para escalar verticalmente seu aplicativo, você pode alterar o tamanho e o tipo das EC2 instâncias da Amazon que estão executando seus componentes do Oracle BI 12c. Você não precisa provisionar instâncias em excesso no início da implantação e incorrer em custos desnecessários. 

*Escalabilidade horizontal*

O Amazon EC2 Auto Scaling ajuda você a escalar horizontalmente seu aplicativo adicionando ou removendo automaticamente servidores gerenciados com base nos requisitos de carga de trabalho.

**nota**  
A escalabilidade horizontal com o Amazon EC2 Auto Scaling requer habilidades de script e testes completos para ser implementada.

**Backup e recuperação** 

A seguir está uma lista das práticas recomendadas de backup e recuperação para recursos específicos do Oracle BI 12c hospedados na Nuvem AWS:
+ **Repositórios de metadados do Oracle Business Intelligence:** o Amazon RDS cria e salva automaticamente backups de suas instâncias de banco de dados. Esses backups são mantidos por um período especificado por você. Certifique-se de definir as configurações de duração e retenção do backup do Amazon RDS com base nos requisitos de proteção de dados. Para obter mais informações, consulte [Backup e restauração do Amazon RDS](https://aws.amazon.com/rds/features/backup/).
+ **Servidores gerenciados, servidores de administração e servidores de nível web:** certifique-se de configurar os [snapshots do Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSSnapshots.html) com base em seus requisitos de proteção e retenção de dados.
+ **Armazenamento compartilhado:** você pode gerenciar o backup e a recuperação de arquivos armazenados no Amazon EFS usando o [AWS Backup](https://docs.aws.amazon.com/efs/latest/ug/awsbackup.html). O serviço AWS Backup também pode ser implantado para gerenciar centralmente o backup e a recuperação de outros serviços, incluindo Amazon, EC2 Amazon EBS e Amazon RDS. Para obter mais informações, consulte [O que é o AWS Backup?](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html) No *Guia do desenvolvedor do AWS Backup*.

**Segurança e conformidade**

A seguir está uma lista das práticas recomendadas de segurança e dos serviços da AWS que podem ajudar você a proteger seus aplicativos Oracle BI 12c na Nuvem AWS:
+ **Criptografia em repouso:** Amazon RDS, Amazon EFS e Amazon EBS oferecem suporte a algoritmos de criptografia padrão do setor. Você pode usar o [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) para criar e gerenciar chaves criptográficas e controlar seu uso nos serviços da AWS e em seus aplicativos. Você também pode configurar o [Oracle Transparent Data Encryption (TDE)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.Options.AdvSecurity.html) na instância de banco de dados Amazon RDS para Oracle que hospeda seu banco de dados do repositório Oracle BI 12c.
+ **Criptografia em trânsito:** é uma prática recomendada habilitar os protocolos SSL ou TLS para proteger os dados em trânsito entre as várias camadas da instalação do Oracle BI 12c. Você pode usar o [AWS Certificate Manager (ACM)](https://aws.amazon.com/certificate-manager/) para provisionar, gerenciar e implantar certificados SSL e TLS públicos e privados para os recursos do Oracle BI 12c.
+ **Segurança de rede**: certifique-se de implantar seus recursos do Oracle BI 12c em uma Amazon VPC que tenha os controles de acesso apropriados configurados para seu caso de uso. Configure seus grupos de segurança para filtrar o tráfego de entrada e saída das EC2 instâncias da Amazon que estão executando sua instalação. Além disso, certifique-se de configurar as [Listas de Controle de Acesso à Rede (NACLs)](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html) que permitem ou negam tráfego com base em regras definidas.
+ **Monitoramento e registro**: você pode usar CloudTrail a [AWS](https://aws.amazon.com/cloudtrail/) para rastrear chamadas de API para sua infraestrutura da AWS, incluindo seus recursos do Oracle BI 12c. Essa funcionalidade é útil ao rastrear alterações na infraestrutura ou ao realizar uma análise de segurança. Você também pode usar CloudWatch a [Amazon](https://aws.amazon.com/cloudwatch/) para visualizar dados operacionais que podem fornecer uma visão prática sobre o desempenho e a integridade do seu aplicativo Oracle BI 12c. Você também pode configurar alarmes e realizar ações automatizadas com base nesses alarmes. O Amazon RDS fornece ferramentas adicionais de monitoramento, incluindo [monitoramento aprimorado](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html) e [Performance Insights](https://aws.amazon.com/rds/performance-insights/).

# Migre um pilha ELK para a Nuvem Elastic na AWS
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws"></a>

*Battulga Purevragchaa e Antony Prasad Thevaraj, Amazon Web Services*

*Uday Reddy, sem afiliação*

## Resumo
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws-summary"></a>

[Elastic](https://www.elastic.co/) fornece serviços há muitos anos, com seus usuários e clientes normalmente gerenciando a própria Elastic on-premises. [Nuvem Elastic](https://www.elastic.co/cloud), o [serviço gerenciado do Elasticsearch](https://www.elastic.co/elasticsearch/service), fornece uma forma de consumir o Elastic Stack (ELK Stack) e soluções para [pesquisa corporativa](https://www.elastic.co/enterprise-search), [observabilidade](https://www.elastic.co/observability) e [segurança](https://www.elastic.co/security). Você pode acessar as soluções da Elastic com aplicativos como Logs, Metrics, APM (monitoramento de desempenho de aplicativos) e SIEM (gerenciamento de eventos e informações de segurança). Você pode usar atributos integrados, como machine learning, gerenciamento do ciclo de vida do índice e Kibana Lens (para visualizações de arrastar e soltar).

Quando você migra do Elasticsearch autogerenciado para a Nuvem Elastic, o serviço Elasticsearch cuida do seguinte:
+ Provisionamento e gerenciamento da infraestrutura subjacente
+ Criação e gerenciamento de clusters do Elasticsearch
+ Aumentando e diminuindo a escala de clusters
+ Atualizações, patches e snapshots

Isso lhe dá mais tempo para se concentrar na solução de outros desafios.

Esse padrão define como migrar o Elasticsearch 7.13 on-premises para o Elasticsearch na Nuvem Elastic na Amazon Web Services (AWS). Outras versões podem exigir pequenas modificações nos processos descritos nesse padrão. Para obter mais informações, entre em contato com o representante da Elastic.

## Pré-requisitos e limitações
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws-prereqs"></a>

**Pré-requisitos **
+ Uma [conta ativa da AWS](https://aws.amazon.com/account/) com acesso ao [Amazon Simple Storage Service](https://aws.amazon.com/s3/) (Amazon S3) para snapshots
+ Um [link privado](https://docs.aws.amazon.com/vpc/latest/userguide/vpn-connections.html) seguro e com largura de banda suficientemente alta para copiar arquivos de dados de snapshots para o Amazon S3
+ [Amazon S3 Transfer Acceleration](https://aws.amazon.com/s3/transfer-acceleration/)
+ [Políticas do Elastic Snapshot](https://www.elastic.co/guide/en/elasticsearch/reference/7.10/getting-started-snapshot-lifecycle-management.html) para garantir que a ingestão de dados seja arquivada regularmente, seja em um armazenamento de dados local suficientemente grande ou em um armazenamento remoto (Amazon S3)

Você deve entender o tamanho dos seus snapshots e das [ políticas de ciclo de vida](https://www.elastic.co/guide/en/elasticsearch/reference/current/index-lifecycle-management.html) dos índices que os acompanham on-premises antes de iniciar a migração. Para obter mais informações, [entre em contato com a Elastic](https://www.elastic.co/contact).

**Funções e habilidades**

O processo de migração também exige as funções e a experiência descritas na tabela a seguir.


| 
| 
| Perfil | Experiência | Responsabilidades | 
| --- |--- |--- |
| Suporte de aplicativos | Familiaridade com a Nuvem Elastic e o Elastic on-premises | Todas as tarefas relacionadas à Elastic | 
| Administrador de sistemas ou DBA | Conhecimento profundo do ambiente da Elastic on-premises e de sua configuração | Capacidade de provisionar armazenamento, instalar e usar a interface da linha de AWS Command Line Interface (AWS CLI) e identificar todas as fontes de dados que alimentam a Elastic on-premises | 
| Administrador de rede | Conhecimento da conectividade, segurança e desempenho da rede on-premises com a AWS | Estabelecimento de links de rede on-premises para o Amazon S3, com uma compreensão da largura de banda de conectividade | 

**Limitações**
+ O Elasticsearch na Nuvem Elastic está disponível somente nas [regiões compatíveis da AWS (setembro de 2021)](https://www.elastic.co/guide/en/cloud/current/ec-regions-templates-instances.html#ec-aws_regions).

**Versões do produto**
+ Elasticsearch 7.13

## Arquitetura
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws-architecture"></a>

**Pilha de tecnologia de origem**

Elasticsearch 7.13 on-premises ou superior:
+ Snapshots do cluster
+ Snapshots de índices
+ Configurações do [Beats](https://www.elastic.co/beats/)

**Arquitetura de tecnologia de origem**

O diagrama a seguir mostra uma arquitetura on-premises típica com diferentes métodos de ingestão, tipos de nós e Kibana. Os diferentes tipos de nós refletem as funções de cluster, autenticação e visualização do Elasticsearch.

![\[Processo em oito etapas, que envolve Beats, Logstash, Elasticsearch e Kibana.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/23d1b437-22ff-420e-80ac-834f1116d234/images/937c4d22-429f-4673-86df-ae491d68389c.png)


1. Ingestão do Beats para o Logstash

1. Ingestão da fila de mensagens do Beats para o Apache Kafka

1. Ingestão do Filebeat para o Logstash

1. Ingestão da fila de mensagens do Apache Kafka para o Logstash

1. Ingestão do Logstash para um cluster do Elasticsearch

1. Cluster do Elasticsearch

1. Nó de autenticação e notificação

1. Kibana e nós blob

**Pilha de tecnologias de destino**

A Nuvem Elastic é implantada em sua conta de software como serviço (SaaS) em várias regiões da AWS com replicação entre clusters.
+ Snapshots do cluster
+ Snapshots de índices
+ Configurações do Beats
+ Nuvem Elastic
+ Network Load Balancer
+ Amazon Route 53
+ Amazon S3

**Arquitetura de destino**

![\[Os endpoints do Route 53 direcionam o tráfego para ambientes multi-AZ em duas regiões diferentes.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/23d1b437-22ff-420e-80ac-834f1116d234/images/16cbac49-0adb-4469-b546-ae4b1ca35357.png)


 

A infraestrutura gerenciada da Nuvem Elastic é:
+ Altamente disponível, estando presente em várias [zonas de disponibilidade](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/) e várias regiões da AWS.
+ Região tolerante a falhas porque os dados (índices e snapshots) são replicados usando a [replicação entre clusters (CCR) da Nuvem Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/7.14/xpack-ccr.html).
+ [Arquivamento, porque os snapshots são arquivados no Amazon S3](https://aws.amazon.com/s3/?p=pm&c=s3&z=4)
+ Partição de rede tolerante por meio de uma combinação de [Network Load Balancers](https://aws.amazon.com/elasticloadbalancing/network-load-balancer/) e [Route 53](https://aws.amazon.com/route53/)
+ Ingestão de dados originada (mas não limitada a) [Elastic APM](https://www.elastic.co/apm/), [Beats](https://www.elastic.co/beats/), [Logstash](https://www.elastic.co/guide/en/logstash/current/index.html)

**Etapas de migração de alto nível**

A Elastic desenvolveu sua própria metodologia prescritiva para migrar o Elastic Cluster on-premises para a Nuvem Elastic. A metodologia da Elastic está diretamente alinhada e complementa a orientação e as melhores práticas de migração da AWS, incluindo o [Well-Architected Framework ](https://aws.amazon.com/architecture/well-architected/?wa-lens-whitepapers.sort-by=item.additionalFields.sortDate&wa-lens-whitepapers.sort-order=desc) e [e o Programa de Aceleração da Migração](https://aws.amazon.com/migration-acceleration-program/) (MAP). Normalmente, as três fases de migração para a AWS são as seguintes:
+ Avaliar
+ Mobilizar
+ Migrar e modernizar

A Elastic segue fases de migração semelhantes com terminologia complementar:
+ Iniciar
+ Planejar
+ Implementar
+ Entregar
+ Fechar

A Elastic usa a Metodologia de Implementação da Elastic para facilitar a entrega dos resultados do projeto. Isso é inclusivo por design para garantir que a Elastic, as equipes de consultoria e as equipes de clientes trabalhem juntas com clareza para fornecer conjuntamente os resultados pretendidos.

A metodologia Elastic combina o faseamento tradicional em cascata com o Scrum na fase de implementação. As configurações dos requisitos técnicos são fornecidas iterativamente de forma colaborativa, minimizando os riscos.

![\[Diagrama mostrando os cinco estágios da Metodologia de Implementação da Elastic.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/23d1b437-22ff-420e-80ac-834f1116d234/images/b041c61d-980e-49a0-a721-791c20edde64.png)


 

## Ferramentas
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws-tools"></a>

**Serviços da AWS**
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html): o Amazon Route 53 é um web service do Sistema de Nomes de Domínio (DNS) altamente disponível e dimensionável. Você pode usar o Route 53 para executar três funções principais em qualquer combinação: registro de domínios, roteamento de DNS e verificação de integridade.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html): o Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos. Você pode utilizar o Amazon S3 para armazenar e recuperar qualquer volume de dados, a qualquer momento, de qualquer lugar na web. Esse padrão usa um bucket do S3 e o [Amazon S3 Transfer Acceleration](https://docs.aws.amazon.com/AmazonS3/latest/userguide/transfer-acceleration-examples.html).
+ [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) — O Elastic Load Balancing distribui automaticamente seu tráfego de entrada em vários destinos, EC2 como instâncias, contêineres e endereços IP, em uma ou mais zonas de disponibilidade.

**Outras ferramentas**
+ [Beats](https://www.elastic.co/beats/): o Beats envia dados do Logstash ou do Elasticsearch
+ [Nuvem Elastic](https://www.elastic.co/cloud/): a Nuvem Elastic é um serviço gerenciado para hospedar o Elasticsearch.
+ [Elasticsearch](https://www.elastic.co/elasticsearch/): o Elasticsearch é um mecanismo de pesquisa e análise que usa o Elastic Stack para armazenar centralmente seus dados para pesquisas e análises escaláveis. Esse padrão também usa a criação de snapshots e a replicação entre clusters.
+ [Logstash](https://www.elastic.co/logstash/): o Logstash é um pipeline de processamento de dados do lado do servidor que ingere dados de várias origens, os transforma e os envia para seu armazenamento de dados.

## Épicos
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws-epics"></a>

### Preparar-se para a migração
<a name="prepare-the-migration"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Identifique os servidores que executam a solução on-premises da Elastic. | Confirme se a migração da Elastic é compatível. | Proprietário do App | 
| Entenda a configuração do servidor on-premises. | Para entender a configuração do servidor necessária para conduzir cargas de trabalho on-premises com êxito, encontre o espaço ocupado pelo hardware do servidor, a configuração da rede e as características de armazenamento que estão em uso atualmente | Suporte de aplicativos | 
| Reúna informações da conta do usuário e do aplicativo. | Identifique os nomes de usuário e nomes de aplicativos que são usados pelo ambiente on-premises da Elastic. | Administrador de sistemas, suporte de aplicativos | 
| Document Beats e configuração do remetente de dados. | Para documentar as configurações, veja as fontes de dados e coletores existentes. Para obter mais informações, consulte a [documentação do Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest.html). | Suporte de aplicativos | 
| Determine a velocidade e o volume dos dados. | Estabeleça uma linha de base para a quantidade de dados que o cluster está manipulando. | Administrador de sistemas, suporte de aplicativos | 
| Documente cenários de RPO e RTO. | Documente os cenários de objetivo de ponto de recuperação (RPO) e objetivo de tempo de recuperação (RTO) em termos de interrupções e contratos de nível de serviço ()SLAs. | Proprietário do aplicativo, administrador de sistemas, suporte de aplicativos | 
| Determine as configurações ideais do ciclo de vida do snapshot. | Defina com que frequência os dados precisam ser protegidos usando snapshots da Elastic *durante e após* a migração. | Proprietário do aplicativo, administrador de sistemas, suporte de aplicativos | 
| Defina as expectativas de desempenho pós-migração. | Gere métricas sobre a atualização de tela atual e esperada, os tempos de execução de consultas e os comportamentos da interface do usuário. | Administrador de sistemas, suporte de aplicativos | 
| Documente os requisitos de transporte, largura de banda e disponibilidade do acesso à Internet. | Verifique a velocidade, a latência e a resiliência das conexões de internet para copiar snapshots para o Amazon S3. | Administrador de rede | 
| Documente os custos atuais do runtime on-premises da Elastic. | Garanta que o dimensionamento do ambiente de destino da AWS seja projetado para ser de alto desempenho e econômico. | DBA, administrador de sistemas, suporte de aplicativos | 
| Identifique as necessidades de autenticação e autorização. | Os atributos de segurança do Elastic Stack fornecem domínios integrados, como Lightweight Directory Access Protocol (LDAP), Security Assertion Markup Language (SAML) e OpenID Connect (OIDC). | DBA, administrador de sistemas, suporte de aplicativos | 
| Entenda os requisitos regulatórios específicos com base na localização geográfica. | Garanta que os dados sejam exportados e criptografados de acordo com seus requisitos e com quaisquer requisitos nacionais relevantes. | DBA, administrador de sistemas, suporte de aplicativos | 

### Implementar a migração
<a name="implement-the-migration"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Prepare a área de preparação no Amazon S3.  | Para receber snapshots no Amazon S3[, crie um bucket do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)e um perfil temporário do AWS Identity and Access Management (IAM) com acesso total ao bucket recém-criado. Para obter mais informações, consulte [Criar uma função para delegar permissões a um usuário do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html). Ou você pode usar o AWS Security Token Service para [solicitar credenciais de segurança temporárias](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html). Mantenha o ID da chave de acesso, a chave de acesso secreta e o token da sessão em segurança.Habilitar o [Transfer Acceleration do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/transfer-acceleration-examples.html) no bucket. | Administrador da AWS | 
| Instale a AWS CLI e o plug-in Amazon S3 on-premises. | Em cada nó do Elasticsearch, execute o comando a seguir.<pre>sudo bin/elasticsearch-plugin install repository-s3</pre>Em seguida, reinicie o nó. | Administrador da AWS | 
| Configurar o acesso ao cliente Amazon S3. | Adicione as chaves criadas anteriormente executando os comandos a seguir.<pre>elasticsearch-keystore add s3.client.default.access_key</pre><pre>elasticsearch-keystore add s3.client.default.secret_key</pre><pre>elasticsearch-keystore add s3.client.default.session_token</pre> | Administrador da AWS | 
| Registre um repositório de snapshots para dados da Elastic | Use as [ferramentas de desenvolvimento do Kibana](https://www.elastic.co/guide/en/kibana/current/console-kibana.html) para informar ao cluster on-premises local em qual bucket remoto do S3 gravar. | Administrador da AWS | 
| Configure a política de snapshot. | Para configurar o gerenciamento do ciclo de vida de snapshots, na guia **Políticas** do Kibana, escolha a **política SLM** e defina quais horários, fluxos de dados ou índices devem ser incluídos e quais nomes usar.Configure uma política que tire snapshots frequentes. Os snapshots são incrementais e fazem uso eficiente do armazenamento. Combine a sua decisão de avaliação de prontidão. Uma política também pode especificar uma [política de retenção](https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-retention.html) e excluir snapshots automaticamente quando eles não forem mais necessários. | Suporte de aplicativos | 
| Verifique se os snapshots funcionam. | Nas Ferramentas de desenvolvimento do Kibana, execute o comando a seguir.<pre>GET _snapshot/<your_repo_name>/_all</pre> | Administrador da AWS, Suporte de aplicativos,  | 
| Implante um novo cluster na Nuvem Elastic.  | [Faça login no Elastic](https://cloud.elastic.co/login?redirectTo=%2Fhome) e escolha um cluster para “observabilidade, pesquisa ou segurança” com base nas descobertas de negócios apresentadas na avaliação de prontidão. | Administrador da AWS, Suporte de aplicativos | 
| Configure o acesso ao armazenamento de chaves do cluster. | O novo cluster precisa acessar o bucket do S3 que armazenará os snapshots. No Elasticsearch Service Console, escolha **Segurança** e insira as chaves secretas e de acesso do IAM que você criou anteriormente. | Administrador da AWS | 
| Configurar o cluster hospedado da Nuvem Elastic para acessar o Amazon S3. | Configure um novo acesso de cluster ao repositório de snapshots criado anteriormente no Amazon S3. Usando o Kibana, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/migrate-an-elk-stack-to-elastic-cloud-on-aws.html) | Administrador da AWS, Suporte de aplicativos | 
| Verifique o novo repositório do Amazon S3. | Garanta que você possa acessar seu novo repositório hospedado no cluster da Nuvem Elastic. | Administrador da AWS | 
| Inicialize o cluster de serviços do Elasticsearch. | No Elasticsearch Service Console, inicialize o cluster de serviços Elasticsearch a partir do snapshot do S3.Execute um dos seguintes comandos como POSTAR.<pre>*/_close?expand_wildcards=all</pre><pre>/_snapshot/<your-repo-name>/  <your-snapshot-name>/_restore</pre><pre>*/_open?expand_wildcards=all</pre> | Suporte de aplicativos | 

### Concluir a migração
<a name="complete-the-migration"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Verifique se a restauração do snapshot foi bem-sucedida. | Usando o Kibana Dev Tools, execute o comando a seguir.<pre>GET _cat/indices</pre> | Suporte de aplicativos | 
| Implemente serviços de ingestão. | Conecte os endpoints do Beats e do Logstash ao novo endpoint do serviço Elasticsearch. | Suporte de aplicativos | 

### Teste o ambiente de cluster e limpe
<a name="test-the-cluster-environment-and-clean-up"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Valide o ambiente de cluster. | Depois que o ambiente de cluster Elastic on-premises for migrado para a AWS, você poderá se conectar a ele e usar suas próprias ferramentas de teste de aceitação do usuário (UAT) para validar o novo ambiente. | Suporte de aplicativos | 
| Limpe os recursos. | Depois de validar se o cluster foi migrado com êxito, remova o bucket do S3 e o perfil do IAM usada para a migração. | Administrador da AWS | 

## Recursos relacionados
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws-resources"></a>

**Referência da Elastic**
+ [Nuvem Elastic](https://www.elastic.co/cloud/)
+ [Elasticsearch e Kibana gerenciados na AWS](https://www.elastic.co/elasticsearch/service)
+ [Pesquisa corporativa Elastic](https://www.elastic.co/enterprise-search)
+ [Integrações Elastic](https://www.elastic.co/integrations?search=amazon)
+ [Observabilidade Elastic](https://www.elastic.co/observability)
+ [Segurança Elastic](https://www.elastic.co/security)
+ [Batidas](https://www.elastic.co/beats/)
+ [APM Elastic](https://www.elastic.co/apm/)
+ [Migre para o gerenciamento do ciclo de vida do índice](https://www.elastic.co/guide/en/cloud-enterprise/current/ece-migrate-index-management.html)
+ [Assinaturas da Elastic](https://www.elastic.co/subscriptions)
+ [Entre em contato com a Elastic](https://www.elastic.co/contact)

*Postagens de blog da Elastic*
+ [Como migrar do Elasticsearch autogerenciado para a Nuvem Elastic na AWS ](https://www.elastic.co/blog/how-to-migrate-from-self-managed-elasticsearch-to-elastic-cloud-on-aws) (post no blog)
+ [Migração para a Nuvem Elastic](https://www.elastic.co/blog/migrating-to-elastic-cloud) (publicação no blog)

*Documentação da Elastic*
+ [Tutorial: Automatize os backups com o SLM](https://www.elastic.co/guide/en/elasticsearch/reference/7.10/getting-started-snapshot-lifecycle-management.html)
+ [ILM: gerencie o ciclo de vida do índice](https://www.elastic.co/guide/en/elasticsearch/reference/current/index-lifecycle-management.html)
+ [Logstash](https://www.elastic.co/guide/en/logstash/current/index.html)
+ [Replicação entre clusters (CCR)](https://www.elastic.co/guide/en/elasticsearch/reference/7.14/xpack-ccr.html)
+ [Ingestão de pipelines](https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest.html)
+ [Execute solicitações da API Elasticsearch](https://www.elastic.co/guide/en/kibana/current/console-kibana.html)
+ [Retenção de snapshots](https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-retention.html)

*Vídeo e webinar Elastic*
+ [Migração para a nuvem Elastic](https://www.youtube.com/watch?v=WbPJi-APZ_Q)
+ [Nuvem Elastic: Por que os clientes estão migrando](https://www.elastic.co/webinars/elastic-cloud-why-customers-are-migrating-now) (webinar)

**Referências da AWS**
+ [Nuvem Elastic no AWS Marketplace](https://aws.amazon.com/marketplace/seller-profile?id=d8f59038-c24c-4a9d-a66d-6711d35d7305)
+ [Interface de linha de comando da AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/setup-aws-cli.html)
+ [AWS Direct Connect](https://aws.amazon.com/directconnect/)
+ [Programa de Aceleração da Migração da AWS](https://aws.amazon.com/migration-acceleration-program/) 
+ [Network Load Balancers](https://aws.amazon.com/elasticloadbalancing/network-load-balancer/)
+ [Regiões e zonas de disponibilidade](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/)
+ [Amazon Route 53](https://aws.amazon.com/route53/)
+ [Amazon Simple Storage Service](https://aws.amazon.com/s3/)
+ [Amazon S3 Transfer Acceleration](https://aws.amazon.com/s3/transfer-acceleration/)
+ [Conexões da VPN](https://docs.aws.amazon.com/vpc/latest/userguide/vpn-connections.html)
+ [Well-Architected Framework](https://aws.amazon.com/architecture/well-architected/?wa-lens-whitepapers.sort-by=item.additionalFields.sortDate&wa-lens-whitepapers.sort-order=desc)

## Mais informações
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws-additional"></a>

Se você planeja migrar cargas de trabalho complexas, contrate a [Elastic Consulting Services](https://www.elastic.co/consulting/engage). Se você tiver dúvidas básicas relacionadas a configurações e serviços, entre em contato com a equipe de [Suporte da Elastic](mailto:support@elastic.co).

# Migre dados para o Nuvem AWS usando o Starburst
<a name="migrate-data-to-the-aws-cloud-by-using-starburst"></a>

*Antony Prasad Thevaraj e Suresh Veeragoni, Amazon Web Services*

*Shaun Van Staden, sem afiliação*

## Resumo
<a name="migrate-data-to-the-aws-cloud-by-using-starburst-summary"></a>

O Starburst ajuda a acelerar sua jornada de migração de dados para a Amazon Web Services (AWS) ao fornecer um mecanismo de consultas empresarial que reúne fontes de dados existentes em um único ponto de acesso. Você pode executar análises em várias fontes de dados para obter informações valiosas antes de finalizar qualquer plano de migração. Sem interromper a business-as-usual análise, você pode migrar os dados usando o mecanismo Starburst ou um aplicativo dedicado de extração, transformação e carregamento (ETL).

## Pré-requisitos e limitações
<a name="migrate-data-to-the-aws-cloud-by-using-starburst-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS
+ Uma nuvem privada virtual (VPC).
+ Amazon Elastic Kubernetes Service (Amazon EKS): cluster
+ Um grupo de Auto Scaling da Amazon Elastic Compute Cloud (Amazon EC2)
+ Uma lista das workloads atuais do sistema que precisem ser migradas
+ Conectividade de rede AWS com seu ambiente local

## Arquitetura
<a name="migrate-data-to-the-aws-cloud-by-using-starburst-architecture"></a>

**Arquitetura de referência**

O diagrama da arquitetura de alto nível apresentado a seguir ilustra a implantação típica do mecanismo Starburst Enterprise na Nuvem AWS:

1. O cluster do Starburst Enterprise é executado dentro da Conta da AWS.

1. Um usuário se autentica usando o Lightweight Directory Access Protocol (LDAP) ou Open Authorization (OAuth) e interage diretamente com o cluster Starburst.

1. O Starburst pode se conectar a várias fontes de AWS dados, como AWS Glue Amazon Simple Storage Service (Amazon S3), Amazon Relational Database Service (Amazon RDS) e Amazon Redshift. O Starburst fornece recursos de consulta federada em todas as fontes de dados no local ou em outros ambientes de nuvem. Nuvem AWS

1. Você inicia o Starburst Enterprise em um cluster Amazon EKS usando chart do Helm.

1. A Starburst Enterprise usa grupos do Amazon Auto EC2 Scaling e EC2 Amazon Spot Instances para otimizar a infraestrutura.

1. O Starburst Enterprise se conecta diretamente às suas fontes de dados on-premises existentes para ler dados em tempo real. Além disso, se você tiver uma implantação do Starburst Enterprise existente nesse ambiente, poderá conectar diretamente seu novo cluster Starburst no Nuvem AWS a esse cluster existente.

![\[O diagrama de arquitetura de alto nível a seguir mostra a implantação do Starburst Enterprise na nuvem AWS:\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/12ae0463-9029-4a32-9d7b-70cdb5406fb0/images/e9975d3a-f75b-41a2-8c08-5b82539adf8c.png)


Observe o seguinte:
+ O Starburst não é uma plataforma de virtualização de dados. É um mecanismo de consulta de processamento paralelo massivo (MPP) baseado em SQL que forma a base de uma estratégia geral de data mesh para análise.
+ Quando o Starburst é implantado como parte de uma migração, ele tem conectividade direta com a infraestrutura on-premises existente.
+ O Starburst fornece vários conectores corporativos e de código aberto integrados que facilitam a conectividade com uma variedade de sistemas herdados. Para obter uma lista completa dos conectores e seus recursos, consulte [Conectores](https://docs.starburst.io/latest/connector.html) no guia do usuário do *Starburst Enterprise.*
+ O Starburst pode consultar dados em tempo real a partir de fontes de dados on-premises. Isso evita interrupções nas operações comerciais regulares durante a migração dos dados.
+ Se você estiver migrando de uma implantação local existente do Starburst Enterprise, poderá usar um conector especial, o Starburst *Stargate, para conectar seu cluster Starburst* Enterprise diretamente ao seu cluster local. AWS Isso fornece benefícios adicionais de desempenho quando usuários corporativos e analistas de dados estão federando consultas do Nuvem AWS para seu ambiente local.

**Visão geral do processo de alto nível**

Você pode acelerar os projetos de migração de dados usando o Starburst porque o Starburst permite insights sobre todos os seus dados, antes de migrá-los. A imagem a seguir mostra o processo típico de migração de dados usando o Starburst.

![\[Fluxo do processo para migrar dados para a nuvem AWS usando o Starburst\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/12ae0463-9029-4a32-9d7b-70cdb5406fb0/images/e79b0084-7275-4824-8854-646236ec23dc.png)


**Funções**

Normalmente, as seguintes funções são necessárias para concluir uma migração usando o Starburst:
+ **Administrador de nuvem**: responsável por disponibilizar recursos de nuvem para executar o aplicativo Starburst Enterprise
+ **Administrador do Starburst**: responsável pela instalação, configuração, gerenciamento e suporte do aplicativo Starburst
+ **Engenheiro de dados**: responsável por:
  + Migração do bancos de dados Oracle para a nuvem
  + Criando visualizações semânticas para apoiar a análise
+ **Proprietário da solução ou do sistema**: responsável pela implementação geral da solução

## Ferramentas
<a name="migrate-data-to-the-aws-cloud-by-using-starburst-tools"></a>

**Serviços da AWS**
+ [O Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) fornece capacidade de computação escalável no. Nuvem AWS Você poderá iniciar quantos servidores virtuais precisar e escalá-los na vertical rapidamente.
+ [O Amazon Elastic Kubernetes Service (Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html)) ajuda você a executar o AWS Kubernetes sem precisar instalar ou manter seu próprio plano de controle ou nós do Kubernetes.

**Outras ferramentas**
+ [Helm](https://helm.sh/docs/): o Helm é um gerenciador de pacotes Helm para o Kubernetes ajuda a instalar e gerenciar aplicações em seu cluster do Kubernetes.
+ [Starburst Enterprise](https://docs.starburst.io/latest/index.html): o Starburst Enterprise é um mecanismo de consulta de processamento paralelo massivo (MPP) baseado em SQL que forma a base de uma estratégia geral de data mesh para análise.
+ [Starburst Stargate](https://docs.starburst.io/latest/connector/starburst-stargate.html): o Starburst Stargate estabelece conexão entre catálogos e fontes de dados em um ambiente do Starburst Enterprise, como um cluster em um data center on-premises, e catálogos e fontes de dados em outro ambiente do Starburst Enterprise, como um cluster na Nuvem AWS.

## Épicos
<a name="migrate-data-to-the-aws-cloud-by-using-starburst-epics"></a>

### Avaliar os dados
<a name="assess-the-data"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Identifique e priorize seus dados. | Identifique os dados que você deseja mover. Grandes sistemas herdados on-premises podem incluir dados essenciais que você deseja migrar junto com dados que você não quer mover ou não pode ser movido por motivos de conformidade. Começar com um inventário de dados ajuda a priorizar quais dados você deve segmentar primeiro. Para obter mais informações, consulte [Conceitos básicos do portfólio automatizado](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/get-started-with-automated-portfolio-discovery.html). | Engenheiro de dados, DBA | 
| Explore, faça o inventário e faça backup de seus dados. | Valide a qualidade, a quantidade e a relevância dos dados para seu caso de uso. Faça backup ou crie um instantâneo dos dados conforme necessário e finalize o ambiente de destino para os dados. | Engenheiro de dados, DBA | 

### Configurar o ambiente Starburst Enterprise
<a name="set-up-the-starburst-enterprise-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure o Starburst Enterprise na Nuvem AWS. | Enquanto os dados estão sendo catalogados, configure o Starburst Enterprise em um cluster gerenciado do Amazon EKS. Para obter mais informações, consulte [Implantação com o Kubernetes](https://docs.starburst.io/latest/k8s.html) na documentação de referência do *Starburst* Enterprise. Isso permite business-as-usual análises enquanto a migração de dados está em andamento. | Administrador da AWS, desenvolvedor de aplicativos | 
| Conecte o Starburst às fontes de dados. | Depois de identificar os dados e configurar o Starburst Enterprise, conecte o Starburst às fontes de dados. O Starburst lê dados diretamente da fonte de dados como uma consulta SQL. Para obter mais informações, consulte a documentação de [referência do Starburst Enterprise](https://docs.starburst.io/latest/overview.html). | Administrador da AWS, desenvolvedor de aplicativos | 

### Migrar os dados
<a name="migrate-the-data"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar e executar pipelines de ETL. | Iniciar o processo de migração de dados. Essa atividade pode ocorrer ao mesmo tempo que a business-as-usual análise. Para a migração, você pode usar um produto de terceiros ou Starburst. O Starburst tem a capacidade de ler e gravar dados em diferentes fontes. Para obter mais informações, consulte a documentação de [referência do Starburst Enterprise](https://docs.starburst.io/latest/overview.html). | Engenheiro de dados | 
| Valide os dados. | Depois que os dados forem migrados, valide os dados para garantir que todos os dados necessários tenham sido movidos e estejam intactos. | Engenheiro de dados, DevOps engenheiro | 

### Substituir
<a name="cut-over"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Substitua os dados. | Depois que a migração e a validação dos dados estiverem concluídas, você poderá recortar os dados. Isso envolve a alteração dos links de conexão de dados no Starburst. Em vez de apontar para as fontes on-premises, você aponta para as novas fontes na nuvem e atualiza as visualizações semânticas. Para obter mais informações, consulte [Conectores](https://docs.starburst.io/latest/connector.html) na *documentação de referência do Starburst Enterprise*. | Engenheiro de dados, líder de substituição | 
| Implemente para os usuários. | Os consumidores de dados começam a trabalhar com as fontes de dados migradas. Esse processo é invisível para os usuários finais de análise. | Líder de substituição, engenheiro de dados | 

## Recursos relacionados
<a name="migrate-data-to-the-aws-cloud-by-using-starburst-resources"></a>

**AWS Marketplace**
+ [Galáxia Starburst](https://aws.amazon.com/marketplace/pp/prodview-yugyv4gbgn5ss?ref_=srh_res_product_title)
+ [Empresa Starburst](https://aws.amazon.com/marketplace/pp/prodview-pwnl3c6p2jycg?ref_=srh_res_product_title)
+ [Dados Starburst JumpStart](https://aws.amazon.com/marketplace/pp/prodview-ou6drb23gch2u?ref_=srh_res_product_title)
+ [Starburst Enterprise com Graviton](https://aws.amazon.com/marketplace/pp/prodview-2bpppdqlesn6w?ref_=srh_res_product_title)

**Documentação do Starburst**
+ [Guia do usuário do Starburst Enterprise](https://docs.starburst.io/index.html)
+ [Documentação de referência do Starburst Enterprise](https://docs.starburst.io/latest/index.html)

**Outra AWS documentação**
+ [Comece com a descoberta automatizada de portfólio](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/get-started-with-automated-portfolio-discovery.html) (AWS orientação prescritiva)
+ [Otimizando o custo e o desempenho da infraestrutura em nuvem com o Starburst em AWS(postagem no blog](https://aws.amazon.com/blogs/architecture/optimizing-cloud-infrastructure-cost-and-performance-with-starburst-on-aws/))AWS 

# Otimize a ingestão de ETL do tamanho do arquivo de entrada na AWS
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws"></a>

*Apoorva Patrikar, Amazon Web Services*

## Resumo
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-summary"></a>

Esse padrão mostra como otimizar a etapa de ingestão do processo de extração, transformação e carregamento (ETL) para big data e cargas de trabalho do Apache Spark no AWS Glue otimizando o tamanho do arquivo antes de processar seus dados. Use esse padrão para evitar ou resolver o *problema de arquivos pequenos*. Ou seja, quando um grande número de arquivos pequenos retarda o processamento de dados devido ao tamanho agregado dos arquivos. Por exemplo, centenas de arquivos com apenas algumas centenas de kilobites cada podem reduzir significativamente as velocidades de processamento de dados para suas tarefas do AWS Glue. Isso ocorre porque o AWS Glue deve executar funções de lista internas no Amazon Simple Storage Service (Amazon S3) e o YARN (Yet Another Resource Negotiator) deve armazenar uma grande quantidade de metadados. Para melhorar a velocidade de processamento de dados, você pode usar o agrupamento para permitir que suas tarefas de ETL leiam um grupo de arquivos de entrada em uma única partição na memória. A partição agrupa automaticamente arquivos menores. Como alternativa, você pode usar código personalizado para adicionar lógica de lote aos seus arquivos existentes.

## Pré-requisitos e limitações
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Um ou mais [trabalhos](https://docs.aws.amazon.com/glue/latest/dg/author-job.html) da AWS Glue
+ Uma ou mais cargas de trabalho de big data ou [Apache Spark](https://spark.apache.org/)
+ Um [bucket do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html)

## Arquitetura
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-architecture"></a>

O padrão a seguir mostra como os dados em diferentes formatos são processados por uma tarefa do AWS Glue e, em seguida, armazenados em um bucket do S3 para obter visibilidade da performance.

![\[Dados em diferentes formatos são processados por um trabalho do AWS Glue e, em seguida, armazenados em um bucket do S3.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/88ee332f-2f12-4d88-b491-e78bbb173850/images/9a97b54a-3f67-4a48-94d2-5807373ace25.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. 
**nota**  
Uma tarefa do AWS Glue converte arquivos pequenos nos formatos CSV, JSON e Parquet em quadros dinâmicos. : Entre os fatores, o tamanho do arquivo de entrada exerce o maior impacto na performance do trabalho do AWS Glue.

1. A tarefa do AWS Glue executa funções de lista internas em um bucket do S3.

## Ferramentas
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-tools"></a>
+ [O AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) é um serviço de ETL totalmente gerenciado. Ele ajuda você a categorizar de forma confiável, limpar, enriquecer e mover dados de forma confiável entre armazenamento de dados e fluxos de dados.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

## Épicos
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-epics"></a>

### Uso do agrupamento para otimizar a ingestão de dados de ETL durante a leitura
<a name="use-grouping-to-optimize-etl-ingestion-during-reading"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Especifique o tamanho do grupo. | Se você tiver mais de 50.000 arquivos, o agrupamento é feito por padrão. No entanto, você também pode usar o agrupamento para menos de 50.000 arquivos especificando o tamanho do grupo no parâmetro `connectionOptions`. O parâmetro `connectionOptions` está no método `create_dynamic_frame.from_options`. | Engenheiro de dados | 
| Escreva o código de agrupamento. | Use o método `create_dynamic_frame` para criar um quadro dinâmico. Por exemplo:<pre>S3bucket_node1 = glueContext.create_dynamic_frame.from_options(<br />    format_options={"multiline": False},<br />    connection_type="s3",<br />    format="json",<br />    connection_options={<br />        "paths": ["s3://bucket/prefix/file.json"],<br />        "recurse": True,<br />        "groupFiles": 'inPartition', <br />        "groupSize": 1048576<br />    },<br />    transformation_ctx="S3bucket_node1",<br />)</pre>Use `groupFiles` para agrupar arquivos em um grupo de partições do Amazon S3. Use `groupSize` para definir o tamanho alvo do grupo a ser lido na memória. Especifique `groupSize` em bytes (1048576 = 1 MB). | Engenheiro de dados | 
| Adicione o código ao fluxo de trabalho. | Adicione o código de agrupamento ao seu [fluxo de trabalho](https://docs.aws.amazon.com/glue/latest/dg/workflows_overview.html) no AWS Glue. | Engenheiro de dados | 

### Use a lógica personalizada para otimizar a ingestão de ETL
<a name="use-custom-logic-to-optimize-etl-ingestion"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Escolha o idioma e a plataforma de processamento. | Escolha a linguagem de script e a plataforma de processamento adaptadas ao seu caso de uso. | Arquiteto de nuvem | 
| Escrever o código | Escreva a lógica personalizada para agrupar seus arquivos. | Arquiteto de nuvem | 
| Adicione o código ao fluxo de trabalho. | Adicione o código ao seu [fluxo de trabalho](https://docs.aws.amazon.com/glue/latest/dg/workflows_overview.html) no AWS Glue. Isso permite que sua lógica personalizada seja aplicada sempre que a tarefa for executada. | Engenheiro de dados | 

### Repartição dos dados ao gravá-los após a transformação
<a name="repartition-when-writing-data-after-transformation"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Analise os padrões de consumo. | Entenda de que forma as aplicações downstream utilizarão os dados que você grava. Por exemplo, se as aplicações consultam os dados diariamente e você os particiona apenas por região ou conta com arquivos de saída muito pequenos, como 2,5 KB por arquivo, isso não é otimizado para consumo. | DBA | 
| Particione novamente os dados antes de gravá-los. | Faça a repartição considerando junções ou consultas durante o processamento (de acordo com a lógica de processamento) e depois do processamento (de acordo com o consumo). Por exemplo, reparticione com base no tamanho em bytes, como `.repartition(100000)`, ou realize a repartição com base em colunas, como `.repartition("column_name")`. | Engenheiro de dados | 

## Recursos relacionados
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-resources"></a>
+ [Ler arquivos de entrada em grupos maiores](https://docs.aws.amazon.com/glue/latest/dg/grouping-input-files.html)
+ [Monitoramento do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/monitor-glue.html)
+ [Monitoramento do AWS Glue usando CloudWatch métricas da Amazon](https://docs.aws.amazon.com/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)
+ [Monitoramento e depuração de trabalho](https://docs.aws.amazon.com/glue/latest/dg/monitor-profile-glue-job-cloudwatch-metrics.html)
+ [Comece a usar o ETL com tecnologia sem servidor no AWS Glue](https://docs.aws.amazon.com/prescriptive-guidance/latest/serverless-etl-aws-glue/welcome.html)

## Mais informações
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-additional"></a>

**Determinando o tamanho do arquivo**

Não há uma maneira simples de determinar se o tamanho do arquivo é muito grande ou muito pequeno. O impacto do tamanho do arquivo no desempenho do processamento depende da configuração do seu cluster. No núcleo do Hadoop, recomendamos que você use arquivos de 128 MB ou 256 MB para aproveitar ao máximo o tamanho do bloco.

Para a maioria das workloads de arquivos de texto no AWS Glue, recomendamos um tamanho de arquivo entre 100 MB e 1 GB para um cluster de 5 a 10 DPU. Para descobrir o melhor tamanho dos arquivos de entrada, monitore a seção de pré-processamento da sua tarefa do AWS Glue e, em seguida, verifique a utilização da CPU e da memória da tarefa.

**Considerações adicionais**

Se o desempenho nos estágios iniciais do ETL for um gargalo, considere agrupar ou mesclar os arquivos de dados antes do processamento. Se você tiver controle total sobre o processo de geração de arquivos, pode ser ainda mais eficiente agregar pontos de dados no próprio sistema de origem antes que os dados brutos sejam enviados para a AWS.

# Organize um pipeline de ETL com validação, transformação e particionamento usando AWS Step Functions
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions"></a>

*Sandip Gangapadhyay, Amazon Web Services*

## Resumo
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-summary"></a>

Esse padrão descreve como criar um pipeline de extração, transformação e carregamento (ETL) com tecnologia sem servidor para validar, transformar, compactar e particionar um grande conjunto de dados CSV para otimizar o desempenho e os custos. O pipeline é orquestrado AWS Step Functions e inclui recursos de tratamento de erros, repetição automática e notificação ao usuário.

Quando um arquivo CSV é carregado em uma pasta de origem do bucket do Amazon Simple Storage Service (Amazon S3), o pipeline de ETL começa a ser executado. O pipeline valida o conteúdo e o esquema do arquivo CSV de origem, transforma o arquivo CSV em um formato Apache Parquet compactado, particiona o conjunto de dados por ano, mês e dia e o armazena em uma pasta separada para que as ferramentas de análise possam processá-lo.

O código que automatiza esse padrão está disponível em GitHub, no [pipeline ETL com AWS Step Functions](https://github.com/aws-samples/aws-step-functions-etl-pipeline-pattern) repositório.

## Pré-requisitos e limitações
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS.
+ AWS Command Line Interface (AWS CLI) instalado e configurado com o seu Conta da AWS, para que você possa criar AWS recursos implantando uma AWS CloudFormation pilha. Recomendamos usar a AWS CLI versão 2. Para obter instruções, consulte [Instalação ou atualização para a versão mais recente do AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) na AWS CLI documentação. Para obter instruções de configuração, consulte Configurações [e configurações do arquivo de credenciais](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) na AWS CLI documentação.
+ Um bucket do Amazon S3.
+ Um conjunto de dados CSV com o esquema correto. (O [repositório de código](https://github.com/aws-samples/aws-step-functions-etl-pipeline-pattern/) incluído nesse padrão fornece um arquivo CSV de amostra com o esquema e o tipo de dados corretos que você pode usar.)
+ Um navegador da web que suporta Console de gerenciamento da AWS o. (Consulte a [lista de navegadores compatíveis](https://aws.amazon.com/premiumsupport/knowledge-center/browsers-management-console/).)
+ AWS Glue acesso ao console.
+ AWS Step Functions acesso ao console.

**Limitações**
+ Em AWS Step Functions, o limite máximo para manter registros históricos é de 90 dias. Para obter mais informações, consulte as [cotas de serviço do Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/service-quotas.html) na AWS Step Functions documentação.

**Versões do produto**
+ Python 3.13 para AWS Lambda
+ AWS Glue versão 4.0

## Arquitetura
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-architecture"></a>

![\[Processo de ETL do bucket do S3 de origem por meio do Step Functions, do AWS Glue e do Amazon SNS em dez etapas.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/8eb792b0-d35b-4a63-ba2d-71eb8d2c1203/images/054c8e9d-76a2-4334-b21a-cbe76af45923.png)


 

O fluxo de trabalho ilustrado no diagrama consiste nestas etapas de alto nível:

1. O usuário carrega um arquivo CSV na pasta de origem no Amazon S3.

1. Um evento de notificação do Amazon S3 inicia uma AWS Lambda função que inicia a AWS Step Functions máquina de estado.

1. A função do Lambda valida o esquema e o tipo de dados do arquivo CSV bruto.

1. Dependendo dos resultados da validação:

   1. Se a validação do arquivo de origem for bem-sucedida, o arquivo será movido para a pasta de estágio para processamento adicional.

   1. Se a validação falhar, o arquivo será movido para a pasta de erro e uma notificação de erro será enviada por meio do Amazon Simple Notification Service (Amazon SNS) (Amazon SNS).

1. Um AWS Glue rastreador cria o esquema do arquivo bruto a partir da pasta de estágio no Amazon S3.

1. Um AWS Glue trabalho transforma, compacta e particiona o arquivo bruto no formato Parquet.

1. O AWS Glue trabalho também move o arquivo para a pasta de transformação no Amazon S3.

1. O AWS Glue rastreador cria o esquema a partir do arquivo transformado. O esquema resultante pode ser usado por qualquer trabalho de análise. Você pode usar o Amazon Athena para realizar consultas ad-hoc.

1. Se o pipeline for concluído sem erros, o arquivo do esquema será movido para a pasta de arquivamento. Se algum erro for encontrado, o arquivo será movido para a pasta de erros.

1. O Amazon SNS envia uma notificação que indica sucesso ou falha com base no status de conclusão do pipeline.

Todos os AWS recursos usados nesse padrão não têm servidor. Não há servidores para gerenciar.

## Ferramentas
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-tools"></a>

**Serviços da AWS**
+ [AWS Glue](https://aws.amazon.com/glue/)— AWS Glue é um serviço de ETL totalmente gerenciado que facilita que os clientes preparem e carreguem seus dados para análise.
+ [AWS Step Functions](https://aws.amazon.com/step-functions/)— AWS Step Functions é um serviço de orquestração sem servidor que permite combinar AWS Lambda funções e outras Serviços da AWS para criar aplicativos essenciais para os negócios. Por meio do console AWS Step Functions gráfico, você vê o fluxo de trabalho do seu aplicativo como uma série de etapas orientadas por eventos.
+ [Amazon S3](https://aws.amazon.com/s3/): o Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos que oferece escalabilidade líder do setor, disponibilidade de dados, segurança e performance.
+ [Amazon SNS](https://aws.amazon.com/sns/) — O Amazon Simple Notification Service (Amazon SNS) é um serviço de mensagens altamente disponível, durável, seguro e totalmente pub/sub gerenciado que permite dissociar microsserviços, sistemas distribuídos e aplicativos sem servidor.
+ [AWS Lambda](https://aws.amazon.com/lambda/)— AWS Lambda é um serviço de computação que permite executar código sem provisionar ou gerenciar servidores. AWS Lambda executa seu código somente quando necessário e escala automaticamente, de algumas solicitações por dia a milhares por segundo.

**Código **

O código desse padrão está disponível em GitHub, no [ETL Pipeline com AWS Step Functions](https://github.com/aws-samples/aws-step-functions-etl-pipeline-pattern) repositório. O repositório de código contém os seguintes arquivos e pastas:
+ `template.yml`— AWS CloudFormation modelo para criar o pipeline ETL com AWS Step Functions.
+ `parameter.json`: contém todos os parâmetros e valores de parâmetros. Você atualiza esse arquivo para alterar os valores dos parâmetros, conforme descrito na seção *Épicos*.
+ `myLayer/python`pasta — Contém os pacotes Python necessários para criar a AWS Lambda camada necessária para este projeto.
+ A pasta `lambda`: contém as seguintes funções do Lambda:
  + `move_file.py`: move o conjunto de dados de origem para a pasta de arquivamento, transformação ou erro.
  + `check_crawler.py`— Verifica o status do AWS Glue rastreador quantas vezes for configurado pela variável de `RETRYLIMIT ` ambiente antes de enviar uma mensagem de falha.
  + `start_crawler.py`— Inicia o AWS Glue rastreador.
  + `start_step_function.py`— Começa AWS Step Functions.
  + `start_codebuild.py`— Inicia o AWS CodeBuild projeto.
  + `validation.py`: valida o conjunto de dados brutos de entrada.
  + `s3object.py`: cria a estrutura de diretórios necessária dentro do bucket do Amazon S3.
  + `notification.py`: envia notificações de sucesso ou erro no final do pipeline.

Para usar o código de amostra, siga as instruções na seção *Épicos*.

## Épicos
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-epics"></a>

### Preparar os arquivos de origem
<a name="prepare-the-source-files"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clone o repositório de código de amostra. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.html) | Desenvolvedor | 
| Atualizar valores de parâmetro. | Na sua cópia local do repositório, edite o arquivo `parameter.json` e atualize os valores dos parâmetros padrão da seguinte forma:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.html) | Desenvolvedor | 
| Faça o upload do código-fonte para o bucket do Amazon S3. | Antes de implantar o AWS CloudFormation modelo que automatiza o pipeline de ETL, você deve empacotar os arquivos de origem do modelo e enviá-los para um bucket do Amazon S3. Para fazer isso, execute o seguinte AWS CLI comando com seu perfil pré-configurado:<pre>aws cloudformation package --template-file template.yml --s3-bucket <bucket_name> --output-template-file packaged.template --profile <profile_name></pre>em que:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.html) | Desenvolvedor | 

### Crie a pilha.
<a name="create-the-stack"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implante o CloudFormation modelo. | Para implantar o AWS CloudFormation modelo, execute o seguinte AWS CLI comando:<pre>aws cloudformation deploy --stack-name <stack_name> --template-file packaged.template --parameter-overrides file://parameter.json --capabilities CAPABILITY_IAM --profile <profile_name></pre>em que:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.html) | Desenvolvedor | 
| Verifique o andamento. | No [console do AWS CloudFormation](https://console.aws.amazon.com/cloudformation/), acompanhe o progresso da criação da pilha. Quando o status for `CREATE_COMPLETE`, a pilha foi implantada com sucesso. | Desenvolvedor | 
| Anote o nome do AWS Glue banco de dados. | A guia **Saídas** da pilha exibe o nome do banco de dados. AWS Glue O nome da chave é `GlueDBOutput`. | Desenvolvedor | 

### Teste o pipeline
<a name="test-the-pipeline"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Inicie o pipeline de ETL. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.html) | Desenvolvedor | 
| Verifique o conjunto de dados particionado. | Quando o pipeline de ETL for concluído, verifique se o conjunto de dados particionado está disponível na pasta de transformação do Amazon S3 (`transform`, ou no nome da pasta que você definiu no arquivo `parameter.json`). | Desenvolvedor | 
| Verifique o AWS Glue banco de dados particionado. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.html) | Desenvolvedor | 
| Executar consultas. | (Opcional) Use o Amazon Athena para executar consultas ad-hoc no banco de dados particionado e transformado. Para obter instruções, consulte [Executar consultas SQL no Amazon](https://docs.aws.amazon.com/athena/latest/ug/querying-athena-tables.html) Athena na AWS documentação. | Analista de banco de dados | 

## Solução de problemas
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| AWS Identity and Access Management Permissões (IAM) para o AWS Glue trabalho e o rastreador | Se você personalizar ainda mais o AWS Glue trabalho ou o rastreador, certifique-se de conceder as permissões apropriadas do IAM na função do IAM usada pelo AWS Glue trabalho ou fornecer permissões de dados para. AWS Lake Formation Para obter mais informações, consulte a [documentação do AWS](https://docs.aws.amazon.com/lake-formation/latest/dg/upgrade-glue-lake-formation.html). | 

## Recursos relacionados
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-resources"></a>

**AWS service (Serviço da AWS) documentação**
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/)
+ [AWS Glue](https://docs.aws.amazon.com/glue/)
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/)
+ [Amazon S3](https://docs.aws.amazon.com/s3/)
+ [Amazon SNS](https://docs.aws.amazon.com/sns/)

## Mais informações
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-additional"></a>

O diagrama a seguir mostra o AWS Step Functions fluxo de trabalho de um pipeline ETL bem-sucedido, a partir do painel AWS Step Functions **Inspector**. ****

![\[Fluxo de trabalho do Step Functions para validar o arquivo .csv de entrada, realizar crawling nos dados e executar o trabalho do AWS Glue.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/8eb792b0-d35b-4a63-ba2d-71eb8d2c1203/images/bd77de7b-4d04-44bb-95d2-3ec4599b3770.png)


O diagrama a seguir mostra o AWS Step Functions fluxo de trabalho de um pipeline de ETL que falha devido a um erro de validação de entrada, no painel Step Functions **Inspector**. 

![\[Fluxo do Step Functions quando ocorre uma falha, direcionando o arquivo para a pasta de erro.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/8eb792b0-d35b-4a63-ba2d-71eb8d2c1203/images/5fd7dd79-ba4c-4c20-b1f0-ad4b5f22bdfc.png)


 

# Execute análises avançadas usando o Amazon Redshift ML
<a name="perform-advanced-analytics-using-amazon-redshift-ml"></a>

*Po Hong e Chyanna Antonio, Amazon Web Services*

## Resumo
<a name="perform-advanced-analytics-using-amazon-redshift-ml-summary"></a>

Na nuvem da Amazon Web Services (AWS), você pode usar o machine learning do Amazon Redshift (Amazon Redshift ML) para realizar análises de ML em dados armazenados em um cluster do Amazon Redshift ou no Amazon Simple Storage Service (Amazon S3). O Amazon Redshift ML oferece suporte ao aprendizado supervisionado, que normalmente é usado para análises avançadas. Os casos de uso do Amazon Redshift ML incluem previsão de receita, detecção de fraudes em cartões de crédito e valor da vida útil do cliente (CLV, Customer Lifetime Value) ou previsões de rotatividade de clientes.

O Amazon Redshift ML facilita a criação, o treinamento e a implantação de modelos de Machine Learning usando comandos SQL padrões. O Amazon Redshift ML usa o Amazon SageMaker Autopilot para treinar e ajustar automaticamente os melhores modelos de ML para classificação ou regressão com base em seus dados, enquanto você mantém o controle e a visibilidade.

Todas as interações entre o Amazon Redshift, o Amazon S3 e a SageMaker Amazon são abstraídas e automatizadas. Depois que o modelo de ML é treinado e implantado, ele fica disponível como uma [função definida pelo usuário](https://docs.aws.amazon.com/redshift/latest/dg/user-defined-functions.html) (UDF) no Amazon Redshift e pode ser usado em consultas SQL.  

[Esse padrão complementa o tutorial [Criar, treinar e implantar modelos de ML no Amazon Redshift usando SQL com Amazon Redshift ML](https://aws.amazon.com/blogs/big-data/create-train-and-deploy-machine-learning-models-in-amazon-redshift-using-sql-with-amazon-redshift-ml/) do blog da AWS e o tutorial [Criar, treinar e implantar um modelo de ML com a SageMaker Amazon](https://aws.amazon.com/getting-started/hands-on/build-train-deploy-machine-learning-model-sagemaker/) do Getting Started Resource Center.](https://aws.amazon.com/getting-started/)

## Pré-requisitos e limitações
<a name="perform-advanced-analytics-using-amazon-redshift-ml-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Dados existentes em uma tabela do Amazon Redshift

**Habilidades**
+ *Familiaridade com termos e conceitos usados pelo Amazon Redshift ML, *incluindo machine learning *, *treinamento*, e previsão*. Para obter mais informações sobre isso, consulte [Modelos de treinamento de ML](https://docs.aws.amazon.com/machine-learning/latest/dg/training-ml-models.html) na documentação do Amazon Machine Learning (Amazon ML).
+ Experiência com configuração de usuários, gerenciamento de acesso e sintaxe SQL padrão do Amazon Redshift. Para obter mais informações sobre isso, consulte [Conceitos básicos do Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html) na documentação do Amazon Redshift.
+ Conhecimento e experiência com o Amazon S3 e o AWS Identity and Access Management (IAM). 
+ A experiência na execução de comandos na AWS Command Line Interface (AWS CLI) também é vantajosa, mas não obrigatória. 

**Limitações**
+ O cluster do Amazon Redshift e o bucket do Amazon S3 devem estar na mesma região da Região da AWS.
+ A abordagem desse padrão oferece suporte apenas a modelos de aprendizado supervisionado, como regressão, classificação binária e classificação multiclasse. 

## Arquitetura
<a name="perform-advanced-analytics-using-amazon-redshift-ml-architecture"></a>

![\[O fluxo de trabalho mostra como o Amazon Redshift ML funciona SageMaker para criar, treinar e implantar um modelo de ML.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/3b6a5f49-c647-45f4-940e-b623f989326a/images/36cc39fe-c1f3-4d68-b89e-e636156001a6.png)


As etapas a seguir explicam como o Amazon Redshift ML funciona SageMaker para criar, treinar e implantar um modelo de ML: 

1. O Amazon Redshift exporta dados de treinamento para um bucket do S3.

1. SageMaker O piloto automático pré-processa automaticamente os dados de treinamento.

1. Depois que a `CREATE MODEL` declaração é invocada, o Amazon Redshift ML SageMaker usa para treinamento.

1. SageMaker O Autopilot pesquisa e recomenda o algoritmo de ML e os hiperparâmetros ideais que otimizam as métricas de avaliação.

1. O Amazon Redshift ML registra a função de previsão como uma função SQL no cluster do Amazon Redshift.

1. A função do modelo de ML pode ser usada em uma instrução do SQL. 

**Pilha de tecnologia**
+ banco de dados de origem
+ SageMaker
+ Amazon S3

## Ferramentas
<a name="perform-advanced-analytics-using-amazon-redshift-ml-tools"></a>
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/welcome.html): o Amazon Redshift é um serviço de data warehousing em escala de petabytes e em nível empresarial totalmente gerenciado.
+ [Amazon Redshift ML](https://docs.aws.amazon.com/redshift/latest/dg/machine_learning.html): o Amazon Redshift Machine Learning (Amazon Redshift ML) é um serviço robusto baseado em nuvem que ajuda analistas e cientistas de dados de todos os níveis de qualificação a usarem a tecnologia de Machine Learning.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html): o Amazon Simple Storage Service (Amazon S3) serve como armazenamento para a internet. 
+ [Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) — SageMaker é um serviço de ML totalmente gerenciado. 
+ [Amazon SageMaker Autopilot](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development.html) — O SageMaker Autopilot é um conjunto de recursos que automatiza as principais tarefas de um processo automático de aprendizado de máquina (AutoML).

 

**Código **

Você pode criar um modelo de ML supervisionado no Amazon Redshift usando o seguinte código:

```
"CREATE MODEL customer_churn_auto_model
FROM (SELECT state,
             account_length,
             area_code,
             total_charge/account_length AS average_daily_spend, 
             cust_serv_calls/account_length AS average_daily_cases,
             churn 
      FROM customer_activity
      WHERE  record_date < '2020-01-01' 
     )
TARGET churn
FUNCTION ml_fn_customer_churn_auto
IAM_ROLE 'arn:aws:iam::XXXXXXXXXXXX:role/Redshift-ML'
SETTINGS (
  S3_BUCKET 'your-bucket'
);")
```

**nota**  
O estado `SELECT` pode se referir às tabelas regulares do Amazon Redshift, às tabelas externas do Amazon Redshift Spectrum ou a ambas.

## Épicos
<a name="perform-advanced-analytics-using-amazon-redshift-ml-epics"></a>

### Prepare um conjunto de dados de treinamento e teste
<a name="prepare-a-training-and-test-dataset"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Prepare um conjunto de dados de treinamento e teste. | Faça login no AWS Management Console e abra o SageMaker console da Amazon. Siga as instruções do tutorial [Criar, treinar e implantar um modelo de machine learning](https://aws.amazon.com/getting-started/hands-on/build-train-deploy-machine-learning-model-sagemaker/) para criar um arquivo.csv ou Apache Parquet que tenha uma coluna de rótulo*(treinamento supervisionado*) e nenhum cabeçalho. Recomendamos que você misture e divida o conjunto de dados bruto em um conjunto de treinamento para o treinamento de modelo (70%) e um conjunto de teste para a avaliação de performance do modelo (30%). | Cientista de dados | 

### Prepare e configure a pilha de tecnologia
<a name="prepare-and-configure-the-technology-stack"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie e configure um cluster do Amazon Redshift. | No console do Amazon Redshift, crie um cluster de acordo com os requisitos. Para obter mais informações sobre isso, consulte [Criar um cluster](https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-data-launch-cluster.html) na documentação do Amazon Redshift.  Os clusters do Amazon Redshift devem ser criados com a trilha de manutenção `SQL_PREVIEW`. Para obter mais informações, consulte [Escolher trilhas de manutenção do cluster](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-mgmt-maintenance-tracks) na documentação do Amazon Redshift. | DBA, Arquiteto de nuvem | 
| Crie um bucket do S3 para armazenar dados de treinamento e artefatos do modelo. | No console do Amazon S3, crie um bucket do S3 para os dados de treinamento e teste. Para obter mais informações sobre como criar um bucket do S3, consulte [Criar um bucket do Amazon S3](https://docs.aws.amazon.com/quickstarts/latest/s3backup/step-1-create-bucket.html) do Início rápido do AWS. Certifique-se de que o cluster do Amazon Redshift e o bucket do S3 estejam na mesma região.  | DBA, Arquiteto de nuvem | 
| Crie e anexe uma política do IAM ao cluster do Amazon Redshift. | Crie uma política do IAM para permitir que o cluster do Amazon Redshift acesse SageMaker o Amazon S3. Para obter instruções e etapas, consulte [Configuração de cluster para usar o Amazon Redshift ML](https://docs.aws.amazon.com/redshift/latest/dg/cluster-setup.html) na documentação do Amazon Redshift. | DBA, Arquiteto de nuvem | 
| Permita que usuários e grupos do Amazon Redshift acessem esquemas e tabelas. | Conceda permissões para permitir que usuários e grupos no Amazon Redshift acessem esquemas e tabelas internos e externos. Para ver as etapas e instruções, consulte [Gerenciamento de permissões e propriedade](https://docs.aws.amazon.com/redshift/latest/dg/permissions-ownership.html) na documentação do Amazon Redshift. | DBA | 

### Crie e treine o modelo de ML no Amazon Redshift
<a name="create-and-train-the-ml-model-in-amazon-redshift"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie e treine o modelo de ML no Amazon Redshift. | Crie e treine seu modelo de ML no Amazon Redshift ML. Para obter mais informações, consulte a declaração `CREATE MODEL` na documentação do Amazon Redshift. | Desenvolvedor, Cientista de dados | 

### Execute inferência e previsão em lote no Amazon Redshift
<a name="perform-batch-inference-and-prediction-in-amazon-redshift"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Faça inferência usando a função de modelo de ML gerada. | Para obter mais informações sobre como realizar inferências usando a função de modelo de ML gerada, consulte [Previsões](https://docs.aws.amazon.com/redshift/latest/dg/prediction.html) na documentação do Amazon Redshift. | Cientista de dados, usuário de inteligência de negócios | 

## Recursos relacionados
<a name="perform-advanced-analytics-using-amazon-redshift-ml-resources"></a>

**Prepare um conjunto de dados de treinamento e teste**
+ [Construindo, treinando e implantando um modelo de aprendizado de máquina com a Amazon SageMaker](https://aws.amazon.com/getting-started/hands-on/build-train-deploy-machine-learning-model-sagemaker/)

 

**Prepare e configure a pilha de tecnologia**
+ [Criar um cluster do Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-data-launch-cluster.html)
+ [Escolhendo faixas de manutenção de clusters do Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-mgmt-maintenance-tracks)
+ [Criar um bucket do S3](https://docs.aws.amazon.com/quickstarts/latest/s3backup/step-1-create-bucket.html)
+ [Configurar um cluster do Amazon Redshift para o Amazon Redshift ML](https://docs.aws.amazon.com/redshift/latest/dg/cluster-setup.html)
+ [Gerenciamento de permissões e propriedade no Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/permissions-ownership.html)

 

**Crie e treine o modelo de ML no Amazon Redshift**
+ [Declaração CRIAR MODELO no Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_MODEL.html#r_simple_create_model) 

 

**Execute inferência e previsão em lote no Amazon Redshift**
+ [Previsão no Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/prediction.html) 

 

**Outros recursos**
+ [Conceitos básicos do Amazon Redshift ML](https://docs.aws.amazon.com/redshift/latest/dg/geting-started-machine-learning.html)
+ [Criação, treinamento e implantação de modelos de ML no Amazon Redshift usando SQL com o Amazon Redshift ML](https://aws.amazon.com/blogs/big-data/create-train-and-deploy-machine-learning-models-in-amazon-redshift-using-sql-with-amazon-redshift-ml/)
+ [Parâmetros do Amazon Redshift](https://aws.amazon.com/redshift/partners/?partner-solutions-cards.sort-by=item.additionalFields.partnerNameLower&partner-solutions-cards.sort-order=aschttps://aws.amazon.com/redshift/partners/?partner-solutions-cards.sort-by=item.additionalFields.partnerNameLower&partner-solutions-cards.sort-order=asc)
+ [Parceiros de competência em machine learning da AWS](https://aws.amazon.com/machine-learning/partner-solutions/?partner-solutions-cards.sort-by=item.additionalFields.partnerNameLower&partner-solutions-cards.sort-order=asc)

# Consulte tabelas do Amazon DynamoDB com SQL usando o Amazon Athena
<a name="query-amazon-dynamodb-tables-sql-amazon-athena"></a>

*Gavin Perrie, Ajit Ambike e Brad Yates, da Amazon Web Services*

## Resumo
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-summary"></a>

Se seus dados incluírem fontes diferentes do Amazon Simple Storage Service (Amazon S3), você poderá usar consultas federadas para acessar essas fontes de dados relacionais, não relacionais, de objetos ou personalizadas. Esse padrão mostra como configurar o acesso de consultas federadas por meio do Amazon Athena ao Amazon DynamoDB usando um conector de fonte de dados SQL.

Usando esse padrão, você pode fazer o seguinte:
+ Consulte tabelas do DynamoDB usando SQL.
+ Execute consultas SQL federadas no Athena e junte tabelas do DynamoDB a outras fontes de dados compatíveis.

## Pré-requisitos e limitações
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-prereqs"></a>

**Pré-requisitos **
+ Uma tabela do DynamoDB.
+ Um grupo de trabalho do Athena configurado para usar o motor Athena versão 2. Para obter instruções, consulte a documentação do [Athena](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-changing.html).
+ Um bucket do S3 em que a `AthenaDynamoDBConnector` AWS Lambda função pode distribuir os dados. O bucket do S3 e a função Lambda devem estar na mesma região da AWS.

Se for a primeira vez que você acessa o Athena, você precisará de um bucket S3 adicional para usar como local do resultado da consulta. Para obter instruções, consulte a documentação do [Athena](https://docs.aws.amazon.com/athena/latest/ug/querying.html#query-results-specify-location-console).

**Limitações**
+ Operações de gravação como [INSERT INTO](https://docs.aws.amazon.com/athena/latest/ug/insert-into.html) não são suportadas. ****

**Versões do produto**
+ [Athena Query Federation é lançado em GitHub](https://github.com/awslabs/aws-athena-query-federation/releases)

## Arquitetura
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-architecture"></a>

**Arquitetura de destino**

O diagrama a seguir mostra o fluxo de conexão após o padrão ser estabelecido. O usuário se conecta ao Amazon Athena para fornecer a consulta. O Athena passa a consulta e o destino para a função Lambda do conector de fonte de dados do DynamoDB, que recupera e retorna os dados para o Athena. Se grandes quantidades de dados forem retornadas, o Athena armazena os resultados temporários no balde de derramamento antes de empacotar e devolver o conjunto de dados completo.

![\[Fluxo de trabalho dos usuários para o Athena e para o Lambda, que se conecta ao bucket do S3 e à tabela do DynamoDB.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/9d1ee529-36f3-4c7e-a2e7-05b76e09a3d8/images/e50a00cf-a55a-4def-81d5-4d2755dc9a97.png)


## Ferramentas
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-tools"></a>

**Serviços da AWS**
+ O [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) é um serviço de consultas interativas que ajuda a análise de dados diretamente no Amazon Simple Storage Service (Amazon S3) usando SQL padrão. Esse padrão usa o [Amazon Athena DynamoDB Connector, uma ferramenta](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-dynamodb) criada usando o Amazon Athena Query Federation SDK e instalada como um aplicativo por meio do. AWS Lambda AWS Serverless Application Repository
+ O [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) é um serviço de banco de dados NoSQL totalmente gerenciado que fornece performance rápida, previsível e escalável.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

**Repositório de código**

O código desse padrão está disponível no repositório da GitHub [Athena Query Federation](https://github.com/awslabs/aws-athena-query-federation/releases).

## Épicos
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-epics"></a>

### Configurar e testar o conector da fonte de dados do DynamoDB
<a name="set-up-and-test-the-ddb-data-source-connector"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implante o AthenaDynamo DBConnector aplicativo. | Para implantar AthenaDynamoDBConnecter, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/query-amazon-dynamodb-tables-sql-amazon-athena.html) | AWS DevOps | 
| Crie uma fonte de dados para Athena. | Para criar a fonte de dados, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/query-amazon-dynamodb-tables-sql-amazon-athena.html) | AWS DevOps | 
| Use o Athena para consultar a tabela do DynamoDB. | Para consultar a tabela do DynamoDB, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/query-amazon-dynamodb-tables-sql-amazon-athena.html) | Desenvolvedor de aplicativos | 

## Solução de problemas
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| A consulta falha com `GENERIC_INTERNAL_ERROR: The bucket is in this region: <region>`*.* | Certifique-se de que o balde de derramamento do Athena e a função Lambda sejam criados no mesmo. Região da AWS | 
| A fonte de dados recém-criada não está visível no console do Athena. | Os catálogos de dados do Athena são regionais. Verifique `AthenaDynamoDBConnector` se o foi implantado na região em que você está tentando usar o Athena. | 
| Você não consegue executar a consulta na fonte de dados recém-criada. | Verifique se o **local do resultado da consulta** foi definido. | 

## Recursos relacionados
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-resources"></a>
+ [Conector Amazon Athena DynamoDB](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-dynamodb)
+ [Consulta federada do Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/connect-to-a-data-source.html)

# Acesse, consulte e una tabelas do Amazon DynamoDB usando o Athena
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena"></a>

*Moinul Al-Mamun, Amazon Web Services*

## Resumo
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-summary"></a>

Este padrão mostra como configurar uma conexão entre o Amazon Athena e o Amazon DynamoDB usando o conector Amazon Athena DynamoDB. O conector usa uma função do AWS Lambda para consultar os dados no DynamoDB. Não é necessário escrever nenhum código para configurar a conexão. Depois que a conexão for estabelecida, você poderá acessar e analisar rapidamente as tabelas do DynamoDB usando o [Athena Federated Query](https://docs.aws.amazon.com/athena/latest/ug/connect-to-a-data-source.html) para executar comandos SQL do Athena. Você também pode unir uma ou mais tabelas do DynamoDB entre si ou com outras fontes de dados, como Amazon Redshift ou Amazon Aurora.

## Pré-requisitos e limitações
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-prereqs"></a>

**Pré-requisitos **
+ Uma conta ativa AWS com permissões para gerenciar tabelas do DynamoDB, fontes de dados do Athena, Lambda e perfis do AWS Identity and Access Management (IAM)
+ Um bucket do Amazon Simple Storage Service (Amazon S3) no qual o Athena poderá armazenar resultados de consultas
+ Um bucket do S3 em que o Athena DynamoDB Connector pode salvar os dados no curto prazo
+ Uma região da AWS que fornece suporte à [versão 2 do mecanismo Athena](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-reference-0002.html)
+ Permissões do IAM para acessar o Athena e os buckets do S3 necessários
+ [Conector do DynamoDB no Amazon Athena](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-dynamodb), instalado

**Limitações**

Há um custo para consultar tabelas do DynamoDB. Tamanhos de tabela superiores a alguns gigabytes (GBs) podem gerar um alto custo. Recomendamos que você considere o custo antes de realizar qualquer operação de VERIFICAÇÃO de tabela completa. Para obter mais informações, consulte a [Definição de preço do Amazon DynamoDB](https://aws.amazon.com/dynamodb/pricing/). Para reduzir custos e alcançar alto desempenho, recomendamos que você sempre use LIMIT em sua consulta (por exemplo, `SELECT * FROM table1 LIMIT 10`). Além disso, antes de realizar uma consulta JOIN ou GROUP BY em um ambiente de produção, considere o tamanho de suas tabelas. Se suas tabelas forem muito grandes, considere opções alternativas, como [migrar a tabela para o Amazon S3](https://aws.amazon.com/blogs/database/simplify-amazon-dynamodb-data-extraction-and-analysis-by-using-aws-glue-and-amazon-athena/).

## Arquitetura
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-architecture"></a>

O diagrama a seguir mostra como um usuário pode executar uma consulta SQL em uma tabela do DynamoDB do Athena.

![\[Fluxo de trabalho para conectar o Athena e o DynamoDB para executar uma consulta SQL.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/e6ff94af-d208-40c7-94e4-af257755a603/images/bc8e0132-b578-463b-bf55-3c39ce359c17.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. Para consultar uma tabela do DynamoDB, um usuário executa uma consulta SQL do Athena.

1. O Athena inicia uma função do Lambda.

1. A função do Lambda consulta os dados solicitados na tabela do DynamoDB.

1. O DynamoDB retorna os dados solicitados para a função do Lambda. Em seguida, a função transfere os resultados da consulta para o usuário por meio do Athena.

1. A função do Lambda armazena dados no bucket do S3.

**Pilha de tecnologia**
+ Amazon Athena
+ Amazon DynamoDB
+ Amazon S3
+ AWS Lambda

## Ferramentas
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-tools"></a>
+ O [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) é um serviço de consultas interativas que facilita a análise de dados no Amazon S3 usando SQL padrão.
+ O [Amazon Athena DynamoDB Connector](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-dynamodb) é uma ferramenta da AWS que permite que o Athena se conecte ao DynamoDB e acesse suas tabelas usando consultas SQL.
+ O [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) é um serviço de banco de dados NoSQL totalmente gerenciado que fornece performance rápida, previsível e escalável.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda você a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.

## Épicos
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-epics"></a>

### Criar exemplos de tabelas do DynamoDB
<a name="create-sample-dynamodb-tables"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie a primeira tabela de exemplo.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html) | Desenvolvedor | 
| Insira dados de exemplo na primeira tabela. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html)<pre>{<br />  "PK1": "1234",<br />  "SK1": "info",<br />  "Salary": "5000"<br /> }</pre><pre>{<br />  "PK1": "1235",<br />  "SK1": "info",<br />  "Salary": "5200"<br /> }</pre> | Desenvolvedor | 
| Crie a segunda tabela de exemplo.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html) | Desenvolvedor | 
| Insira dados de exemplo na segunda tabela. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html)<pre>{<br />  "PK2": "1234",<br /> "SK2": "bonus",<br /> "Bonus": "500"<br />}</pre><pre>{<br />  "PK2": "1235",<br /> "SK2": "bonus",<br /> "Bonus": "1000"<br />}</pre> | Desenvolvedor | 

### Crie uma fonte de dados no Athena para DynamoDB
<a name="create-a-data-source-in-athena-for-dynamodb"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure o conector da fonte de dados. | Crie uma fonte de dados para o DynamoDB e, em seguida, uma função do Lambda para se conectar a essa fonte de dados.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html) | Desenvolvedor | 
| Verifique se a função do Lambda pode acessar o bucket de vazamento do S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html)Se ocorrerem erros, consulte a seção *Informações adicionais* neste padrão para obter orientação. | Desenvolvedor | 

### Acessar tabelas do DynamoDB a partir do Athena
<a name="access-dynamodb-tables-from-athena"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Consultar as tabelas do DynamoDB. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html) | Desenvolvedor | 
| Unir duas tabelas do DynamoDB. | O DynamoDB é um armazenamento de dados NoSQL e não fornece suporte à operação de junção de SQL. Consequentemente, você deve realizar uma operação de junção em duas tabelas do DynamoDB:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html)<pre>SELECT pk1, salary, bonus FROM dydbtable1 t1<br /> JOIN dydbtable2 t2 ON t1.pk1 = t2.pk2;</pre> | Desenvolvedor | 

## Recursos relacionados
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-resources"></a>
+ [Conector do Amazon Athena para o DynamoDB](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-dynamodb) (AWS Labs)
+ [Consulte qualquer fonte de dados com a nova consulta federada do Amazon Athena](https://aws.amazon.com/blogs/big-data/query-any-data-source-with-amazon-athenas-new-federated-query/) (blog do AWS Big Data)
+ [Referência da versão do mecanismo Athena](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-reference.html) (Guia do usuário do Athena)
+ [Simplifique a extração e a análise de dados do Amazon DynamoDB usando o AWS Glue e o Amazon Athena](https://aws.amazon.com/blogs/database/simplify-amazon-dynamodb-data-extraction-and-analysis-by-using-aws-glue-and-amazon-athena/) (blog do banco de dados da AWS)

## Mais informações
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-additional"></a>

Se você executar uma consulta no Athena com `spill_bucket` no formato `{bucket_name}/folder_name/`, poderá receber a seguinte mensagem de erro:

```
"GENERIC_USER_ERROR: Encountered an exception[java.lang.RuntimeException] from your LambdaFunction[arn:aws:lambda:us-east-1:xxxxxx:function:testdynamodb] executed in context[retrieving meta-data] with message[You do NOT own the spill bucket with the name: s3://amzn-s3-demo-bucket/athena_dynamodb_spill_data/]
This query ran against the "default" database, unless qualified by the query. Please post the error message on our forum  or contact customer support with Query Id: [query-id]"
```

Para solucionar esse erro, atualize a variável de ambiente da função do Lambda `spill_bucket` para `{bucket_name_only}` e, em seguida, atualize a seguinte política do IAM do Lambda para obter acesso de gravação no bucket:

```
{
             "Action": [
                 "s3:GetObject",
                 "s3:ListBucket",
                 "s3:GetBucketLocation",
                 "s3:GetObjectVersion",
                 "s3:PutObject",
                 "s3:PutObjectAcl",
                 "s3:GetLifecycleConfiguration",
                 "s3:PutLifecycleConfiguration",
                 "s3:DeleteObject"
            ],
             "Resource": [
                 "arn:aws:s3:::spill_bucket",
                 "arn:aws:s3:::spill_bucket/*"
            ],
             "Effect": "Allow"
        }
```

Como alternativa, você pode remover o conector da fonte de dados do Athena criado anteriormente e recriá-lo usando somente `{bucket_name}` para `spill_bucket`.

# Configure a classificação específica do idioma para os resultados da consulta do Amazon Redshift usando uma UDF escalar do Python
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf"></a>

*Ethan Stark, Amazon Web Services*

## Resumo
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf-summary"></a>

Esse padrão fornece as etapas e o código de amostra para usar uma UDF escalar do Python (função definida pelo usuário) para configurar a classificação linguística sem distinção entre maiúsculas e minúsculas para os resultados da consulta do Amazon Redshift. É necessário usar uma UDF escalar do Python porque o Amazon Redshift retorna resultados com base na ordenação binária UTF-8 e não é compatível com a classificação específica da linguagem. Uma UDF em Python é um código de processamento sem o uso de SQL baseado em um programa do Python e que é executado em um data warehouse. Você pode executar o código UDF do Python com uma instrução SQL em uma única consulta. Para obter mais informações, consulte a postagem do [blog Introdução ao Python UDFs no Amazon](https://aws.amazon.com/blogs/big-data/introduction-to-python-udfs-in-amazon-redshift/) AWS Redshift Big Data.

Os dados de amostra nesse padrão são baseados no alfabeto turco para fins de demonstração. A UDF escalar do Python nesse padrão foi criada para fazer com que os resultados da consulta padrão do Amazon Redshift estejam em conformidade com a ordem linguística dos caracteres no idioma turco. Para obter mais informações, consulte o *Exemplo do idioma turco* na seção *Informações adicionais* desse padrão. Você pode modificar a UDF escalar do Python nesse padrão para outras linguagens.

## Pré-requisitos e limitações
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf-prereqs"></a>

**Pré-requisitos **
+ [Cluster do Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html) com banco de dados, esquema e tabelas
+ [Usuário do Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/r_Users.html) com permissões para `CREATE TABLE` e `CREATE FUNCTION`.
+ [Python 2.7](https://www.python.org/download/releases/2.7/) ou superior

**Limitações**

A classificação linguística usada pelas consultas nesse padrão não diferencia maiúsculas de minúsculas.

## Ferramentas
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf-tools"></a>

**Serviços da AWS**
+ O [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html) é um serviço gerenciado de data warehouse em escala de petabytes na Nuvem AWS. O Amazon Redshift é integrado ao seu data lake, o que permite que você use seus dados para adquirir novos insights para seus negócios e clientes.

**Outras ferramentas**
+ As [funções definidas pelo usuário Python (UDFs) são funções](https://docs.snowflake.com/en/developer-guide/udf/python/udf-python-introduction.html) que você pode escrever em Python e depois chamar em instruções SQL.

## Épicos
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf-epics"></a>

### Desenvolva código para classificar os resultados da consulta em ordem linguística
<a name="develop-code-to-sort-query-results-in-linguistic-order"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie uma tabela para seus dados de amostra. | Para criar uma tabela no Amazon Redshift e inserir seus dados de amostra na tabela, use as seguintes instruções SQL:<pre>CREATE TABLE my_table (first_name varchar(30));<br /><br />INSERT INTO my_table (first_name)<br />VALUES<br />    ('ali'),<br />    ('Ali'),<br />    ('ırmak'),<br />    ('IRMAK'),<br />    ('irem'),<br />    ('İREM'),<br />    ('oğuz'),<br />    ('OĞUZ'),<br />    ('ömer'),<br />    ('ÖMER'),<br />    ('sedat'),<br />    ('SEDAT'),<br />    ('şule'),</pre>Nos dados de amostra, os primeiros nomes contêm caracteres especiais do alfabeto turco. Para obter mais informações sobre as considerações sobre o idioma turco neste exemplo, consulte *Exemplo do idioma turco* na seção *Informações adicionais* desse padrão. | Engenheiro de dados | 
| Verifique a classificação padrão dos dados da amostra. | Para ver a classificação padrão dos seus dados de amostra no Amazon Redshift, execute a seguinte consulta:<pre>SELECT first_name FROM my_table ORDER BY first_name;</pre>A consulta retorna a lista de nomes próprios da tabela que você criou anteriormente:<pre>first_name<br />---------------<br />Ali<br />IRMAK<br />OĞUZ<br />SEDAT<br />ali<br />irem<br />oğuz<br />sedat<br />ÖMER<br />ömer<br />İREM<br />ırmak<br />ŞULE<br />şule</pre>Os resultados da consulta não estão na ordem correta porque a ordem padrão do binário UTF-8 não acomoda a ordem linguística dos caracteres especiais turcos. | Engenheiro de dados | 
| Crie uma UDF escalar em Python | Para criar uma UDF escalar em Python, use o seguinte código SQL: <pre>CREATE OR REPLACE FUNCTION collate_sort (value varchar) <br />RETURNS varchar <br />IMMUTABLE <br />AS <br />$$    <br />    def sort_str(val):<br />        import string<br />        <br />        dictionary = {<br />            'I': 'ı', <br />            'ı': 'h~', <br />            'İ': 'i', <br />            'Ş': 's~', <br />            'ş': 's~', <br />            'Ğ': 'g~', <br />            'ğ': 'g~', <br />            'Ü': 'u~', <br />            'ü': 'u~', <br />            'Ö': 'o~', <br />            'ö': 'o~', <br />            'Ç': 'c~', <br />            'ç': 'c~'<br />        }<br />        <br />        for key, value in dictionary.items():<br />            val = val.replace(key, value)<br />        <br />        return val.lower()<br /> <br />    return sort_str(value)<br />    <br />$$ LANGUAGE plpythonu;</pre> | Engenheiro de dados | 
| Consulte os dados de amostra. | Para consultar os dados de amostra usando as UDFs do Python, execute esta consulta SQL:<pre>SELECT first_name FROM my_table ORDER BY collate_sort(first_name);</pre>A consulta agora retorna os dados de amostra em ordem linguística turca:<pre>first_name<br />---------------<br />ali<br />Ali<br />ırmak<br />IRMAK<br />irem<br />İREM<br />oğuz<br />OĞUZ<br />ömer<br />Ömer<br />sedat<br />SEDAT<br />şule<br />ŞULE</pre> | Engenheiro de dados | 

## Recursos relacionados
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf-resources"></a>
+ [Cláusula ORDER BY](https://docs.aws.amazon.com/redshift/latest/dg/r_ORDER_BY_clause.html) (documentação do Amazon Redshift)
+ [Criar uma UDF escalar em Python](https://docs.aws.amazon.com/redshift/latest/dg/udf-creating-a-scalar-udf.html) (documentação do Amazon Redshift)

## Mais informações
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf-additional"></a>

**Exemplo de idioma turco**

O Amazon Redshift retorna os resultados da consulta com base na ordem de classificação binária UTF-8, não na ordem de classificação específica do idioma. Isso significa que se você consultar uma tabela do Amazon Redshift contendo caracteres turcos, os resultados da consulta não serão classificados de acordo com a ordem linguística do idioma turco. O idioma turco contém seis caracteres especiais (ç, ı, ğ, ö, ş e ü) que não existem no alfabeto latino. Esses caracteres especiais são colocados no final de um conjunto de resultados ordenado com base na ordem binária UTF-8, conforme mostra a tabela a seguir.


| 
| 
| Ordenação binária UTF-8 | Ordenação linguística turca | 
| --- |--- |
| a | a | 
| b | b | 
| c | c | 
| d | **ç (\$1)** | 
| p | d | 
| f | p | 
| g | f | 
| h | g | 
| i | **ğ (\$1)** | 
| j | h | 
| k | **i (\$1)** | 
| l | i | 
| m | j | 
| n | k | 
| o | l | 
| p | m | 
| r | n | 
| s | o | 
| t | **ö (\$1)** | 
| u | p | 
| v | r | 
| y | s | 
| z | **ş (\$1)** | 
| **ç (\$1)** | t | 
| **ğ (\$1)** | u | 
| **i (\$1)** | **ü (\$1)** | 
| **ö (\$1)** | v | 
| **ş (\$1)** | y | 
| **ü (\$1)** | z | 

**nota**  
O símbolo do asterisco (\$1) sinaliza um caractere especial do idioma turco.

Como a tabela acima ilustra, o caractere especial **ç** está entre **c** e **d** na ordenação linguística turca, mas aparece depois de **z** na ordem binária UTF-8. A UDF escalar no Python nesse padrão usa o seguinte dicionário de substituição de caracteres para substituir os caracteres especiais turcos pelos caracteres correspondentes equivalentes ao latim.


| 
| 
| Caractere especial turco | Caractere equivalente em latim | 
| --- |--- |
| ç | c\$1 | 
| ı | h\$1 | 
| ğ | g\$1 | 
| ö | o\$1 | 
| ş | s\$1 | 
| ü | u\$1 | 

**nota**  
Um caractere til (\$1) é anexado ao final dos caracteres latinos que representam os caracteres especiais correspondentes do turco.

**Modifique uma função UDF escalar do Python**

Para modificar a função UDF escalar do Python a partir desse padrão para que a função aceite um parâmetro localizar e ofereça suporte a um dicionário de várias transações, use o seguinte código SQL:

```
CREATE OR REPLACE FUNCTION collate_sort (value varchar, locale varchar) 
RETURNS varchar 
IMMUTABLE 
AS 
$$    
    def sort_str(val):
       import string
       # Turkish Dictionary
       if locale == 'tr-TR':
            dictionary = {
               'I': 'ı', 
               'ı': 'h~', 
               'İ': 'i', 
               'Ş': 's~', 
               'ş': 's~', 
               'Ğ': 'g~', 
               'ğ': 'g~', 
               'Ü': 'u~', 
               'ü': 'u~', 
               'Ö': 'o~', 
               'ö': 'o~', 
               'Ç': 'c~', 
               'ç': 'c~'
        }
        # German Dictionary
        if locale == 'de-DE':
            dictionary = {
               ....
               ....
        }
        
        for key, value in dictionary.items():
            val = val.replace(key, value)
        
        return val.lower()
 
    return sort_str(value)
    
$$ LANGUAGE plpythonu;
```

O código de exemplo a seguir mostra como consultar a UDFs do Python modificada:

```
SELECT first_name FROM my_table ORDER BY collate_order(first_name, 'tr-TR');
```

# Assine uma função do Lambda para notificações de eventos de buckets do S3 em diferentes regiões da AWS
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions"></a>

*Suresh Konathala, Amazon Web Services*

*Andrew Preston e Arindom Sarkar, sem afiliação*

## Resumo
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions-summary"></a>

As notificações de eventos do [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/NotificationHowTo.html) publicam notificações para determinados eventos em seu bucket do S3 (por exemplo, eventos criados por objetos, eventos de remoção de objetos ou eventos de restauração de objetos). Você pode usar uma função do AWS Lambda para processar essas notificações de acordo com os requisitos do seu aplicativo. No entanto, a função do Lambda não pode assinar diretamente notificações de buckets do S3 hospedados em diferentes regiões da AWS.

A abordagem desse padrão implanta um [cenário de fanout](https://docs.aws.amazon.com/sns/latest/dg/sns-common-scenarios.html) para processar notificações do Amazon S3 de buckets do S3 entre regiões usando um tópico do Amazon Simple Notiﬁcation Service (Amazon SNS) para cada região. Esses tópicos do SNS regional enviam notificações de eventos do Amazon S3 para uma fila do Amazon Simple Queue Service (Amazon SQS) em uma região central que também contém sua função do Lambda. A função do Lambda se inscreve nessa fila do SQS e processa as notificações de eventos de acordo com os requisitos da sua organização.

## Pré-requisitos e limitações
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Buckets S3 existentes em várias regiões, incluindo uma região central para hospedar a fila do Amazon SQS e a função do Lambda.
+ AWS Command Line Interface (AWS CLI), instalada e configurada. Para obter mais informações, consulte [Instalação, atualização e desinstalação da AWS CLI ](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)na documentação da AWS CLI. 
+ Familiaridade com o cenário de fanout no Amazon SNS. Para obter mais informações, consulte [Cenários comuns do Amazon SNS na documentação](https://docs.aws.amazon.com/sns/latest/dg/sns-common-scenarios.html) do Amazon SNS.

## Arquitetura
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions-architecture"></a>

O diagrama a seguir mostra a arquitetura da abordagem desse padrão. 

![\[O fluxo de trabalho usa o Amazon SNS, o S3 e o SQS para processar notificações de eventos provenientes de buckets do S3 em outras regiões.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/cf6c1804-8c41-46f1-9f17-ff361708c595/images/760cf4c0-0cb3-48d1-92ae-1cf0fa8ae076.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. O Amazon S3 envia notificações de eventos sobre buckets do S3 (por exemplo, objeto criado, objeto removido ou objeto restaurado) para um tópico do SNS na mesma região.

1. O tópico do SNS publica o evento em uma fila do SQS na região central.

1. A fila do SQS é configurada como a fonte de eventos para sua função do Lambda e armazena em buffer as mensagens de eventos para a função do Lambda. 

1. A função do Lambda pesquisa mensagens na fila do SQS e processa as notificações de eventos do Amazon S3 de acordo com os requisitos do seu aplicativo.

 

**Pilha de tecnologia**
+ Lambda
+ Amazon SNS
+ Amazon SQS
+ Amazon S3

## Ferramentas
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions-tools"></a>
+ [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html): o AWS Command Line Interface (AWS CLI) é uma ferramenta de código aberto para interagir com serviços da AWS por meio de comandos em seu shell de linha de comando. Com configuração mínima, você pode executar comandos da AWS CLI que implementam funcionalidade equivalente àquela fornecida pelo Console de Gerenciamento da AWS baseado em navegador a partir de um prompt de comando.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) — CloudFormation A AWS ajuda você a modelar e configurar seus recursos da AWS, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida. Você pode usar um modelo para descrever seus recursos e as dependências deles, além de inicializá-los e configurá-los juntos como uma pilha, em vez de gerenciar recursos individualmente. Você pode gerenciar e provisionar pilhas em várias contas e regiões da AWS.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html): o AWS Lambda é um serviço de computação que permite a execução do código sem provisionar ou gerenciar servidores O Lambda executa o código somente quando necessário e dimensiona automaticamente, desde algumas solicitações por dia até milhares por segundo. Você paga apenas pelo tempo de computação consumido. Não haverá cobranças quando o código não estiver em execução.
+ [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html): o Amazon Simple Notiﬁcation Service (Amazon SNS) é um serviço da Web que coordena e gerencia a entrega ou o envio de mensagens entre publicadores e clientes, incluindo servidores da Web e endereços de e-mail. Os assinantes recebem todas as mensagens publicadas nos tópicos para os quais eles se inscrevem, e todos os assinantes em um tópico recebem as mesmas mensagens.
+ [Amazon SQS ](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html): o Amazon Simple Queue Service (Amazon SQS) oferece uma fila hospedada segura, durável e disponível que permite integrar e desacoplar sistemas e componentes de software distribuídos. O Amazon SQS oferece suporte a filas padrão e FIFO.

## Épicos
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions-epics"></a>

### Crie a fila do SQS e a função do Lambda em sua região central
<a name="create-the-sqs-queue-and-lambda-function-in-your-central-region"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie uma fila do SQS com um gatilho do Lambda. | Faça login no Console de Gerenciamento da AWS e use as instruções do tutorial [Usando o Lambda com o Amazon SQS](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-example.html) na documentação do AWS Lambda para criar os seguintes recursos em sua região central:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions.html)Certifique-se de configurar a fila do SQS como a origem dos eventos para sua função do Lambda. | AWS DevOps, arquiteto de nuvem | 

### Crie um tópico do SNS e configure notificações de eventos para os buckets do S3 em cada região necessária
<a name="create-an-sns-topic-and-set-up-event-notifications-for-the-s3-buckets-in-each-required-region"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
|  Crie um tópico do SNS para receber notificações de eventos do Amazon S3. | Crie um tópico do SNS em uma região da qual você deseja receber notificações de eventos do Amazon S3. Para obter mais informações, consulte [Criação de um tópico SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html) na documentação do Amazon SNS. Certifique-se de registrar o nome do recurso da Amazon (ARN) do seu tópico do SNS.  | AWS DevOps, arquiteto de nuvem | 
| Assinar o tópico SNS na fila central do SQS. | Assine seu tópico do SNS na fila do SQS hospedada pela sua região central. Para obter mais informações sobre isso, consulte [Assinar um tópico do SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html) na documentação do Amazon SNS. | AWS DevOps, arquiteto de nuvem | 
| Atualize a política de acesso do tópico do SNS.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions.html)<pre>{<br />  "Version": "2012-10-17",		 	 	 <br />  "Statement": [<br />    {<br />      "Sid": "0",<br />      "Effect": "Allow",<br />      "Principal": {<br />        "Service": "s3.amazonaws.com"<br />      },<br />      "Action": "sns:Publish",<br />      "Resource": "arn:aws:sns:us-west-2::s3Events-SNSTopic-us-west-2"<br />    }<br />  ]<br />}</pre> | AWS DevOps, arquiteto de nuvem | 
| Configure notificações para cada bucket do S3 na região. | Configure notificações de eventos para cada bucket do S3 na região. Para obter mais informações, consulte [Habilitação e configuração de notificações de eventos usando o console do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-event-notifications.html) na documentação do Amazon S3.Na seção **Destino**, selecione **Tópico do SNS** e informe o ARN do tópico do SNS que você criou anteriormente. | AWS DevOps, arquiteto de nuvem | 
| Repita esse épico para todas as regiões necessárias. | Repita as tarefas deste épico para cada região da qual você deseja receber notificações de eventos do Amazon S3, incluindo sua região central. | AWS DevOps, arquiteto de nuvem | 

## Recursos relacionados
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions-resources"></a>
+ [Como configurar uma política de acesso](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-add-permissions.html) (documentação do Amazon SQS)
+ [Como configurar uma fila do SQS como uma origem de eventos](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html#events-sqs-eventsource) (documentação do AWS Lambda)
+ [Como configurar uma fila do SQS para iniciar uma função do Lambda](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-lambda-function-trigger.html) (documentação do Amazon SQS)
+ [AWS::Lambda::Function recurso](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html) ( CloudFormation documentação da AWS)

# Três tipos de trabalho de ETL do AWS Glue para converter dados em Apache Parquet
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet"></a>

*Adnan Alvee, Nith Govindasivan e Karthikeyan Ramachandran, Amazon Web Services*

## Resumo
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-summary"></a>

Na nuvem da Amazon Web Services (AWS), o AWS Glue é um serviço para extração, transformação e carregamento (ETL) totalmente gerenciado. O AWS Glue torna econômico categorizar os dados, limpá-los, aprimorá-los e movê-los de modo confiável entre vários armazenamentos e fluxos de dados.

Esse padrão fornece diferentes tipos de trabalho no AWS Glue e usa três scripts diferentes para demonstrar a criação de trabalhos de ETL.

Você pode usar o AWS Glue para escrever trabalhos de ETL em um ambiente de shell Python. Você também pode criar trabalhos ETL em lote e de streaming usando Python PySpark () ou Scala em um ambiente gerenciado do Apache Spark. Para começar a criar trabalhos de ETL, esse padrão se concentra em trabalhos ETL em lote usando Python, shell e Scala. PySpark Os trabalhos de shell do Python são destinados a workloads que exigem menor poder computacional. O ambiente gerenciado do Apache Spark é destinado a workloads que exigem alto poder computacional.

O Apache Parquet foi desenvolvido para dar suporte a esquemas eficientes de compressão e codificação. Ele pode acelerar suas workloads de análise porque armazena dados de forma colunar. A conversão de dados em Parquet pode economizar espaço de armazenamento, custo e tempo no longo prazo. Para saber mais sobre o Parquet, consulte a postagem do blog [Apache Parquet: Como ser um herói com o formato de dados colunares de código aberto](https://blog.openbridge.com/how-to-be-a-hero-with-powerful-parquet-google-and-amazon-f2ae0f35ee04).

## Pré-requisitos e limitações
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-prereqs"></a>

**Pré-requisitos **
+ Perfil do AWS Identity and Access Management (IAM) (se você ainda não tiver um perfil, consulte a seção [Informações adicionais](#three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-additional).)

## Arquitetura
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-architecture"></a>

**Pilha de tecnologias de destino**
+ AWS Glue
+ Amazon Simple Storage Service (Amazon S3)
+ Apache Parquet

**Automação e escala**
+ Os [fluxos de trabalho do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/workflows_overview.html) oferecem suporte à automação total de um pipeline de ETL.
+ Você pode alterar o número de unidades de processamento de dados (DPUs) ou tipos de trabalhadores para escalar horizontal e verticalmente.

## Ferramentas
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-tools"></a>

**Serviços da AWS**
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
+ O [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) é um serviço de ETL totalmente gerenciado para categorizar, limpar, enriquecer e mover dados entre armazenamentos de dados e fluxos de dados.

**Outras ferramentas**
+ O [Apache Parquet](https://parquet.apache.org/) é um formato de arquivos de dados orientados por colunas de código aberto projetado para armazenamento e recuperação.

**Configuração**

Use os dados a seguir para configurar a potência computacional do AWS Glue ETL. Para reduzir custos, use as configurações mínimas ao executar a workload fornecida nesse padrão. 
+ **Python shell**: você pode usar 1 DPU para utilizar 16 GB de memória ou 0,0625 DPU para utilizar 1 GB de memória. Esse padrão usa 0,0625 DPU, que é o padrão no console do AWS Glue.
+ **Python ou Scala para Spark**: se você escolher os tipos de trabalho relacionados ao Spark no console, o AWS Glue, por padrão, usa 10 operadores e o tipo de operador G.1X. Esse padrão usa dois operadores, que é o número mínimo permitido, com o tipo de operador padrão, que é suficiente e econômico.

A tabela a seguir mostra os diferentes tipos de operadores do AWS Glue para o ambiente Apache Spark. Como um trabalho de Python shell não usa o ambiente Apache Spark para executar o Python, ele não está incluído na tabela.


| 
| 
|  | Standard | G.1X | G.2X | 
| --- |--- |--- |--- |
| vCPU | 4 | 4 | 8 | 
| Memória | 16 GB | 16 GB | 32 GB | 
| Espaço em disco | 50 GB | 64 GB | 128 GB | 
| Executor por operador | 2 | 1  | 1 | 

**Código **

Para ver o código usado nesse padrão, incluindo o perfil do IAM e a configuração de parâmetros, consulte a seção [Informações adicionais](#three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-additional).

## Épicos
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-epics"></a>

### Carregar os dados
<a name="upload-the-data"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Carregar dados para um bucket do S3 novo ou existente. | Crie ou use um bucket do S3 existente na sua conta. Faça upload do arquivo sample\$1data.csv na seção [Anexos](#attachments-8c926709-8fa4-417f-9aaf-bcc8113d018f) e anote a localização do bucket e do prefixo do S3. | AWS geral | 

### Criar e executar o trabalho do AWS Glue
<a name="create-and-run-the-aws-glue-job"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar o trabalho do AWS Glue. | Na seção ETL do console do AWS Glue, adicione uma tarefa do AWS Glue. Selecione o tipo de trabalho apropriado, a versão do AWS Glue e o DPU/Worker tipo e número de trabalhadores correspondentes. Consulte a seção *Configuração* para obter detalhes. | Desenvolvedor, nuvem ou dados | 
| Alterar os locais de entrada e saída. | Copie o código correspondente ao seu trabalho do AWS Glue e altere o local de entrada e saída que você anotou no épico **Upload dos dados**. | Desenvolvedor, nuvem ou dados | 
| Configurar os parâmetros. | Você pode usar os trechos fornecidos na seção [Informações adicionais](#three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-additional) para definir parâmetros para seu trabalho de ETL. O AWS Glue usa quatro nomes de argumentos internamente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet.html)O parâmetro `--JOB_NAME` deve ser inserido explicitamente no console do AWS Glue. Escolha **Trabalhos**, **Editar trabalho**, **Configuração de segurança, bibliotecas de scripts e parâmetros do trabalho (opcional)**. Insira `--JOB_NAME` como chave e forneça um valor. Você também pode usar a AWS Command Line Interface (AWS CLI) da AWS ou a API do AWS Glue para definir esse parâmetro. O parâmetro `--JOB_NAME` é usado pelo Spark e não é necessário em um trabalho do ambiente shell do Python.Você deve adicionar `--` antes de cada nome de parâmetro; caso contrário, o código não funcionará. Por exemplo, para os trechos de código, os parâmetros de localização devem ser invocados por `--input_loc` e `--output_loc`. | Desenvolvedor, nuvem ou dados | 
| Executar o trabalho de ETL. | Execute seu trabalho e verifique a saída. Observe quanto espaço foi reduzido em relação ao arquivo original. | Desenvolvedor, nuvem ou dados | 

## Recursos relacionados
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-resources"></a>

**Referências**
+ [Apache Spark](https://spark.apache.org/)
+ [AWS Glue: como funciona](https://docs.aws.amazon.com/glue/latest/dg/how-it-works.html)
+ [Preços do AWS Glue](https://aws.amazon.com/glue/pricing/)

**Tutoriais e vídeos**
+ [O que é o AWS Glue?](https://www.youtube.com/watch?v=qgWMfNSN9f4)

## Mais informações
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-additional"></a>

**Perfil do IAM**

Ao criar os trabalhos do AWS Glue, você pode usar um perfil existente do IAM que tenha as permissões mostradas no seguinte trecho de código ou uma nova função.

Use o seguinte código YAML para criar um novo perfil.

```
# (c) 2022 Amazon Web Services, Inc. or its affiliates. All Rights Reserved. This AWS Content is provided subject to the terms of the AWS Customer
# Agreement available at https://aws.amazon.com/agreement/ or other written agreement between Customer and Amazon Web Services, Inc.

AWSTemplateFormatVersion: "2010-09-09"

Description: This template will setup IAM role for AWS Glue service.

Resources:
  rGlueRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: "Allow"
            Principal:
              Service:
                - "glue.amazonaws.com"
            Action:
              - "sts:AssumeRole"
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole
      Policies:
        - PolicyName: !Sub "${AWS::StackName}-s3-limited-read-write-inline-policy"
          PolicyDocument:
            Version: "2012-10-17"
            Statement:
              - Effect: Allow
                Action:
                  - "s3:PutObject"
                  - "s3:GetObject"
                Resource: "arn:aws:s3:::*/*"
      Tags:
        - Key  : "Name"
          Value : !Sub "${AWS::StackName}"

Outputs:
  oGlueRoleName:
    Description: AWS Glue IAM role
    Value:
      Ref: rGlueRole
    Export:
      Name: !Join [ ":", [ !Ref "AWS::StackName", rGlueRole ] ]
```

**Python shell do AWS Glue**

O código Python usa os Pandas e as PyArrow bibliotecas para converter dados em Parquet. A biblioteca Pandas já está disponível. A PyArrow biblioteca é baixada quando você executa o padrão, porque é uma execução única. Você pode usar arquivos de roda PyArrow para converter em uma biblioteca e fornecer o arquivo como um pacote de biblioteca. Para obter mais informações sobre empacotamento de arquivos wheel, consulte [Fornecer sua própria biblioteca Python](https://docs.aws.amazon.com/glue/latest/dg/add-job-python.html).

*Parâmetros do Python shell do AWS Glue*

```
from awsglue.utils import getResolvedOptions

args = getResolvedOptions(sys.argv, ["input_loc", "output_loc"])
```

*Código do Python shell do AWS Glue*

```
from io import BytesIO
import pandas as pd
import boto3
import os
import io
import site
from importlib import reload
from setuptools.command import easy_install
install_path = os.environ['GLUE_INSTALLATION']
easy_install.main( ["--install-dir", install_path, "pyarrow"] )
reload(site)
import pyarrow


input_loc = "s3://bucket-name/prefix/sample_data.csv"
output_loc = "s3://bucket-name/prefix/"


input_bucket = input_loc.split('/', 1)[0]
object_key = input_loc.split('/', 1)[1]


output_loc_bucket = output_loc.split('/', 1)[0]
output_loc_prefix = output_loc.split('/', 1)[1] 


s3 = boto3.client('s3')
obj = s3.get_object(Bucket=input_bucket, Key=object_key)
df = pd.read_csv(io.BytesIO(obj['Body'].read()))


parquet_buffer = BytesIO()
s3_resource = boto3.resource('s3')
df.to_parquet(parquet_buffer, index=False) 
s3_resource.Object(output_loc_bucket, output_loc_prefix +  'data' + '.parquet').put(Body=parquet_buffer.getvalue())
```

**Trabalho do AWS Glue Spark com Python**

Para usar um tipo de trabalho do AWS Glue Spark com Python, escolha **Spark** como tipo de trabalho. Escolha o **Spark 3.1, Python 3 com melhor tempo de startup do trabalho (Glue versão 3.0)** como a versão do AWS Glue.

*Parâmetros do Python do AWS Glue*

```
from awsglue.utils import getResolvedOptions

args = getResolvedOptions(sys.argv, ["JOB_NAME", "input_loc", "output_loc"])
```

*Trabalho do AWS Glue Spark com código Python*

```
import sys
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.transforms import *
from awsglue.dynamicframe import DynamicFrame
from awsglue.utils import getResolvedOptions
from awsglue.job import Job


sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)

input_loc = "s3://bucket-name/prefix/sample_data.csv"
output_loc = "s3://bucket-name/prefix/"

inputDyf = glueContext.create_dynamic_frame_from_options(\
    connection_type = "s3", \
    connection_options = { 
        "paths": [input_loc]}, \
    format = "csv",
    format_options={
        "withHeader": True,
        "separator": ","
    })


outputDF = glueContext.write_dynamic_frame.from_options(\
    frame = inputDyf, \
    connection_type = "s3", \
    connection_options = {"path": output_loc \
        }, format = "parquet")
```

Para um grande número de arquivos grandes compactados (por exemplo, 1.000 arquivos com cerca de 3 MB cada), use o parâmetro `compressionType` com o parâmetro `recurse` para ler todos os arquivos que estão disponíveis dentro do prefixo, conforme mostrado no código a seguir.

```
input_loc = "bucket-name/prefix/"
output_loc = "bucket-name/prefix/"

inputDyf = glueContext.create_dynamic_frame_from_options(
                    connection_type = "s3", 
                    connection_options = {"paths": [input_loc], 
                                            "compressionType":"gzip","recurse" :"True",
                                            },
                    format = "csv",
                    format_options={"withHeader": True,"separator": ","}
                    )
```

Para um grande número de arquivos pequenos compactados (por exemplo, 1.000 arquivos cada um com cerca de 133 KB), use o parâmetro `groupFiles` junto com os parâmetros `compressionType` e os parâmetros `recurse`. O parâmetro `groupFiles` agrupa arquivos pequenos em vários arquivos grandes e o parâmetro `groupSize` controla o agrupamento no tamanho especificado em bytes (por exemplo, 1 MB). O trecho de código a seguir fornece um exemplo do uso desses parâmetros no código.

```
input_loc = "bucket-name/prefix/"
output_loc = "bucket-name/prefix/"

inputDyf = glueContext.create_dynamic_frame_from_options(
                    connection_type = "s3", 
                    connection_options = {"paths": [input_loc], 
                                            "compressionType":"gzip","recurse" :"True",
                                             "groupFiles" :"inPartition",  "groupSize" :"1048576",
                                            },
                    format = "csv",
                    format_options={"withHeader": True,"separator": ","}
                    )
```

Sem nenhuma alteração nos nós de processamento, essas configurações permitem que o trabalho do AWS Glue leia vários arquivos (grandes ou pequenos, com ou sem compactação) e os grave no destino no formato Parquet.

**Trabalho do AWS Glue Spark com Scala**

Para usar um tipo de trabalho do AWS Glue Spark com Scala, escolha **Spark** como tipo de trabalho e **Linguagem** como **Scala**. Escolha o **Spark 3.1, Scala 2 com melhor tempo de startup do trabalho (Glue versão 3.0)** como a versão do AWS Glue. Para economizar espaço de armazenamento, o seguinte exemplo do AWS Glue com Scala também usa o atributo `applyMapping` para converter tipos de dados.

*Parâmetros do AWS Glue Scala*

```
import com.amazonaws.services.glue.util.GlueArgParser val args = GlueArgParser.getResolvedOptions(sysArgs, Seq("JOB_NAME", "inputLoc", "outputLoc").toArray)
```

*Trabalho do AWS Glue Spark com código Scala*

```
import com.amazonaws.services.glue.GlueContext
import com.amazonaws.services.glue.MappingSpec
import com.amazonaws.services.glue.DynamicFrame
import com.amazonaws.services.glue.errors.CallSite
import com.amazonaws.services.glue.util.GlueArgParser
import com.amazonaws.services.glue.util.Job
import com.amazonaws.services.glue.util.JsonOptions
import org.apache.spark.SparkContext
import scala.collection.JavaConverters._


object GlueScalaApp {
  def main(sysArgs: Array[String]) {
    
    @transient val spark: SparkContext = SparkContext.getOrCreate()
    val glueContext: GlueContext = new GlueContext(spark)

    val inputLoc = "s3://bucket-name/prefix/sample_data.csv"
    val outputLoc = "s3://bucket-name/prefix/"

    val readCSV = glueContext.getSource("csv", JsonOptions(Map("paths" -> Set(inputLoc)))).getDynamicFrame()

    val applyMapping = readCSV.applyMapping(mappings = Seq(("_c0", "string", "date", "string"), ("_c1", "string", "sales", "long"),
    ("_c2", "string", "profit", "double")), caseSensitive = false)

    val formatPartition = applyMapping.toDF().coalesce(1)

    val dynamicFrame = DynamicFrame(formatPartition, glueContext)

    val dataSink = glueContext.getSinkWithFormat(
        connectionType = "s3", 
        options = JsonOptions(Map("path" -> outputLoc )),
        transformationContext = "dataSink", format = "parquet").writeDynamicFrame(dynamicFrame)
  }
}
```

## Anexos
<a name="attachments-8c926709-8fa4-417f-9aaf-bcc8113d018f"></a>

Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo:[ attachment.zip](samples/p-attach/8c926709-8fa4-417f-9aaf-bcc8113d018f/attachments/attachment.zip)

# Visualize os registros de auditoria do Amazon Redshift usando o Amazon Athena e o Amazon QuickSight
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight"></a>

*Sanket Sirsikar e Gopal Krishna Bhatia, Amazon Web Services*

## Resumo
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight-summary"></a>

A segurança é parte integrante das operações de banco de dados na Amazon Web Services (AWS) Cloud. Sua organização deve garantir o monitoramento das atividades e conexões dos usuários do banco de dados para detectar possíveis incidentes e riscos de segurança. Esse padrão ajuda a monitorar os seus bancos de dados para fins de segurança e solução de problemas, que é um processo conhecido como auditoria de banco de dados.

 Esse padrão fornece um script SQL que automatiza a criação de uma tabela e visualizações do Amazon Athena para um painel de relatórios na Amazon que ajuda você a auditar os logs do QuickSight Amazon Redshift. Isso garante que os usuários responsáveis pelo monitoramento das atividades do banco de dados tenham acesso conveniente aos recursos de segurança de dados.  

## Pré-requisitos e limitações
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Um cluster existente do Amazon Redshift. Para obter mais informações , consulte [Criar um cluster do Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-data-launch-cluster.html) na documentação do Amazon Redshift.
+ Acesso a um grupo de trabalho existente do Athena. Para obter mais informações, consulte [Como os grupos de trabalho funcionam](https://docs.aws.amazon.com/athena/latest/ug/user-created-workgroups.html) na documentação do Amazon Athena. 
+ Um bucket de origem do Amazon Simple Storage Service (Amazon S3) existente com as permissões necessárias do AWS Identity and Access Management (IAM) necessárias. Para obter mais informações, consulte [Permissões de bucket para o registro em log do Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/db-auditing.html#db-auditing-bucket-permissions) do [Registro em log do banco de dados e auditoria](https://docs.aws.amazon.com/redshift/latest/mgmt/db-auditing.html) na documentação do Amazon Redshift.

## Arquitetura
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight-architecture"></a>

![\[Data flow diagram showing Amazon Redshift, logs, S3 bucket, Amazon Athena, and Amazon Quick.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/90e69009-001e-4ced-bef0-3c361f93ae87/images/9fde7f01-17ab-4207-8a59-a12daf85a382.png)


 

**Pilha de tecnologia**
+ Athena
+ banco de dados de origem 
+ Amazon S3 
+ QuickSight

## Ferramentas
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight-tools"></a>
+ O [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html): o Athena é um serviço de consultas interativas que facilita a análise de dados no Amazon S3 usando SQL padrão. 
+ [Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) — QuickSight é um serviço de inteligência de negócios (BI) escalável, sem servidor, incorporável e baseado em aprendizado de máquina. 
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html): o Amazon Redshift é um serviço de data warehousing em escala de petabytes e em nível empresarial totalmente gerenciado. 
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html): o Amazon Simple Storage Service (Amazon S3) serve como armazenamento para a internet.

## Épicos
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight-epics"></a>

### Configurar o cluster do Amazon Redshift
<a name="configure-the-amazon-redshift-cluster"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
|  Habilitar o registro em log de auditoria para o cluster do Amazon Redshift. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight.html) | DBA, engenheiro de dados | 
| Ative o registro em log no grupo de parâmetros de cluster do Amazon Redshift. | Você pode habilitar a auditoria de logs de conexão, logs de usuário e logs de atividade de usuário ao mesmo tempo usando o Console de Gerenciamento da AWS, a referência de API do Amazon Redshift ou a AWS Command Line Interface (AWS CLI).  Para auditorar os logs de atividade do usuário, você também deve habilitar o parâmetro `enable_user_activity_logging` do banco de dados. Se você habilitar somente o atributo de registro em log da auditoria, mas não o parâmetro associado, os logs de auditoria do banco de dados registram em log as informações de conexão e de usuários, mas não os logs de atividades do usuário. O parâmetro `enable_user_activity_logging` não está ativado por padrão, mas você pode ativá-lo alterando-o de `false` para `true`.É necessário criar um novo grupo de parâmetros para o cluster com o parâmetro `user_activity_logging` habilitado e anexá-lo ao seu cluster do Amazon Redshift. Para obter mais informações , consulte [Modificar um cluster](https://docs.aws.amazon.com/redshift/latest/mgmt/managing-clusters-console.html#modify-cluster) na documentação do Amazon Redshift.Para obter mais informações sobre essa tarefa, consulte [Grupos de parâmetros do Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html) e [Configuração da auditoria usando o console](https://docs.aws.amazon.com/redshift/latest/mgmt/db-auditing-console.html) na documentação do Amazon Redshift. | DBA, engenheiro de dados | 
| Configure permissões de bucket do S3 para registro em log de cluster do Amazon Redshift. | Quando você ativa o registro em log, o Amazon Redshift coleta informações de registro em log e as carrega para os arquivos de log armazenados no bucket do S3. Você pode criar um bucket do S3 novo ou usar um existente.Certifique-se de que o Amazon Redshift conta com as permissões do IAM necessárias para acessar o bucket do S3. Para obter mais informações, consulte [Permissões de bucket para o registro em log de auditoria do Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/db-auditing.html#db-auditing-bucket-permissions) do [Registro em log de auditoria do banco de dados](https://docs.aws.amazon.com/redshift/latest/mgmt/db-auditing.html) na documentação do Amazon Redshift. | DBA, engenheiro de dados | 

### Criar a tabela e as visualizações do Athena
<a name="create-the-athena-table-and-views"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar a tabela e as visualizações do Athena para consultar os dados do log de auditoria do Amazon Redshift no bucket do S3. | Abra o console do Amazon Athena e use a consulta da linguagem de definição de dados (DDL) do script SQL `AuditLogging.sql` (em anexo) para criar a tabela e as visualizações dos registros de atividades do usuário, logs do usuário e logs de conexão.Para obter mais informações e instruções, consulte o tutorial [Criar tabelas e executar consultas](https://athena-in-action.workshop.aws/30-basics/301-create-tables.html) do Amazon Athena Workshop. | Engenheiro de dados | 

### Configure o monitoramento de registros no QuickSight painel
<a name="set-up-log-monitoring-in-the-quicksight-dashboard"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um QuickSight painel usando o Athena como fonte de dados. | Abra o QuickSight console da Amazon e crie um QuickSight painel seguindo as instruções no tutorial [Visualize QuickSight usando o Athena](https://athena-in-action.workshop.aws/30-basics/307-quicksight.html) do Amazon Athena Workshop. | DBA, engenheiro de dados | 

## Recursos relacionados
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight-resources"></a>
+ [Criar tabelas e executar consultas no Athena](https://athena-in-action.workshop.aws/30-basics/301-create-tables.html).
+ [Visualize QuickSight usando o Athena](https://athena-in-action.workshop.aws/30-basics/307-quicksight.html)

## Anexos
<a name="attachments-90e69009-001e-4ced-bef0-3c361f93ae87"></a>

Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo: [ attachment.zip](samples/p-attach/90e69009-001e-4ced-bef0-3c361f93ae87/attachments/attachment.zip)

# Visualize relatórios de credenciais do IAM para todas as contas da AWS usando o Amazon Quick Sight
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight"></a>

*Parag Nagwekar e Arun Chandapillai, Amazon Web Services*

## Resumo
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight-summary"></a>


| 
| 
| Avsio: os usuários do IAM têm credenciais de longo prazo, o que representa um risco de segurança. Para ajudar a reduzir esse risco, recomendamos que você forneça a esses usuários somente as permissões necessárias para realizar a tarefa e que você os remova quando não forem mais necessários. | 
| --- |

É possível usar os relatórios de credenciais do AWS Identity and Access Management (IAM) para ajudar você a atender aos requisitos de segurança, auditoria e conformidade da organização. Os [relatórios de credenciais](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_getting-report.html) fornecem uma lista de todos os usuários em suas contas da AWS e mostram o status de suas credenciais, como senhas, chaves de acesso e dispositivos com autenticação multifator (MFA). Você pode usar relatórios de credenciais para várias contas da AWS gerenciadas pelo [AWS Organizations](https://docs.aws.amazon.com/whitepapers/latest/organizing-your-aws-environment/core-concepts.html).

Esse padrão inclui etapas e código para ajudar você a criar e compartilhar relatórios de credenciais do IAM para todas as contas da AWS em sua organização usando os painéis do Amazon Quick Sight. Você pode compartilhar os painéis com as partes interessadas em sua organização. Os relatórios podem ajudar sua organização a alcançar os seguintes resultados comerciais específicos:
+ Identificar incidentes de segurança relacionados aos usuários do IAM
+ Acompanhar a migração em tempo real de usuários do IAM para autenticação única (SSO)
+ Rastrear regiões da AWS acessadas por usuários do IAM
+ Manter-se em conformidade
+ Compartilhar informações com outras partes interessadas

## Pré-requisitos e limitações
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ As contas de membros da [organização](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tutorials_basic.html).
+ Um [perfil do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) com permissões para acessar contas em Organizations
+ AWS Command Line Interface (AWS CLI) versão 2, [instalada](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html#getting-started-install-instructions) e [configurada](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ Uma [assinatura](https://docs.aws.amazon.com/quicksight/latest/user/signing-up.html) da [edição Amazon Quick Enterprise](https://docs.aws.amazon.com/quicksight/latest/user/editions.html)

## Arquitetura
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight-architecture"></a>

**Pilha de tecnologia**
+ Amazon Athena
+ Amazon EventBridge
+ Amazon Quick Sight
+ Amazon Simple Storage Service (Amazon S3)
+ AWS Glue
+ AWS Identity and Access Management (IAM)
+ AWS Lambda
+ AWS Organizations

**Arquitetura de destino**

O diagrama a seguir mostra uma arquitetura para configurar um fluxo de trabalho que captura dados de relatórios de credenciais do IAM de várias contas da AWS.

![\[A captura de tela a seguir ilustra o diagrama da arquitetura\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/8724ff28-40f6-4c43-9c65-fbd18bbbfd0f/images/e780916a-4ab7-4fdc-8ecc-c837c7d90d13.png)


1. EventBridge invoca uma função Lambda diariamente.

1. A função do Lambda assume um perfil do IAM em todas as contas da AWS em toda a organização. Em seguida, a função cria o relatório de credenciais do IAM e armazena os dados do relatório em um bucket do S3 centralizado. É necessário habilitar a criptografia e desabilitar o acesso público no bucket do S3.

1. Um crawler do AWS Glue rastreia o bucket do S3 diariamente e atualiza a tabela do Athena adequadamente.

1. O Quick Sight importa e analisa os dados do relatório de credenciais e cria um painel que pode ser visualizado e compartilhado com as partes interessadas.

## Ferramentas
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight-tools"></a>

**Serviços da AWS**
+ O [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) é um serviço de consultas interativas que facilita a análise de dados no Amazon S3 usando SQL padrão.
+  EventBridgeA [Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) é um serviço de ônibus de eventos sem servidor que ajuda você a conectar seus aplicativos com dados em tempo real de várias fontes. Por exemplo, funções do Lambda, endpoints de invocação HTTP usando destinos de API ou barramentos de eventos em outras contas da AWS.
+ O [Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) é um serviço de business intelligence (BI) em escala de nuvem que ajuda você a visualizar, analisar e relatar dados em um único painel. O Quick Sight é um componente essencial do Amazon Quick, fornecendo visualização interativa de dados, análise em memória do SPICE, análise incorporada e compartilhamento de painéis.
+ O [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus recursos da AWS, controlando quem está autenticado e autorizado a usá-los.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda você a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.

**Código**

O código desse padrão está disponível no GitHub [getiamcredsreport-allaccounts-org](https://github.com/aws-samples/getiamcredsreport-allaccounts-org)repositório. Você pode usar o código desse repositório para criar relatórios de credenciais do IAM em todas as contas da AWS em Organizations e armazená-los em um local central.

## Épicos
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight-epics"></a>

### Configurar a infraestrutura
<a name="set-up-the-infrastructure"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure a edição Amazon Quick Enterprise. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight.html) | Administrador da AWS, AWS DevOps, administrador de nuvem, arquiteto de nuvem | 
| Integre o Amazon Quick Sight com o Amazon S3 e o Athena. | Você deve [autorizar](https://docs.aws.amazon.com/quicksight/latest/user/troubleshoot-connect-to-datasources.html) o Quick Sight a usar o Amazon S3 e o Athena antes de implantar a pilha da AWS. CloudFormation  | Administrador da AWS, AWS DevOps, administrador de nuvem, arquiteto de nuvem | 

### Implante a infraestrutura
<a name="deploy-the-infrastructure"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clone o GitHub repositório. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight.html) | Administrador da AWS | 
| Implantar a infraestrutura. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight.html) | Administrador da AWS | 
| Criar uma política de permissão do IAM. | [Crie uma política do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) para cada conta da AWS em sua organização com as seguintes permissões:<pre>{<br />  "Version": "2012-10-17",		 	 	 <br />  "Statement": [<br />    {<br />      "Effect": "Allow",<br />      "Action": [<br />        "iam:GenerateCredentialReport",<br />        "iam:GetCredentialReport"<br />        ],<br />      "Resource": "*"<br />    }<br />  ]<br />}</pre> | AWS DevOps, administrador de nuvem, arquiteto de nuvem, engenheiro de dados | 
| Crie um perfil do IAM com uma política de confiança. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight.html)<pre>{<br />   "Version": "2012-10-17",		 	 	 <br />   "Statement":[<br />      {<br />         "Effect":"Allow",<br />         "Principal":{<br />            "AWS":[<br />               "arn:aws:iam::<MasterAccountID>:role/<LambdaRole>"<br />            ]<br />         },<br />         "Action":"sts:AssumeRole"<br />      }<br />   ]<br />}</pre>Substitua `arn:aws:iam::<MasterAccountID>:role/<LambdaRole>` pelo ARN do perfil do Lambda que você anotou anteriormente.As organizações normalmente usam automação para criar perfis do IAM destinados às contas da AWS. Recomendamos o uso dessa automação, se disponível. Como alternativa, você pode usar o script `CreateRoleforOrg.py` de ** ** do repositório de código. O script exige uma função administrativa existente ou qualquer outro perfil do IAM que tenha permissão para criar uma política e um perfil do IAM em cada conta da AWS. | Administrador de nuvem, arquiteto de nuvem, Administrador da AWS | 
| Configure o Amazon Quick Sight para visualizar os dados. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight.html) | AWS DevOps, administrador de nuvem, arquiteto de nuvem, engenheiro de dados | 

## Mais informações
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight-additional"></a>

**Considerações adicionais**

Considere o seguinte:
+ Depois de CloudFormation implantar a infraestrutura, você pode esperar para que os relatórios sejam criados no Amazon S3 e analisados pelo Athena até que o Lambda e o AWS Glue sejam executados de acordo com seus cronogramas. Como alternativa, você pode executar o Lambda manualmente para obter os relatórios no Amazon S3 e, em seguida, executar o crawler AWS Glue para obter a tabela do Athena criada a partir dos dados.
+ O Quick é uma ferramenta poderosa para analisar e visualizar dados com base nos requisitos da sua empresa. Você pode usar [parâmetros](https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html) no Quick para controlar os dados do widget com base nos campos de dados que você escolher. Além disso, você pode usar uma análise rápida para criar parâmetros (por exemplo, campos Conta, Data e Usuário`partition_0`, como`partition_1`, e `user` respectivamente) do seu conjunto de dados para adicionar controles aos parâmetros de Conta, Data e Usuário.
+ Para criar seus próprios painéis do Quick Sight, consulte [Workshops rápidos](https://catalog.workshops.aws/quicksight/en-US) no site do AWS Workshop Studio.
+ Para ver exemplos de painéis do Quick Sight, consulte o repositório GitHub [getiamcredsreport-allaccounts-org](https://github.com/aws-samples/getiamcredsreport-allaccounts-org)de códigos.

**Resultados de negócios desejados**

Você pode usar este padrão para alcançar os resultados comerciais desejados a seguir:
+ **Identificar incidentes de segurança relacionados aos usuários do IAM**: investigue cada usuário em todas as contas da AWS em sua organização usando um único painel de controle. Você pode acompanhar a tendência das regiões individuais da AWS acessadas mais recentemente por um usuário do IAM e dos serviços que eles usaram.
+ **Acompanhar a migração em tempo real dos usuários do IAM para a autenticação de SSO **: ao usar o SSO, os usuários podem fazer login uma vez com uma única credencial e acessar várias contas e aplicativos da AWS. Se você planeja migrar seus usuários do IAM para o SSO, este padrão pode ajudá-lo a fazer a transição para o SSO e monitorar todo o uso de credenciais de usuário do IAM (como acesso ao Console de Gerenciamento da AWS ou uso de chaves de acesso) em todas as contas da AWS.
+ **Rastrear as regiões da AWS acessadas pelos usuários do IAM**: você pode controlar o acesso de usuário do IAM às regiões para vários fins, como soberania de dados e controle de custos. Você também pode monitorar o uso de regiões por qualquer usuário do IAM.
+ **Manter-se em conformidade**: ao seguir o princípio do privilégio mínimo, você pode conceder somente as permissões específicas do IAM necessárias para realizar uma tarefa específica. Além disso, você pode monitorar o acesso aos serviços da AWS, ao Console de Gerenciamento da AWS e o uso de credenciais de longo prazo.
+ **Compartilhar informações com outras partes interessadas**: você pode compartilhar painéis selecionados com outras partes interessadas, sem conceder a elas acesso a relatórios de credenciais do IAM ou contas da AWS.

# Mais padrões
<a name="analytics-more-patterns-pattern-list"></a>

**Topics**
+ [Autenticação de usuários de aplicações existentes do React ao usar o Amazon Cognito e o AWS Amplify UI](authenticate-react-app-users-cognito-amplify-ui.md)
+ [Extraia automaticamente conteúdo de arquivos PDF usando o Amazon Textract](automatically-extract-content-from-pdf-files-using-amazon-textract.md)
+ [Crie um modelo de previsão de inicialização a frio usando o DeepAR para séries temporais no SageMaker Amazon AI Studio Lab](build-a-cold-start-forecasting-model-by-using-deepar.md)
+ [Crie relatórios detalhados de custo e uso para clusters do Amazon EMR usando o Explorador de Custos da AWS](create-detailed-cost-and-usage-reports-for-amazon-emr-clusters-by-using-aws-cost-explorer.md)
+ [Crie relatórios detalhados de custos e uso para o Amazon RDS e o Amazon Aurora](create-detailed-cost-and-usage-reports-for-amazon-rds-and-amazon-aurora.md)
+ [Crie relatórios detalhados de custo e uso para trabalhos do AWS Glue usando o Explorador de Custos da AWS](create-detailed-cost-and-usage-reports-for-aws-glue-jobs-by-using-aws-cost-explorer.md)
+ [Entregue registros do DynamoDB para o Amazon S3 usando o Kinesis Data Streams e o Firehose com AWS CDK](deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk.md)
+ [Implante um trabalho do AWS Glue com um pipeline de CodePipeline CI/CD da AWS](deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline.md)
+ [Incorpore componentes visuais do Amazon Quick Sight em aplicativos web usando a automação do Amazon Cognito e do IaC](embed-quick-sight-visual-components-into-web-apps-cognito-iac.md)
+ [Estime os custos de armazenamento de uma tabela do Amazon DynamoDB](estimate-storage-costs-for-an-amazon-dynamodb-table.md)
+ [Execução de consultas SQL no Amazon Redshift usando o Terraform](execute-redshift-sql-queries-using-terraform.md)
+ [Extraia e consulte atributos de AWS IoT SiteWise metadados em um data lake](extract-and-query-aws-iot-sitewise-metadata-attributes-in-a-data-lake.md)
+ [Gere insights de dados usando o AWS Mainframe Modernization Amazon Q no Quick Sight](generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.md)
+ [Gere insights de z/OS dados do Db2 usando o AWS Mainframe Modernization Amazon Q no Quick Sight](generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.md)
+ [Conceda às instâncias do SageMaker notebook acesso temporário a um CodeCommit repositório em outra conta da AWS](give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account.md)
+ [Identifique e alerte quando os recursos do Amazon Data Firehose não estiverem criptografados com uma chave AWS KMS](identify-and-alert-when-amazon-data-firehose-resources-are-not-encrypted-with-an-aws-kms-key.md)
+ [Importe a biblioteca psycopg2 para interagir com seu banco AWS Lambda de dados PostgreSQL](import-psycopg2-library-lambda.md)
+ [Ingestão e análise dos logs de segurança da AWS no Microsoft Sentinel](ingest-analyze-aws-security-logs-sentinel.md)
+ [Migre o Amazon RDS para Oracle para o Amazon RDS para PostgreSQL no modo SSL usando o AWS DMS](migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms.md)
+ [Migre um banco de dados Oracle para o Amazon RDS for Oracle usando adaptadores de arquivo simples GoldenGate Oracle](migrate-an-oracle-database-to-amazon-rds-for-oracle-by-using-oracle-goldengate-flat-file-adapters.md)
+ [Migre um banco de dados Oracle para o Amazon Redshift usando o AWS DMS e o AWS SCT](migrate-an-oracle-database-to-amazon-redshift-using-aws-dms-and-aws-sct.md)
+ [Migre dados de um ambiente Hadoop local para o Amazon S3 usando com a AWS para o Amazon S3 DistCp PrivateLink](migrate-data-from-an-on-premises-hadoop-environment-to-amazon-s3-using-distcp-with-aws-privatelink-for-amazon-s3.md)
+ [Migre do Couchbase Server para o Couchbase Capella na AWS](migrate-from-couchbase-server-to-couchbase-capella-on-aws.md)
+ [Migre workloads on-premises da Cloudera para a Cloudera Data Platform na AWS](migrate-on-premises-cloudera-workloads-to-cloudera-data-platform-on-aws.md)
+ [Gerenciamento do failover multi-AZ para clusters do EMR usando o Controlador de Recuperação de Aplicações](multi-az-failover-spark-emr-clusters-arc.md)
+ [Automatize blue/green as implantações dos bancos de dados globais do Amazon Aurora usando os princípios de IaC](p-automate-blue-green-deployments-aurora-global-databases-iac.md)
+ [Provisione AWS Service Catalog produtos com base em AWS CloudFormation modelos usando GitHub Ações](provision-aws-service-catalog-products-using-github-actions.md)
+ [Execute testes de unidade para trabalhos de ETL do Python AWS Glue usando a estrutura pytest](run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework.md)
+ [Configure um painel de monitoramento da Grafana para a AWS ParallelCluster](set-up-a-grafana-monitoring-dashboard-for-aws-parallelcluster.md)
+ [Descarregamento de dados de um cluster do Amazon Redshift entre contas para o Amazon S3](unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.md)
+ [Visualize os resultados AI/ML do modelo usando o Flask e AWS Elastic Beanstalk](visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.md)