

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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

**Topics**
+ [Analyser les données Amazon Redshift dans Microsoft SQL Server Analysis Services](analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services.md)
+ [Analysez et visualisez des données JSON imbriquées avec Amazon Athena et Amazon Quick Sight](analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight.md)
+ [Automatisez l'ingestion de AWS Data Exchange données depuis Amazon S3](automate-data-ingestion-from-aws-data-exchange-into-amazon-s3.md)
+ [Automatisez l'application du chiffrement dans AWS Glue à l'aide d'un CloudFormation modèle AWS](automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template.md)
+ [Créez un pipeline de données pour ingérer, transformer et analyser les données Google Analytics à l'aide du kit de AWS DataOps développement](build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit.md)
+ [Créez un pipeline de traitement vidéo à l'aide d'Amazon Kinesis Video Streams et d'AWS Fargate](build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate.md)
+ [Créez un pipeline de services ETL pour charger les données de manière incrémentielle d'Amazon S3 vers Amazon Redshift à l'aide d'AWS Glue](build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue.md)
+ [Créez un maillage de données d'entreprise avec Amazon DataZone AWS CDK, et AWS CloudFormation](build-enterprise-data-mesh-amazon-data-zone.md)
+ [Calculez la valeur à risque (VaR) à l'aide des services AWS](calculate-value-at-risk-var-by-using-aws-services.md)
+ [Configurer l'accès entre comptes à un catalogue de données AWS Glue partagé à l'aide d'Amazon Athena](configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena.md)
+ [Convertir la fonctionnalité temporelle Teradata NORMALIZE en Amazon Redshift SQL](convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql.md)
+ [Convertir la fonctionnalité Teradata RESET WHEN en Amazon Redshift SQL](convert-the-teradata-reset-when-feature-to-amazon-redshift-sql.md)
+ [Déployez et gérez un lac de données sans serveur sur le cloud AWS en utilisant l'infrastructure sous forme de code](deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code.md)
+ [Appliquer le balisage des clusters Amazon EMR au lancement](enforce-tagging-of-amazon-emr-clusters-at-launch.md)
+ [Assurez-vous que la connexion Amazon EMR à Amazon S3 est activée au lancement](ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch.md)
+ [Génération de données de test à l'aide d'une tâche AWS Glue et de Python](generate-test-data-using-an-aws-glue-job-and-python.md)
+ [Ingérez de manière rentable des données IoT directement dans Amazon S3 à l'aide d'AWS IoT Greengrass](cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.md)
+ [Lancer une tâche Spark dans un cluster EMR transitoire à l'aide d'une fonction Lambda](launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function.md)
+ [Migrez les charges de travail Apache Cassandra vers Amazon Keyspaces à l'aide d'AWS Glue](migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.md)
+ [Migrer Oracle Business Intelligence 12c vers le cloud AWS à partir de serveurs sur site](migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.md)
+ [Migrer une pile ELK vers Elastic Cloud sur AWS](migrate-an-elk-stack-to-elastic-cloud-on-aws.md)
+ [Migrez les données vers le AWS Cloud en utilisant Starburst](migrate-data-to-the-aws-cloud-by-using-starburst.md)
+ [Optimisation de l'ingestion ETL de la taille du fichier d'entrée sur AWS](optimize-the-etl-ingestion-of-input-file-size-on-aws.md)
+ [Orchestrez un pipeline ETL avec validation, transformation et partitionnement à l'aide de AWS Step Functions](orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.md)
+ [Effectuez des analyses avancées à l'aide d'Amazon Redshift ML](perform-advanced-analytics-using-amazon-redshift-ml.md)
+ [Interrogez les tables Amazon DynamoDB avec SQL à l'aide d'Amazon Athena](query-amazon-dynamodb-tables-sql-amazon-athena.md)
+ [Accédez aux tables Amazon DynamoDB, interrogez-les et joignez-les à l'aide d'Athena](access-query-and-join-amazon-dynamodb-tables-using-athena.md)
+ [Configurer un tri spécifique à la langue pour les résultats des requêtes Amazon Redshift à l'aide d'un UDF Python scalaire](set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf.md)
+ [Abonnement d'une fonction Lambda aux notifications d'événements provenant de compartiments S3 dans différentes régions AWS](subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions.md)
+ [Trois types de tâches ETL AWS Glue pour convertir des données vers Apache Parquet](three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet.md)
+ [Visualisez les journaux d'audit d'Amazon Redshift à l'aide d'Amazon Athena et Amazon QuickSight](visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight.md)
+ [Visualisez les rapports d'identification IAM pour tous les comptes AWS à l'aide d'Amazon Quick Sight](visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight.md)
+ [Plus de modèles](analytics-more-patterns-pattern-list.md)

# Analyser les données Amazon Redshift dans Microsoft SQL Server Analysis Services
<a name="analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services"></a>

*Sunil Vora, Amazon Web Services*

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

Ce modèle décrit comment connecter et analyser les données Amazon Redshift dans Microsoft SQL Server Analysis Services, en utilisant le fournisseur Intellisoft OLE DB ou le fournisseur CData ADO.NET pour accéder à la base de données.

Amazon Redshift est un service d’entrepôt des données entièrement géré dans le cloud. SQL Server Analysis Services est un outil de traitement analytique en ligne (OLAP) que vous pouvez utiliser pour analyser les données provenant de data marts et d'entrepôts de données tels qu'Amazon Redshift. Vous pouvez utiliser SQL Server Analysis Services pour créer des cubes OLAP à partir de vos données pour une analyse rapide et avancée des données.  

## Conditions préalables et limitations
<a name="analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services-prereqs"></a>

**Hypothèses**
+ Ce modèle décrit comment configurer SQL Server Analysis Services et le fournisseur Intellisoft OLE DB ou le fournisseur CData ADO.NET pour Amazon Redshift sur une instance Amazon Elastic Compute Cloud (Amazon). EC2 Vous pouvez également installer les deux sur un hôte du centre de données de votre entreprise.

**Conditions préalables**
+ Un compte AWS actif
+ Un cluster Amazon Redshift avec des informations d'identification

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

**Pile technologique source**
+ Un cluster Amazon Redshift

**Pile technologique cible**
+ Services d'analyse Microsoft SQL Server

**Architecture source et cible**

![\[Analyse des données Amazon Redshift dans Microsoft SQL Server Analysis Services\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/e444fec0-e00f-4cc6-acc6-4ffc61b654a0/images/6f29dab5-1ea7-452f-9b07-d1d23ae469a2.png)


## Outils
<a name="analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services-tools"></a>
+ [Microsoft Visual Studio 2019 (édition communautaire)](https://visualstudio.microsoft.com/vs/)
+ Fournisseur [Intellisoft OLE DB pour Amazon Redshift (version d'essai) [ CData ou fournisseur ADO.NET pour Amazon Redshift](https://www.cdata.com/kb/tech/redshift-ado-ssas.rst) (version](https://www.pgoledb.com/index.php?option=com_filecabinet&view=files&id=1&Itemid=68) d'essai)

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

### Analyser les tables
<a name="analyze-tables"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Analysez les tables et les données à importer. | Identifiez les tables Amazon Redshift à importer et leurs tailles. | DBA | 

### Configuration de l' EC2 instance et installation des outils
<a name="set-up-ec2-instance-and-install-tools"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez une EC2 instance. | Dans votre compte AWS, créez une EC2 instance dans un sous-réseau privé ou public. | Administrateur de systèmes | 
| Installez des outils pour accéder à la base de données. | Téléchargez et installez le fournisseur [Intellisoft OLE DB pour Amazon Redshift ([CData ou le fournisseur ADO.NET pour Amazon](https://www.cdata.com/kb/tech/redshift-ado-ssas.rst)](https://www.pgoledb.com/index.php?option=com_filecabinet&view=files&id=1&Itemid=68) Redshift).  | Administrateur de systèmes | 
| Installez Visual Studio. | Téléchargez et installez [Visual Studio 2019 (Community Edition)](https://visualstudio.microsoft.com/vs/).  | Administrateur de systèmes | 
| Installez les extensions. | Installez l'extension **Microsoft Analysis Services Projects** dans Visual Studio. | Administrateur de systèmes | 
| Créez un projet. | Créez un nouveau projet de modèle tabulaire dans Visual Studio pour stocker vos données Amazon Redshift. Dans Visual Studio, choisissez l'option **Projet tabulaire Analysis Services** lors de la création de votre projet. | DBA | 

### Création d'une source de données et importation de tables
<a name="create-data-source-and-import-tables"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une source de données Amazon Redshift. | Créez une source de données Amazon Redshift à l'aide du fournisseur Intellisoft OLE DB pour Amazon Redshift (ou du CData fournisseur ADO.NET pour Amazon Redshift) et de vos informations d'identification Amazon Redshift. | Amazon Redshift, administrateur de bases de données | 
| Importez des tables. | Sélectionnez et importez des tables et des vues depuis Amazon Redshift dans votre projet SQL Server Analysis Services. | Amazon Redshift, administrateur de bases de données | 

### Nettoyage après la migration
<a name="clean-up-after-migration"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez l' EC2 instance. | Supprimez l' EC2 instance que vous avez lancée précédemment. | Administrateur de systèmes | 

## Ressources connexes
<a name="analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services-resources"></a>
+ [Amazon Redshift (documentation](https://docs.aws.amazon.com/redshift/) AWS)
+ [Installation de SQL Server Analysis Services](https://docs.microsoft.com/en-us/analysis-services/instances/install-windows/install-analysis-services?view=asallproducts-allversions) (documentation Microsoft)
+ [Concepteur de modèles tabulaires](https://docs.microsoft.com/en-us/analysis-services/tabular-models/tabular-model-designer-ssas?view=asallproducts-allversions) (documentation Microsoft)
+ [Présentation des cubes OLAP pour les analyses avancées](https://docs.microsoft.com/en-us/system-center/scsm/olap-cubes-overview?view=sc-sm-2019) (documentation Microsoft)
+ [Microsoft Visual Studio 2019 (édition communautaire)](https://visualstudio.microsoft.com/vs/)
+ [Fournisseur Intellisoft OLE DB pour Amazon Redshift (version d'essai)](https://www.pgoledb.com/index.php?option=com_filecabinet&view=files&id=1&Itemid=68) 
+ [CData Fournisseur ADO.NET pour Amazon Redshift (version d'essai)](https://www.cdata.com/kb/tech/redshift-ado-ssas.rst)

# Analysez et visualisez des données JSON imbriquées avec Amazon Athena et Amazon Quick Sight
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight"></a>

*Anoop Singh, Amazon Web Services*

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

Ce modèle explique comment traduire une structure de données imbriquée au format JSON en vue tabulaire à l'aide d'Amazon Athena, puis comment visualiser les données dans Amazon Quick Sight.

Vous pouvez utiliser des données au format JSON pour les flux de données alimentés par API provenant de systèmes d'exploitation afin de créer des produits de données. Ces données peuvent également vous aider à mieux comprendre vos clients et leurs interactions avec vos produits, afin que vous puissiez personnaliser l'expérience utilisateur et prévoir les résultats.

## Conditions préalables et limitations
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS
+ Un fichier JSON qui représente une structure de données imbriquée (ce modèle fournit un exemple de fichier)

**Limites :**
+ Les fonctionnalités JSON s'intègrent bien aux fonctions orientées SQL existantes dans Athena. Cependant, ils ne sont pas compatibles avec le langage ANSI SQL et le fichier JSON est censé contenir chaque enregistrement sur une ligne distincte. Vous devrez peut-être utiliser la `ignore.malformed.json` propriété dans Athena pour indiquer si les enregistrements JSON mal formés doivent être transformés en caractères nuls ou générer des erreurs. Pour plus d'informations, consultez la section [Meilleures pratiques pour lire les données JSON](https://docs.aws.amazon.com/athena/latest/ug/parsing-JSON.html) dans la documentation Athena.
+ Ce modèle ne prend en compte que de simples et petites quantités de données au format JSON. Si vous souhaitez utiliser ces concepts à grande échelle, envisagez d'appliquer un partitionnement des données et de consolider vos données dans des fichiers plus volumineux.

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

Le schéma suivant montre l'architecture et le flux de travail de ce modèle. Les structures de données imbriquées sont stockées dans Amazon Simple Storage Service (Amazon S3) au format JSON. Dans Athena, les données JSON sont mappées à une structure de données Athena. Vous créez ensuite une vue pour analyser les données et visualisez la structure des données dans Quick Sight.

![\[Analyse et visualisation de données JSON imbriquées sur AWS.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/e9ad39a1-e0a4-4429-bdc0-594b68707761/images/474e8747-626f-468c-9c27-c007af79bf2d.png)


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

**Services AWS**
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données. Ce modèle utilise Amazon S3 pour stocker le fichier JSON.
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) est un service de requête interactif qui vous permet d'analyser les données directement dans Amazon S3 à l'aide du SQL standard. Ce modèle utilise Athena pour interroger et transformer les données JSON. En effectuant quelques actions AWS Management Console, vous pouvez pointer Athena vers vos données dans Amazon S3 et utiliser le SQL standard pour exécuter des requêtes ponctuelles. Athena fonctionne sans serveur, il n'y a donc aucune infrastructure à configurer ou à gérer, et vous ne payez que pour les requêtes que vous exécutez. Athena évolue automatiquement et exécute des requêtes en parallèle, de sorte que les résultats sont rapides, même avec des ensembles de données volumineux et des requêtes complexes.     
+ [Amazon Quick Sight](https://docs.aws.amazon.com/quicksuite/latest/userguide/quick-bi.html) est un service de business intelligence (BI) à l'échelle du cloud qui vous permet de visualiser, d'analyser et de rapporter vos données sur un tableau de bord unique. Quick Sight vous permet de créer et de publier facilement des tableaux de bord interactifs qui incluent des informations sur le machine learning (ML). Vous pouvez accéder à ces tableaux de bord depuis n'importe quel appareil et les intégrer à vos applications, portails et sites Web.

**Exemple de code**

Le fichier JSON suivant fournit une structure de données imbriquée que vous pouvez utiliser dans ce modèle.

```
{
  "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
    }
  ]
}
```

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

### Configuration d'un compartiment S3
<a name="set-up-an-s3-bucket"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un compartiment S3. | Pour créer un compartiment destiné à stocker le fichier JSON, connectez-vous à la [console Amazon S3 AWS Management Console, ouvrez-la](https://console.aws.amazon.com/s3/), puis choisissez **Create bucket**. Pour plus d'informations, consultez [la section Création d'un compartiment](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) dans la documentation Amazon S3.  | Administrateur de systèmes | 
| Ajoutez les données JSON imbriquées. | Téléchargez votre fichier JSON dans le compartiment S3. Pour un exemple de fichier JSON, consultez la section précédente. Pour obtenir des instructions, consultez la section [Chargement d'objets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) dans la documentation Amazon S3. | Administrateur de systèmes | 

### Analyser les données dans Athena
<a name="analyze-data-in-ate"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une table pour mapper les données JSON. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight.html)Pour plus d'informations sur la création de tables, consultez la documentation d'[Athena](https://docs.aws.amazon.com/athena/latest/ug/creating-tables.html). | Developer | 
| Créez une vue pour l'analyse des données. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight.html)Pour plus d'informations sur la création de vues, consultez la documentation d'[Athena](https://docs.aws.amazon.com/athena/latest/ug/create-view.html). | Developer | 
| Analysez et validez les données. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight.html) | Developer | 

### Visualisez les données dans Quick Sight
<a name="visualize-data-in-qsight"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez Athena comme source de données dans Quick Sight. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight.html) | Administrateur de systèmes | 
| Visualisez les données dans Quick Sight. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight.html) | Analyste des données | 

## Ressources connexes
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-resources"></a>
+ [Documentation Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/getting-started.html)
+ [Tutoriels Amazon Quick Sight](https://docs.aws.amazon.com/quicksuite/latest/userguide/example-analysis.html)
+ [Utilisation du JSON imbriqué](https://aws.amazon.com/blogs/big-data/create-tables-in-amazon-athena-from-nested-json-and-mappings-using-jsonserde/) (article de blog)

# Automatisez l'ingestion de AWS Data Exchange données depuis Amazon S3
<a name="automate-data-ingestion-from-aws-data-exchange-into-amazon-s3"></a>

*Adnan Alvee et Manikanta Gona, Amazon Web Services*

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

Ce modèle fournit un CloudFormation modèle qui vous permet d'ingérer automatiquement des données depuis AWS Data Exchange votre lac de données dans Amazon Simple Storage Service (Amazon S3). 

AWS Data Exchange est un service qui facilite l'échange sécurisé d'ensembles de données basés sur des fichiers dans le cloud AWS. AWS Data Exchange les ensembles de données sont basés sur des abonnements. En tant qu'abonné, vous pouvez également accéder aux révisions des ensembles de données lorsque les fournisseurs publient de nouvelles données. 

Le CloudFormation modèle crée un événement et une AWS Lambda fonction dans Amazon CloudWatch Events. L'événement surveille toute mise à jour de l'ensemble de données auquel vous êtes abonné. En cas de mise à jour, CloudWatch lance une fonction Lambda qui copie les données dans le compartiment S3 que vous spécifiez. Lorsque les données ont été copiées avec succès, Lambda vous envoie une notification Amazon Simple Notification Service (Amazon SNS).

## Conditions préalables et limitations
<a name="automate-data-ingestion-from-aws-data-exchange-into-amazon-s3-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS
+ Abonnement à un ensemble de données dans AWS Data Exchange

**Limites**
+ Le CloudFormation modèle doit être déployé séparément pour chaque ensemble de données souscrit dans AWS Data Exchange.

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

**Pile technologique cible**
+ AWS Lambda
+ Amazon S3
+ AWS Data Exchange
+ Amazon CloudWatch
+ Amazon SNS

**Architecture cible**

![\[CloudWatch lance une fonction Lambda pour copier les données dans le compartiment S3 et envoyer une notification Amazon SNS.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/059816dc-5a71-4942-9c7f-ac977072eebc/images/ec021620-47c1-4fb5-95a9-3b8985accc56.png)


**Automatisation et mise à l'échelle**

Vous pouvez utiliser le CloudFormation modèle plusieurs fois pour les ensembles de données que vous souhaitez ingérer dans le lac de données.

## Outils
<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)permet AWS aux clients d'échanger facilement en toute sécurité des ensembles de données basés sur des fichiers dans le AWS Cloud. En tant qu'abonné, vous pouvez trouver et vous abonner à des centaines de produits proposés par des fournisseurs de données qualifiés. Vous pouvez ensuite télécharger rapidement l'ensemble de données ou le copier sur Amazon S3 pour l'utiliser dans divers services d' AWS analyse et d'apprentissage automatique. Toute personne possédant un Compte AWS peut être AWS Data Exchange abonnée.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) vous permet d'exécuter du code sans avoir à allouer ou gérer des serveurs. Lambda exécute le code uniquement lorsque cela est nécessaire et se met à l’échelle automatiquement, qu’il s’agisse de quelques requêtes par jour ou de milliers de requêtes par seconde. Vous ne payez que pour le temps de calcul que vous consommez ; aucun frais n'est facturé lorsque votre code n'est pas exécuté. Avec Lambda, vous pouvez exécuter du code pour pratiquement n'importe quel type d'application ou de service principal sans aucune administration. Lambda exécute votre code sur une infrastructure informatique à haute disponibilité et gère toutes les ressources de calcul, y compris la maintenance des serveurs et des systèmes d'exploitation, le provisionnement des capacités et le dimensionnement automatique, la surveillance du code et la journalisation.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html) fournit du stockage pour Internet. Vous pouvez utiliser Amazon S3 pour stocker et récupérer n'importe quelle quantité de données, n'importe quand et depuis n'importe quel emplacement sur le Web.
+ [Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html) fournit un flux en temps quasi réel d'événements système décrivant les modifications apportées aux AWS ressources. À l'aide de règles simples que vous pouvez configurer rapidement, vous pouvez associer des événements et les acheminer vers une ou plusieurs fonctions ou flux cibles. CloudWatch Events prend conscience des changements opérationnels au fur et à mesure qu'ils se produisent. Il répond à ces changements opérationnels et prend les mesures correctives nécessaires, en envoyant des messages pour répondre à l'environnement, en activant des fonctions, en apportant des modifications et en capturant des informations d'état. Vous pouvez également utiliser les CloudWatch événements pour planifier des actions automatisées qui se déclenchent automatiquement à certains moments à l'aide d'**expressions cron** ou **rate**.
+ [Amazon Simple Notification Service (Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)) permet aux applications, aux utilisateurs finaux et aux appareils d'envoyer et de recevoir instantanément des notifications depuis le cloud. Amazon SNS propose des rubriques (canaux de communication) pour la messagerie push à haut débit. many-to-many À l'aide des rubriques Amazon SNS, les éditeurs peuvent distribuer des messages à un grand nombre d'abonnés pour un traitement parallèle, notamment les files d'attente Amazon Simple Queue Service (Amazon SQS), les fonctions Lambda et les webhooks. HTTP/S Vous pouvez également utiliser Amazon SNS pour envoyer des notifications aux utilisateurs finaux par push mobile, SMS et e-mail.

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

### S'abonner à un ensemble de données
<a name="subscribe-to-a-data-set"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Abonnez-vous à un ensemble de données. | Dans la AWS Data Exchange console, abonnez-vous à un ensemble de données. Pour obtenir des instructions, consultez la section [Abonnement aux produits de données AWS Data Exchange](https://docs.aws.amazon.com/data-exchange/latest/userguide/subscribe-to-data-sets.html) dans la AWS documentation. | AWS général | 
| Notez les attributs de l'ensemble de données. | Notez l'ID Région AWS, l'ID et l'ID de révision de l'ensemble de données. Vous en aurez besoin pour le CloudFormation modèle à l'étape suivante. | AWS général | 

### Déployer le CloudFormation modèle
<a name="deploy-the-cfn-template"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un compartiment et un dossier S3. | Si vous possédez déjà un lac de données dans Amazon S3, créez un dossier pour stocker les données à partir AWS Data Exchange desquelles vous souhaitez les ingérer. Si vous déployez le modèle à des fins de test, créez un nouveau compartiment S3 et notez le nom du compartiment et le préfixe de dossier pour l'étape suivante. | AWS général | 
| Déployez le CloudFormation modèle. | Déployez le CloudFormation modèle fourni en pièce jointe à ce modèle. Pour obtenir des instructions, consultez la [CloudFormation documentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html).**Configurez les paramètres suivants pour qu'ils correspondent à vos paramètres Compte AWS, à ceux de votre ensemble de données et à ceux du compartiment S3 : ensemble de **données Région AWS, ID** **du jeu de données, ID de révision**, **nom du compartiment S3** (par exemple`DOC-EXAMPLE-BUCKET`), **préfixe de dossier** (par exemple,`myfolder/`) et **e-mail pour les notifications SNS**.** Vous pouvez attribuer n'importe quel **nom au paramètre Nom du jeu** de données. Lorsque vous déployez le modèle, il exécute une fonction Lambda pour ingérer automatiquement le premier ensemble de données disponible dans le jeu de données. L'ingestion ultérieure a ensuite lieu automatiquement, à mesure que de nouvelles données arrivent dans l'ensemble de données. | AWS général | 

## Ressources connexes
<a name="automate-data-ingestion-from-aws-data-exchange-into-amazon-s3-resources"></a>
+ [Abonnement à des produits de données sur AWS Data Exchange](https://docs.aws.amazon.com/data-exchange/latest/userguide/subscribe-to-data-sets.html) (AWS Data Exchange documentation)

## Pièces jointes
<a name="attachments-059816dc-5a71-4942-9c7f-ac977072eebc"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/059816dc-5a71-4942-9c7f-ac977072eebc/attachments/attachment.zip)

# Automatisez l'application du chiffrement dans AWS Glue à l'aide d'un CloudFormation modèle AWS
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template"></a>

*Diogo Guedes, Amazon Web Services*

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

Ce modèle explique comment configurer et automatiser l'application du chiffrement dans AWS Glue à l'aide d'un CloudFormation modèle AWS. Le modèle crée toutes les configurations et ressources requises pour appliquer le chiffrement. Ces ressources incluent une configuration initiale, un contrôle préventif créé par une EventBridge règle Amazon et une fonction AWS Lambda.

## Conditions préalables et limitations
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ Autorisations pour déployer le CloudFormation modèle et ses ressources

**Limites**

Ce contrôle de sécurité est régional. Vous devez déployer le contrôle de sécurité dans chaque région AWS où vous souhaitez configurer l'application du chiffrement dans AWS Glue.

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

**Pile technologique cible**
+ Amazon CloudWatch Logs (depuis AWS Lambda)
+  EventBridge Règle Amazon
+  CloudFormation pile AWS
+ AWS CloudTrail
+ Rôle et politique gérés par AWS Identity and Access Management (IAM)
+ AWS Key Management Service (AWS KMS)
+ Alias AWS KMS
+ Fonction AWS Lambda
+ AWS Systems Manager Parameter Store

**Architecture cible**

Le schéma suivant montre comment automatiser l'application du chiffrement dans AWS Glue.

![\[Le schéma montre comment automatiser l'application du chiffrement dans AWS Glue à l'aide d'un CloudFormation modèle.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/d50d0659-5592-44d0-8fcb-7a2983712640/images/272a7fb2-ecbc-41f7-a556-d555e4e39a59.png)


Le schéma suivant illustre le flux de travail suivant :

1. Un [CloudFormation modèle](https://github.com/aws-samples/aws-custom-guardrail-event-driven/blob/main/CloudFormation/aws-custom-guardrail-event-driven.yaml) crée toutes les ressources, y compris la configuration initiale et le contrôle de détection pour l'application du chiffrement dans AWS Glue.

1. Une EventBridge règle détecte un changement d'état dans la configuration de chiffrement.

1. Une fonction Lambda est invoquée à des fins d'évaluation et de journalisation via CloudWatch Logs. En cas de détection de non-conformité, le magasin de paramètres est restauré avec un Amazon Resource Name (ARN) pour une clé AWS KMS. L'état de conformité du service est rétabli lorsque le chiffrement est activé.

**Automatisation et mise à l'échelle**

Si vous utilisez [AWS Organizations](https://aws.amazon.com/organizations/), vous pouvez utiliser [AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) pour déployer ce modèle sur plusieurs comptes où vous souhaitez activer l'application du chiffrement dans AWS Glue.

## Outils
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template-tools"></a>
+ [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) vous CloudWatch aide à surveiller les indicateurs de vos ressources AWS et des applications que vous exécutez sur AWS en temps réel.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) est un service de bus d'événements sans serveur qui vous permet de connecter vos applications à des données en temps réel provenant de diverses sources. Par exemple, les fonctions Lambda, les points de terminaison d'appel HTTP utilisant des destinations d'API ou les bus d'événements dans d'autres comptes AWS.
+ [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) vous CloudFormation aide à configurer les ressources AWS, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie sur l'ensemble des comptes et des régions AWS.
+ [AWS](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) vous CloudTrail aide à activer l'audit opérationnel et des risques, la gouvernance et la conformité de votre compte AWS.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) est un service d'extraction, de transformation et de chargement (ETL) entièrement géré. Il vous aide à classer, nettoyer, enrichir et déplacer les données de manière fiable entre les magasins de données et les flux de données.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) vous aide à créer et à contrôler des clés cryptographiques afin de protéger vos données.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous permet d'exécuter du code sans avoir à provisionner ou à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) vous aide à gérer vos applications et votre infrastructure exécutées dans le cloud AWS. Il simplifie la gestion des applications et des ressources, réduit le délai de détection et de résolution des problèmes opérationnels et vous aide à gérer vos ressources AWS en toute sécurité à grande échelle.

**Code**

Le code de ce modèle est disponible dans le référentiel GitHub [aws-custom-guardrail-event-driven](https://github.com/aws-samples/aws-custom-guardrail-event-driven/blob/main/CloudFormation/aws-custom-guardrail-event-driven.yaml).

## Bonnes pratiques
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template-best-practices"></a>

AWS Glue prend en charge le chiffrement des données au repos pour créer des [tâches dans AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/author-job-glue.html) et [développer des scripts à l'aide de points de terminaison de développement](https://docs.aws.amazon.com/glue/latest/dg/dev-endpoint.html).

Tenez compte des bonnes pratiques suivantes :
+ Configurez les tâches ETL et les points de terminaison de développement pour utiliser les clés AWS KMS afin d'écrire des données chiffrées au repos.
+ Chiffrez les métadonnées stockées dans le [catalogue de données AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/components-overview.html#data-catalog-intro) à l'aide de clés que vous gérez via AWS KMS.
+ Utilisez les clés AWS KMS pour chiffrer les signets de tâches et les journaux générés par les robots d'[exploration et les](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html) tâches ETL.

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

### Lancez le CloudFormation modèle
<a name="launch-the-cloudformation-template"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez le CloudFormation modèle. | Téléchargez le `aws-custom-guardrail-event-driven.yaml` modèle depuis le GitHub [référentiel](https://github.com/aws-samples/aws-custom-guardrail-event-driven/blob/main/CloudFormation/aws-custom-guardrail-event-driven.yaml), puis [déployez-le](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/deploy/index.html). L'`CREATE_COMPLETE`état indique que votre modèle a été déployé avec succès.Le modèle ne nécessite aucun paramètre d'entrée. | Architecte du cloud | 

### Vérifiez les paramètres de chiffrement dans AWS Glue
<a name="verify-the-encryption-settings-in-aws-glue"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Vérifiez les configurations clés d'AWS KMS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template.html) | Architecte du cloud | 

### Testez l'application du chiffrement
<a name="test-the-encryption-enforcement"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Identifiez le paramètre de chiffrement dans CloudFormation. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template.html) | Architecte du cloud | 
| Faites passer l'infrastructure provisionnée à un état non conforme. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template.html)Le garde-corps détecte l'état non conforme dans AWS Glue une fois que vous avez décoché les cases à cocher, puis applique la conformité en corrigeant automatiquement la mauvaise configuration du chiffrement. Par conséquent, les cases à cocher de chiffrement doivent à nouveau être cochées après avoir actualisé la page. | Architecte du cloud | 

## Ressources connexes
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template-resources"></a>
+ [Création d'une pile sur la CloudFormation console AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) ( CloudFormation documentation AWS)
+ [Création d'une règle d' CloudWatch événements qui se déclenche lors d'un appel d'API AWS à l'aide d'AWS CloudTrail](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/Create-CloudWatch-Events-CloudTrail-Rule.html) ( CloudWatch documentation Amazon)
+ [Configuration du chiffrement dans AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/set-up-encryption.html) (documentation AWS Glue)

# Créez un pipeline de données pour ingérer, transformer et analyser les données Google Analytics à l'aide du kit de AWS DataOps développement
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit"></a>

*Anton Kukushkin et Rudy Puig, Amazon Web Services*

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

Ce modèle décrit comment créer un pipeline de données pour ingérer, transformer et analyser les données de Google Analytics à l'aide du kit de AWS DataOps développement (AWS DDK) et d'autres outils. Services AWS Le AWS DDK est un framework de développement open source qui vous aide à créer des flux de travail de données et une architecture de données moderne. AWS L'un des principaux objectifs du AWS DDK est de vous faire économiser le temps et les efforts généralement consacrés aux tâches de pipeline de données exigeantes en main-d'œuvre, telles que l'orchestration de pipelines, la création d'infrastructures et la création de l' DevOps infrastructure sous-jacente. Vous pouvez déléguer ces tâches fastidieuses à AWS DDK afin de pouvoir vous concentrer sur l'écriture de code et d'autres activités à forte valeur ajoutée.

## Conditions préalables et limitations
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS
+ Un AppFlow connecteur Amazon pour Google Analytics, [configuré](https://docs.aws.amazon.com/appflow/latest/userguide/google-analytics.html)
+ [Python](https://www.python.org/downloads/) et [pip](https://pip.pypa.io/en/stable/cli/pip_download/) (le gestionnaire de paquets de Python)
+ Git, installé et [configuré](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup)
+ AWS Command Line Interface (AWS CLI), [installé](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) et [configuré](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)
+ AWS Cloud Development Kit (AWS CDK), [installé](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_install)

**Versions du produit**
+ Python 3.7 ou version ultérieure
+ pip 9.0.3 ou version ultérieure

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

**Pile technologique**
+ Amazon AppFlow
+ Amazon Athena
+ Amazon CloudWatch
+ Amazon EventBridge
+ Amazon Simple Storage Service (Amazon S3)
+ Amazon Simple Queue Service (Amazon SQS)
+ AWS DataOps Kit de développement (AWS DDK)
+ AWS Lambda

**Architecture cible**

Le schéma suivant montre le processus piloté par les événements qui ingère, transforme et analyse les données de Google Analytics.

![\[Ingestion, transformation et analyse des données Google Analytics avec les services AWS.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/edf40222-2867-4d4a-9153-ab29785b6662/images/8c38b472-153b-4497-982c-8efb97d2f7a5.png)


Le schéma suivant illustre le flux de travail suivant :

1. Une règle relative aux événements CloudWatch planifiés d'Amazon invoque Amazon AppFlow.

1. Amazon AppFlow ingère les données de Google Analytics dans un compartiment S3.

1. Une fois les données ingérées par le compartiment S3, les notifications d'événements EventBridge sont générées, capturées par une règle CloudWatch Events, puis placées dans une file d'attente Amazon SQS.

1. Une fonction Lambda consomme les événements de la file d'attente Amazon SQS, lit les objets S3 respectifs, transforme les objets au format Apache Parquet, écrit les objets transformés dans le compartiment S3, puis crée ou met à jour AWS Glue Data Catalog la définition de la table.

1. Une requête Athena s'exécute sur la table.

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

**AWS outils**
+ [Amazon AppFlow](https://docs.aws.amazon.com/appflow/latest/userguide/what-is-appflow.html) est un service d'intégration entièrement géré qui vous permet d'échanger des données en toute sécurité entre des applications SaaS (Software as a Service).
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) est un service de requête interactif qui vous permet d'analyser les données directement dans Amazon S3 à l'aide du SQL standard.
+ [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) vous CloudWatch aide à surveiller les indicateurs de vos AWS ressources et des applications que vous utilisez AWS en temps réel.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) est un service de bus d'événements sans serveur qui vous permet de connecter vos applications à des données en temps réel provenant de diverses sources. Par exemple, AWS Lambda des fonctions, des points de terminaison d'appel HTTP utilisant des destinations d'API ou des bus d'événements dans d'autres. Comptes AWS
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.
+ [Amazon Simple Queue Service (Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html)) fournit une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de dissocier les systèmes et composants logiciels distribués.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)est un framework permettant de définir l'infrastructure cloud dans le code et de la provisionner via CloudFormation ce dernier.
+ [AWS DataOps Le kit de développement (AWS DDK)](https://github.com/awslabs/aws-ddk) est un framework de développement open source qui vous aide à créer des flux de travail de données et une architecture de données moderne. AWS

**Code**

Le code de ce modèle est disponible dans le [kit de GitHub AWS DataOps développement (AWS DDK)](https://github.com/awslabs/aws-ddk) et dans les [référentiels d'analyse des données Google Analytics avec Amazon AppFlow, Amazon Athena AWS DataOps et Development](https://github.com/aws-samples/aws-ddk-examples/tree/main/google-analytics-data-using-appflow/python) Kit.

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

### Préparez l'environnement
<a name="prepare-the-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Clonez le code source. | Pour cloner le code source, exécutez la commande suivante :<pre>git clone https://github.com/aws-samples/aws-ddk-examples.git</pre> | DevOps ingénieur | 
| Créez un environnement virtuel. | Accédez au répertoire du code source, puis exécutez la commande suivante pour créer un environnement virtuel :<pre>cd google-analytics-data-using-appflow/python && python3 -m venv .venv</pre> | DevOps ingénieur | 
| Installez les dépendances. | Pour activer l'environnement virtuel et installer les dépendances, exécutez la commande suivante :<pre>source .venv/bin/activate && pip install -r requirements.txt</pre> | DevOps ingénieur | 

### Déployez l'application qui utilise votre pipeline de données
<a name="deploy-the-application-that-uses-your-data-pipeline"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Démarrez l'environnement. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit.html) | DevOps ingénieur | 
| Déployez les données. | Pour déployer le pipeline de données, exécutez la `cdk deploy --profile [AWS_PROFILE]` commande. | DevOps ingénieur | 

### Test du déploiement
<a name="test-the-deployment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Validez l'état de la pile. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit.html) | DevOps ingénieur | 

## Résolution des problèmes
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Le déploiement échoue lors de la création d'une `AWS::AppFlow::Flow` ressource et le message d'erreur suivant s'affiche : `Connector Profile with name ga-connection does not exist` | Confirmez que vous avez créé un AppFlow connecteur Amazon pour Google Analytics et que vous l'avez nommé`ga-connection`.Pour obtenir des instructions, consultez [Google Analytics](https://docs.aws.amazon.com/appflow/latest/userguide/google-analytics.html) dans la AppFlow documentation Amazon. | 

## Ressources connexes
<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 développement (AWS DDK) (GitHub)](https://github.com/awslabs/aws-ddk)
+ [AWS Exemples de SDK](https://github.com/aws-samples/aws-ddk-examples) () GitHub

## Informations supplémentaires
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-additional"></a>

AWS Les pipelines de données DDK sont composés d'une ou de plusieurs étapes. Dans les exemples de code suivants, vous les utilisez `AppFlowIngestionStage` pour ingérer des données provenant de Google Analytics, `SqsToLambdaStage` pour gérer la transformation des données et `AthenaSQLStage` pour exécuter la requête Athena.

Tout d'abord, les étapes de transformation et d'ingestion des données sont créées, comme le montre l'exemple de code suivant :

```
        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)
            ],
        )
```

Ensuite, la `DataPipeline` construction est utilisée pour « relier » les étapes entre elles en utilisant des EventBridge règles, comme le montre l'exemple de code suivant :

```
        (
            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)
        )
```

Pour d'autres exemples de code, consultez le GitHub [référentiel Analyse des données Google Analytics avec Amazon AppFlow, Amazon Athena et AWS DataOps le référentiel Development Kit](https://github.com/aws-samples/aws-ddk-examples/tree/main/google-analytics-data-using-appflow/python).

# Créez un pipeline de traitement vidéo à l'aide d'Amazon Kinesis Video Streams et d'AWS Fargate
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate"></a>

*Piotr Chotkowski et Pushparaju Thangavel, Amazon Web Services*

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

Ce modèle montre comment utiliser [Amazon Kinesis Video](https://aws.amazon.com/kinesis/video-streams/) Streams et [AWS Fargate](https://aws.amazon.com/fargate) pour extraire des images d'un flux vidéo et les stocker sous forme de fichiers image pour un traitement ultérieur dans [Amazon Simple Storage Service (Amazon S3](https://aws.amazon.com/s3/)). 

Le modèle fournit un exemple d'application sous la forme d'un projet Java Maven. Cette application définit l'infrastructure AWS à l'aide du kit [AWS Cloud Development Kit](https://aws.amazon.com/cdk/) (AWS CDK). La logique de traitement des trames et les définitions de l'infrastructure sont écrites dans le langage de programmation Java. Vous pouvez utiliser cet exemple d'application comme base pour développer votre propre pipeline de traitement vidéo en temps réel ou pour créer l'étape de prétraitement vidéo d'un pipeline d'apprentissage automatique. 

## Conditions préalables et limitations
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ Kit de développement Java SE (JDK) 11, installé
+ [Apache Maven](https://maven.apache.org/), installé
+ [Kit de développement cloud AWS (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html), installé
+ [Interface de ligne de commande AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) version 2, installée
+ [Docker](https://docs.docker.com/get-docker/) (nécessaire pour créer des images Docker à utiliser dans les définitions de tâches AWS Fargate), installé

**Limites**

Ce modèle est conçu comme une preuve de concept ou comme base pour un développement ultérieur. Il ne doit pas être utilisé sous sa forme actuelle dans les déploiements de production.

**Versions du produit**
+ Ce modèle a été testé avec la version 1.77.0 d'AWS CDK (voir les versions d'[AWS](https://docs.aws.amazon.com/cdk/api/latest/versions.html) CDK)
+ JDK 11
+ Version 2 de l'interface de ligne de commande AWS

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

**Pile technologique cible**
+ Amazon Kinesis Video Streams
+ Tâche AWS Fargate
+ File d'attente Amazon Simple Queue Service (Amazon SQS)
+ Compartiment Amazon S3

**Architecture cible**

![\[Architecture permettant d'utiliser Kinesis Video Streams et Fargate pour créer un pipeline de traitement vidéo.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/9d1442c2-f3ee-47fd-8cce-90d9206ce4d4/images/a60e585f-27be-4dd6-897b-c38adf1d283f.png)


L'utilisateur crée un flux vidéo Kinesis, télécharge une vidéo et envoie un message JSON contenant des détails sur le flux vidéo Kinesis d'entrée et le bucket S3 de sortie vers une file d'attente SQS. AWS Fargate, qui exécute l'application principale dans un conteneur, extrait le message de la file d'attente SQS et commence à extraire les cadres. Chaque image est enregistrée dans un fichier image et stockée dans le compartiment S3 cible.

**Automatisation et mise à l'échelle**

L'exemple d'application peut être redimensionné à la fois horizontalement et verticalement au sein d'une même région AWS. La mise à l'échelle horizontale peut être réalisée en augmentant le nombre de tâches AWS Fargate déployées qui sont lues depuis la file d'attente SQS. La mise à l'échelle verticale peut être réalisée en augmentant le nombre de fils de partage d'images et de publication d'images dans l'application. Ces paramètres sont transmis en tant que variables d'environnement à l'application dans la définition de la [QueueProcessingFargateService](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-ecs-patterns.QueueProcessingFargateService.html)ressource dans le CDK AWS. En raison de la nature du déploiement de la pile AWS CDK, vous pouvez déployer cette application dans plusieurs régions et comptes AWS sans effort supplémentaire.

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

**Outils**
+ [AWS CDK](https://aws.amazon.com/cdk/) est un framework de développement logiciel permettant de définir votre infrastructure et vos ressources cloud à l'aide de langages de programmation tels que Python TypeScript JavaScript, Java et C\$1/Net.
+ [Amazon Kinesis Video](https://aws.amazon.com/kinesis/video-streams/) Streams est un service AWS entièrement géré que vous pouvez utiliser pour diffuser des vidéos en direct depuis des appareils vers le cloud AWS, ou créer des applications pour le traitement vidéo en temps réel ou l'analyse vidéo par lots.
+ [AWS Fargate](https://aws.amazon.com/fargate) est un moteur de calcul sans serveur pour les conteneurs. Fargate élimine le besoin de provisionner et de gérer des serveurs, et vous permet de vous concentrer sur le développement de vos applications.
+ [Amazon S3](https://aws.amazon.com/s3/) est un service de stockage d'objets qui offre évolutivité, disponibilité des données, sécurité et performances.
+ [Amazon SQS](https://aws.amazon.com/sqs/) est un service de mise en file d'attente de messages entièrement géré qui vous permet de découpler et de dimensionner les microservices, les systèmes distribués et les applications sans serveur.

**Code**
+ Un fichier .zip de l'exemple de projet d'application (`frame-splitter-code.zip`) est joint.

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

### Déployer l'infrastructure
<a name="deploy-the-infrastructure"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Lancez le démon Docker. | Démarrez le daemon Docker sur votre système local. L'AWS CDK utilise Docker pour créer l'image utilisée dans la tâche AWS Fargate. Vous devez exécuter Docker avant de passer à l'étape suivante. | Développeur, DevOps ingénieur | 
| Générez le projet. | Téléchargez l'`frame-splitter-code`exemple d'application (ci-joint) et extrayez son contenu dans un dossier sur votre ordinateur local. Avant de déployer l'infrastructure, vous devez créer le projet [Java Maven](https://maven.apache.org/). À l'invite de commande, accédez au répertoire racine du projet et créez le projet en exécutant la commande suivante : <pre>mvn clean install</pre> | Développeur, DevOps ingénieur | 
| Démarrez le kit AWS CDK. | (Utilisateurs du CDK AWS pour la première fois uniquement) Si c'est la première fois que vous utilisez le kit AWS CDK, vous devrez peut-être démarrer l'environnement en exécutant la commande de la CLI AWS :<pre>cdk bootstrap --profile "$AWS_PROFILE_NAME" </pre>où `$AWS_PROFILE_NAME` contient le nom du profil AWS issu de vos informations d'identification AWS. Vous pouvez également supprimer ce paramètre pour utiliser le profil par défaut. Pour plus d'informations, consultez la [documentation AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html). | Développeur, DevOps ingénieur | 
| Déployez la pile AWS CDK. | Au cours de cette étape, vous créez les ressources d'infrastructure requises (file d'attente SQS, compartiment S3, définition de tâche AWS Fargate) dans votre compte AWS, vous créez l'image Docker requise pour la tâche AWS Fargate et vous déployez l'application. À l'invite de commande, accédez au répertoire racine du projet et exécutez la commande suivante :<pre>cdk deploy --profile "$AWS_PROFILE_NAME" --all </pre>où `$AWS_PROFILE_NAME` contient le nom du profil AWS issu de vos informations d'identification AWS. Vous pouvez également supprimer ce paramètre pour utiliser le profil par défaut. Confirmez le déploiement. Notez les valeurs **QueueUrl**et **Bucket** indiquées dans le résultat du déploiement du CDK ; vous en aurez besoin ultérieurement. Le CDK AWS crée les actifs, les télécharge sur votre compte AWS et crée toutes les ressources de l'infrastructure. Vous pouvez observer le processus de création des ressources dans la [ CloudFormation console AWS](https://console.aws.amazon.com/cloudformation/). Pour plus d'informations, consultez la [ CloudFormation documentation AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) et la [documentation AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/hello_world.html#hello_world_tutorial_deploy). | Développeur, DevOps ingénieur | 
| Créez un flux vidéo. | Au cours de cette étape, vous allez créer un flux vidéo Kinesis qui servira de flux d'entrée pour le traitement vidéo. Assurez-vous que l'interface de ligne de commande AWS est installée et configurée. Dans l'AWS CLI, exécutez :<pre>aws kinesisvideo --profile "$AWS_PROFILE_NAME" create-stream --stream-name "$STREAM_NAME" --data-retention-in-hours "24" </pre>où `$AWS_PROFILE_NAME` contient le nom du profil AWS issu de vos informations d'identification AWS (ou supprimez ce paramètre pour utiliser le profil par défaut) et `$STREAM_NAME` est un nom de flux valide. Vous pouvez également créer un flux vidéo à l'aide de la console Kinesis en suivant les étapes décrites dans la documentation [Kinesis](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/gs-createstream.html#gs-createstream-console) Video Streams. Notez le nom de ressource AWS (ARN) du flux créé ; vous en aurez besoin ultérieurement. | Développeur, DevOps ingénieur | 

### Exécutez un exemple
<a name="run-an-example"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Téléchargez la vidéo sur le stream. | Dans le dossier de projet de l'exemple d'`frame-splitter-code`application, ouvrez le `ProcessingTaskTest.java` fichier qui s'y `src/test/java/amazon/awscdk/examples/splitter` trouve. Remplacez les `streamName`**** variables `profileName`**** et par les valeurs que vous avez utilisées dans les étapes précédentes. Pour télécharger l'exemple de vidéo dans le flux vidéo Kinesis que vous avez créé à l'étape précédente, exécutez :  <pre>amazon.awscdk.examples.splitter.ProcessingTaskTest#testExample test</pre>Vous pouvez également télécharger votre vidéo en utilisant l'une des méthodes décrites dans la documentation de [Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-sdk.html). | Développeur, DevOps ingénieur | 
| Lancez le traitement vidéo. | Maintenant que vous avez chargé une vidéo dans le flux vidéo Kinesis, vous pouvez commencer à la traiter. Pour lancer la logique de traitement, vous devez envoyer un message contenant des informations détaillées à la file d'attente SQS créée par le CDK AWS lors du déploiement. Pour envoyer un message à l'aide de l'AWS CLI, exécutez :<pre>aws sqs --profile "$AWS_PROFILE_NAME" send-message --queue-url QUEUE_URL --message-body MESSAGE </pre>where `$AWS_PROFILE_NAME` contient le nom du profil AWS issu de vos informations d'identification AWS (supprimez ce paramètre pour utiliser le profil par défaut), `QUEUE_URL` est la **QueueUrl**valeur de la sortie du CDK AWS et `MESSAGE` est une chaîne JSON au format suivant : <pre>{ "streamARN": "STREAM_ARN", "bucket": "BUCKET_NAME", "s3Directory": "test-output" }</pre>où `STREAM_ARN` est l'ARN du flux vidéo que vous avez créé lors d'une étape précédente et `BUCKET_NAME` la valeur du **bucket** issue de la sortie AWS CDK. L'envoi de ce message lance le traitement vidéo. Vous pouvez également envoyer un message à l'aide de la console Amazon SQS, comme décrit dans la documentation [Amazon SQS.](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-using-send-messages.html) | Développeur, DevOps ingénieur | 
| Visionnez des images des images vidéo. | Vous pouvez voir les images obtenues dans le compartiment de sortie S3, `s3://BUCKET_NAME/test-output` où se `BUCKET_NAME` trouve la valeur du **compartiment** provenant de la sortie AWS CDK. | Développeur, DevOps ingénieur | 

## Ressources connexes
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-resources"></a>
+ [Documentation du kit AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/home.html)
+ [Référence de l'API AWS CDK](https://docs.aws.amazon.com/cdk/api/latest/docs/aws-construct-library.html)
+ [Atelier d'introduction à AWS CDK](https://cdkworkshop.com/)
+ [Documentation Amazon Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/what-is-kinesis-video.html)
+ [Exemple : identification d'objets dans des flux vidéo à l'aide de SageMaker](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/examples-sagemaker.html)
+ [Exemple : analyse et rendu de fragments Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/examples-renderer.html)
+ [Analysez des vidéos en direct à grande échelle en temps réel à l'aide d'Amazon Kinesis Video Streams et d' SageMaker](https://aws.amazon.com/blogs/machine-learning/analyze-live-video-at-scale-in-real-time-using-amazon-kinesis-video-streams-and-amazon-sagemaker/)Amazon (article de blog AWS Machine Learning)
+ [Mise en route d'AWS Fargate](https://aws.amazon.com/fargate/getting-started/)

## Informations supplémentaires
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-additional"></a>

**Choisir un IDE**

Nous vous recommandons d'utiliser votre IDE Java préféré pour créer et explorer ce projet.  

**Nettoyage**

Une fois que vous avez terminé d'exécuter cet exemple, supprimez toutes les ressources déployées pour éviter d'encourir des coûts supplémentaires liés à l'infrastructure AWS. 

Pour supprimer l'infrastructure et le flux vidéo, utilisez ces deux commandes dans l'AWS CLI :

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

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

Vous pouvez également supprimer les ressources manuellement en utilisant la CloudFormation console AWS pour supprimer la CloudFormation pile AWS et la console Kinesis pour supprimer le flux vidéo Kinesis. Notez que `cdk destroy` cela ne supprime pas le compartiment S3 de sortie ni les images des référentiels Amazon Elastic Container Registry (Amazon ECR) (). `aws-cdk/assets` Vous devez les supprimer manuellement.

## Pièces jointes
<a name="attachments-9d1442c2-f3ee-47fd-8cce-90d9206ce4d4"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/9d1442c2-f3ee-47fd-8cce-90d9206ce4d4/attachments/attachment.zip)

# Créez un pipeline de services ETL pour charger les données de manière incrémentielle d'Amazon S3 vers Amazon Redshift à l'aide d'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 et Arunabha Datta, Amazon Web Services*

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

Ce modèle fournit des conseils sur la façon de configurer Amazon Simple Storage Service (Amazon S3) pour des performances optimales en matière de data lake, puis de charger les modifications de données incrémentielles d'Amazon S3 dans Amazon Redshift à l'aide d'AWS Glue, en effectuant des opérations d'extraction, de transformation et de chargement (ETL). 

Les fichiers source d'Amazon S3 peuvent avoir différents formats, notamment des valeurs séparées par des virgules (CSV), des fichiers XML et des fichiers JSON. Ce modèle décrit comment utiliser AWS Glue pour convertir les fichiers source dans un format optimisé en termes de coûts et de performances, tel qu'Apache Parquet. Vous pouvez interroger les fichiers Parquet directement depuis Amazon Athena et Amazon Redshift Spectrum. Vous pouvez également charger des fichiers Parquet dans Amazon Redshift, les agréger et partager les données agrégées avec les consommateurs, ou visualiser les données à l'aide d'Amazon Quick Sight.

## Conditions préalables et limitations
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif.
+ Un compartiment source S3 doté des privilèges appropriés et contenant des fichiers CSV, XML ou JSON.

**Hypothèses**
+ Les fichiers source CSV, XML ou JSON sont déjà chargés dans Amazon S3 et sont accessibles depuis le compte sur lequel AWS Glue et Amazon Redshift sont configurés.
+ Les meilleures pratiques relatives au chargement des fichiers, au fractionnement des fichiers, à la compression et à l'utilisation d'un manifeste sont suivies, comme indiqué dans la documentation [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/t_Loading-data-from-S3.html).
+ La structure du fichier source n'est pas modifiée.
+ Le système source est capable d'ingérer des données dans Amazon S3 en suivant la structure de dossiers définie dans Amazon S3.
+ Le cluster Amazon Redshift couvre une seule zone de disponibilité. (Cette architecture est appropriée car AWS Lambda, AWS Glue et Amazon Athena fonctionnent sans serveur.) Pour une haute disponibilité, les instantanés du cluster sont pris à une fréquence régulière.

**Limites**
+ Les formats de fichiers sont limités à ceux [actuellement pris en charge par AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format.html).
+ Les rapports en temps réel en aval ne sont pas pris en charge.

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

**Pile technologique source**
+ Compartiment S3 avec fichiers CSV, XML ou JSON

**Pile technologique cible**
+ Lac de données S3 (avec stockage de fichiers Parquet partitionné)
+ Amazon Redshift

**Architecture cible**

![\[Architecture permettant de charger des modifications incrémentielles d'Amazon S3 vers Amazon Redshift à l'aide d'AWS Glue.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/105b58ec-56c1-464a-8e69-f625360caa14/images/626aa365-e6e6-4874-a873-1c71adbe5306.png)


 

**Flux de données**

![\[Flux de données pour le chargement de modifications incrémentielles d'Amazon S3 vers Amazon Redshift à l'aide d'AWS Glue.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/105b58ec-56c1-464a-8e69-f625360caa14/images/29569e48-9f2d-4f48-bc59-1f33949d01ca.png)


## Outils
<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/) — Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets hautement évolutif. Amazon S3 peut être utilisé pour un large éventail de solutions de stockage, notamment les sites Web, les applications mobiles, les sauvegardes et les lacs de données.
+ [AWS Lambda](https://aws.amazon.com/lambda/) — AWS Lambda vous permet d'exécuter du code sans provisionner ni gérer de serveurs. AWS Lambda est un service piloté par des événements ; vous pouvez configurer votre code pour qu'il soit lancé automatiquement à partir d'autres services AWS.
+ [Amazon Redshift — Amazon Redshift](https://aws.amazon.com/redshift/) est un service d'entrepôt de données de plusieurs pétaoctets entièrement géré. Avec Amazon Redshift, vous pouvez interroger des pétaoctets de données structurées et semi-structurées dans votre entrepôt de données et votre lac de données à l'aide du SQL standard.
+ [AWS Glue](https://aws.amazon.com/glue/) — AWS Glue est un service ETL entièrement géré qui facilite la préparation et le chargement des données à des fins d'analyse. AWS Glue découvre vos données et stocke les métadonnées associées (par exemple, les définitions de tables et le schéma) dans le catalogue de données AWS Glue. Vos données cataloguées sont immédiatement consultables, peuvent être consultées et sont disponibles pour l'ETL.
+ [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/) — AWS Secrets Manager facilite la protection et la gestion centralisée des secrets nécessaires à l'accès aux applications ou aux services. Le service stocke les informations d'identification de base de données, les clés d'API et d'autres secrets, et élimine le besoin de coder en dur les informations sensibles au format texte brut. Secrets Manager propose également une rotation des clés pour répondre aux besoins de sécurité et de conformité. Il intègre une intégration à Amazon Redshift, Amazon Relational Database Service (Amazon RDS) et Amazon DocumentDB. Vous pouvez stocker et gérer les secrets de manière centralisée à l'aide de la console Secrets Manager, de l'interface de ligne de commande (CLI) ou de l'API Secrets Manager et. SDKs
+ [Amazon Athena](https://aws.amazon.com/athena/) — Amazon Athena est un service de requête interactif qui facilite l'analyse des données stockées dans Amazon S3. Athena fonctionne sans serveur et est intégrée à AWS Glue, ce qui lui permet d'interroger directement les données cataloguées à l'aide d'AWS Glue. Athena est dimensionnée de manière élastique pour fournir des performances de requête interactives.

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

### Création des compartiments et de la structure de dossiers S3
<a name="create-the-s3-buckets-and-folder-structure"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Analysez la structure des données et leurs attributs dans les systèmes sources. | Effectuez cette tâche pour chaque source de données qui contribue au lac de données Amazon S3. | Ingénieur de données | 
| Définissez la stratégie de partition et d'accès. | Cette stratégie doit être basée sur la fréquence des captures de données, le traitement du delta et les besoins de consommation. Assurez-vous que les compartiments S3 ne sont pas ouverts au public et que l'accès est contrôlé uniquement par des politiques spécifiques basées sur les rôles de service. Pour plus d’informations, consultez la [documentation Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/using-folders.html). | Ingénieur de données | 
| Créez des compartiments S3 distincts pour chaque type de source de données et un compartiment S3 distinct par source pour les données traitées (Parquet). | Créez un compartiment distinct pour chaque source, puis créez une structure de dossiers basée sur la fréquence d'ingestion des données du système source, par exemple,`s3://source-system-name/date/hour`. Pour les fichiers traités (convertis au format Parquet), créez une structure similaire, par exemple`s3://source-processed-bucket/date/hour`. Pour plus d'informations sur la création de compartiments S3, consultez la [documentation Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html). | Ingénieur de données | 

### Création d'un entrepôt de données dans Amazon Redshift
<a name="create-a-data-warehouse-in-amazon-redshift"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Lancez le cluster Amazon Redshift avec les groupes de paramètres et la stratégie de maintenance et de sauvegarde appropriés. | Utilisez le secret de base de données Secrets Manager pour les informations d'identification des utilisateurs administrateurs lors de la création du cluster Amazon Redshift. Pour plus d'informations sur la création et le dimensionnement d'un cluster Amazon Redshift, consultez la documentation [Amazon Redshift](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/event-publishing-redshift-cluster.html) et le livre blanc [Sizing Cloud Data Warehouses](https://d1.awsstatic.com/whitepapers/Size-Cloud-Data-Warehouse-on-AWS.pdf). | Ingénieur de données | 
| Créez et attachez le rôle de service IAM au cluster Amazon Redshift. | Le rôle de service AWS Identity and Access Management (IAM) garantit l'accès à Secrets Manager et aux compartiments S3 source. Pour plus d'informations, consultez la documentation AWS sur [l'autorisation et l'](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html)[ajout d'un rôle](https://docs.aws.amazon.com/redshift/latest/dg/c-getting-started-using-spectrum-add-role.html). | Ingénieur de données | 
| Créez le schéma de base de données. | Suivez les meilleures pratiques d'Amazon Redshift pour la conception des tables. En fonction du cas d'utilisation, choisissez les clés de tri et de distribution appropriées, ainsi que le meilleur codage de compression possible. Pour connaître les meilleures pratiques, consultez la [documentation AWS](https://docs.aws.amazon.com/redshift/latest/dg/c_designing-tables-best-practices.html). | Ingénieur de données | 
| Configurer la gestion de la charge de travail. | Configurez les files d'attente pour la gestion de la charge de travail (WLM), l'accélération des requêtes courtes (SQA) ou le dimensionnement de la simultanéité, en fonction de vos besoins. Pour plus d'informations, consultez [Implémentation de la gestion de la charge](https://docs.aws.amazon.com/redshift/latest/dg/cm-c-implementing-workload-management.html) de travail dans la documentation Amazon Redshift. | Ingénieur de données | 

### Création d’un secret dans Secrets Manager
<a name="create-a-secret-in-secrets-manager"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un nouveau secret pour stocker les informations de connexion Amazon Redshift dans Secrets Manager. | Ce secret stocke les informations d'identification de l'utilisateur administrateur ainsi que celles des utilisateurs individuels du service de base de données. Pour obtenir des instructions, consultez la [documentation de Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html). Choisissez **Amazon Redshift Cluster** comme type de secret. De plus, sur la page **Rotation secrète**, activez la rotation. Cela créera l'utilisateur approprié dans le cluster Amazon Redshift et effectuera une rotation des secrets clés à des intervalles définis. | Ingénieur de données | 
| Créez une politique IAM pour restreindre l'accès à Secrets Manager. | Limitez l'accès à Secrets Manager aux seuls administrateurs Amazon Redshift et à AWS Glue. | Ingénieur de données | 

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


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Dans le catalogue de données AWS Glue, ajoutez une connexion pour Amazon Redshift. | Pour obtenir des instructions, consultez la [documentation AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/console-connections.html). | Ingénieur de données | 
| Créez et attachez un rôle de service IAM pour AWS Glue afin d'accéder à Secrets Manager, Amazon Redshift et aux compartiments S3. | Pour plus d'informations, consultez la [documentation AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/create-service-policy.html). | Ingénieur de données | 
| Définissez le catalogue de données AWS Glue pour la source. | Cette étape implique la création d'une base de données et des tables requises dans le catalogue de données AWS Glue. Vous pouvez utiliser un robot pour cataloguer les tables de la base de données AWS Glue ou les définir comme des tables externes Amazon Athena. Vous pouvez également accéder aux tables externes définies dans Athena via le catalogue de données AWS Glue. Consultez la documentation AWS pour plus d'informations sur la [déﬁnition du catalogue de données et la](https://docs.aws.amazon.com/glue/latest/dg/populate-data-catalog.html) [création d'une table externe dans Athena](https://docs.aws.amazon.com/athena/latest/ug/creating-tables.html). | Ingénieur de données | 
| Créez une tâche AWS Glue pour traiter les données sources. | La tâche AWS Glue peut être un shell Python ou servir PySpark à normaliser, dédupliquer et nettoyer les fichiers de données sources. Pour optimiser les performances et éviter d'avoir à interroger l'intégralité du compartiment source S3, partitionnez le compartiment S3 par date, ventilé par année, mois, jour et heure sous forme de prédicat push down pour la tâche AWS Glue. Pour plus d'informations, consultez la [documentation AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-partitions.html). Chargez les données traitées et transformées dans les partitions du bucket S3 traitées au format Parquet. Vous pouvez consulter les dossiers du parquet auprès d'Athéna. | Ingénieur de données | 
| Créez une tâche AWS Glue pour charger des données dans Amazon Redshift. | La tâche AWS Glue peut être un shell Python ou une tâche consistant PySpark à charger les données en les insérant, puis en les actualisant complètement. Pour plus de détails, consultez la [documentation d'AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/author-job.html) et la section *Informations supplémentaires*. | Ingénieur de données | 
| (Facultatif) Planifiez les tâches AWS Glue en utilisant des déclencheurs si nécessaire. | Le chargement de données incrémentiel est principalement provoqué par un événement Amazon S3 qui amène une fonction AWS Lambda à appeler la tâche AWS Glue. Utilisez la planification basée sur des déclencheurs AWS Glue pour tous les chargements de données nécessitant une planification basée sur le temps plutôt qu'une planification basée sur des événements. | Ingénieur de données | 

### Création d’une fonction Lambda
<a name="create-a-lambda-function"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez et attachez un rôle lié à un service IAM pour qu'AWS Lambda accède aux compartiments S3 et à la tâche AWS Glue. | Créez un rôle lié à un service IAM pour AWS Lambda avec une politique pour lire les objets et les compartiments Amazon S3, et une politique pour accéder à l'API AWS Glue pour démarrer une tâche AWS Glue. Pour plus d'informations, consultez le [centre de connaissances](https://aws.amazon.com/premiumsupport/knowledge-center/lambda-execution-role-s3-bucket/). | Ingénieur de données | 
| Créez une fonction Lambda pour exécuter la tâche AWS Glue en fonction de l'événement Amazon S3 défini. | La fonction Lambda doit être initiée par la création du fichier manifeste Amazon S3. La fonction Lambda doit transmettre l'emplacement du dossier Amazon S3 (par exemple, source\$1bucket/year/month/date/hour) à la tâche AWS Glue en tant que paramètre. La tâche AWS Glue utilisera ce paramètre comme prédicat pushdown afin d'optimiser l'accès aux fichiers et les performances de traitement des tâches. Pour plus d'informations, consultez la [documentation AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html). | Ingénieur de données | 
| Créez un événement d'objet Amazon S3 PUT pour détecter la création d'un objet et appelez la fonction Lambda correspondante. | L'événement d'objet Amazon S3 PUT ne doit être initié que par la création du fichier manifeste. Le fichier manifeste contrôle la simultanéité de la fonction Lambda et de la tâche AWS Glue, et traite le chargement par lots au lieu de traiter les fichiers individuels qui arrivent dans une partition spéciﬁque du compartiment source S3. Pour plus d'informations, consultez la documentation [Lambda](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html). | Ingénieur de données | 

## Ressources connexes
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue-resources"></a>
+ [Documentation Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html)
+ [Documentation d'AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)
+ [Documentation 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/)

## Informations supplémentaires
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue-additional"></a>

**Approche détaillée pour l'amélioration et l'actualisation complète**

**Upsert** : Cela concerne les ensembles de données qui nécessitent une agrégation historique, selon le cas d'utilisation métier. Suivez l'une des approches décrites dans la section [Mise à jour et insertion de nouvelles données](https://docs.aws.amazon.com/redshift/latest/dg/t_updating-inserting-using-staging-tables-.html) (documentation Amazon Redshift) en fonction des besoins de votre entreprise.

**Actualisation complète** : cela concerne les petits ensembles de données qui ne nécessitent pas d'agrégations historiques. Suivez l'une des approches suivantes :

1. Tronquez le tableau Amazon Redshift.

1. Charger la partition actuelle depuis la zone de transit

ou :

1. Créez une table temporaire avec les données de partition actuelles.

1. Supprimez la table Amazon Redshift cible.

1. Renommez la table temporaire en table cible.

# Créez un maillage de données d'entreprise avec Amazon DataZone AWS CDK, et AWS CloudFormation
<a name="build-enterprise-data-mesh-amazon-data-zone"></a>

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

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

Sur Amazon Web Services (AWS), les clients savent que les données sont essentielles pour accélérer l'innovation et créer de la valeur commerciale pour leur entreprise. Pour gérer ces données massives, vous pouvez adopter une architecture décentralisée telle que le maillage de données. Une architecture de maillage de données facilite la réflexion sur les produits, un état d'esprit qui prend en compte les clients, les objectifs et le marché. Le maillage des données permet également d'établir un modèle de gouvernance fédéré qui fournit un accès rapide et sécurisé à vos données.

[Stratégies pour créer une solution d'entreprise basée sur le maillage de données AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/strategy-data-mesh/introduction.html) explique comment utiliser le cadre de stratégie de maillage de données pour formuler et mettre en œuvre une stratégie de maillage de données pour votre organisation. En utilisant le Data Mesh Strategy Framework, vous pouvez optimiser l'organisation des équipes et leurs interactions afin d'accélérer votre parcours vers le maillage des données.

Ce document fournit des conseils sur la manière de créer un maillage de données d'entreprise avec [Amazon DataZone](https://docs.aws.amazon.com/datazone/latest/userguide/what-is-datazone.html). Amazon DataZone est un service de gestion des données destiné au catalogage, à la découverte, au partage et à la gestion des données stockées auprès de sources tierces AWS, sur site ou auprès de sources tierces. Le modèle inclut des artefacts de code qui vous aident à déployer l'infrastructure de solution de données basée sur un maillage de données à l'aide de et. AWS Cloud Development Kit (AWS CDK) AWS CloudFormation Ce modèle est destiné aux architectes et DevOps ingénieurs du cloud.

Pour plus d'informations sur les objectifs de ce modèle et l'étendue de la solution, consultez la section [Informations supplémentaires](#build-enterprise-data-mesh-amazon-data-zone-additional).

## Conditions préalables et limitations
<a name="build-enterprise-data-mesh-amazon-data-zone-prereqs"></a>

**Conditions préalables**
+ Au moins deux actifs Comptes AWS : un pour le compte de gouvernance central et un autre pour le compte membre
+ AWS informations d'identification d'administrateur pour le compte de gouvernance central de votre environnement de développement
+ AWS Command Line Interface (AWS CLI) [installé](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) pour gérer votre Services AWS depuis la ligne de commande
+ Node.js et Node Package Manager (npm) [installés](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) pour gérer les applications AWS CDK 
+ AWS CDK Boîte à outils [installée](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_install) globalement dans votre environnement de développement à l'aide de npm, pour synthétiser et déployer des applications AWS CDK 

  ```
  npm install -g aws-cdk
  ```
+ Python version 3.12 installé dans votre environnement de développement
+ TypeScript installé dans votre environnement de développement ou installé globalement à l'aide du compilateur npm :

  ```
  npm install -g typescript
  ```
+ Docker installé dans votre environnement de développement
+ Un système de contrôle de version tel que Git pour maintenir le code source de la solution (recommandé)
+ Un environnement de développement intégré (IDE) ou un éditeur de texte compatible avec Python et TypeScript (fortement recommandé)

**Limites**
+ La solution a été testée uniquement sur des machines exécutant Linux ou macOS.
+ Dans la version actuelle, la solution ne prend pas en charge l'intégration d'Amazon DataZone et AWS IAM Identity Center par défaut. Toutefois, vous pouvez le configurer pour prendre en charge cette intégration.

**Versions du produit**
+ Version 3.12 de Python

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

Le schéma suivant montre une architecture de référence de maillage de données. L'architecture est basée sur Amazon DataZone et utilise Amazon Simple Storage Service (Amazon S3) AWS Glue Data Catalog et comme source de données. La méthode Services AWS que vous utilisez avec Amazon DataZone dans le cadre de la mise en œuvre de votre maillage de données peut varier en fonction des exigences de votre organisation.

![\[Flux de travail en cinq étapes pour les comptes des membres et le compte de gouvernance central.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/79056dd9-e669-4302-afb8-21e3e0e8a136/images/eacbffca-4f25-405a-a7c8-f89d0fee5682.png)


1. Dans les comptes des producteurs, les données brutes sont soit adaptées à la consommation sous leur forme actuelle, soit transformées pour la consommation par utilisation AWS Glue. Les métadonnées techniques des données sont stockées dans Amazon S3 et sont évaluées à l'aide d'un explorateur de AWS Glue données. La qualité des données est mesurée à l'aide de [la qualitéAWS Glue des données](https://docs.aws.amazon.com/glue/latest/dg/glue-data-quality.html). La base de données source du catalogue de données est enregistrée en tant que ressource dans le DataZone catalogue Amazon. Le DataZone catalogue Amazon est hébergé dans le compte de gouvernance central à l'aide des tâches de source de DataZone données Amazon.

1. Le compte de gouvernance central héberge le DataZone domaine Amazon et le portail de DataZone données Amazon. Les producteurs Comptes AWS de données et les consommateurs sont associés au DataZone domaine Amazon. Les DataZone projets Amazon des producteurs et des consommateurs de données sont organisés dans les unités de DataZone domaine Amazon correspondantes.

1. Les utilisateurs finaux des actifs de données se connectent au portail de DataZone données Amazon à l'aide de leurs informations d'identification Gestion des identités et des accès AWS (IAM) ou de leur authentification unique (avec intégration via IAM Identity Center). Ils recherchent, filtrent et consultent les informations sur les actifs (par exemple, les informations sur la qualité des données ou les métadonnées commerciales et techniques) dans le catalogue de DataZone données Amazon.

1. Une fois qu'un utilisateur final a trouvé la ressource de données qu'il souhaite, il utilise la fonctionnalité DataZone d'abonnement Amazon pour demander l'accès. Le propriétaire des données de l'équipe de production reçoit une notification et évalue la demande d'abonnement sur le portail de DataZone données Amazon. Le propriétaire des données approuve ou rejette la demande d'abonnement en fonction de sa validité.

1. Une fois la demande d'abonnement acceptée et traitée, l'actif est accessible sur le compte du consommateur pour les activités suivantes :
   + Développement de modèles AI/ML à l'aide d'Amazon AI SageMaker 
   + Analyses et rapports à l'aide d'Amazon Athena et Amazon Quick

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

**Services AWS**
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) est un service de requêtes interactif qui vous permet d'analyser les données directement dans Amazon Simple Storage Service (Amazon S3) à l'aide du langage SQL standard.
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)est un framework de développement logiciel qui vous aide à définir et à provisionner AWS Cloud l'infrastructure dans le code.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)vous aide à configurer les AWS ressources, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie à travers Comptes AWS et Régions AWS.
+ [Amazon DataZone](https://docs.aws.amazon.com/datazone/latest/userguide/what-is-datazone.html) est un service de gestion des données qui vous permet de cataloguer, de découvrir, de partager et de gérer les données stockées dans des sources tierces AWS, sur site et dans des sources tierces.
+ [Amazon Quick](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) est un service de business intelligence (BI) à l'échelle du cloud qui vous permet de visualiser, d'analyser et de rapporter vos données dans un tableau de bord unique.
+ [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/?id=docs_gateway) est un service géré d'apprentissage automatique (ML) qui vous aide à créer et à former des modèles de machine learning, puis à les déployer dans un environnement hébergé prêt pour la production.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.
+ [Amazon Simple Queue Service (Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html)) fournit une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de dissocier les systèmes et composants logiciels distribués.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.

**Référentiel de code**

La solution est disponible dans le référentiel GitHub [data-mesh-datazone-cdk-cloudformation](https://github.com/aws-samples/data-mesh-datazone-cdk-cloudformation).

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

### Configuration de l'environnement
<a name="set-up-the-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Pour cloner le référentiel. | Pour cloner le dépôt, exécutez la commande suivante dans votre environnement de développement local (Linux ou macOS) :<pre>git clone https://github.com/aws-samples/data-mesh-datazone-cdk-cloudformation</pre> | Architecte cloud, DevOps ingénieur | 
| Création de l'environnement | Pour créer l'environnement virtuel Python, exécutez les commandes suivantes :<pre> python3 -m venv .venv<br /> source .venv/bin/activate<br /> pip install -r requirements.txt</pre> | Architecte cloud, DevOps ingénieur | 
| Démarrez le compte. | Pour démarrer le compte de gouvernance central à l'aide de AWS CDK, exécutez la commande suivante :<pre>cdk bootstrap aws://<GOVERNANCE_ACCOUNT_ID>/<AWS_REGION></pre>Connectez-vous au AWS Management Console, ouvrez la console centrale du compte de gouvernance et obtenez le nom de ressource Amazon (ARN) du rôle AWS CDK d'exécution. | Architecte cloud, DevOps ingénieur | 
| Construisez le `DzDataMeshMemberStackSet.yaml` fichier. | Pour créer le `DzDataMeshMemberStackSet.yaml` fichier, à partir du répertoire racine du dépôt, lancez le script bash suivant :<pre>./lib/scripts/create_dz_data_mesh_member_stack_set.sh</pre> | Architecte cloud, DevOps ingénieur | 
| Confirmez la création du modèle. | Assurez-vous que le fichier CloudFormation modèle est créé à cet `lib/cfn-templates/DzDataMeshMemberStackSet.yaml` emplacement. | Architecte cloud, DevOps ingénieur | 

### Déployer des ressources dans le compte de gouvernance central
<a name="deploy-resources-in-the-central-governance-account"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Modifiez la configuration. | Dans le `config/Config.ts` fichier, modifiez les paramètres suivants :<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>Laissez les paramètres restants vides. | Architecte cloud, DevOps ingénieur | 
| Mettez à jour la configuration du DataZone glossaire Amazon. | Pour mettre à jour la configuration du DataZone glossaire Amazon dans le `lib/utils/glossary_config.json` fichier, utilisez l'exemple de configuration suivant :<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> | Architecte cloud, DevOps ingénieur | 
| Mettez à jour la configuration du formulaire de DataZone métadonnées Amazon. | Pour mettre à jour la configuration du formulaire de DataZone métadonnées Amazon dans le`lib/utils/metadata_form_config.json file`, utilisez l'exemple de configuration suivant :<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> | Architecte cloud, DevOps ingénieur | 
| Exportez les AWS informations d'identification. | Pour exporter les AWS informations d'identification vers votre environnement de développement pour le rôle IAM avec des autorisations administratives, utilisez le format suivant :<pre>export AWS_ACCESS_KEY_ID=<br />export AWS_SECRET_ACCESS_KEY=<br />export AWS_SESSION_TOKEN=</pre> | Architecte cloud, DevOps ingénieur | 
| Synthétisez le modèle. | Pour synthétiser le CloudFormation modèle, exécutez la commande suivante :<pre>npx cdk synth</pre> | Architecte cloud, DevOps ingénieur | 
| Déployez la solution. | Pour déployer la solution, exécutez la commande suivante :<pre>npx cdk deploy --all</pre> | Architecte cloud, DevOps ingénieur | 

### Configurer les nouveaux comptes de membres
<a name="configure-new-member-accounts"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez le modèle. | Déployez le CloudFormation modèle situé `lib/cfn-templates/DzDataMeshCfnStackSetExecutionRole.yaml` dans le compte du membre avec les paramètres d'entrée suivants : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/build-enterprise-data-mesh-amazon-data-zone.html) | Architecte cloud, DevOps ingénieur | 
| Mettez à jour le ARNs. | Pour mettre à jour la liste des rôles CloudFormation StackSet d'exécution ARNs pour les comptes membres, utilisez le code suivant :<pre>DZ_MEMBER_STACK_SET_EXEC_ROLE_LIST  - List of Stack set execution role arns for the member accounts.</pre> | Architecte cloud, DevOps ingénieur | 
| Synthétisez et déployez. | Pour synthétiser le CloudFormation modèle et déployer la solution, exécutez les commandes suivantes :<pre>npx cdk synth<br />npx cdk deploy --all</pre> | Architecte cloud, DevOps ingénieur | 
| Associez le compte du membre. | Pour associer le compte membre au compte de gouvernance central, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/build-enterprise-data-mesh-amazon-data-zone.html) | Architecte cloud, DevOps ingénieur | 
| Mettez à jour les paramètres. | Pour mettre à jour les paramètres spécifiques au compte membre dans le fichier de configuration à l'adresse`config/Config.ts`, utilisez le format suivant :<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> | Architecte cloud, DevOps ingénieur | 
| Synthétisez et déployez le modèle. | Pour synthétiser le CloudFormation modèle et déployer la solution, exécutez les commandes suivantes :<pre>npx cdk synth<br />npx cdk deploy --all</pre> | Architecte cloud, DevOps ingénieur | 
| Ajoutez des comptes de membres. | Pour créer et configurer des comptes membres supplémentaires dans la solution de données, répétez les étapes précédentes pour chaque compte membre.Cette solution ne fait pas de différence entre les producteurs de données et les consommateurs. | Architecte cloud, DevOps ingénieur | 

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


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Dissociez les comptes des membres. | Pour dissocier les comptes, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/build-enterprise-data-mesh-amazon-data-zone.html) | Architecte cloud, DevOps ingénieur | 
| Supprimez les instances de la pile. | Pour supprimer les instances de CloudFormation pile, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/build-enterprise-data-mesh-amazon-data-zone.html) | Architecte cloud, DevOps ingénieur | 
| Détruisez toutes les ressources. | Pour détruire des ressources, mettez en œuvre les étapes suivantes dans votre environnement de développement local (Linux ou macOS) :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/build-enterprise-data-mesh-amazon-data-zone.html) | Architecte cloud, DevOps ingénieur | 

## Ressources connexes
<a name="build-enterprise-data-mesh-amazon-data-zone-resources"></a>
+ [Amazon DataZone QuickStart avec des données AWS Glue](https://docs.aws.amazon.com/datazone/latest/userguide/quickstart-glue.html)
+ [Tutoriel : Créez votre première AWS CDK application](https://docs.aws.amazon.com/cdk/v2/guide/hello_world.html)
+ [Commencer avec CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/GettingStarted.html)
+ [Stratégies pour créer une solution d'entreprise basée sur un maillage de données sur AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/strategy-data-mesh/introduction.html)

## Informations supplémentaires
<a name="build-enterprise-data-mesh-amazon-data-zone-additional"></a>

**Objectifs**

La mise en œuvre de ce modèle permet d'obtenir les résultats suivants :
+ **Propriété décentralisée des données** ‒ Transférez la propriété des données d'une équipe centrale à des équipes représentant les systèmes sources, les unités commerciales ou les cas d'utilisation de votre organisation.
+ **Pensée produit** ‒ Adoptez un état d'esprit axé sur le produit qui inclut les clients, le marché et d'autres facteurs lorsque vous considérez les actifs de données de votre organisation.
+ **Gouvernance fédérée** ‒ Améliorez les garde-fous de sécurité, les contrôles et la conformité des produits de données de votre entreprise.
+ Support **multi-comptes et multi-projets ‒** Soutenez un partage de données et une collaboration efficaces et sécurisés entre les unités commerciales ou les projets de votre organisation.
+ **Surveillance et notifications centralisées** ‒ Surveillez les ressources cloud de votre maillage de données à l'aide d'Amazon CloudWatch, et informez les utilisateurs lorsqu'un nouveau compte membre est associé.
+ **Évolutivité et extensibilité** ‒ Ajoutez de nouveaux cas d'utilisation au maillage de données au fur et à mesure de l'évolution de votre organisation.

**Portée de la solution**

Lorsque vous utilisez cette solution, vous pouvez commencer à petite échelle et évoluer au fur et à mesure que vous progressez dans votre parcours vers le maillage des données. Souvent, lorsqu'un compte membre adopte la solution de données, celle-ci contient des configurations de compte spécifiques à l'organisation, au projet ou à l'unité commerciale. Cette solution s'adapte à ces diverses Compte AWS configurations en prenant en charge les fonctionnalités suivantes :
+ Le catalogue de données AWS Glue en tant que source de données pour Amazon DataZone
+ Gestion du domaine de DataZone données Amazon et du portail de données associé
+ Gestion de l'ajout de comptes membres dans la solution de données basée sur le maillage de données
+ Gestion des DataZone projets et des environnements Amazon
+ Gestion des DataZone glossaires et des formulaires de métadonnées Amazon
+ Gestion des rôles IAM correspondant aux utilisateurs de solutions de données basées sur le maillage de données
+ Notification des utilisateurs de solutions de données basées sur un maillage de données
+ Surveillance de l'infrastructure cloud provisionnée

  Cette solution utilise AWS CDK et CloudFormation déploie l'infrastructure cloud. Il permet CloudFormation d'effectuer les opérations suivantes :
  + Définissez et déployez les ressources cloud à un niveau d'abstraction inférieur.
  + Déployez des ressources cloud à partir du AWS Management Console. En utilisant cette approche, vous pouvez déployer une infrastructure sans environnement de développement.

  La solution de maillage de données permet AWS CDK de définir les ressources à un niveau d'abstraction supérieur. Par conséquent, la solution propose une approche découplée, modulaire et évolutive en choisissant l'outil approprié pour déployer les ressources du cloud.

**Étapes suivantes**

Vous pouvez contacter des AWS[experts](https://aws.amazon.com/professional-services) pour obtenir des conseils sur la création d'un maillage de données avec Amazon DataZone.

La nature modulaire de cette solution permet de créer des solutions de gestion des données avec différentes architectures, telles que Data Fabric et Data Lakes. En outre, en fonction des besoins de votre organisation, vous pouvez étendre la solution à d'autres sources de DataZone données Amazon.

# Calculez la valeur à risque (VaR) à l'aide des services AWS
<a name="calculate-value-at-risk-var-by-using-aws-services"></a>

*Sumon Samanta, Amazon Web Services*

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

Ce modèle décrit comment implémenter un système de calcul de la valeur à risque (VaR) à l'aide des services AWS. Dans un environnement sur site, la plupart des systèmes VaR utilisent une vaste infrastructure dédiée et un logiciel de planification de réseau interne ou commercial pour exécuter les processus par lots. Ce modèle présente une architecture simple, fiable et évolutive pour gérer le traitement de la VaR dans le cloud AWS. Il construit une architecture sans serveur qui utilise Amazon Kinesis Data Streams comme service de streaming, Amazon Simple Queue Service (Amazon SQS) comme service de file d'attente géré, ElastiCache Amazon comme service de mise en cache et AWS Lambda pour traiter les commandes et calculer les risques.

La VaR est une mesure statistique que les traders et les gestionnaires de risques utilisent pour estimer les pertes potentielles de leur portefeuille au-delà d'un certain niveau de confiance. La plupart des systèmes VaR impliquent l'exécution d'un grand nombre de calculs mathématiques et statistiques et le stockage des résultats. Ces calculs nécessitent des ressources de calcul importantes, de sorte que les processus par lots VaR doivent être divisés en de plus petits ensembles de tâches de calcul. Il est possible de diviser un lot important en tâches plus petites car ces tâches sont pour la plupart indépendantes (c'est-à-dire que les calculs d'une tâche ne dépendent pas des autres tâches). 

Une autre exigence importante pour une architecture VaR est l'évolutivité du calcul. Ce modèle utilise une architecture sans serveur qui évolue automatiquement en entrée ou en sortie en fonction de la charge de calcul. La demande de calcul par lots ou en ligne étant difficile à prévoir, une mise à l'échelle dynamique est nécessaire pour terminer le processus dans les délais imposés par un accord de niveau de service (SLA). En outre, une architecture optimisée en termes de coûts doit être capable de réduire chaque ressource de calcul dès que les tâches associées à cette ressource sont terminées. 

Les services AWS sont parfaitement adaptés aux calculs de la VaR car ils offrent des capacités de calcul et de stockage évolutives, des services d'analyse pour un traitement optimisé en termes de coûts et différents types de planificateurs pour exécuter vos flux de travail de gestion des risques. De plus, vous ne payez que pour les ressources de calcul et de stockage que vous utilisez sur AWS.

## Conditions préalables et limitations
<a name="calculate-value-at-risk-var-by-using-aws-services-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif.
+ Fichiers d'entrée, qui dépendent des besoins de votre entreprise. Un cas d'utilisation typique implique les fichiers d'entrée suivants :
  + Fichier de données de marché (entrée dans le moteur de calcul de la VaR)
  + Fichier de données commerciales (sauf si les données commerciales proviennent d'un flux).
  + Fichier de données de configuration (modèle et autres données de configuration statiques)
  + Fichiers de modèles de moteurs de calcul (bibliothèques quantitatives)
  + Fichier de données de séries chronologiques (pour les données historiques telles que le cours des actions des cinq dernières années)
+ Si les données de marché ou d'autres entrées arrivent par le biais d'un flux, Amazon Kinesis Data Streams est configuré et les autorisations Amazon Identity and Access Management (IAM) sont configurées pour écrire dans le flux.  

Ce modèle crée une architecture dans laquelle les données commerciales sont écrites depuis un système de trading vers un flux de données Kinesis. Au lieu d'utiliser un service de streaming, vous pouvez enregistrer vos données commerciales dans de petits fichiers par lots, les stocker dans un bucket Amazon Simple Storage Service (Amazon S3) et invoquer un événement pour commencer à traiter les données.

**Limites**
+ Le séquençage des flux de données Kinesis est garanti sur chaque partition. Il n'est donc pas garanti que les ordres de transaction écrits sur plusieurs partitions soient livrés dans le même ordre que les opérations d'écriture.
+ La limite d'exécution d'AWS Lambda est actuellement de 15 minutes. (Pour plus d'informations, consultez la [FAQ Lambda](https://aws.amazon.com/lambda/faqs/).)

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

**Architecture cible**

Le schéma d'architecture suivant présente les services et les flux de travail AWS pour le système d'évaluation des risques.

![\[Système de calcul de la VaR avec services AWS\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/eb615fc5-3cc3-445a-af2c-8446ee7b5276/images/c60aec03-ff6c-410c-8ee8-f1f6efa22cf7.png)


Le diagramme illustre les éléments suivants :

1. Les transactions sont effectuées depuis le système de gestion des commandes.

1. La fonction Lambda de *compensation de la position du ticket* traite les commandes et écrit des messages consolidés pour chaque ticker dans une file d'attente des risques dans Amazon SQS.

1. La fonction Lambda *du moteur de calcul des risques* traite les messages provenant d'Amazon SQS, effectue des calculs de risques et met à jour les informations de profits et pertes (PnL) vAR dans le cache des risques d'Amazon. ElastiCache

1. La fonction Lambda de *lecture ElastiCache des données* extrait les résultats des risques ElastiCache et les stocke dans une base de données et un compartiment S3.

Pour plus d'informations sur ces services et ces étapes, consultez la section *Epics*.

**Automatisation et évolutivité**

Vous pouvez déployer l'architecture complète à l'aide de l'AWS Cloud Development Kit (AWS CDK) ou de CloudFormation modèles AWS. L'architecture peut prendre en charge à la fois le traitement par lots et le traitement intrajournalier (en temps réel).

La mise à l'échelle est intégrée à l'architecture. Au fur et à mesure que de nouvelles transactions sont enregistrées dans le flux de données Kinesis et attendent d'être traitées, des fonctions Lambda supplémentaires peuvent être invoquées pour traiter ces transactions, puis peuvent être réduites une fois le traitement terminé. Le traitement via plusieurs files d'attente de calcul des risques Amazon SQS est également une option. Si un ordre ou une consolidation stricts sont requis entre les files d'attente, le traitement ne peut pas être parallélisé. Toutefois, pour un end-of-the-day lot ou un mini-lot intrajournalier, les fonctions Lambda peuvent traiter en parallèle et enregistrer les résultats finaux. ElastiCache 

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

**Services AWS**
+ [Amazon Aurora MySQL Compatible Edition](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMySQL.html) est un moteur de base de données relationnelle entièrement géré et compatible avec MySQL qui vous aide à configurer, exploiter et dimensionner les déploiements MySQL. Ce modèle utilise MySQL comme exemple, mais vous pouvez utiliser n'importe quel système RDBMS pour stocker des données.
+ [Amazon](https://docs.aws.amazon.com/elasticache/) vous ElastiCache aide à configurer, gérer et faire évoluer des environnements de cache en mémoire distribués dans le cloud AWS.
+ [Amazon Kinesis Data](https://docs.aws.amazon.com/streams/latest/dev/introduction.html) Streams vous aide à collecter et à traiter de grands flux d'enregistrements de données en temps réel.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous permet d'exécuter du code sans avoir à provisionner ou à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [Amazon Simple Queue Service (Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html)) fournit une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de dissocier les systèmes et composants logiciels distribués.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.

**Code**

Ce modèle fournit un exemple d'architecture pour un système VaR dans le cloud AWS et décrit comment utiliser les fonctions Lambda pour les calculs VaR. [Pour créer vos fonctions Lambda, consultez les exemples de code dans la documentation Lambda.](https://docs.aws.amazon.com/lambda/latest/dg/service_code_examples.html) Pour obtenir de l'aide, contactez [AWS Professional Services](https://pages.awscloud.com/AWS-Professional-Services.html).

## Bonnes pratiques
<a name="calculate-value-at-risk-var-by-using-aws-services-best-practices"></a>
+ Faites en sorte que chaque tâche de calcul VaR soit aussi petite et légère que possible. Testez différents nombres de transactions dans chaque tâche de calcul pour déterminer laquelle est la plus optimisée en termes de temps et de coût de calcul.
+ Stockez des objets réutilisables sur Amazon ElastiCache. Utilisez un framework tel qu'Apache Arrow pour réduire la sérialisation et la désérialisation.
+ Tenez compte de la limite de temps de Lambda. Si vous pensez que vos tâches de calcul peuvent dépasser 15 minutes, essayez de les diviser en tâches plus petites pour éviter le délai Lambda. Si cela n'est pas possible, vous pouvez envisager une solution d'orchestration de conteneurs avec AWS Fargate, Amazon Elastic Container Service (Amazon ECS) et Amazon Elastic Kubernetes Service (Amazon EKS).

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

### Système de gestion des flux commerciaux par rapport au risque
<a name="trade-flow-to-risk-system"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Commencez à écrire des transactions.  | Les transactions nouvelles, réglées ou partiellement réglées sont enregistrées depuis le système de gestion des ordres dans un flux de risques. Ce modèle utilise Amazon Kinesis comme service de streaming géré. Le hachage du ticker des ordres de transaction est utilisé pour placer les ordres de transaction sur plusieurs partitions. | Amazon Kinesis | 

### Exécuter les fonctions Lambda pour le traitement des commandes
<a name="run-lambda-functions-for-order-processing"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Commencez le traitement des risques avec Lambda. | Exécutez une fonction AWS Lambda pour les nouvelles commandes. En fonction du nombre d'ordres commerciaux en attente, Lambda évoluera automatiquement. Chaque instance Lambda reçoit une ou plusieurs commandes et récupère la dernière position pour chaque ticker sur Amazon. ElastiCache (Vous pouvez utiliser un identifiant CUSIP, un nom de courbe ou un nom d'indice pour d'autres produits financiers dérivés comme clé pour stocker et récupérer des données ElasticCache.) *Dans ElastiCache, la position totale (quantité) et la paire clé-valeur < *ticker*, position nette >, où la *position nette* est le facteur d'échelle, sont mises à jour une fois pour chaque ticker.*  | Amazon Kinesis, AWS Lambda, Amazon ElastiCache | 

### Écrire des messages pour chaque ticker dans la file d'attente
<a name="write-messages-for-each-ticker-into-queue"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Écrivez des messages consolidés dans la file d'attente des risques. | Ecrivez le message dans une file d'attente. Ce modèle utilise Amazon SQS comme service de file d'attente géré. Une seule instance Lambda peut recevoir un mini-lot d'ordres de transaction à tout moment, mais elle n'écrit qu'un seul message pour chaque ticker sur Amazon SQS. Un facteur d'échelle est calculé : (*ancienne position nette* \$1 *position actuelle*)/*ancienne position nette*. | Amazon SQS, AWS Lambda | 

### Invoquer le moteur de risque
<a name="invoke-risk-engine"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Commencez à calculer les risques. | La fonction Lambda pour le moteur de gestion des risques lambda est invoquée. Chaque position est traitée par une seule fonction Lambda. Toutefois, à des fins d'optimisation, chaque fonction Lambda peut traiter plusieurs messages provenant d'Amazon SQS. | Amazon SQS, AWS Lambda | 

### Extraire les résultats des risques depuis le cache
<a name="retrieve-risk-results-from-cache"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Récupérez et mettez à jour le cache des risques. | Lambda extrait la position nette actuelle de chaque ticker à partir de. ElastiCache Il récupère également un tableau des profits et pertes vAR (PnL) pour chaque ticker à partir de. ElastiCache Si le tableau PnL existe déjà, la fonction Lambda met à jour le tableau et le VaR avec une échelle, qui provient du message Amazon SQS écrit par la fonction Lambda de netting. Si le tableau PnL n'y figure pas ElasticCache, un nouveau PnL et un nouveau VaR sont calculés à l'aide de données de séries de prix simulées. | Amazon SQS, AWS Lambda, Amazon ElastiCache | 

### Mettre à jour les données dans Elastic Cache et les stocker dans la base de données
<a name="update-data-in-elastic-cache-and-store-in-database"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Conservez les résultats relatifs aux risques. | Une fois les numéros VaR et PnL mis à jour ElastiCache, une nouvelle fonction Lambda est invoquée toutes les cinq minutes. Cette fonction lit toutes les données stockées ElastiCache et les stocke dans une base de données compatible Aurora MySQL et dans un compartiment S3. | AWS Lambda, Amazon ElastiCache | 

## Ressources connexes
<a name="calculate-value-at-risk-var-by-using-aws-services-resources"></a>
+ [Cadre VaR de Bâle](https://www.bis.org/basel_framework/chapter/DIS/50.htm)

# Configurer l'accès entre comptes à un catalogue de données AWS Glue partagé à l'aide d'Amazon Athena
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena"></a>

*Denis Avdonin, Amazon Web Services*

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

Ce modèle fournit des step-by-step instructions, notamment des exemples de politique AWS Identity and Access Management (IAM), pour configurer le partage entre comptes d'un ensemble de données stocké dans un bucket Amazon Simple Storage Service (Amazon S3) à l'aide du catalogue de données AWS Glue. Vous pouvez stocker l'ensemble de données dans un compartiment S3. Les métadonnées sont collectées par un robot d'exploration AWS Glue et insérées dans le catalogue de données AWS Glue. Le compartiment S3 et le catalogue de données AWS Glue se trouvent dans un compte AWS appelé *compte de données*. Vous pouvez fournir l'accès aux principaux IAM via un autre compte AWS appelé compte *consommateur*. Les utilisateurs peuvent interroger les données du compte client à l'aide du moteur de requête sans serveur Amazon Athena.

## Conditions préalables et limitations
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena-prereqs"></a>

**Conditions préalables**
+ Deux [comptes AWS](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-creating.html) actifs
+ Un [compartiment S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) dans l'un des comptes AWS
+ [Moteur Athena version 2](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-reference.html#engine-versions-reference-0002)
+ Interface de ligne de commande AWS (AWS CLI)[,](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) installée [et](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) configurée (ou [AWS CloudShell](https://aws.amazon.com/cloudshell/) pour exécuter des commandes de l'interface de ligne de commande AWS)

**Versions du produit**

Ce modèle fonctionne uniquement avec la [version 2 du moteur Athena et la version 3](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-reference-0002.html) [du moteur Athena](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-reference-0003.html). Nous vous recommandons de passer à la version 3 du moteur Athena. Si vous ne parvenez pas à passer de la version 1 du moteur Athena à la version 3 du moteur Athena, suivez l'approche décrite dans la section Accès au [catalogue de données AWS Glue entre comptes avec Amazon Athena sur](https://aws.amazon.com/blogs/big-data/cross-account-aws-glue-data-catalog-access-with-amazon-athena/) le blog AWS Big Data.

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

**Pile technologique cible**
+ Amazon Athena
+ Amazon Simple Storage Service (Amazon S3)
+ AWS Glue
+ AWS Identity and Access Management (IAM)
+ AWS Key Management Service (AWS KMS)

Le schéma suivant montre une architecture qui utilise les autorisations IAM pour partager les données d'un compartiment S3 d'un compte AWS (compte de données) avec un autre compte AWS (compte consommateur) via le catalogue de données AWS Glue.

![\[Partage d'un ensemble de données dans un compartiment S3 entre un compte de données et un compte client à l'aide du catalogue de données AWS Glue.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/4ee1d6f5-f8e1-4acb-8a9c-7601c832a87d/images/e73a2b47-c0b1-49f1-be66-9c563c11c9f9.png)


Le schéma suivant illustre le flux de travail suivant :

1. La politique relative au compartiment S3 du compte de données accorde des autorisations à un rôle IAM dans le compte client et au rôle de service d'exploration AWS Glue dans le compte de données.

1. La politique clé d'AWS KMS relative au compte de données accorde des autorisations au rôle IAM dans le compte consommateur et au rôle de service d'exploration AWS Glue dans le compte de données.

1. Le robot d'exploration AWS Glue du compte de données découvre le schéma des données stockées dans le compartiment S3.

1. La politique de ressources du catalogue de données AWS Glue dans le compte de données autorise l'accès au rôle IAM dans le compte client.

1. Un utilisateur crée une référence de catalogue nommée dans le compte client à l'aide d'une commande AWS CLI.

1. Une politique IAM accorde à un rôle IAM dans le compte client l'accès aux ressources du compte de données. La politique de confiance du rôle IAM permet aux utilisateurs du compte client d'assumer le rôle IAM.

1. Un utilisateur du compte consommateur assume le rôle IAM et accède aux objets du catalogue de données à l'aide de requêtes SQL.

1.  Le moteur sans serveur Athena exécute les requêtes SQL.

**Note**  
[Les meilleures pratiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) recommandent d'accorder des autorisations à un rôle IAM et d'utiliser la fédération [d'identité](https://aws.amazon.com/identity/federation/).

## Outils
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena-tools"></a>
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) est un service de requête interactif qui vous permet d'analyser les données directement dans Amazon S3 à l'aide du SQL standard.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) est un service d'extraction, de transformation et de chargement (ETL) entièrement géré. Il vous aide à classer, nettoyer, enrichir et déplacer les données de manière fiable entre les magasins de données et les flux de données.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) vous aide à gérer en toute sécurité l'accès à vos ressources AWS en contrôlant qui est authentifié et autorisé à les utiliser.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) vous aide à créer et à contrôler des clés cryptographiques pour protéger vos données.

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

### Configurer les autorisations dans le compte de données
<a name="set-up-permissions-in-the-data-account"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Accordez l'accès aux données du compartiment S3. | [Créez une politique de compartiment S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html) basée sur le modèle suivant et attribuez-la au compartiment dans lequel les données sont stockées.<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>La politique du bucket accorde des autorisations au rôle IAM dans le compte client et au rôle de service d'exploration AWS Glue dans le compte de données. | Administrateur du cloud | 
| (Si nécessaire) Accordez l'accès à la clé de chiffrement des données. | Si le compartiment S3 est chiffré par une clé AWS KMS, accordez l'`kms:Decrypt`autorisation sur la clé au rôle IAM dans le compte client et au rôle de service d'exploration AWS Glue dans le compte de données.Mettez à jour la [politique clé](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) avec la déclaration suivante :<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> | Administrateur du cloud | 
| Accordez au robot d'exploration l'accès aux données. | Associez la politique IAM suivante au rôle de service du robot d'exploration :<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> | Administrateur du cloud | 
| (Si nécessaire) Accordez au robot d'exploration l'accès à la clé de chiffrement des données. | Si le compartiment S3 est chiffré par une clé AWS KMS, accordez une `kms:Decrypt` autorisation sur la clé au rôle de service du robot d'exploration en y associant la politique suivante :<pre>{<br />    "Effect": "Allow",<br />    "Action": "kms:Decrypt",<br />    "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>"<br />}</pre> | Administrateur du cloud | 
| Accordez au rôle IAM dans le compte client et au robot d'exploration l'accès au catalogue de données. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/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>Cette politique autorise toutes les actions AWS Glue sur toutes les bases de données et tables du compte de données. Vous pouvez personnaliser la politique pour n'accorder que les autorisations requises aux principaux consommateurs. Par exemple, vous pouvez fournir un accès en lecture seule à des tables ou à des vues spécifiques d'une base de données. | Administrateur du cloud | 

### Accédez aux données depuis le compte client
<a name="access-data-from-the-consumer-account"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une référence nommée pour le catalogue de données. | Pour créer une référence de catalogue de données nommée, utilisez [CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/getting-started.html)une CLI AWS installée localement pour exécuter la commande suivante :<pre>aws athena create-data-catalog --name <shared catalog name> --type GLUE --parameters catalog-id=<data account id></pre> | Administrateur du cloud | 
| Accordez au rôle IAM du compte client l'accès aux données. | Associez la politique suivante au rôle IAM dans le compte client pour accorder au rôle un accès multicompte aux données :<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>Ensuite, utilisez le modèle suivant pour spécifier quels utilisateurs peuvent accepter le rôle IAM dans sa politique de confiance :<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>Enfin, accordez aux utilisateurs l'autorisation d'assumer le rôle IAM en attachant la même politique au groupe d'utilisateurs auquel ils appartiennent. | Administrateur du cloud | 
| (Si nécessaire) Accordez au rôle IAM du compte client l'accès à la clé de chiffrement des données. | Si le compartiment S3 est chiffré par une clé AWS KMS, accordez l'`kms:Decrypt`autorisation d'utiliser la clé pour le rôle IAM dans le compte client en y joignant la politique suivante :<pre>{<br />     "Effect": "Allow",<br />     "Action": "kms:Decrypt",<br />     "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>"<br />}</pre> | Administrateur du cloud | 
| Passez au rôle IAM dans le compte client pour accéder aux données. | En tant que consommateur de données, [passez au rôle IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) pour accéder aux données du compte de données. | Consommateur de données | 
| Accédez aux données. | Interrogez des données à l'aide d'Athena. Par exemple, ouvrez l'éditeur de requêtes Athena et exécutez la requête suivante :<pre>SELECT *<br />  FROM <shared catalog name>.<database name>.<table name></pre>Au lieu d'utiliser une référence de catalogue nommée, vous pouvez également faire référence au catalogue par son Amazon Resource Name (ARN).Si vous utilisez une référence de catalogue dynamique dans une requête ou une vue, entourez-la de guillemets évasiés (\$1 »). Par exemple :<pre>SELECT * <br />  FROM \"glue:arn:aws:glue:<region>:<data account id>:catalog\".<database name>.<table name></pre>Pour plus d'informations, consultez la section [Accès entre comptes aux catalogues de données AWS Glue](https://docs.aws.amazon.com/athena/latest/ug/security-iam-cross-account-glue-catalog-access.html) dans le guide de l'utilisateur Amazon Athena. | Consommateur de données | 

## Ressources connexes
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena-resources"></a>
+ [Accès entre comptes aux catalogues de données AWS Glue (documentation](https://docs.aws.amazon.com/athena/latest/ug/security-iam-cross-account-glue-catalog-access.html) Athena)
+ [(AWS CLI) create-data-catalog](https://docs.aws.amazon.com/cli/latest/reference/athena/create-data-catalog.html) (Référence de commande de l'AWS CLI)
+ [Accès au catalogue de données AWS Glue entre comptes avec Amazon Athena](https://aws.amazon.com/blogs/big-data/cross-account-aws-glue-data-catalog-access-with-amazon-athena/) (blog AWS Big Data)
+ [Bonnes pratiques de sécurité dans le domaine de l'IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) (documentation IAM)

## Informations supplémentaires
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena-additional"></a>

**Utiliser Lake Formation comme alternative au partage entre comptes**

Vous pouvez également utiliser AWS Lake Formation pour partager l'accès aux objets du catalogue AWS Glue entre différents comptes. Lake Formation fournit un contrôle d'accès précis au niveau des colonnes et des lignes, un contrôle d'accès basé sur des balises, des tables gouvernées pour les transactions ACID et d'autres fonctionnalités. Bien que Lake Formation soit bien intégrée à Athena, elle nécessite une configuration supplémentaire par rapport à l'approche uniquement IAM de ce modèle. Nous vous recommandons d'envisager la décision d'utiliser des contrôles d'accès réservés à Lake Formation ou à IAM dans le contexte plus large de l'architecture globale de votre solution. Les considérations incluent les autres services concernés et la manière dont ils s'intègrent aux deux approches.

# Convertir la fonctionnalité temporelle Teradata NORMALIZE en Amazon Redshift SQL
<a name="convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql"></a>

*Po Hong, Amazon Web Services*

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

**NORMALIZE** est une extension Teradata de la norme ANSI SQL. Lorsqu'une table SQL inclut une colonne contenant un type de données **PERIOD**, **NORMALIZE** combine les valeurs qui se rejoignent ou se chevauchent dans cette colonne pour former une période unique qui consolide plusieurs valeurs de période individuelles. Pour utiliser **NORMALIZE**, au moins une colonne de la liste SQL **SELECT** doit être du type de données temporelles **PERIOD** de Teradata. Pour plus d'informations sur **NORMALIZE**, consultez la [documentation Teradata](https://docs.teradata.com/reader/2_MC9vCtAJRlKle2Rpb0mA/MIGI5UMEwgERC3Un7tEZ6g). 

Amazon Redshift ne prend pas en charge **NORMALIZE**, mais vous pouvez implémenter cette fonctionnalité en utilisant la syntaxe SQL native et la fonction de fenêtre **LAG** dans Amazon Redshift. Ce modèle se concentre sur l'utilisation de l'extension Teradata **NORMALIZE** avec la condition **ON MEETS OR OVERLAPS**, qui est le format le plus courant. Il explique comment cette fonctionnalité fonctionne dans Teradata et comment elle peut être convertie en syntaxe SQL native Amazon Redshift.

## Conditions préalables et limitations
<a name="convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql-prereqs"></a>

**Conditions préalables**
+ Connaissances et expérience de base de Teradata SQL
+ Connaissances et expérience d'Amazon Redshift

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

**Pile technologique source**
+ Entrepôt de données Teradata

**Pile technologique cible**
+ Amazon Redshift

**Architecture cible**

Pour une architecture de haut niveau permettant de migrer une base de données Teradata vers Amazon Redshift, consultez le [modèle Migrer une base de données Teradata vers Amazon Redshift à l'aide des agents d'extraction de données 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). La migration ne convertit pas automatiquement la phrase Teradata **NORMALIZE** en Amazon Redshift SQL. Vous pouvez convertir cette extension Teradata en suivant les instructions de ce modèle.

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

**Code**

Pour illustrer le concept et les fonctionnalités de **NORMALIZE**, considérez la définition de table suivante dans Teradata :

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

Exécutez le code SQL suivant pour insérer des exemples de données dans la table :

```
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;
```

Résultats :

```
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')
```

*Cas d'utilisation de Teradata NORMALIZE*

Ajoutez maintenant la clause SQL Teradata **NORMALIZE** à l'instruction **SELECT** :

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

Cette opération **NORMALIZE** est effectuée sur une seule colonne (`emp_id`). En effet`emp_id=10`, les trois valeurs de période qui se chevauchent en termes de durée fusionnent en une seule valeur de période, comme suit :  

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

L'instruction **SELECT** suivante exécute une opération **NORMALIZE** sur `project_name` et`dept_id`. Notez que la liste **SELECT** ne contient qu'une seule colonne **PERIOD**,`duration`.

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

Sortie :

```
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 équivalent à Amazon Redshift*

Amazon Redshift ne prend actuellement pas en charge le type de données **PERIOD** dans une table. Vous devez plutôt diviser un champ de données Teradata **PERIOD** en deux parties :`start_date, end_date`, comme suit :  

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

Insérez des exemples de données dans le tableau :

```
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;
```

Sortie :

```
 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)
```

Pour réécrire la clause **NORMALIZE** de Teradata, vous pouvez utiliser la [fonction de fenêtre LAG dans Amazon](https://docs.aws.amazon.com/redshift/latest/dg/r_WF_LAG.html) Redshift. Cette fonction renvoie les valeurs d'une ligne à un décalage donné au-dessus (avant) de la ligne actuelle de la partition.

Vous pouvez utiliser la fonction **LAG** pour identifier chaque ligne qui commence une nouvelle période en déterminant si une période correspond ou chevauche la période précédente (0 dans l'affirmative et 1 dans le cas contraire). Lorsque cet indicateur est additionné de manière cumulative, il fournit un identifiant de groupe qui peut être utilisé dans la clause externe **Group By** pour obtenir le résultat souhaité dans Amazon Redshift.  

Voici un exemple d'instruction SQL Amazon Redshift qui utilise **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;
```

Sortie :

```
 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)
```

L'instruction SQL Amazon Redshift suivante se normalise uniquement sur la colonne : `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;
```

Sortie :  

```
 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)
```

** **

L'instruction SQL Amazon Redshift suivante est normalisée sur les colonnes et : `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;
```

Sortie :

```
 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)
```

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

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


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez votre code Teradata SQL. | Utilisez la phrase NORMALIZE en fonction de vos besoins. | SQL Developer | 
| Convertissez le code en Amazon Redshift SQL. | Pour convertir votre code, suivez les instructions de la section « Outils » de ce modèle. | SQL Developer | 
| Exécutez le code dans Amazon Redshift. | Créez votre table, chargez des données dans la table et exécutez votre code dans Amazon Redshift. | SQL Developer | 

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

**Références**
+ [Fonctionnalité temporelle Teradata NORMALIZE](https://docs.teradata.com/reader/2_MC9vCtAJRlKle2Rpb0mA/MIGI5UMEwgERC3Un7tEZ6g) (documentation Teradata)
+ [Fonction de fenêtre LAG](https://docs.aws.amazon.com/redshift/latest/dg/r_WF_LAG.html) (documentation Amazon Redshift)
+ [Migrer vers Amazon Redshift (site](https://aws.amazon.com/redshift/data-warehouse-migration/) Web AWS)
+ [Migrer une base de données Teradata vers Amazon Redshift à l'aide des agents d'extraction de données 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) (AWS Prescriptive Guidance)
+ [Convertir la fonctionnalité Teradata RESET WHEN en Amazon Redshift](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/convert-the-teradata-reset-when-feature-to-amazon-redshift-sql.html) SQL (AWS Prescriptive Guidance)

**Outils**
+ [Outil de conversion de schéma AWS (AWS SCT)](https://aws.amazon.com/dms/schema-conversion-tool/)

**Partenaires**
+ [AWS Migration Competency Partners](https://aws.amazon.com/migration/partner-solutions/#delivery)

# Convertir la fonctionnalité Teradata RESET WHEN en Amazon Redshift SQL
<a name="convert-the-teradata-reset-when-feature-to-amazon-redshift-sql"></a>

*Po Hong, Amazon Web Services*

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

**RESET WHEN** est une fonctionnalité Teradata utilisée dans les fonctions des fenêtres analytiques SQL. Il s'agit d'une extension de la norme ANSI SQL. **RESET WHEN** détermine la partition sur laquelle une fonction de fenêtre SQL fonctionne en fonction d'une condition spécifiée. Si la condition est définie sur **VRAI**, une nouvelle sous-partition dynamique est créée à l'intérieur de la partition de fenêtre existante. Pour plus d'informations sur **RESET WHEN**, consultez la [documentation Teradata](https://docs.teradata.com/reader/1DcoER_KpnGTfgPinRAFUw/b7wL86OoMTPno6hrSPNdDg).

Amazon Redshift ne prend pas en charge les fonctions **RESET WHEN** dans les fenêtres SQL. Pour implémenter cette fonctionnalité, vous devez convertir **RESET WHEN** en syntaxe SQL native dans Amazon Redshift et utiliser plusieurs fonctions imbriquées. Ce modèle montre comment utiliser la fonctionnalité Teradata **RESET WHEN** et comment la convertir en syntaxe SQL Amazon Redshift. 

## Conditions préalables et limitations
<a name="convert-the-teradata-reset-when-feature-to-amazon-redshift-sql-prereqs"></a>

**Conditions préalables**
+ Connaissances de base de l'entrepôt de données Teradata et de sa syntaxe SQL
+ Bonne compréhension d'Amazon Redshift et de sa syntaxe SQL

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

**Pile technologique source**
+ Entrepôt de données Teradata

**Pile technologique cible**
+ Amazon Redshift

**Architecture**

Pour une architecture de haut niveau permettant de migrer une base de données Teradata vers Amazon Redshift, consultez le [modèle Migrer une base de données Teradata vers Amazon Redshift à l'aide des agents d'extraction de données 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). La migration ne convertit pas automatiquement la phrase Teradata **RESET WHEN** en Amazon Redshift SQL. Vous pouvez convertir cette extension Teradata en suivant les instructions de la section suivante.

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

**Code**

Pour illustrer le concept de **RESET WHEN**, considérez la définition de table suivante dans Teradata :

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

Exécutez le code SQL suivant pour insérer des exemples de données dans la table :

```
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;
```

Le tableau d'exemple contient les données suivantes :


| 
| 
| account\$1id | ID du mois | 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 | 

Pour chaque compte, supposons que vous souhaitiez analyser la séquence des augmentations mensuelles consécutives du solde. Lorsque le solde d'un mois est inférieur ou égal au solde du mois précédent, il est nécessaire de remettre le compteur à zéro et de redémarrer.

*Cas d'utilisation de Teradata RESET WHEN*

Pour analyser ces données, Teradata SQL utilise une fonction de fenêtre avec un agrégat imbriqué et une phrase **RESET WHEN**, comme suit :

```
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;
```

Sortie :


| 
| 
|  account\$1id | ID du mois | balance | augmentation du solde | 
| --- |--- |--- |--- |
| 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 | 

La requête est traitée comme suit dans Teradata :

1. La fonction d'agrégation **SUM (balance)** calcule la somme de tous les soldes d'un compte donné au cours d'un mois donné.

1. Nous vérifions si le solde d'un mois donné (pour un compte donné) est supérieur au solde du mois précédent.

1. Si le solde augmente, nous suivons une valeur de comptage cumulée. Si la condition **RESET WHEN** prend la valeur **fausse**, ce qui signifie que le solde a augmenté au fil des mois, nous continuons à augmenter le nombre.

1. La fonction analytique ordonnée **ROW\$1NUMBER ()** calcule la valeur du comptage. Lorsque nous atteignons un mois dont le solde est inférieur ou égal au solde du mois précédent, la condition **RESET WHEN** devient **vraie**. Si c'est le cas, nous démarrons une nouvelle partition et **ROW\$1NUMBER () recommence** le décompte à partir de 1. Nous utilisons **les lignes comprises entre 1 précédent et 1 précédent** pour accéder à la valeur de la ligne précédente.

1. Nous soustrayons 1 pour nous assurer que la valeur du comptage commence par 0.

*SQL équivalent à Amazon Redshift*

Amazon Redshift ne prend pas en charge la phrase **RESET WHEN** dans une fonction de fenêtre d'analyse SQL.  Pour obtenir le même résultat, vous devez réécrire le code SQL Teradata à l'aide de la syntaxe SQL native d'Amazon Redshift et de sous-requêtes imbriquées, comme suit : 

```
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;
```

Amazon Redshift ne prenant pas en charge les fonctions de fenêtre imbriquées dans la clause **SELECT** d'une seule instruction SQL, vous devez utiliser deux sous-requêtes imbriquées.
+ Dans la sous-requête interne (alias A), un indicateur de partition dynamique (**dynamic\$1part**) est créé et renseigné. **dynamic\$1part** est défini sur 1 si le solde d'un mois est inférieur ou égal au solde du mois précédent ; dans le cas contraire, il est défini sur 0. 
+ **Dans la couche suivante (alias B), un attribut **new\$1dynamic\$1part** est généré à la suite d'une fonction de fenêtre SUM.** 
+ Enfin, vous ajoutez **new\$1dynamic\$1part** en tant que nouvel attribut de partition (partition **dynamique) à l'attribut de partition** existant (**account\$1id) et vous appliquez la même fonction de fenêtre ROW\$1NUMBER** **() que dans Teradata (avec moins un)**. 

Après ces modifications, Amazon Redshift SQL génère le même résultat que Teradata.

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

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


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez votre fonction de fenêtre Teradata. | Utilisez des agrégats imbriqués et la phrase RESET WHEN selon vos besoins. | SQL Developer | 
| Convertissez le code en Amazon Redshift SQL. | Pour convertir votre code, suivez les instructions de la section « Outils » de ce modèle. | SQL Developer | 
| Exécutez le code dans Amazon Redshift. | Créez votre table, chargez des données dans la table et exécutez votre code dans Amazon Redshift. | SQL Developer | 

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

**Références**
+ [Phrase RÉINITIALISER QUAND](https://docs.teradata.com/reader/1DcoER_KpnGTfgPinRAFUw/b7wL86OoMTPno6hrSPNdDg) (documentation Teradata)
+ [Explication « RÉINITIALISER QUAND](https://stackoverflow.com/questions/53344536/teradata-reset-when-partition-by-order-by) » (Stack Overflow)
+ [Migrer vers Amazon Redshift (site](https://aws.amazon.com/redshift/data-warehouse-migration/) Web AWS)
+ [Migrer une base de données Teradata vers Amazon Redshift à l'aide des agents d'extraction de données 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) (AWS Prescriptive Guidance)
+ [Convertir la fonctionnalité temporelle Teradata NORMALIZE en Amazon Redshift](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql.html) SQL (AWS Prescriptive Guidance)

**Outils**
+ [Outil de conversion de schéma AWS (AWS SCT)](https://aws.amazon.com/dms/schema-conversion-tool/)

**Partenaires**
+ [AWS Migration Competency Partners](https://aws.amazon.com/migration/partner-solutions/#delivery)

# Déployez et gérez un lac de données sans serveur sur le cloud AWS en utilisant l'infrastructure sous forme de code
<a name="deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code"></a>

*Kirankumar Chandrashekar et Abdel Jaidi, Amazon Web Services*

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

Ce modèle décrit comment utiliser l'[informatique sans serveur](https://aws.amazon.com/serverless/) et l'[infrastructure en tant que code](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html) (IaC) pour implémenter et administrer un lac de données sur le cloud Amazon Web Services (AWS). Ce modèle est basé sur l'atelier [Serverless Data Lake Framework (SDLF)](https://sdlf.workshop.aws/) développé par AWS.

Le SDLF est un ensemble de ressources réutilisables qui accélèrent la mise à disposition de lacs de données d'entreprise sur le cloud AWS et contribuent à accélérer le déploiement en production. Il est utilisé pour implémenter la structure de base d'un lac de données en suivant les meilleures pratiques.

SDLF met en œuvre un processus d'intégration/déploiement continu (CI/CD) tout au long du déploiement du code et de l'infrastructure en utilisant des services AWS tels qu'AWS, CodePipeline AWS CodeBuild et AWS. CodeCommit

Ce modèle utilise plusieurs services sans serveur AWS pour simplifier la gestion des lacs de données. Il s'agit notamment d'Amazon Simple Storage Service (Amazon S3) et Amazon DynamoDB pour le stockage, d'AWS Lambda et d'AWS Glue pour l'informatique, et d'Amazon Events, Amazon Simple Queue Service (Amazon SQS) CloudWatch et d'AWS Step Functions pour l'orchestration.

AWS CloudFormation et les services de code AWS agissent en tant que couche IaC pour fournir des déploiements rapides et reproductibles avec des opérations et une administration faciles.

## Conditions préalables et limitations
<a name="deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif.
+ [Interface de ligne de commande AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html), installée et configurée. 
+ Un client Git, installé et configuré.
+ L'[atelier SDLF](https://sdlf.workshop.aws/), ouvert dans une fenêtre de navigateur Web et prêt à être utilisé. 

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

![\[Implémentation et administration d'un lac de données sur le cloud AWS.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/f4fc3ad2-1c4f-45ea-bc86-2db13105a173/images/e0cfff30-f0f8-4fc1-8e84-a152ef615c58.png)


 Le schéma d'architecture illustre un processus piloté par les événements avec les étapes suivantes. 

1. Une fois qu'un fichier est ajouté au compartiment S3 de données brutes, une notification d'événement Amazon S3 est placée dans une file d'attente SQS. Chaque notification est envoyée sous forme de fichier JSON, qui contient des métadonnées telles que le nom du compartiment S3, la clé de l'objet ou l'horodatage.

1. Cette notification est consommée par une fonction Lambda qui achemine l'événement vers le processus d'extraction, de transformation et de chargement (ETL) approprié en fonction des métadonnées. La fonction Lambda peut également utiliser des configurations contextuelles stockées dans une table Amazon DynamoDB. Cette étape permet le découplage et la mise à l'échelle vers plusieurs applications du lac de données.

1. L'événement est acheminé vers la première fonction Lambda du processus ETL, qui transforme et déplace les données de la zone de données brutes vers la zone intermédiaire du lac de données. La première étape consiste à mettre à jour le catalogue complet. Il s'agit d'une table DynamoDB qui contient toutes les métadonnées de fichier du lac de données. Chaque ligne de ce tableau contient des métadonnées opérationnelles relatives à un seul objet stocké dans Amazon S3. Un appel synchrone est effectué vers une fonction Lambda qui effectue une légère transformation, opération peu coûteuse en termes de calcul (telle que la conversion d'un fichier d'un format à un autre), sur l'objet S3. Comme un nouvel objet a été ajouté au compartiment S3 intermédiaire, le catalogue complet est mis à jour et un message est envoyé à la file d'attente SQS en attente de la phase suivante de l'ETL.

1. Une règle CloudWatch Events déclenche une fonction Lambda toutes les 5 minutes. Cette fonction vérifie si des messages ont été remis à la file d'attente SQS lors de la phase ETL précédente. Si un message a été remis, la fonction Lambda lance la deuxième fonction d'[AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/sample-start-workflow.html) dans le processus ETL.

1. Une transformation lourde est ensuite appliquée à un lot de fichiers. Cette transformation lourde est une opération coûteuse en termes de calcul, telle qu'un appel synchrone vers une tâche AWS Glue, une tâche AWS Fargate, une étape Amazon EMR ou un bloc-notes Amazon. SageMaker Les métadonnées des tables sont extraites des fichiers de sortie à l'aide d'un robot d'exploration AWS Glue, qui met à jour le catalogue AWS Glue. Les métadonnées des fichiers sont également ajoutées à la table complète du catalogue dans DynamoDB. Enfin, une étape de qualité des données utilisant [Deequ](https://github.com/awslabs/deequ) est également exécutée.

**Pile technologique**
+  CloudWatch Événements Amazon
+ AWS CloudFormation
+ AWS CodePipeline
+ AWS CodeBuild
+ AWS CodeCommit
+ Amazon DynamoDB
+ AWS Glue
+ AWS Lambda
+ Amazon S3
+ Amazon SQS
+ AWS Step Functions

## Outils
<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 fournit un flux en temps quasi réel d'événements système décrivant les modifications apportées aux ressources AWS.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) : CloudFormation permet de créer et de fournir des déploiements d'infrastructure AWS de manière prévisible et répétée.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) CodeBuild est un service de génération entièrement géré qui compile votre code source, exécute des tests unitaires et produit des artefacts prêts à être déployés.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) CodeCommit est un service de contrôle de version hébergé par AWS que vous pouvez utiliser pour stocker et gérer des actifs privés (tels que le code source et les fichiers binaires).
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) CodePipeline est un service de livraison continue que vous pouvez utiliser pour modéliser, visualiser et automatiser les étapes nécessaires à la publication continue des modifications apportées à vos logiciels.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) — DynamoDB est un service de base de données NoSQL entièrement géré qui fournit des performances rapides et prévisibles ainsi qu'une évolutivité. 
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) — AWS Glue est un service ETL entièrement géré qui facilite la préparation et le chargement des données à des fins d'analyse.
+ [AWS Lambda — Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) prend en charge l'exécution de code sans provisionner ni gérer de serveurs. Lambda exécute le code uniquement lorsque cela est nécessaire et se met à l’échelle automatiquement, qu’il s’agisse de quelques requêtes par jour ou de milliers de requêtes par seconde. 
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html) — Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets hautement évolutif. Amazon S3 peut être utilisé pour un large éventail de solutions de stockage, notamment les sites Web, les applications mobiles, les sauvegardes et les lacs de données.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) - AWS Step Functions est un orchestrateur de fonctions sans serveur qui facilite le séquençage des fonctions AWS Lambda et de multiples services AWS dans des applications critiques pour l'entreprise.
+ [Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) — Amazon Simple Queue Service (Amazon SQS) est un service de mise en file d'attente de messages entièrement géré qui vous aide à découpler et à dimensionner les microservices, les systèmes distribués et les applications sans serveur.
+ [Deequ](https://github.com/awslabs/deequ) — Deequ est un outil qui vous aide à calculer les mesures de qualité des données pour de grands ensembles de données, à définir et à vérifier les contraintes de qualité des données et à rester informé des changements dans la distribution des données.

**Référentiel de code**

Le code source et les ressources du SDLF sont disponibles dans le [ GitHub référentiel AWS Labs](https://github.com/awslabs/aws-serverless-data-lake-framework/).

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

### Configurer le CI/CD pipeline pour approvisionner l'IaC
<a name="set-up-the-ci-cd-pipeline-to-provision-iac"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez le CI/CD pipeline pour gérer l'IaC pour le lac de données. | Connectez-vous à l'AWS Management Console et suivez les étapes décrites dans la section [Configuration initiale](https://sdlf.workshop.aws/en/10-deployment/100-setup.html) de l'atelier SDLF. Cela crée les CI/CD ressources initiales, telles que CodeCommit les référentiels, les CodeBuild environnements et les CodePipeline pipelines qui fournissent et gèrent l'IaC pour le lac de données. | DevOps ingénieur | 

### Contrôle de version de l'iAc
<a name="version-control-the-iac"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Clonez le CodeCommit dépôt sur votre machine locale. | Suivez les étapes décrites dans la section [Déploiement des fondations](https://sdlf.workshop.aws/en/10-deployment/200-foundations.html) de l'atelier SDLF. Cela vous permet de cloner le dépôt Git qui héberge IaC dans votre environnement local. Pour plus d'informations, consultez la section [Connexion aux CodeCommit référentiels](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html) dans la CodeCommit documentation. | DevOps ingénieur | 
| Modifiez les CloudFormation modèles. | Utilisez votre poste de travail local et un éditeur de code pour modifier les CloudFormation modèles en fonction de vos cas d'utilisation ou de vos besoins. Commettez-les dans le dépôt Git cloné localement. Pour plus d'informations, consultez la section [Travailler avec les CloudFormation modèles AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html) dans la CloudFormation documentation AWS. | DevOps ingénieur | 
| Transférez les modifications au CodeCommit référentiel.  | Votre code d'infrastructure est désormais sous contrôle de version et les modifications apportées à votre base de code sont suivies. Lorsque vous apportez une modification au CodeCommit référentiel, celle-ci est CodePipeline automatiquement appliquée à votre infrastructure et transmise à CodeBuild. Si vous utilisez l'interface de ligne de commande AWS SAM dans CodeBuild, exécutez les `sam deploy` commandes `sam package` and. Si vous utilisez l'AWS CLI, exécutez les `aws cloudformation deploy` commandes `aws cloudformation package` and. | DevOps ingénieur | 

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

**Configurer le CI/CD pipeline pour approvisionner l'IaC**
+ [Atelier SDLF — Configuration initiale](https://sdlf.workshop.aws/en/10-deployment/100-setup.html)

**Contrôle de version de l'iAc**
+ [Atelier SDLF — Déployer les fondations](https://sdlf.workshop.aws/en/10-deployment/200-foundations.html)
+ [Connexion aux CodeCommit référentiels](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html)
+ [Utilisation de CloudFormation modèles AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html)

**Autres ressources**
+ [Architecture de référence du pipeline d'analyse de données sans serveur AWS](https://aws.amazon.com/blogs/big-data/aws-serverless-data-analytics-pipeline-reference-architecture/)
+ [Documentation du SDLF](https://sdlf.readthedocs.io/en/latest/)

# Appliquer le balisage des clusters Amazon EMR au lancement
<a name="enforce-tagging-of-amazon-emr-clusters-at-launch"></a>

*Priyanka Chaudhary, Amazon Web Services*

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

Ce modèle fournit un contrôle de sécurité qui garantit que les clusters Amazon EMR sont balisés lors de leur création. 

Amazon EMR est un service Amazon Web Services (AWS) permettant de traiter et d'analyser de grandes quantités de données. Amazon EMR propose un service extensible à faible configuration qui constitue une alternative plus simple à l'exécution de clusters informatiques en interne. Vous pouvez utiliser le balisage pour classer les ressources AWS de différentes manières, par exemple en fonction de leur objectif, de leur propriétaire ou de leur environnement. Par exemple, vous pouvez baliser vos clusters Amazon EMR en attribuant des métadonnées personnalisées à chaque cluster. Une balise est composée d'une clé et d'une valeur que vous définissez. Nous vous recommandons de créer un ensemble cohérent de balises pour répondre aux exigences de votre organisation. Lorsque vous ajoutez une balise à un cluster Amazon EMR, la balise est également propagée à chaque instance Amazon Elastic Compute Cloud (Amazon EC2) active associée au cluster. De même, lorsque vous supprimez une balise d'un cluster Amazon EMR, cette balise est également supprimée de chaque EC2 instance active associée.

La commande de détection surveille les appels d'API et lance un événement Amazon CloudWatch Events pour les [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), et [CreateTags](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html) APIs. L'événement appelle AWS Lambda, qui exécute un script Python. La fonction Python obtient l'ID du cluster Amazon EMR à partir de l'entrée JSON de l'événement et effectue les vérifications suivantes :
+ Vérifiez si le cluster Amazon EMR est configuré avec les noms de balises que vous spécifiez.
+ Dans le cas contraire, envoyez une notification Amazon Simple Notification Service (Amazon SNS) à l'utilisateur avec les informations pertinentes : le nom du cluster Amazon EMR, les détails de la violation, la région AWS, le compte AWS et le nom de ressource Amazon (ARN) pour Lambda d'où provient cette notification.

## Conditions préalables et limitations
<a name="enforce-tagging-of-amazon-emr-clusters-at-launch-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ Un bucket Amazon Simple Storage Service (Amazon S3) pour télécharger le code Lambda fourni. Vous pouvez également créer un compartiment S3 à cette fin, comme décrit dans la section *Epics*.
+ Adresse e-mail active à laquelle vous souhaitez recevoir des notifications de violation.
+ Liste des balises obligatoires que vous souhaitez vérifier.

**Limites**
+ Ce contrôle de sécurité est régional. Vous devez le déployer dans chaque région AWS que vous souhaitez surveiller.

**Versions du produit**
+ Amazon EMR version 4.8.0 et versions ultérieures.

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

**Architecture du flux de travail**

![\[Lancement du cluster, surveillance de l'utilisation APIs, génération d'événements, appel de la fonction Lambda, notification envoyée.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/1a4fc0f8-b0c9-4391-9c79-9eb3898d6ecb/images/0d95c414-69d1-4f29-a9e7-09f202e27014.png)


**Automatisation et mise à l'échelle**
+ Si vous utilisez [AWS Organizations](https://aws.amazon.com/organizations/), vous pouvez utiliser [AWS Cloudformation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) pour déployer ce modèle sur plusieurs comptes que vous souhaitez surveiller.

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

**Services AWS**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) — AWS vous CloudFormation aide à modéliser et à configurer vos ressources AWS, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie. Vous pouvez utiliser un modèle pour décrire vos ressources et leurs dépendances, puis les lancer et les configurer ensemble sous forme de pile, au lieu de gérer les ressources individuellement. Vous pouvez gérer et approvisionner des piles sur plusieurs comptes AWS et régions AWS.
+ [Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html) - Amazon CloudWatch Events fournit un flux quasi en temps réel d'événements système décrivant les modifications apportées aux ressources AWS.
+ [Amazon EMR - Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) est un service Web qui simplifie la gestion des infrastructures de mégadonnées et le traitement efficace de grandes quantités de données. 
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) — AWS Lambda est un service de calcul qui prend en charge l'exécution de code sans provisionner ni gérer de serveurs. Lambda exécute le code uniquement lorsque cela est nécessaire et se met à l’échelle automatiquement, qu’il s’agisse de quelques requêtes par jour ou de milliers de requêtes par seconde. 
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) — Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets. Vous pouvez utiliser Amazon S3 pour stocker et récupérer n'importe quelle quantité de données, n'importe quand et depuis n'importe quel emplacement sur le Web.
+ [Amazon SNS —](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) Amazon Simple Notification Service (Amazon SNS) coordonne et gère la distribution ou l'envoi de messages entre les éditeurs et les clients, y compris les serveurs Web et les adresses e-mail. Les abonnés reçoivent tous les messages publiés dans les rubriques auxquelles ils sont abonnés, et tous les abonnés à une rubrique reçoivent les mêmes messages.

**Code**

Ce modèle inclut les pièces jointes suivantes :
+ `EMRTagValidation.zip`— Le code Lambda pour le contrôle de sécurité.
+ `EMRTagValidation.yml`— Le CloudFormation modèle qui définit l'événement et la fonction Lambda.

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

### Configuration du compartiment S3
<a name="set-up-the-s3-bucket"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Définissez le compartiment S3. | Sur la [console Amazon S3](https://console.aws.amazon.com/s3/), choisissez ou créez un compartiment S3 pour héberger le fichier .zip de code Lambda. Ce compartiment S3 doit se trouver dans la même région AWS que le cluster Amazon EMR que vous souhaitez surveiller. Un nom de compartiment Amazon S3 est globalement unique et l'espace de noms est partagé entre tous les comptes AWS. Le nom du compartiment S3 ne peut pas inclure de barres obliques en tête. | Architecte du cloud | 
| Téléchargez le code Lambda. | Téléchargez le fichier .zip de code Lambda fourni dans la section *Pièces jointes* dans le compartiment S3.                                               | Architecte du cloud | 

### Déployer le CloudFormation modèle AWS
<a name="deploy-the-aws-cloudformation-template"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Lancez le CloudFormation modèle AWS. | Ouvrez la [ CloudFormation console AWS](https://console.aws.amazon.com/cloudformation/.) dans la même région AWS que votre compartiment S3 et déployez le modèle. Pour plus d'informations sur le déploiement de CloudFormation modèles AWS, consultez la section [Création d'une pile sur la CloudFormation console AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) dans la CloudFormation documentation. | Architecte du cloud | 
| Complétez les paramètres du modèle. | Lorsque vous lancez le modèle, les informations suivantes vous sont demandées :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/enforce-tagging-of-amazon-emr-clusters-at-launch.html) | Architecte du cloud | 

### Confirmer l'abonnement.
<a name="confirm-the-subscription"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Confirmez votre abonnement. | Lorsque le CloudFormation modèle est déployé avec succès, il envoie un e-mail d'abonnement à l'adresse e-mail que vous avez fournie. Vous devez confirmer cet abonnement par e-mail pour commencer à recevoir des notifications de violation. | Architecte du cloud | 

## Ressources connexes
<a name="enforce-tagging-of-amazon-emr-clusters-at-launch-resources"></a>
+ [Guide du développeur AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)
+ [Balisage de clusters dans Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html)

## Pièces jointes
<a name="attachments-1a4fc0f8-b0c9-4391-9c79-9eb3898d6ecb"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/1a4fc0f8-b0c9-4391-9c79-9eb3898d6ecb/attachments/attachment.zip)

# Assurez-vous que la connexion Amazon EMR à Amazon S3 est activée au lancement
<a name="ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch"></a>

*Priyanka Chaudhary, Amazon Web Services*

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

Ce modèle fournit un contrôle de sécurité qui surveille la configuration de journalisation pour les clusters Amazon EMR exécutés sur Amazon Web Services (AWS).

Amazon EMR est un outil AWS pour le traitement et l'analyse des mégadonnées. Amazon EMR propose le service extensible à faible configuration comme alternative à l'exécution de clusters informatiques en interne. Amazon EMR fournit deux types de clusters EMR.
+ Clusters **Amazon EMR transitoires** : les clusters Amazon EMR transitoires s'arrêtent automatiquement et cessent d'entraîner des coûts une fois le traitement terminé.
+ Clusters **Amazon EMR persistants : les clusters** Amazon EMR persistants continuent de s'exécuter une fois la tâche de traitement des données terminée.

Amazon EMR et Hadoop génèrent des fichiers journaux qui indiquent l'état du cluster. Par défaut, ils sont écrits sur le nœud principal dans le répertoire **mnt/var/log//**. Selon la façon dont vous configurez le cluster lorsque vous le lancez, vous pouvez également enregistrer ces journaux dans Amazon Simple Storage Service (Amazon S3) et les consulter via l'outil de débogage graphique. Notez que la journalisation Amazon S3 ne peut être spécifiée que lorsque le cluster est lancé. Avec cette configuration, les journaux sont envoyés du nœud principal à l'emplacement Amazon S3 toutes les 5 minutes. Pour les clusters transitoires, la journalisation Amazon S3 est importante car les clusters disparaissent une fois le traitement terminé, et ces fichiers journaux peuvent être utilisés pour déboguer les tâches ayant échoué.

Le modèle utilise un CloudFormation modèle AWS pour déployer un contrôle de sécurité qui surveille les appels d'API et lance Amazon CloudWatch Events le « »RunJobFlow. Le déclencheur invoque AWS Lambda, qui exécute un script Python. La fonction Lambda récupère l'ID du cluster EMR à partir de l'entrée JSON de l'événement et vérifie également la présence d'un URI du journal Amazon S3. Si aucune URI Amazon S3 n'est trouvée, la fonction Lambda envoie une notification Amazon Simple Notification Service (Amazon SNS) détaillant le nom du cluster EMR, les détails de la violation, la région AWS, le compte AWS et le nom de ressource Lambda Amazon (ARN) d'où provient la notification.

## Conditions préalables et limitations
<a name="ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ Un compartiment S3 pour le fichier .zip de code Lambda
+ Adresse e-mail à laquelle vous souhaitez recevoir la notification de violation

**Limites**
+ Ce contrôle de détection est régional et doit être déployé dans les régions AWS que vous souhaitez surveiller.

**Versions du produit**
+ Amazon EMR version 4.8.0 et versions ultérieures

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

**Pile technologique cible**
+ Événement Amazon CloudWatch Events
+ Amazon EMR
+ Fonction Lambda
+ compartiment S3
+ Amazon SNS

**Architecture cible**

![\[Flux de travail permettant de s'assurer que la journalisation d'Amazon EMR sur Amazon S3 est activée au lancement.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/079af32e-0418-4bb2-bc20-c67ea5ac3b6e/images/3ba125cb-018a-4ace-838f-8c20992ecc20.png)


**Automatisation et évolutivité**
+ Si vous utilisez AWS Organizations, vous pouvez utiliser [AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) pour déployer ce modèle sur plusieurs comptes que vous souhaitez surveiller.

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

**Outils**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) — AWS vous CloudFormation aide à modéliser et à configurer les ressources AWS en utilisant l'infrastructure sous forme de code.
+ [AWS Cloudwatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html) — AWS CloudWatch Events fournit un flux quasi en temps réel d'événements système décrivant les modifications apportées aux ressources AWS.
+ [Amazon EMR — Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) est une plateforme de clusters gérés qui simplifie l'exécution de frameworks de mégadonnées.
+ [AWS Lambda](https://aws.amazon.com/lambda/) — AWS Lambda prend en charge l'exécution de code sans provisionner ni gérer de serveurs. Lambda exécute le code uniquement lorsque cela est nécessaire et se met à l’échelle automatiquement, qu’il s’agisse de quelques requêtes par jour ou de milliers de requêtes par seconde.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html) — Amazon S3 est une interface de services Web que vous pouvez utiliser pour stocker et récupérer n'importe quel volume de données, où que vous soyez sur le Web.
+ [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) — Amazon SNS est un service Web qui coordonne et gère la distribution ou l'envoi de messages entre les éditeurs et les clients, y compris les serveurs Web et les adresses e-mail.

**Code**
+ Un fichier .zip du projet est disponible en pièce jointe.

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

### Définition du compartiment S3
<a name="define-the-s3-bucket"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Définissez le compartiment S3. | Pour héberger le fichier .zip de code Lambda, choisissez ou créez un compartiment S3 avec un nom unique qui ne contient pas de barres obliques en tête. Le nom d'un compartiment S3 est unique au monde et l'espace de noms est partagé par tous les comptes AWS. Votre compartiment S3 doit se trouver dans la même région AWS que le cluster Amazon EMR en cours d'évaluation. | Architecte du cloud | 

### Téléchargez le code Lambda dans le compartiment S3
<a name="upload-the-lambda-code-to-the-s3-bucket"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Téléchargez le code Lambda dans le compartiment S3. | Téléchargez le fichier .zip de code Lambda fourni dans la section « Pièces jointes » dans le compartiment S3. Le compartiment S3 doit se trouver dans la même région que le cluster Amazon EMR en cours d'évaluation. | Architecte du cloud | 

### Déployer le CloudFormation modèle AWS
<a name="deploy-the-aws-cloudformation-template"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez le CloudFormation modèle AWS. | Sur la CloudFormation console AWS, dans la même région que votre compartiment S3, déployez le CloudFormation modèle AWS fourni en pièce jointe à ce modèle. Dans l'épopée suivante, indiquez les valeurs des paramètres. Pour plus d'informations sur le déploiement CloudFormation de modèles AWS, consultez la section « Ressources associées ». | Architecte du cloud | 

### Complétez les paramètres dans le CloudFormation modèle AWS
<a name="complete-the-parameters-in-the-aws-cloudformation-template"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Nommez le compartiment S3. | Entrez le nom du compartiment S3 que vous avez créé dans le premier épisode épique. | Architecte du cloud | 
| Fournissez la clé Amazon S3. | <directory><file-name>Indiquez l'emplacement du fichier .zip de code Lambda dans votre compartiment S3, sans barres obliques (par exemple,/.zip). | Architecte du cloud | 
| Indiquez une adresse e-mail. | Fournissez une adresse e-mail active pour recevoir les notifications Amazon SNS. | Architecte du cloud | 
| Définissez le niveau de journalisation. | Définissez le niveau et la fréquence de journalisation pour votre fonction Lambda. « Info » désigne des messages d'information détaillés sur le déroulement de l'application. Le terme « Erreur » désigne les événements d'erreur susceptibles de permettre à l'application de continuer à fonctionner. Le terme « Avertissement » désigne des situations potentiellement dangereuses. | Architecte du cloud | 

### Confirmer l'abonnement.
<a name="confirm-the-subscription"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Confirmez votre abonnement. | Lorsque le modèle est déployé avec succès, il envoie un e-mail d'abonnement à l'adresse e-mail fournie. Vous devez confirmer cet abonnement par e-mail pour recevoir des notifications de violation. | Architecte du cloud | 

## Ressources connexes
<a name="ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch-resources"></a>
+ [AWS Lambda](https://aws.amazon.com/lambda/)
+ [Journalisation Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-debugging.html)
+ [Déploiement de CloudFormation modèles AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)

## Pièces jointes
<a name="attachments-079af32e-0418-4bb2-bc20-c67ea5ac3b6e"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/079af32e-0418-4bb2-bc20-c67ea5ac3b6e/attachments/attachment.zip)

# Génération de données de test à l'aide d'une tâche AWS Glue et de Python
<a name="generate-test-data-using-an-aws-glue-job-and-python"></a>

*Moinul Al-Mamun, Amazon Web Services*

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

Ce modèle vous montre comment générer rapidement et facilement des millions d'exemples de fichiers simultanément en créant une tâche AWS Glue écrite en Python. Les fichiers d'exemple sont stockés dans un compartiment Amazon Simple Storage Service (Amazon S3). La capacité à générer rapidement un grand nombre de fichiers d'exemple est importante pour tester ou évaluer les services dans le cloud AWS. Par exemple, vous pouvez tester les performances des DataBrew tâches AWS Glue Studio ou AWS Glue en analysant les données de millions de petits fichiers contenus dans un préfixe Amazon S3.

Bien que vous puissiez utiliser d'autres services AWS pour générer des exemples de jeux de données, nous vous recommandons d'utiliser AWS Glue. Vous n'avez pas besoin de gérer d'infrastructure car AWS Glue est un service de traitement de données sans serveur. Vous pouvez simplement apporter votre code et l'exécuter dans un cluster AWS Glue. En outre, AWS Glue fournit, configure et adapte les ressources nécessaires à l'exécution de vos tâches. Vous ne payez que pour les ressources utilisées par vos tâches pendant leur exécution.

## Conditions préalables et limitations
<a name="generate-test-data-using-an-aws-glue-job-and-python-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ Interface de ligne de commande AWS (AWS CLI)[,](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) installée [et](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) configurée pour fonctionner avec le compte AWS

**Versions du produit**
+ Python 3.9
+ Version 2 de l'interface de ligne de commande AWS

**Limites**

Le nombre maximum de tâches AWS Glue par déclencheur est de 50. Pour plus d'informations, consultez la section [Points de terminaison et quotas AWS Glue](https://docs.aws.amazon.com/general/latest/gr/glue.html).

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

Le schéma suivant décrit un exemple d'architecture centré sur une tâche AWS Glue qui écrit sa sortie (c'est-à-dire des fichiers d'exemple) dans un compartiment S3.

![\[Le flux de travail montre qu'AWS CLI lance une tâche AWS Glue qui écrit la sortie dans le compartiment S3.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/f35943e8-3b2b-410e-a3f0-05e1ebd357d0/images/452ccbda-71f2-42b8-976d-bcc968bb1dab.png)


Le diagramme inclut le flux de travail suivant :

1. Vous utilisez l'interface de ligne de commande AWS, la console de gestion AWS ou une API pour lancer la tâche AWS Glue. La CLI ou l'API AWS vous permet d'automatiser la parallélisation de la tâche invoquée et de réduire le temps d'exécution nécessaire à la génération de fichiers d'exemple.

1. La tâche AWS Glue génère le contenu du fichier de manière aléatoire, le convertit au format CSV, puis le stocke sous la forme d'un objet Amazon S3 sous un préfixe commun. La taille de chaque fichier est inférieure à un kilo-octet. La tâche AWS Glue accepte deux paramètres de tâche définis par l'utilisateur : `START_RANGE` et`END_RANGE`. Vous pouvez utiliser ces paramètres pour définir les noms de fichiers et le nombre de fichiers générés dans Amazon S3 par chaque tâche exécutée. Vous pouvez exécuter plusieurs instances de cette tâche en parallèle (par exemple, 100 instances).

## Outils
<a name="generate-test-data-using-an-aws-glue-job-and-python-tools"></a>
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.
+ [L'interface de ligne de commande AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) est un outil open source qui vous permet d'interagir avec les services AWS par le biais de commandes dans votre shell de ligne de commande.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) est un service d'extraction, de transformation et de chargement (ETL) entièrement géré. Il vous aide à classer, nettoyer, enrichir et déplacer les données de manière fiable entre les magasins de données et les flux de données.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) vous aide à gérer en toute sécurité l'accès à vos ressources AWS en contrôlant qui est authentifié et autorisé à les utiliser.

## Bonnes pratiques
<a name="generate-test-data-using-an-aws-glue-job-and-python-best-practices"></a>

Tenez compte des bonnes pratiques AWS Glue suivantes lors de la mise en œuvre de ce modèle :
+ **Utilisez le bon type de travailleur AWS Glue pour réduire les coûts.** Nous vous recommandons de comprendre les différentes propriétés des types de travailleurs, puis de choisir le type de travailleur adapté à votre charge de travail en fonction des besoins en termes de processeur et de mémoire. Pour ce modèle, nous vous recommandons d'utiliser une tâche shell Python comme type de tâche afin de minimiser le DPU et de réduire les coûts. Pour plus d'informations, consultez la section [Ajout de tâches dans AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/add-job.html) dans le manuel AWS Glue Developer Guide.
+ **Utilisez la bonne limite de simultanéité pour adapter votre travail.** Nous vous recommandons de baser la simultanéité maximale de votre tâche AWS Glue sur le temps nécessaire et le nombre de fichiers requis.
+ **Commencez par générer un petit nombre de fichiers.** Pour réduire les coûts et gagner du temps lors de la création de vos tâches AWS Glue, commencez par un petit nombre de fichiers (1 000, par exemple). Cela peut faciliter le dépannage. Si la génération d'un petit nombre de fichiers est réussie, vous pouvez passer à un plus grand nombre de fichiers.
+ **Exécutez d'abord localement.** Pour réduire les coûts et gagner du temps lors de la création de vos tâches AWS Glue, lancez le développement localement et testez votre code. Pour obtenir des instructions sur la configuration d'un conteneur Docker qui peut vous aider à écrire des tâches d'extraction, de transformation et de chargement (ETL) AWS Glue à la fois dans un shell et dans un environnement de développement intégré (IDE), consultez le billet [Developing AWS Glue ETL local à l'aide d'un conteneur](https://aws.amazon.com/blogs/big-data/developing-aws-glue-etl-jobs-locally-using-a-container/) sur le blog AWS Big Data.

Pour en savoir plus sur les meilleures pratiques d'AWS Glue, consultez la section [Meilleures pratiques](https://docs.aws.amazon.com/prescriptive-guidance/latest/serverless-etl-aws-glue/best-practices.html) de la documentation d'AWS Glue.

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

### Création d'un compartiment S3 de destination et d'un rôle IAM
<a name="create-a-destination-s3-bucket-and-iam-role"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un compartiment S3 pour stocker les fichiers. | Créez un [compartiment S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) et un [préfixe à l'](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html)intérieur de celui-ci.Ce modèle utilise l'`s3://{your-s3-bucket-name}/small-files/`emplacement à des fins de démonstration. | Développeur d’applications | 
| Créez et configurez un rôle IAM. | Vous devez créer un rôle IAM que votre tâche AWS Glue peut utiliser pour écrire dans votre compartiment S3.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/generate-test-data-using-an-aws-glue-job-and-python.html) | Développeur d’applications | 

### Création et configuration d'une tâche AWS Glue pour gérer des exécutions simultanées
<a name="create-and-configure-an-aws-glue-job-to-handle-concurrent-runs"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une tâche AWS Glue. | Vous devez créer une tâche AWS Glue qui génère votre contenu et le stocke dans un compartiment S3.Créez une [tâche AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/console-jobs.html), puis configurez votre tâche en effectuant les étapes suivantes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/generate-test-data-using-an-aws-glue-job-and-python.html) | Développeur d’applications | 
| Mettez à jour le code de tâche. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/generate-test-data-using-an-aws-glue-job-and-python.html) | Développeur d’applications | 

### Exécutez le job AWS Glue à partir de la ligne de commande ou de la console
<a name="run-the-aws-glue-job-from-the-command-line-or-console"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Exécutez le job AWS Glue depuis la ligne de commande. | Pour exécuter votre tâche AWS Glue à partir de l'interface de ligne de commande AWS, exécutez la commande suivante à l'aide de vos valeurs :<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>Pour obtenir des instructions sur l'exécution de la tâche AWS Glue depuis l'AWS Management Console, consultez l'article *intitulé Exécuter la tâche AWS Glue dans l'AWS Management Console* sur ce modèle.Nous vous recommandons d'utiliser l'interface de ligne de commande AWS pour exécuter des tâches AWS Glue si vous souhaitez exécuter plusieurs exécutions à la fois avec des paramètres différents, comme indiqué dans l'exemple ci-dessus.Pour générer toutes les commandes de l'AWS CLI requises pour générer un nombre défini de fichiers à l'aide d'un certain facteur de parallélisation, exécutez le code bash suivant (en utilisant vos valeurs) :<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>Si vous utilisez le script ci-dessus, tenez compte des points suivants :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/generate-test-data-using-an-aws-glue-job-and-python.html) Pour voir un exemple de sortie du script ci-dessus, consultez la section *Sortie du script Shell* dans la section *Informations supplémentaires* de ce modèle. | Développeur d’applications | 
| Exécutez la tâche AWS Glue dans l'AWS Management Console. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/generate-test-data-using-an-aws-glue-job-and-python.html) | Développeur d’applications | 
| Vérifiez le statut de votre tâche AWS Glue. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/generate-test-data-using-an-aws-glue-job-and-python.html) | Développeur d’applications | 

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

**Références**
+ [Registre des données ouvertes sur AWS](https://registry.opendata.aws/)
+ [Ensembles de données pour l'analyse](https://aws.amazon.com/marketplace/solutions/data-analytics/data-sets)
+ [Données ouvertes sur AWS](https://aws.amazon.com/opendata/)
+ [Ajouter des tâches dans AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/add-job.html)
+ [Commencer à utiliser AWS Glue](https://aws.amazon.com/glue/getting-started/)

**Guides et modèles**
+ [Bonnes pratiques relatives à AWS Glue](https://docs.aws.amazon.com/prescriptive-guidance/latest/serverless-etl-aws-glue/best-practices.html)
+ [Tests de charge des applications](https://docs.aws.amazon.com/prescriptive-guidance/latest/load-testing/welcome.html)

## Informations supplémentaires
<a name="generate-test-data-using-an-aws-glue-job-and-python-additional"></a>

**Test d'analyse comparative**

Ce modèle a été utilisé pour générer 10 millions de fichiers en utilisant différents paramètres de parallélisation dans le cadre d'un test d'analyse comparative. Le tableau suivant montre le résultat du test :


| 
| 
| Parallélisation | Nombre de fichiers générés par l'exécution d'une tâche | Durée du job | Vitesse | 
| --- |--- |--- |--- |
| 10 | 1 000 000 | 6 heures, 40 minutes | Très lent | 
| 50 | 200 000 | 80 minutes | Modérée | 
| 100 | 100 000 | 40 minutes | Rapide | 

Si vous souhaitez accélérer le processus, vous pouvez configurer davantage d'exécutions simultanées dans la configuration de votre tâche. Vous pouvez facilement ajuster la configuration des tâches en fonction de vos besoins, mais gardez à l'esprit qu'il existe une limite de quota pour le service AWS Glue. Pour plus d'informations, consultez la section [Points de terminaison et quotas AWS Glue](https://docs.aws.amazon.com/general/latest/gr/glue.html).

**Sortie du script Shell**

L'exemple suivant montre la sortie du script shell de la *tâche Run the AWS Glue à partir de l'histoire de la ligne de commande* selon ce modèle.

```
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 ~
```

**FAQ**

*Combien d'exécutions simultanées ou de tâches parallèles dois-je utiliser ?*

Le nombre d'exécutions simultanées et de tâches parallèles dépend du temps nécessaire et du nombre de fichiers de test souhaités. Nous vous recommandons de vérifier la taille des fichiers que vous créez. Vérifiez d'abord le temps nécessaire à une tâche AWS Glue pour générer le nombre de fichiers souhaité. Utilisez ensuite le bon nombre de courses simultanées pour atteindre vos objectifs. Par exemple, si vous supposez que l'exécution de 100 000 fichiers prend 40 minutes mais que votre durée cible est de 30 minutes, vous devez augmenter le paramètre de simultanéité pour votre tâche AWS Glue.

*Quel type de contenu puis-je créer à l'aide de ce modèle ?*

Vous pouvez créer n'importe quel type de contenu, tel que des fichiers texte avec différents délimiteurs (par exemple, PIPE, JSON ou CSV). Ce modèle utilise Boto3 pour écrire dans un fichier, puis enregistre le fichier dans un compartiment S3.

*De quel niveau d'autorisation IAM ai-je besoin dans le compartiment S3 ?*

Vous devez disposer d'une politique basée sur l'identité qui autorise `Write` l'accès aux objets de votre compartiment S3. Pour plus d'informations, consultez [Amazon S3 : autorise l'accès en lecture et en écriture aux objets d'un compartiment S3](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_s3_rw-bucket.html) dans la documentation Amazon S3.

# Ingérez de manière rentable des données IoT directement dans Amazon S3 à l'aide d'AWS IoT Greengrass
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass"></a>

*Sebastian Viviani et Rizwan Syed, Amazon Web Services*

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

Ce modèle vous montre comment ingérer de manière rentable des données de l'Internet des objets (IoT) directement dans un bucket Amazon Simple Storage Service (Amazon S3) à l'aide d'un appareil AWS IoT Greengrass version 2. L'appareil exécute un composant personnalisé qui lit les données IoT et les enregistre dans un stockage persistant (c'est-à-dire un disque ou un volume local). L'appareil compresse ensuite les données IoT dans un fichier Apache Parquet et les télécharge périodiquement dans un compartiment S3.

La quantité et la vitesse des données IoT que vous ingérez ne sont limitées que par les capacités de votre matériel de pointe et la bande passante de votre réseau. Vous pouvez utiliser Amazon Athena pour analyser de manière rentable les données ingérées. Athena prend en charge les fichiers Apache Parquet compressés et la visualisation des données à l'aide d'[Amazon Managed Grafana](https://docs.aws.amazon.com/grafana/latest/userguide/what-is-Amazon-Managed-Service-Grafana.html).

## Conditions préalables et limitations
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ Une [passerelle périphérique](https://docs.aws.amazon.com/greengrass/v1/developerguide/quick-start.html) qui s'exécute sur [AWS IoT Greengrass version 2](https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-v2-whats-new.html) et collecte des données à partir de capteurs (les sources de données et le processus de collecte de données dépassent le cadre de ce modèle, mais vous pouvez utiliser presque tous les types de données de capteurs. Ce modèle utilise un broker [MQTT](https://mqtt.org/) local avec des capteurs ou des passerelles qui publient les données localement.)
+ [Composants, [rôles](https://docs.aws.amazon.com/greengrass/v1/developerguide/service-role.html) et dépendances [du](https://docs.aws.amazon.com/greengrass/v2/developerguide/develop-greengrass-components.html) SDK AWS IoT Greengrass](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#installation)
+ Un [composant de gestionnaire de flux](https://docs.aws.amazon.com/greengrass/v2/developerguide/stream-manager-component.html) pour télécharger les données dans le compartiment S3
+ [SDK AWS pour](https://aws.amazon.com/sdk-for-java/) Java, [SDK AWS pour ou SDK](https://aws.amazon.com/sdk-for-javascript/) [AWS JavaScript pour Python (Boto3) pour exécuter](https://docs.aws.amazon.com/pythonsdk/) APIs

**Limites**
+ Les données de ce modèle ne sont pas téléchargées en temps réel dans le compartiment S3. Il existe un délai, que vous pouvez configurer. Les données sont temporairement mises en mémoire tampon dans le périphérique périphérique, puis téléchargées une fois la période expirée.
+ Le SDK est uniquement disponible en Java, Node.js et Python.

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

**Pile technologique cible**
+ Amazon S3
+ AWS IoT Greengrass
+ courtier MQTT
+ Composant du gestionnaire de flux

**Architecture cible**

Le schéma suivant montre une architecture conçue pour ingérer les données des capteurs IoT et les stocker dans un compartiment S3.

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


Le schéma suivant illustre le flux de travail suivant :

1. Les mises à jour de plusieurs capteurs (par exemple, la température et les vannes) sont publiées sur un courtier MQTT local.

1. Le compresseur de fichiers Parquet abonné à ces capteurs met à jour les rubriques et reçoit ces mises à jour.

1. Le compresseur de fichiers Parquet stocke les mises à jour localement.

1. Une fois la période écoulée, les fichiers stockés sont compressés dans des fichiers Parquet et transmis au gestionnaire de flux pour être téléchargés dans le compartiment S3 spécifié.

1. Le gestionnaire de flux télécharge les fichiers Parquet dans le compartiment S3.

**Note**  
Le gestionnaire de flux (`StreamManager`) est un composant géré. Pour des exemples d'exportation de données vers Amazon S3, consultez [Stream manager](https://docs.aws.amazon.com/greengrass/v2/developerguide/stream-manager-component.html) dans la documentation d'AWS IoT Greengrass. Vous pouvez utiliser un broker MQTT local comme composant ou un autre broker comme [Eclipse Mosquitto](https://mosquitto.org/).

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

**Outils AWS**
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) est un service de requête interactif qui vous permet d'analyser les données directement dans Amazon S3 à l'aide du SQL standard.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.
+ [AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/what-is-iot-greengrass.html) est un environnement d'exécution IoT Edge et un service cloud open source qui vous aident à créer, déployer et gérer des applications IoT sur vos appareils.

**Autres outils**
+ [Apache Parquet](https://parquet.apache.org/) est un format de fichier de données open source orienté colonne conçu pour le stockage et la récupération.
+ [MQTT](https://docs.aws.amazon.com/iot/latest/developerguide/mqtt.html) (Message Queuing Telemetry Transport) est un protocole de messagerie léger conçu pour les appareils restreints.

## Bonnes pratiques
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-best-practices"></a>

**Utilisez le bon format de partition pour les données téléchargées**

Il n'existe aucune exigence spécifique concernant les noms de préfixes racines dans le compartiment S3 (par exemple, `"myAwesomeDataSet/"` ou`"dataFromSource"`), mais nous vous recommandons d'utiliser une partition et un préfixe significatifs afin de comprendre facilement l'objectif de l'ensemble de données.

Nous vous recommandons également d'utiliser le bon partitionnement dans Amazon S3 afin que les requêtes s'exécutent de manière optimale sur l'ensemble de données. Dans l'exemple suivant, les données sont partitionnées au format HIVE afin d'optimiser la quantité de données numérisées par chaque requête Athena. Cela améliore les performances et réduit les coûts.

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

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

### Configuration de votre environnement
<a name="set-up-your-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un compartiment S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | Développeur d’applications | 
| Ajoutez des autorisations IAM au compartiment S3. | Pour accorder aux utilisateurs un accès en écriture au compartiment S3 et au préfixe que vous avez créés précédemment, ajoutez la politique IAM suivante à votre rôle 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>Pour plus d'informations, consultez [la section Création d'une politique IAM pour accéder aux ressources Amazon S3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.Authorizing.IAM.S3CreatePolicy.html) dans la documentation Aurora.Ensuite, mettez à jour la politique de ressources (si nécessaire) pour le compartiment S3 afin d'autoriser l'accès en écriture avec les [principes](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-bucket-user-policy-specifying-principal-intro.html) AWS appropriés. | Développeur d’applications | 

### Créez et déployez le composant AWS IoT Greengrass
<a name="build-and-deploy-the-aws-iot-greengrass-component"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Mettez à jour la recette du composant. | [Mettez à jour la configuration des composants](https://docs.aws.amazon.com/greengrass/v2/developerguide/update-component-configurations.html) lorsque vous [créez un déploiement](https://docs.aws.amazon.com/greengrass/v2/developerguide/create-deployments.html) en vous basant sur l'exemple suivant :<pre>{<br />  "region": "<region>",<br />  "parquet_period": <period>,<br />  "s3_bucket": "<s3Bucket>",<br />  "s3_key_prefix": "<s3prefix>"<br />}</pre>`<region>`Remplacez-le par votre région AWS, `<period>` par votre intervalle périodique, `<s3Bucket>` par votre compartiment S3 et `<s3prefix>` par votre préfixe. | Développeur d’applications | 
| Créez le composant. | Effectuez l’une des actions suivantes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | Développeur d’applications | 
| Mettez à jour le client MQTT. | L'exemple de code n'utilise pas l'authentification car le composant se connecte localement au courtier. Si votre scénario est différent, mettez à jour la section du client MQTT selon vos besoins. Procédez également comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | Développeur d’applications | 

### Ajoutez le composant à l'appareil principal AWS IoT Greengrass version 2
<a name="add-the-component-to-the-aws-iot-greengrass-version-2-core-device"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Mettez à jour le déploiement du périphérique principal. | Si le déploiement du dispositif principal AWS IoT Greengrass version 2 existe déjà, [revoyez le déploiement](https://docs.aws.amazon.com/greengrass/v2/developerguide/revise-deployments.html). Si le déploiement n'existe pas, [créez-en un nouveau](https://docs.aws.amazon.com/greengrass/v2/developerguide/create-deployments.html).Pour attribuer le nom correct au composant, [mettez à jour la configuration du gestionnaire de journaux](https://docs.aws.amazon.com/greengrass/v2/developerguide/log-manager-component.html) pour le nouveau composant (si nécessaire) en fonction des éléments suivants :<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>Enfin, terminez la révision du déploiement de votre appareil principal AWS IoT Greengrass. | Développeur d’applications | 

### Vérifiez l'ingestion de données dans le compartiment S3
<a name="verify-data-ingestion-into-the-s3-bucket"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Consultez les journaux du volume AWS IoT Greengrass. | Vérifiez les points suivants :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | Développeur d’applications | 
| Vérifiez le compartiment S3. | Vérifiez si les données sont téléchargées dans le compartiment S3. Vous pouvez voir les fichiers téléchargés à chaque période.Vous pouvez également vérifier si les données sont téléchargées dans le compartiment S3 en interrogeant les données dans la section suivante. | Développeur d’applications | 

### Configurer les requêtes depuis Athéna
<a name="set-up-querying-from-athena"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une base de données et une table. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | Développeur d’applications | 
| Accordez à Athéna l'accès aux données. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | Développeur d’applications | 

## Résolution des problèmes
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Le client MQTT ne parvient pas à se connecter | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | 
| Le client MQTT ne parvient pas à s'abonner | Validez les autorisations sur le broker MQTT. Si vous avez un courtier MQTT d'AWS, consultez le courtier [MQTT 3.1.1 (Moquette) et le courtier [MQTT 5 (EMQX](https://docs.aws.amazon.com/greengrass/v2/developerguide/mqtt-broker-emqx-component.html))](https://docs.aws.amazon.com/greengrass/v2/developerguide/mqtt-broker-moquette-component.html). | 
| Les fichiers de parquet ne sont pas créés | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | 
| Les objets ne sont pas chargés dans le compartiment S3 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | 

## Ressources connexes
<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)(Documentation sur les pandas)
+ Documentation d'[Apache Parquet (documentation](https://parquet.apache.org/docs/) de Parquet)
+ [Développement de composants AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/develop-greengrass-components.html) (Guide du développeur AWS IoT Greengrass, version 2)
+ [Déploiement de composants AWS IoT Greengrass sur des appareils](https://docs.aws.amazon.com/greengrass/v2/developerguide/manage-deployments.html) (Guide du développeur AWS IoT Greengrass, version 2)
+ [Interagissez avec des appareils IoT locaux](https://docs.aws.amazon.com/greengrass/v2/developerguide/interact-with-local-iot-devices.html) (Guide du développeur AWS IoT Greengrass, version 2)
+ [Courtier MQTT 3.1.1 (Moquette) (Guide](https://docs.aws.amazon.com/greengrass/v2/developerguide/mqtt-broker-moquette-component.html) du développeur AWS IoT Greengrass, version 2)
+ [Broker MQTT 5 (EMQX) (Guide](https://docs.aws.amazon.com/greengrass/v2/developerguide/mqtt-broker-emqx-component.html) du développeur AWS IoT Greengrass, version 2)

## Informations supplémentaires
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-additional"></a>

**Analyse des coûts**

Le scénario d'analyse des coûts suivant montre comment l'approche d'ingestion de données décrite dans ce modèle peut avoir un impact sur les coûts d'ingestion de données dans le cloud AWS. Les exemples de tarification de ce scénario sont basés sur les prix au moment de la publication. Les prix sont susceptibles d’être modifiés. En outre, vos coûts peuvent varier en fonction de votre région AWS, des quotas de service AWS et d'autres facteurs liés à votre environnement cloud.

*Set de signaux d'entrée*

Cette analyse utilise l'ensemble de signaux d'entrée suivant comme base pour comparer les coûts d'ingestion de l'IoT avec les autres alternatives disponibles.


| 
| 
| Nombre de signaux | Frequency (Fréquence) | Données par signal | 
| --- |--- |--- |
| 125 | 25 Hz | 8 octets | 

Dans ce scénario, le système reçoit 125 signaux. Chaque signal est de 8 octets et se produit toutes les 40 millisecondes (25 Hz). Ces signaux peuvent être fournis individuellement ou regroupés dans une charge utile commune. Vous avez la possibilité de diviser et de regrouper ces signaux en fonction de vos besoins. Vous pouvez également déterminer la latence. La latence correspond à la période pendant laquelle les données sont reçues, accumulées et ingérées.

À des fins de comparaison, l'opération d'ingestion pour ce scénario est basée dans la région `us-east-1` AWS. La comparaison des coûts s'applique uniquement aux services AWS. Les autres coûts, tels que le matériel ou la connectivité, ne sont pas pris en compte dans l'analyse.

*Comparaisons de coûts*

Le tableau suivant indique le coût mensuel en dollars américains (USD) pour chaque méthode d'ingestion.


| 
| 
| Method | Coût mensuel | 
| --- |--- |
| AWS IoT SiteWise *\$1* | 331.77 USD | 
| AWS IoT SiteWise Edge avec pack de traitement des données (conservation de toutes les données à la périphérie) | 200 DOLLARS AMÉRICAINS | 
| Règles d'accès aux données brutes d'AWS IoT Core et d'Amazon S3 | 84.54 DOLLARS AMÉRICAINS | 
| Compression de fichiers Parquet à la périphérie et téléchargement vers Amazon S3 | 0,5 DOLLARS AMÉRICAINS | 

\$1Les données doivent être sous-échantillonnées pour respecter les quotas de service. Cela signifie qu'il y a une certaine perte de données avec cette méthode.

*Méthodes alternatives*

Cette section indique les coûts équivalents pour les méthodes alternatives suivantes :
+ **AWS IoT SiteWise** — Chaque signal doit être chargé dans un message individuel. Par conséquent, le nombre total de messages par mois est de 125 × 25 × 3600 × 24 × 30, soit 8,1 milliards de messages par mois. Cependant, AWS IoT ne SiteWise peut gérer que 10 points de données par seconde et par propriété. En supposant que les données soient sous-échantillonnées à 10 Hz, le nombre de messages par mois est réduit à 125 × 10 × 3600 × 24 × 30, soit 3,24 milliards. Si vous utilisez le composant éditeur qui regroupe les mesures par groupes de 10 (à 1 USD par million de messages), vous obtenez un coût mensuel de 324 USD par mois. En supposant que chaque message est de 8 octets (1 Kb/125), cela représente 25,92 Go de stockage de données. Cela ajoute un coût mensuel de 7,77 USD par mois. Le coût total pour le premier mois est de 331,77 USD et augmente de 7,77 USD par mois.
+ **AWS IoT SiteWise Edge avec pack de traitement des données, comprenant tous les modèles et signaux entièrement traités en périphérie (c'est-à-dire sans ingestion du cloud)** : vous pouvez utiliser le pack de traitement des données comme alternative pour réduire les coûts et configurer tous les modèles calculés à la périphérie. Cela peut fonctionner uniquement pour le stockage et la visualisation, même si aucun calcul réel n'est effectué. Dans ce cas, il est nécessaire d'utiliser un matériel puissant pour la passerelle Edge. Il y a un coût fixe de 200 USD par mois.
+ **Intégration directe à AWS IoT Core par MQTT et règle IoT pour stocker les données brutes dans Amazon S3** — En supposant que tous les signaux soient publiés dans une charge utile commune, le nombre total de messages publiés sur AWS IoT Core est de 25 × 3600 × 24 × 30, soit 64,8 millions par mois. À 1 USD par million de messages, cela représente un coût mensuel de 64,8 USD par mois. À 0,15 USD par million d'activations de règles et à raison d'une règle par message, cela ajoute un coût mensuel de 19,44 USD par mois. Au coût de 0,023 USD par Go de stockage dans Amazon S3, cela ajoute 1,5 USD par mois (augmentation mensuelle pour refléter les nouvelles données). Le coût total pour le premier mois est de 84,54 USD et augmente de 1,5 USD par mois.
+ **Compression des données en périphérie dans un fichier Parquet et chargement vers Amazon S3 (méthode proposée**) : le taux de compression dépend du type de données. Avec les mêmes données industrielles testées pour le MQTT, le total des données de sortie pour un mois complet est de 1,2 Go. Cela coûte 0,03 USD par mois. Les taux de compression (basés sur des données aléatoires) décrits dans d'autres benchmarks sont de l'ordre de 66 % (ce qui est plus proche du pire des scénarios). Le total des données est de 21 Go et coûte 0,5 USD par mois.

**Générateur de fichiers pour parquet**

L'exemple de code suivant montre la structure d'un générateur de fichiers Parquet écrit en Python. L'exemple de code est fourni à titre d'illustration uniquement et ne fonctionnera pas s'il est collé dans votre environnement.

```
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)
```

# Lancer une tâche Spark dans un cluster EMR transitoire à l'aide d'une fonction Lambda
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function"></a>

*Dhrubajyoti Mukherjee, Amazon Web Services*

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

Ce modèle utilise l'action d' RunJobFlow API Amazon EMR pour lancer un cluster transitoire afin d'exécuter une tâche Spark à partir d'une fonction Lambda. Un cluster EMR transitoire est conçu pour s'arrêter dès que le travail est terminé ou en cas d'erreur. Un cluster transitoire permet de réaliser des économies car il ne s'exécute que pendant le temps de calcul et offre évolutivité et flexibilité dans un environnement cloud.

Le cluster EMR transitoire est lancé à l'aide de l'API Boto3 et du langage de programmation Python dans une fonction Lambda. La fonction Lambda, écrite en Python, offre la flexibilité supplémentaire de lancer le cluster lorsque cela est nécessaire.

Pour illustrer un exemple de calcul et de sortie par lots, ce modèle lancera une tâche Spark dans un cluster EMR à partir d'une fonction Lambda et exécutera un calcul par lots à partir des données de vente d'exemple d'une entreprise fictive. La sortie de la tâche Spark sera un fichier de valeurs séparées par des virgules (CSV) dans Amazon Simple Storage Service (Amazon S3). Le fichier de données d'entrée, le fichier Spark .jar, un extrait de code et un CloudFormation modèle AWS pour un cloud privé virtuel (VPC) et les rôles AWS Identity and Access Management (IAM) permettant d'exécuter le calcul sont fournis en pièce jointe.

## Conditions préalables et limitations
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif

**Limites**
+ Une seule tâche Spark peut être initiée à partir du code à la fois. 

**Versions du produit**
+ Testé sur Amazon EMR 6.0.0

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

**Pile technologique cible**
+ Amazon EMR 
+ AWS Lambda
+ Amazon S3
+ Apache Spark

**Architecture cible**

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


**Automatisation et mise à l'échelle**

Pour automatiser le calcul par lots de Spark-EMR, vous pouvez utiliser l'une des options suivantes.
+ Implémentez une EventBridge règle Amazon capable de lancer la fonction Lambda dans un calendrier cron. Pour plus d'informations, consultez [Tutoriel : Programmez les fonctions AWS Lambda](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-run-lambda-schedule.html) à l'aide de. EventBridge
+ Configurez [les notifications d'événements Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html) pour lancer la fonction Lambda à l'arrivée du fichier.
+ Transmettez les paramètres d'entrée à la fonction AWS Lambda via le corps de l'événement et les variables d'environnement Lambda. 

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

**Services AWS**
+ [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) est une plate-forme de cluster gérée qui simplifie l'exécution de frameworks de mégadonnées sur AWS afin de traiter et d'analyser de grandes quantités de données.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous permet d'exécuter du code sans avoir à provisionner ou à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.

**Autres outils**
+ [Apache Spark](https://spark.apache.org/docs/latest/) est un moteur d'analyse multilingue destiné au traitement de données à grande échelle.

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

### Création des rôles Amazon EMR et Lambda IAM et du VPC
<a name="create-the-amazon-emr-and-lambda-iam-roles-and-the-vpc"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez les rôles IAM et le VPC. | Si vous possédez déjà les rôles IAM AWS Lambda et Amazon EMR ainsi qu'un VPC, vous pouvez ignorer cette étape. Pour exécuter le code, le cluster EMR et la fonction Lambda nécessitent des rôles IAM. Le cluster EMR nécessite également un VPC avec un sous-réseau public ou un sous-réseau privé avec une passerelle NAT. *Pour créer automatiquement tous les rôles IAM et un VPC, déployez le modèle CloudFormation AWS joint tel quel, ou vous pouvez créer les rôles et le VPC manuellement comme indiqué dans la section Informations supplémentaires.* | Architecte du cloud | 
| Notez les clés de sortie du CloudFormation modèle AWS. | Une fois le CloudFormation modèle déployé avec succès, accédez à l'onglet **Outputs** de la CloudFormation console AWS. Notez les cinq touches de sortie : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function.html)Vous utiliserez les valeurs de ces clés lorsque vous créerez la fonction Lambda. | Architecte du cloud | 

### Téléchargez le fichier Spark .jar
<a name="upload-the-spark-jar-file"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Téléchargez le fichier .jar Spark. | Téléchargez le fichier .jar Spark dans le compartiment S3 créé par la CloudFormation pile AWS. Le nom du bucket est identique à celui de la clé de sortie`S3Bucket`.  | AWS général | 

### Créez la fonction Lambda pour lancer le cluster EMR
<a name="create-the-lambda-function-to-launch-the-emr-cluster"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| créer une fonction Lambda ; | Sur la console Lambda, créez une fonction Lambda Python 3.9\$1 avec un rôle d'exécution. La politique de rôle d'exécution doit permettre à Lambda de lancer un cluster EMR. (Voir le CloudFormation modèle AWS ci-joint.) | Ingénieur de données, ingénieur cloud | 
| Copiez et collez le code. | Remplacez le code du `lambda_function.py` fichier par le code de la section *Informations supplémentaires* de ce modèle. | Ingénieur de données, ingénieur cloud | 
| Modifiez les paramètres du code. | Suivez les commentaires du code pour modifier les valeurs des paramètres en fonction de votre compte AWS. | Ingénieur de données, ingénieur cloud | 
| Lancez la fonction pour lancer le cluster. | Lancez la fonction pour lancer la création d'un cluster EMR transitoire à l'aide du fichier Spark .jar fourni. Il exécutera la tâche Spark et s'arrêtera automatiquement lorsque la tâche sera terminée. | Ingénieur de données, ingénieur cloud | 
| Vérifiez l'état du cluster EMR. | **Une fois le cluster EMR lancé, il apparaît dans la console Amazon EMR sous l'onglet Clusters.** Toute erreur lors du lancement du cluster ou de l'exécution de la tâche peut être vérifiée en conséquence. | Ingénieur de données, ingénieur cloud | 

### Configuration et exécution de l'exemple de démonstration
<a name="set-up-and-run-the-sample-demo"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Téléchargez le fichier .jar Spark.  | Téléchargez le fichier Spark .jar depuis la section *Pièces jointes* et chargez-le dans le compartiment S3. | Ingénieur de données, ingénieur cloud | 
| Téléchargez le jeu de données en entrée. | Téléchargez le `fake_sales_data.csv` fichier joint dans le compartiment S3. | Ingénieur de données, ingénieur cloud | 
| Collez le code Lambda et modifiez les paramètres. | Copiez le code de la section **Outils**, puis collez-le dans une fonction Lambda en remplaçant le fichier de code`lambda_function.py`. Modifiez les valeurs des paramètres pour qu'elles correspondent à celles de votre compte. | Ingénieur de données, ingénieur cloud | 
| Lancez la fonction et vérifiez le résultat. | Une fois que la fonction Lambda a lancé le cluster avec la tâche Spark fournie, elle génère un fichier .csv dans le compartiment S3. | Ingénieur de données, ingénieur cloud | 

## Ressources connexes
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function-resources"></a>
+ [Construire Spark](https://spark.apache.org/docs/latest/building-spark.html)
+ [Apache Spark et Amazon EMR](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark.html)
+ [Documentation de Boto3 Docs run\$1job\$1flow](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/emr.html#EMR.Client.run_job_flow)
+ [Informations et documentation sur Apache Spark](https://spark.apache.org/)

## Informations supplémentaires
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function-additional"></a>

**Code**

```
"""
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/'
                    ]
                }
            }
        ]
    )
```

**Rôles IAM et création de VPC**

Pour lancer le cluster EMR dans une fonction Lambda, un VPC et des rôles IAM sont nécessaires. Vous pouvez configurer les rôles VPC et IAM à l'aide du CloudFormation modèle AWS dans la section Pièces jointes de ce modèle, ou vous pouvez les créer manuellement en utilisant les liens suivants. 

Les rôles IAM suivants sont requis pour exécuter Lambda et Amazon EMR. 

*Rôle d’exécution Lambda*

Le [rôle d'exécution](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) d'une fonction Lambda lui donne l'autorisation d'accéder aux services et ressources AWS.

*Rôle de service pour Amazon EMR*

Le [rôle Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role.html) définit les actions autorisées pour Amazon EMR lors du provisionnement de ressources et de l'exécution de tâches de niveau de service qui ne sont pas effectuées dans le contexte d'une instance Amazon Elastic Compute Cloud (Amazon) exécutée au sein d'un cluster. EC2 Par exemple, le rôle de service est utilisé pour provisionner EC2 des instances lors du lancement d'un cluster.

*Rôle de service pour les EC2 instances*

Le [rôle de service pour les EC2 instances de cluster](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role-for-ec2.html) (également appelé profil d' EC2 instance pour Amazon EMR) est un type spécial de rôle de service attribué à chaque EC2 instance d'un cluster Amazon EMR lors du lancement de l'instance. Les processus d'application qui s'exécutent sur Apache Hadoop assument ce rôle pour les autorisations d'interaction avec d'autres services AWS.

*Création de VPC et de sous-réseaux*

Vous pouvez [créer un VPC](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#create-vpc-and-other-resources) à partir de la console VPC. 

## Pièces jointes
<a name="attachments-6c999fa7-9550-4929-a5c1-60394142175d"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/6c999fa7-9550-4929-a5c1-60394142175d/attachments/attachment.zip)

# Migrez les charges de travail Apache Cassandra vers Amazon Keyspaces à l'aide d'AWS Glue
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue"></a>

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

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

Ce modèle vous montre comment migrer vos charges de travail Apache Cassandra existantes vers Amazon Keyspaces (pour Apache Cassandra) à l'aide d'AWS Glue. CQLReplicator Vous pouvez utiliser CQLReplicator AWS Glue pour réduire à quelques minutes le délai de réplication lié à la migration de vos charges de travail. Vous apprendrez également à utiliser un bucket Amazon Simple Storage Service (Amazon S3) pour stocker les données nécessaires à la migration, [notamment les fichiers Apache](https://parquet.apache.org/) Parquet, les fichiers de configuration et les scripts. Ce modèle suppose que vos charges de travail Cassandra sont hébergées sur des instances Amazon Elastic Compute Cloud EC2 (Amazon) dans un cloud privé virtuel (VPC).

## Conditions préalables et limitations
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-prereqs"></a>

**Conditions préalables**
+ Cluster Cassandra avec table source
+ Table cible dans Amazon Keyspaces pour répliquer la charge de travail
+ Compartiment S3 pour stocker les fichiers Parquet intermédiaires contenant des modifications de données incrémentielles
+ Compartiment S3 pour stocker les fichiers de configuration des tâches et les scripts

**Limites**
+ CQLReplicator sur AWS Glue nécessite un certain temps pour fournir des unités de traitement des données (DPUs) pour les charges de travail de Cassandra. Le délai de réplication entre le cluster Cassandra et l'espace de touches et la table cibles dans Amazon Keyspaces ne durera probablement que quelques minutes.

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

**Pile technologique source**
+ Apache Cassandra
+ DataStax serveur
+ ScyllaDB

**Pile technologique cible**
+ Amazon Keyspaces

**Architecture de migration**

Le schéma suivant montre un exemple d'architecture dans lequel un cluster Cassandra est hébergé sur des EC2 instances et réparti sur trois zones de disponibilité. Les nœuds Cassandra sont hébergés dans des sous-réseaux privés.

![\[Rôle de service personnalisé, Amazon Keyspaces et Amazon S3, avec AWS Glue se connectant au VPC des nœuds.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/e08048da-8996-4f2c-b8ed-da49fe9e693b/images/76256ab3-a1e6-4c9e-9c40-dc78f51edf0f.png)


Le schéma suivant illustre le flux de travail suivant :

1. Un rôle de service personnalisé permet d'accéder à Amazon Keyspaces et au compartiment S3.

1. Une tâche AWS Glue lit la configuration de la tâche et les scripts contenus dans le compartiment S3.

1. La tâche AWS Glue se connecte via le port 9042 pour lire les données du cluster Cassandra.

1. La tâche AWS Glue se connecte via le port 9142 pour écrire des données sur Amazon Keyspaces.

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

**Services et outils AWS**
+ [L'interface de ligne de commande AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) est un outil open source qui vous permet d'interagir avec les services AWS par le biais de commandes dans votre shell de ligne de commande.
+ [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html) est un shell basé sur un navigateur que vous pouvez utiliser pour gérer les services AWS à l'aide de l'AWS Command Line Interface (AWS CLI) et d'une gamme d'outils de développement préinstallés.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) est un service ETL entièrement géré qui vous aide à classer, nettoyer, enrichir et déplacer les données de manière fiable entre les magasins de données et les flux de données.
+ [Amazon Keyspaces (pour Apache Cassandra)](https://docs.aws.amazon.com/keyspaces/latest/devguide/what-is-keyspaces.html) est un service de base de données géré qui vous aide à migrer, exécuter et dimensionner vos charges de travail Cassandra dans le cloud AWS.

**Code**

Le code de ce modèle est disponible dans le GitHub [CQLReplicator](https://github.com/aws-samples/cql-replicator/tree/main/glue)référentiel.

## Bonnes pratiques
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-best-practices"></a>
+ Pour déterminer les ressources AWS Glue nécessaires à la migration, estimez le nombre de lignes de la table source Cassandra. Par exemple, 250 000 lignes par 0,25 DPU (2 VCPUs, 4 Go de mémoire) avec un disque de 84 Go.
+ Préchauffez les tables Amazon Keyspaces avant de les lancer. CQLReplicator Par exemple, huit CQLReplicator tuiles (tâches AWS Glue) peuvent écrire jusqu'à 22 K WCUs par seconde. La cible doit donc être préchauffée à 25-30 K WCUs par seconde.
+ Pour activer la communication entre les composants AWS Glue, utilisez une règle d'autoréférencement entrant pour tous les ports TCP de votre groupe de sécurité.
+ Utilisez la stratégie de trafic incrémentiel pour répartir la charge de travail de migration dans le temps.

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

### Déployer CQLReplicator
<a name="deploy-cqlreplicator"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un espace de touches et un tableau cibles.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | Propriétaire de l'application, administrateur AWS, DBA, développeur d'applications | 
| Configurez le pilote Cassandra pour vous connecter à Cassandra. | Utilisez le script de configuration suivant :<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>Le script précédent utilise le connecteur Spark Cassandra. Pour plus d'informations, consultez la configuration de référence pour [Cassandra](https://docs.datastax.com/en/developer/java-driver/4.17/manual/core/configuration/reference/). | DBA | 
| Configurez le pilote Cassandra pour vous connecter à Amazon Keyspaces. | Utilisez le script de configuration suivant :<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>Le script précédent utilise le connecteur Spark Cassandra. Pour plus d'informations, consultez la configuration de référence pour [Cassandra](https://docs.datastax.com/en/developer/java-driver/4.17/manual/core/configuration/reference/). | DBA | 
| Créez un rôle IAM pour la tâche AWS Glue. | Créez un nouveau rôle de service AWS nommé `glue-cassandra-migration` avec AWS Glue en tant qu'entité de confiance.Ils `glue-cassandra-migration` devraient fournir un accès en lecture et en écriture au compartiment S3 et à Amazon Keyspaces. Le compartiment S3 contient les fichiers .jar, les fichiers de configuration pour Amazon Keyspaces et Cassandra, ainsi que les fichiers Parquet intermédiaires. Par exemple, il contient le `AWSGlueServiceRole``AmazonS3FullAccess`, et les politiques `AmazonKeyspacesFullAccess` gérées. | AWS DevOps | 
| Téléchargez CQLReplicator dans AWS CloudShell. | Téléchargez le projet dans votre dossier personnel en exécutant la commande suivante :<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> |  | 
| Modifiez les fichiers de configuration de référence. | Copiez `CassandraConnector.conf` et `KeyspacesConnector.conf` dans le `../glue/conf` répertoire du dossier du projet. | AWS DevOps | 
| Lancez le processus de migration. | La commande suivante initialise l' CQLReplicator environnement. L'initialisation implique de copier des artefacts .jar et de créer un connecteur AWS Glue, un compartiment S3, une tâche AWS Glue, le `migration` keyspace et la table : `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>Le script comprend les paramètres suivants :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | AWS DevOps | 
| Validez le déploiement. | Après avoir exécuté la commande précédente, le compte AWS doit contenir les éléments suivants :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | AWS DevOps | 

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


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Lancez le processus de migration. | Pour utiliser CQLReplicator AWS Glue, vous devez utiliser la `--state run` commande, suivie d'une série de paramètres. La configuration précise de ces paramètres est principalement déterminée par vos exigences uniques en matière de migration. Par exemple, ces paramètres peuvent varier si vous choisissez de répliquer les valeurs de durée de vie (TTL) et les mises à jour, ou si vous déchargez des objets de plus de 1 Mo vers Amazon S3.Pour répliquer la charge de travail du cluster Cassandra vers Amazon Keyspaces, exécutez la commande suivante : <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>Votre keyspace source et votre table se trouvent `source_keyspace.source_table` dans le cluster Cassandra. Votre espace de touches et votre table cibles se trouvent `target_keyspace.target_table` dans Amazon Keyspaces. Ce paramètre `--inc-traffic` permet d'éviter que le trafic incrémentiel ne surcharge le cluster Cassandra et Amazon Keyspaces avec un nombre élevé de demandes.Pour répliquer les mises à jour, ajoutez-les `--writetime-column regular_column_name` à votre ligne de commande. La colonne normale va être utilisée comme source de l'horodatage d'écriture. | AWS DevOps | 

### Surveiller le processus de migration
<a name="monitor-the-migration-process"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Validez les lignes Cassandra migrées pendant la phase de migration historique. | Pour obtenir le nombre de lignes répliquées pendant la phase de remblayage, exécutez la commande suivante :<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 | 

### Arrêtez le processus de migration
<a name="stop-the-migration-process"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Utilisez la `cqlreplicator` commande ou la console AWS Glue. | Pour arrêter le processus de migration correctement, exécutez la commande suivante :<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>Pour arrêter immédiatement le processus de migration, utilisez la console AWS Glue. | AWS DevOps | 

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


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez les ressources déployées. | La commande suivante supprimera la tâche AWS Glue, le connecteur, le compartiment S3 et la table Keyspaces : `ledger`<pre>./cqlreplicator --state cleanup --landing-zone s3://cql-replicator-1234567890-us-west-2</pre> | AWS DevOps | 

## Résolution des problèmes
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Les tâches AWS Glue ont échoué et ont renvoyé une erreur OOM (Out of Memory). | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | 

## Ressources connexes
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-resources"></a>
+ [CQLReplicator avec AWS Glue README.MD](https://github.com/aws-samples/cql-replicator/blob/main/glue/README.MD)
+ [Documentation d'AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)
+ [Documentation Amazon Keyspaces](https://docs.aws.amazon.com/keyspaces/latest/devguide/what-is-keyspaces.html)
+ [Apache Cassandre](https://cassandra.apache.org/_/index.html)

## Informations supplémentaires
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-additional"></a>

**Considérations concernant la migration**

Vous pouvez utiliser AWS Glue pour migrer votre charge de travail Cassandra vers Amazon Keyspaces, tout en préservant le bon fonctionnement de vos bases de données sources Cassandra pendant le processus de migration. Une fois la réplication terminée, vous pouvez choisir de transférer vos applications vers Amazon Keyspaces avec un délai de réplication minimal (moins de quelques minutes) entre le cluster Cassandra et Amazon Keyspaces. Pour garantir la cohérence des données, vous pouvez également utiliser un pipeline similaire pour répliquer les données vers le cluster Cassandra depuis Amazon Keyspaces.

**Écrire des calculs unitaires**

Par exemple, imaginez que vous avez l'intention d'écrire 500 000 000 avec une taille de ligne de 1 KiB pendant une heure. Le nombre total d'unités d'écriture Amazon Keyspaces (WCUs) dont vous avez besoin est basé sur ce calcul :

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

69 444 dollars WCUs par seconde, c'est le tarif pour une heure, mais vous pouvez ajouter une certaine marge de manœuvre pour couvrir les frais généraux.  Par exemple, `69,444 * 1.10 = 76,388 WCUs` a des frais généraux de 10 %.

**Création d'un espace de touches à l'aide de CQL**

Pour créer un espace de touches à l'aide de CQL, exécutez les commandes suivantes :

```
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)
```

# Migrer Oracle Business Intelligence 12c vers le cloud AWS à partir de serveurs sur site
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers"></a>

*Lanre (Lan-Ray) showummi et Patrick Huang, Amazon Web Services*

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

Ce modèle montre comment migrer [Oracle Business Intelligence Enterprise Edition 12c](https://www.oracle.com/business-analytics/business-intelligence/technologies/bi-enterprise-edition.html) depuis des serveurs sur site vers le cloud AWS à l'aide d'AWS. CloudFormation Il décrit également comment vous pouvez utiliser d'autres services AWS pour implémenter des composants Oracle BI 12c offrant une haute disponibilité, une sécurité, une flexibilité et une capacité d'évolution dynamique.

Pour obtenir une liste des meilleures pratiques relatives à la migration d'Oracle BI 12c vers le cloud AWS, consultez la section **Informations supplémentaires** de ce modèle.

**Note**  
Il est recommandé d'exécuter plusieurs migrations de test avant de transférer vos données Oracle BI 12c existantes vers le cloud. Ces tests vous aident à affiner votre approche de migration, à identifier et à résoudre les problèmes potentiels et à estimer les besoins en temps d'arrêt avec plus de précision.

## Conditions préalables et limitations
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ Connectivité réseau sécurisée entre vos serveurs sur site et AWS via les services de [réseau privé virtuel (VPN AWS)](https://aws.amazon.com/vpn/) ou [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)
+ Licences logicielles pour votre système d'exploitation Oracle, Oracle BI 12c, Oracle Database, Oracle WebLogic Server et Oracle HTTP Server

**Limites**

Pour plus d'informations sur les limites de taille de stockage, consultez la [documentation Amazon Relational Database Service (Amazon RDS) pour Oracle](https://aws.amazon.com/rds/oracle/features/).

**Versions du produit**
+ Oracle Business Intelligence Enterprise Edition 12c
+  WebLogic Serveur Oracle 12c
+ Serveur HTTP Oracle 12c
+ Oracle Database 12c (ou version ultérieure)
+ Oracle Java SE 8

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

Le schéma suivant montre un exemple d'architecture permettant d'exécuter des composants Oracle BI 12c dans le cloud AWS :

![\[Exemple d'architecture pour exécuter des composants Oracle BI 12c dans le cloud AWS.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/8bb72df1-7546-4208-bc70-5789767e3600/images/aae8f8f3-8125-4868-a8e5-eac1cc42812f.png)


 

Ce schéma montre l'architecture suivante :

1. Amazon Route 53 fournit la configuration du service de nom de domaine (DNS).

1. Elastic Load Balancing (ELB) répartit le trafic réseau afin d'améliorer l'évolutivité et la disponibilité des composants Oracle BI 12c sur plusieurs zones de disponibilité.

1. Les groupes Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling hébergent les serveurs HTTP Oracle, le serveur d'administration Weblogic et les serveurs de BI gérés dans plusieurs zones de disponibilité.

1. Les bases de données Amazon Relational Database Service (Amazon RDS) pour Oracle stockent les métadonnées du serveur BI dans plusieurs zones de disponibilité.

1. Amazon Elastic File System (Amazon EFS) est monté sur chaque composant Oracle BI 12c pour le stockage de fichiers partagés.

**Pile technologique**
+ Amazon Elastic Block Store (Amazon EBS)
+ Amazon Elastic Compute Cloud (Amazon EC2)
+ Amazon Elastic File System (Amazon EFS)
+ Amazon RDS for Oracle
+ AWS Certificate Manager (ACM)
+ Elastic Load Balancing (ELB)
+ Oracle BI 12c
+  WebLogic Serveur Oracle 12c
+ Serveur HTTP Oracle (OHS)

## Outils
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers-tools"></a>
+ [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) vous CloudFormation aide à configurer les ressources AWS, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie sur l'ensemble des comptes et des régions AWS.
+ [AWS Certificate Manager (ACM)](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) vous aide à créer, stocker et renouveler des certificats et clés SSL/TLS X.509 publics et privés qui protègent vos sites Web et applications AWS.
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) vous aide à migrer des magasins de données vers le cloud AWS ou entre des combinaisons de configurations cloud et sur site.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/?id=docs_gateway) fournit une capacité de calcul évolutive dans le cloud AWS. Vous pouvez lancer autant de serveurs virtuels que nécessaire et les augmenter ou les réduire rapidement.
+ [Amazon EC2 Auto Scaling](https://aws.amazon.com/ec2/autoscaling/) vous aide à maintenir la disponibilité des applications et vous permet d'ajouter ou de supprimer automatiquement EC2 des instances Amazon selon les conditions que vous définissez. 
+ [Amazon Elastic File System (Amazon EFS)](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) vous aide à créer et à configurer des systèmes de fichiers partagés dans le cloud AWS.
+ [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) répartit le trafic applicatif ou réseau entrant sur plusieurs cibles. Par exemple, vous pouvez répartir le trafic entre les instances, les conteneurs et les adresses IP d'Amazon Elastic Compute Cloud (Amazon EC2) dans une ou plusieurs zones de disponibilité.
+ [Amazon Relational Database Service (Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)) vous aide à configurer, exploiter et dimensionner une base de données relationnelle dans le cloud AWS.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) vous aide à lancer des ressources AWS dans un réseau virtuel que vous avez défini. Ce réseau virtuel ressemble à un réseau traditionnel que vous exploiteriez dans votre propre centre de données, avec les avantages liés à l'utilisation de l'infrastructure évolutive d'AWS.
+ [Oracle Data Pump](https://docs.oracle.com/cd/B19306_01/server.102/b14215/dp_overview.htm) vous aide à déplacer des données et des métadonnées d'une base de données à une autre à grande vitesse.
+ [Oracle Fusion Middleware](https://www.oracle.com/middleware/technologies/business-intelligence-v12214-downloads.html) est une suite d'outils de développement d'applications et de solutions d'intégration pour la gestion des identités, la collaboration et les rapports de business intelligence.
+ [Oracle](https://www.oracle.com/integration/goldengate/#:~:text=OCI%20GoldenGate%20is%20a%20real,in%20the%20Oracle%20Cloud%20Infrastructure.) vous GoldenGate aide à concevoir, exécuter, orchestrer et surveiller vos solutions de réplication et de traitement des données en continu dans l'infrastructure cloud Oracle.
+ [Oracle WebLogic Scripting Tool (WLST)](https://docs.oracle.com/middleware/12213/cross/wlsttasks.htm) fournit une interface de ligne de commande qui vous permet de dimensionner horizontalement vos WebLogic clusters.

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

### Évaluer l'environnement source
<a name="assess-the-source-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Rassemblez les informations d'inventaire des logiciels. | Identifiez les versions et les niveaux de correctif pour chacun des composants logiciels de votre infrastructure technologique source, notamment les suivants :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Architecte de migration, architecte de solutions, propriétaire de l'application, administrateur Oracle BI | 
| Collectez des informations d'inventaire de calcul et de stockage. | Dans votre environnement source, passez en revue les indicateurs d'utilisation actuels et historiques pour les éléments suivants :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html)Assurez-vous de tenir compte des pics d'utilisation historiques. | Architecte de migration, architecte de solutions, propriétaire de l'application, administrateur Oracle BI, administrateur système | 
| Rassemblez des informations sur l'architecture de l'environnement source et ses exigences. | Obtenez une compréhension complète de l'architecture de votre environnement source et de ses exigences, notamment en ce qui concerne les éléments suivants :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Architecte de migration, architecte de solutions, propriétaire de l'application, administrateur Oracle BI | 
| Identifiez les sources de données JDBC (Java Database Connectivity). | Rassemblez des informations sur les sources de données et les pilotes JDBC de votre environnement source pour chaque moteur de base de données qu'il utilise. | Architecte de migration, propriétaire de l'application, administrateur Oracle BI, ingénieur ou administrateur de base de données | 
| Rassemblez des informations sur les paramètres spécifiques à l'environnement. | Collectez des informations sur les paramètres et les configurations spécifiques à votre environnement source, notamment les suivants :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Architecte de migration, architecte de solutions, propriétaire de l'application, administrateur Oracle BI | 
| Identifiez toute dépendance vis-à-vis d'autres applications. | Collectez des informations sur les intégrations dans votre environnement source qui créent des dépendances avec d'autres applications.Assurez-vous d'identifier les intégrations du protocole LDAP (Lightweight Directory Access Protocol) et les autres exigences réseau. | Architecte de migration, architecte de solutions, propriétaire de l'application, administrateur Oracle BI | 

### Concevez votre environnement cible
<a name="design-your-target-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un document de conception de haut niveau. | Créez un document de conception d'architecture cible. Assurez-vous d'utiliser les informations que vous avez collectées lors de l'évaluation de votre environnement source pour éclairer le document de conception. | Architecte de solutions, Architecte d'applications, Ingénieur de base de données, Architecte de migration | 
| Obtenir l'approbation du document de conception. | Passez en revue le document de conception avec les parties prenantes et obtenez les approbations requises. | Responsable de l'application ou du service, architecte de solutions, architecte d'applications | 

### Déployer l'infrastructure
<a name="deploy-the-infrastructure"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Préparez le code d'infrastructure dans CloudFormation. | Créez des CloudFormation modèles pour provisionner votre infrastructure Oracle BI 12c dans le cloud AWS.Pour plus d'informations, consultez la section [Utilisation des CloudFormation modèles AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html) dans le *guide de CloudFormation l'utilisateur AWS*.Il est recommandé de créer des CloudFormation modèles modulaires pour chaque niveau d'Oracle BI 12c, plutôt qu'un seul modèle volumineux pour toutes vos ressources. Pour plus d'informations sur les CloudFormation meilleures pratiques, consultez les [8 meilleures pratiques relatives à l'automatisation de vos déploiements avec AWS CloudFormation](https://aws.amazon.com/blogs/infrastructure-and-automation/best-practices-automating-deployments-with-aws-cloudformation/) sur le blog AWS. | Architecte d'infrastructure cloud, architecte de solutions, architecte d'applications | 
| Téléchargez le logiciel requis. | DDownload les logiciels suivants ainsi que les versions et correctifs requis sur le [site Web d'Oracle](https://www.oracle.com/) :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Architecte de migration, ingénieur de base de données, architecte d'applications | 
| Préparez les scripts d'installation. | Créez des scripts d'installation logicielle qui exécutent une installation silencieuse. Ces scripts simplifient l'automatisation du déploiement.Pour plus d'informations, voir [OBIEE 12c : Comment effectuer une installation silencieuse ?](https://support.oracle.com/knowledge/Enterprise%20Performance%20Management%20and%20Business%20Intelligence/2267490_1.html) sur le site Oracle Support. Vous avez besoin d'un compte Oracle Support pour consulter la documentation. | Architecte de migration, ingénieur de base de données, architecte d'applications | 
| Créez une AMI Linux basée sur Amazon EBS pour vos niveaux Web et applicatif. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Architecte de migration, ingénieur de base de données, architecte d'applications | 
| Lancez votre infrastructure AWS en utilisant CloudFormation. | Déployez vos niveaux Web et applicatif Oracle BI 12c dans des modules à l'aide des CloudFormation modèles que vous avez créés.Pour obtenir des instructions, consultez [Getting started with AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/GettingStarted.html) dans le *guide de CloudFormation l'utilisateur AWS*. | Architecte d'infrastructure cloud, architecte de solutions, architecte d'applications | 

### Migrez Oracle BI 12c vers AWS à l'aide d'une nouvelle installation
<a name="migrate-oracle-bi-12c-to-aws-by-using-a-fresh-installation"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Mettez en scène le logiciel requis. | Placez le logiciel requis dans un emplacement accessible aux EC2 instances Amazon. Par exemple, vous pouvez installer le logiciel dans Amazon S3 ou dans une autre EC2 instance Amazon qui serait accessible à vos serveurs Web et d'applications. | Architecte de migration, architecte Oracle BI, architecte d'infrastructure cloud, architecte de solutions, architecte d'applications | 
| Préparez votre base de données de référentiel pour l'installation d'Oracle BI 12c. | Créez des schémas Oracle BI 12c en exécutant l'[utilitaire de création de référentiel Oracle (RCU)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Resources.RCU.html#Oracle.Resources.RCU.Installing) sur une nouvelle instance de base de données [Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html) for Oracle. | Architecte d'infrastructure cloud, architecte de solutions, architecte d'applications, architecte de migration, architecte Oracle BI | 
| Installez Oracle Fusion Middleware 12c et Oracle BI 12c. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Architecte de migration, architecte Oracle BI | 
| Configurez le domaine WebLogic de votre serveur Oracle pour Oracle BI 12c. | Configurez votre domaine Oracle BI 12c en tant que déploiement non clusterisé. Pour plus d'informations, consultez [la section Configuration du domaine BI](https://docs.oracle.com/middleware/bi12214/lcm/BIEDG/GUID-FD80C4C4-A2E9-4190-8B6A-7AD659D8FBE2.htm#BIEDG-GUID-D4FC2F0A-88B0-453C-BF14-17D365018252) dans le *guide de déploiement d'Oracle Fusion Middleware Enterprise pour Oracle Business Intelligence*. | Architecte de migration, architecte Oracle BI | 
| Effectuez une mise à l'échelle horizontale à partir de l'Oracle BI 12c. | Diminuez horizontalement le nœud unique jusqu'au nombre de nœuds souhaité. Pour plus d'informations, consultez la section [Scaling out 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) dans le *guide de déploiement d'Oracle Fusion Middleware Enterprise pour Oracle Business* Intelligence. | Architecte de migration, architecte Oracle BI | 
| Installez le serveur HTTP Oracle 12c. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Architecte de migration, architecte Oracle BI | 
| Configurez les équilibreurs de charge pour la terminaison SSL. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Architecte d'infrastructure cloud, architecte de migration | 
| Migrez les artefacts de métadonnées de business intelligence vers AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Architecte de migration, architecte Oracle BI | 
| Effectuez des tâches après la migration. | Après avoir importé les fichiers BAR, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Architecte de migration, architecte Oracle BI | 

### Testez le nouvel environnement
<a name="test-the-new-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Testez le nouvel environnement Oracle BI 12c. | Effectuez end-to-end des tests sur le nouvel environnement Oracle BI 12c. Utilisez l'automatisation autant que possible.Voici des exemples d'activités de test :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html)Procéder à des tests et à des validations supplémentaires selon les besoins. | Architecte de migration, architecte de solutions, propriétaire de l'application, administrateur Oracle BI | 

### Passez au nouvel environnement
<a name="cut-over-to-the-new-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déconnectez le trafic de l'environnement Oracle BI 12c sur site. | À la fenêtre de transition indiquée, arrêtez tout le trafic vers l'environnement Oracle BI 12c sur site. | Architecte de migration, architecte de solutions, propriétaire de l'application, administrateur Oracle BI | 
| Resynchronisez la nouvelle base de données du référentiel Oracle BI 12c avec la base de données source. | Resynchronisez la base de données du référentiel Amazon RDS Oracle Oracle BI 12c avec la base de données locale.Pour synchroniser les bases de données, vous pouvez utiliser une [actualisation d'Oracle Data Pump](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Procedural.Importing.DataPump.html) ou une [capture de données de modification (CDC) AWS DMS](https://aws.amazon.com/blogs/database/migrating-oracle-databases-with-near-zero-downtime-using-aws-dms/). | Administrateur Oracle BI, ingénieur/administrateur de base de données | 
| Basculez votre Oracle BI 12c URLs pour qu'il pointe vers le nouvel environnement AWS. | Mettez à jour l'Oracle BI 12c URLs sur vos serveurs DNS internes afin qu'ils pointent vers la nouvelle installation AWS. | Architecte de migration, architecte de solutions, propriétaire de l'application, administrateur Oracle BI | 
| Surveillez le nouvel environnement. | Surveillez le nouvel environnement Oracle BI 12c à l'aide de l'un des outils suivants :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Administrateur Oracle BI, ingénieur/administrateur de base de données, administrateur d'applications | 
| Obtenez l'approbation du projet. | Passez en revue les résultats des tests avec les parties prenantes et obtenez les approbations requises pour terminer la migration. | Propriétaire de l'application, responsable du service, architecte d'infrastructure cloud, architecte de migration, architecte Oracle BI | 

## Ressources connexes
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers-resources"></a>
+ [Utilisation de l'utilitaire de création de référentiel Oracle sur RDS pour Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Resources.RCU.html) (*Amazon RDS User Guide*)
+ [Oracle sur Amazon RDS (Guide](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html) de l'*utilisateur Amazon RDS*)
+ [Oracle WebLogic Server 12c sur AWS](https://d1.awsstatic.com/whitepapers/Oracle-WebLogic-12c-on-AWS.pdf) (livre blanc AWS)
+ [Déploiement d'Oracle Business Intelligence pour une haute disponibilité](https://docs.oracle.com/middleware/1221/biee/BIESG/highavail.htm#BIESG1584) (Oracle Help Center)
+ [Fichiers d'archivage des applications Oracle Business Intelligence (BAR)](https://docs.oracle.com/middleware/bi12214/biee/BIESG/GUID-7FCD90A3-E005-49BF-902F-30FBF9B41B07.htm#BIESG2889) (Oracle Help Center)
+ [Comment faire migrer OBI 12c entre les environnements](https://support.oracle.com/knowledge/Enterprise%20Performance%20Management%20and%20Business%20Intelligence/2203360_1.html) (Oracle Support) 

## Informations supplémentaires
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers-additional"></a>

Vous trouverez ci-dessous une liste des meilleures pratiques relatives à la migration d'Oracle BI 12c vers le cloud AWS.

**bases de données du référentiel**

Il est recommandé d'héberger les schémas de base de données Oracle BI 12c sur une instance Amazon RDS for Oracle. Ce type d'instance fournit une capacité rentable et redimensionnable tout en automatisant les tâches d'administration, telles que le provisionnement du matériel, la configuration de bases de données, l'application de correctifs et les sauvegardes.

Pour plus d'informations, consultez la section [Utilisation de l'utilitaire de création de référentiel Oracle sur RDS pour Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Resources.RCU.html) dans le guide de l'*utilisateur Amazon RDS*.

**Niveaux Web et applicatifs**

Les [ EC2 instances Amazon optimisées pour la mémoire](https://aws.amazon.com/ec2/instance-types/) sont souvent bien adaptées aux serveurs Oracle BI 12c. Quel que soit le type d'instance que vous choisissez, assurez-vous que les instances que vous provisionnez répondent aux exigences d'utilisation de la mémoire de votre système. Assurez-vous également de [configurer une taille de segment de machine virtuelle WebLogic Java (JVM) suffisante en](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.) fonction de la mémoire disponible de votre EC2 instance Amazon.

**Stockage local**

Les E/S jouent un rôle important dans les performances globales de votre application Oracle BI 12c. Amazon Elastic Block Store (Amazon EBS) propose différentes classes de stockage optimisées pour différents modèles de charge de travail. Assurez-vous de choisir un type de volume Amazon EBS adapté à votre cas d'utilisation.

Pour plus d'informations sur les types de volumes EBS, consultez les [fonctionnalités d'Amazon EBS](https://aws.amazon.com/ebs/features/) dans la documentation Amazon EBS.

**Stockage partagé**

Un domaine Oracle BI 12c en cluster nécessite un stockage partagé pour les ressources suivantes :
+ Fichiers de configuration
+ Répertoire de données singleton (SDD) Oracle BI 12c
+ Cache global Oracle
+ Scripts du planificateur Oracle BI
+ Binaires WebLogic du serveur Oracle

Vous pouvez répondre à cette exigence de stockage partagé en utilisant [Amazon EFS](https://aws.amazon.com/efs/), qui fournit un système de fichiers NFS (Elastic Network File System) évolutif et entièrement géré.

*Affiner les performances du stockage partagé*

**Amazon EFS propose deux [modes de débit](https://docs.aws.amazon.com/efs/latest/ug/performance.html#throughput-modes) : **Provisioned** et Bursting.** Le service dispose également de deux [modes de performance](https://docs.aws.amazon.com/efs/latest/ug/performance.html#performancemodes) : **General Purpose** et **Max I/O.**

Pour optimiser les performances, commencez par tester vos charges de travail en mode performance à **usage général** et en mode débit **provisionné**. Ces tests vous aideront à déterminer si ces modes de référence sont suffisants pour atteindre les niveaux de service souhaités.

Pour plus d'informations, consultez la section relative [aux performances d'Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/performance.html) dans le *guide de l'utilisateur Amazon EFS*.

**Disponibilité et reprise après sinistre**

Il est recommandé de déployer des composants Oracle BI 12c dans plusieurs zones de disponibilité afin de protéger ces ressources en cas de défaillance d'une zone de disponibilité. Voici une liste des meilleures pratiques en matière de disponibilité et de reprise après sinistre pour des ressources Oracle BI 12c spécifiques hébergées dans le cloud AWS :
+ **Bases de données de référentiel Oracle BI 12c** : déployez une instance de base de données Amazon RDS multi-AZ dans votre base de données de référentiel Oracle BI 12c. Dans un déploiement multi-AZ, Amazon RDS provisionne et gère automatiquement une réplique de secours synchrone dans une autre zone de disponibilité. L'exécution d'une instance de base de données de référentiel Oracle BI 12c dans des zones de disponibilité peut améliorer la disponibilité lors de la maintenance planifiée du système et contribuer à protéger vos bases de données contre les défaillances d'instance et de zone de disponibilité.
+ **Serveurs gérés Oracle BI 12c** : pour garantir la tolérance aux pannes, il est recommandé de déployer les composants du système Oracle BI 12c sur les serveurs gérés d'un groupe Amazon EC2 Auto Scaling configuré pour couvrir plusieurs zones de disponibilité. Auto Scaling remplace les instances défectueuses sur la base des [bilans EC2 de santé d'Amazon](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html). En cas de défaillance d'une zone de disponibilité, les serveurs HTTP Oracle continuent de diriger le trafic vers les serveurs gérés dans la zone de disponibilité fonctionnelle. Auto Scaling lance ensuite des instances pour répondre à vos exigences en matière de nombre d'hôtes. Il est recommandé d'activer la réplication de l'état des sessions HTTP pour garantir un basculement fluide des sessions existantes vers les serveurs gérés fonctionnels.
+ **Serveurs d'administration Oracle BI 12c :** pour garantir la haute disponibilité de votre serveur d'administration, hébergez-le dans un groupe Amazon EC2 Auto Scaling configuré pour couvrir plusieurs zones de disponibilité. Définissez ensuite la taille minimale et maximale du groupe sur **1**. En cas de défaillance d'une zone de disponibilité, Amazon EC2 Auto Scaling démarre un serveur d'administration de remplacement dans une autre zone de disponibilité. Pour récupérer tout hôte sous-jacent défaillant au sein de la même zone de disponibilité, vous pouvez activer [Amazon EC2 Auto Recovery](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-recover.html).
+ **Serveurs Oracle Web Tier :** il est recommandé d'associer votre serveur HTTP Oracle au domaine de votre WebLogic serveur Oracle. Pour une haute disponibilité, déployez votre serveur HTTP Oracle dans un groupe Amazon EC2 Auto Scaling configuré pour englober plusieurs zones de disponibilité. Placez ensuite le serveur derrière un équilibreur de charge élastique ELB. Pour fournir une protection supplémentaire contre les pannes de l'hôte, vous pouvez activer Amazon EC2 Auto Recovery.

**Evolutivité**

L'élasticité du cloud AWS vous permet de faire évoluer les applications horizontalement ou verticalement en fonction des exigences de charge de travail.

*Mise à l'échelle verticale*

Pour dimensionner verticalement votre application, vous pouvez modifier la taille et le type des EC2 instances Amazon qui exécutent vos composants Oracle BI 12c. Il n'est pas nécessaire de surprovisionner les instances au début de votre déploiement et d'encourir des coûts inutiles. 

*Mise à l'échelle horizontale*

Amazon EC2 Auto Scaling vous aide à dimensionner horizontalement votre application en ajoutant ou en supprimant automatiquement des serveurs gérés en fonction des exigences de charge de travail.

**Note**  
La mise à l'échelle horizontale avec Amazon EC2 Auto Scaling nécessite des compétences en matière de script et des tests approfondis pour être mise en œuvre.

**Backup et restauration**

Voici une liste des meilleures pratiques de sauvegarde et de restauration pour des ressources Oracle BI 12c spécifiques hébergées dans le cloud AWS :
+ **Référentiels de métadonnées Oracle Business Intelligence :** Amazon RDS crée et enregistre automatiquement des sauvegardes de vos instances de base de données. Ces sauvegardes sont conservées pendant une période que vous spécifiez. Assurez-vous de configurer la durée de sauvegarde et les paramètres de conservation de votre Amazon RDS en fonction de vos exigences en matière de protection des données. Pour plus d'informations, veuillez consulter [Amazon RDS backup and restore](https://aws.amazon.com/rds/features/backup/).
+ **Serveurs gérés, serveurs d'administration et serveurs Web : assurez-vous de configurer les** [instantanés Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSSnapshots.html) en fonction de vos exigences en matière de protection et de conservation des données.
+ **Stockage partagé :** vous pouvez gérer la sauvegarde et la restauration des fichiers stockés dans Amazon EFS à l'aide d'[AWS Backup](https://docs.aws.amazon.com/efs/latest/ug/awsbackup.html). Le service AWS Backup peut également être déployé pour gérer de manière centralisée la sauvegarde et la restauration d'autres services, notamment Amazon EC2, Amazon EBS et Amazon RDS. Pour plus d'informations, consultez [Qu'est-ce qu'AWS Backup ?](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html) Dans le manuel *AWS Backup Developer Guide*.

**Sécurité et conformité**

Vous trouverez ci-dessous une liste des meilleures pratiques de sécurité et des services AWS qui peuvent vous aider à protéger vos applications Oracle BI 12c dans le cloud AWS :
+ **Chiffrement au repos :** Amazon RDS, Amazon EFS et Amazon EBS prennent tous en charge les algorithmes de chiffrement standard du secteur. Vous pouvez utiliser [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) pour créer et gérer des clés cryptographiques et contrôler leur utilisation dans les services AWS et dans vos applications. Vous pouvez également configurer [Oracle Transparent Data Encryption (TDE)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.Options.AdvSecurity.html) sur l'instance de base de données Amazon RDS for Oracle qui héberge votre base de données de référentiel Oracle BI 12c.
+ **Chiffrement en transit :** il est recommandé d'activer les protocoles SSL ou TLS pour protéger les données en transit entre les différentes couches de votre installation Oracle BI 12c. Vous pouvez utiliser [AWS Certificate Manager (ACM)](https://aws.amazon.com/certificate-manager/) pour approvisionner, gérer et déployer des certificats SSL et TLS publics et privés pour vos ressources Oracle BI 12c.
+ **Sécurité du réseau** : assurez-vous de déployer vos ressources Oracle BI 12c dans un Amazon VPC doté des contrôles d'accès appropriés configurés pour votre cas d'utilisation. Configurez vos groupes de sécurité pour filtrer le trafic entrant et sortant des EC2 instances Amazon qui exécutent votre installation. Assurez-vous également de configurer des [listes de contrôle d'accès réseau (NACLs)](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html) qui autorisent ou refusent le trafic en fonction de règles définies.
+ **Surveillance et journalisation** : vous pouvez utiliser [AWS CloudTrail](https://aws.amazon.com/cloudtrail/) pour suivre les appels d'API vers votre infrastructure AWS, y compris vos ressources Oracle BI 12c. Cette fonctionnalité est utile lors du suivi des modifications apportées à l'infrastructure ou lors d'une analyse de sécurité. Vous pouvez également utiliser [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) pour consulter les données opérationnelles qui peuvent vous fournir des informations exploitables sur les performances et l'état de votre application Oracle BI 12c. Vous pouvez également configurer des alarmes et effectuer des actions automatisées en fonction de ces alarmes. Amazon RDS fournit des outils de surveillance supplémentaires, notamment [Enhanced Monitoring](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html) et [Performance Insights](https://aws.amazon.com/rds/performance-insights/).

# Migrer une pile ELK vers Elastic Cloud sur AWS
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws"></a>

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

*Juday Freddy, aucun*

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

[Elastic](https://www.elastic.co/) fournit des services depuis de nombreuses années, ses utilisateurs et clients gérant généralement Elastic eux-mêmes sur site. [Elastic Cloud](https://www.elastic.co/cloud)[, le [service Elasticsearch](https://www.elastic.co/elasticsearch/service) géré, permet d'utiliser la Suite Elastic (ELK Stack) et les solutions de [recherche, d'[observabilité](https://www.elastic.co/observability) et de sécurité en entreprise](https://www.elastic.co/enterprise-search).](https://www.elastic.co/security) Vous pouvez accéder aux solutions Elastic avec des applications telles que Logs, Metrics, APM (surveillance des performances des applications) et SIEM (informations de sécurité et gestion des événements). Vous pouvez utiliser des fonctionnalités intégrées telles que l'apprentissage automatique, la gestion du cycle de vie des index, Kibana Lens (pour les visualisations par glisser-déposer).

Lorsque vous passez d'Elasticsearch autogéré à Elastic Cloud, le service Elasticsearch prend en charge les tâches suivantes :
+ Provisionnement et gestion de l'infrastructure sous-jacente
+ Création et gestion de clusters Elasticsearch
+ Faire évoluer les clusters vers le haut ou vers le bas
+ Mises à niveau, application de correctifs et prise de clichés

Cela vous donne plus de temps pour vous concentrer sur la résolution d'autres défis.

Ce modèle définit comment migrer Elasticsearch 7.13 sur site vers Elasticsearch on Elastic Cloud on Amazon Web Services (AWS). D'autres versions peuvent nécessiter de légères modifications des processus décrits dans ce modèle. Pour plus d'informations, contactez votre représentant Elastic.

## Conditions préalables et limitations
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws-prereqs"></a>

**Conditions préalables**
+ Un [compte AWS](https://aws.amazon.com/account/) actif avec accès à [Amazon Simple Storage Service](https://aws.amazon.com/s3/) (Amazon S3) pour les instantanés
+ [Lien privé](https://docs.aws.amazon.com/vpc/latest/userguide/vpn-connections.html) sécurisé avec une bande passante suffisamment élevée pour copier des fichiers de données instantanés vers Amazon S3
+ [Amazon S3 Transfer Acceleration](https://aws.amazon.com/s3/transfer-acceleration/)
+ [Politiques Elastic Snapshot](https://www.elastic.co/guide/en/elasticsearch/reference/7.10/getting-started-snapshot-lifecycle-management.html) pour garantir que l'ingestion des données est archivée régulièrement, soit dans un magasin de données local suffisamment important, soit dans un stockage à distance (Amazon S3)

Vous devez connaître la taille de vos instantanés et les [règles de cycle de vie des](https://www.elastic.co/guide/en/elasticsearch/reference/current/index-lifecycle-management.html) index associés sur site avant de lancer votre migration. Pour plus d'informations, [contactez Elastic](https://www.elastic.co/contact).

**Rôles et compétences**

Le processus de migration nécessite également les rôles et l'expertise décrits dans le tableau suivant.


| 
| 
| Role | Expertise | Responsabilités | 
| --- |--- |--- |
| Assistance pour les applications | Connaissance d'Elastic Cloud et d'Elastic on premise | Toutes les tâches liées à Elastic | 
| Administrateur système ou DBA | Connaissance approfondie de l'environnement Elastic sur site et de sa configuration | Possibilité de provisionner le stockage, d'installer et d'utiliser l'interface de ligne de commande AWS (AWS CLI) et d'identifier toutes les sources de données alimentant Elastic sur site | 
| Administrateur réseau | Connaissance de la connectivité, de la sécurité et des performances du réseau sur site avec AWS | Établissement de liens réseau entre le site et Amazon S3, avec une compréhension de la bande passante de connectivité | 

**Limites**
+ Elasticsearch sur Elastic Cloud n'est disponible que dans les [régions AWS prises en charge (septembre 2021](https://www.elastic.co/guide/en/cloud/current/ec-regions-templates-instances.html#ec-aws_regions)).

**Versions du produit**
+ Elasticsearch 7.13

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

**Pile technologique source**

Elasticsearch 7.13 ou version ultérieure sur site :
+ Instantanés de cluster
+ Instantanés de l'index
+ Configuration de [Beats](https://www.elastic.co/beats/)

**Architecture de la technologie source**

Le schéma suivant montre une architecture locale typique avec différentes méthodes d'ingestion, différents types de nœuds et Kibana. Les différents types de nœuds reflètent le cluster Elasticsearch, ainsi que les rôles d'authentification et de visualisation.

![\[Un processus en huit étapes incluant Beats, Logstash, Elasticsearch et Kibana.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/23d1b437-22ff-420e-80ac-834f1116d234/images/937c4d22-429f-4673-86df-ae491d68389c.png)


1. Ingestion de Beats vers Logstash

1. Ingestion depuis Beats vers la file d'attente de messagerie Apache Kafka

1. Ingestion de Filebeat vers Logstash

1. Ingestion depuis la file de messagerie Apache Kafka vers Logstash

1. Ingestion de Logstash vers un cluster Elasticsearch

1. Cluster Elasticsearch

1. Nœud d'authentification et de notification

1. Kibana et nœuds blob

**Pile technologique cible**

Elastic Cloud est déployé sur votre compte SaaS dans plusieurs régions AWS avec réplication entre clusters.
+ Instantanés de cluster
+ Instantanés de l'index
+ Configurations Beats
+ Cloud élastique
+ Network Load Balancer
+ Amazon Route 53
+ Amazon S3

**Architecture cible**

![\[Les points de terminaison Route 53 acheminent le trafic vers des environnements multi-AZ dans deux régions différentes.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/23d1b437-22ff-420e-80ac-834f1116d234/images/16cbac49-0adb-4469-b546-ae4b1ca35357.png)


 

L'infrastructure Elastic Cloud gérée est la suivante :
+ Haute disponibilité, présence dans plusieurs [zones de disponibilité](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/) et plusieurs régions AWS.
+ La région est tolérante aux défaillances car les données (index et instantanés) sont répliquées à l'aide de la réplication [inter-clusters](https://www.elastic.co/guide/en/elasticsearch/reference/7.14/xpack-ccr.html) (CCR) Elastic Cloud
+ [Archivage, car les instantanés sont archivés dans Amazon S3](https://aws.amazon.com/s3/?p=pm&c=s3&z=4)
+ Tolérance aux partitions réseau grâce à une combinaison d'[équilibreurs de charge réseau](https://aws.amazon.com/elasticloadbalancing/network-load-balancer/) et de [Route 53](https://aws.amazon.com/route53/)
+ [Ingestion de données provenant (mais sans s'y limiter) d'[Elastic APM](https://www.elastic.co/apm/), [Beats, Logstash](https://www.elastic.co/beats/)](https://www.elastic.co/guide/en/logstash/current/index.html)

**Étapes de migration de haut niveau**

Elastic a développé sa propre méthodologie prescriptive pour la migration d'Elastic Cluster sur site vers Elastic Cloud. La méthodologie Elastic est directement alignée et complémentaire sur les conseils et les meilleures pratiques d'AWS en matière de migration, notamment [Well-Architected Framework](https://aws.amazon.com/architecture/well-architected/?wa-lens-whitepapers.sort-by=item.additionalFields.sortDate&wa-lens-whitepapers.sort-order=desc) et [AWS Migration Acceleration Program](https://aws.amazon.com/migration-acceleration-program/) (MAP). En général, les trois phases de migration vers AWS sont les suivantes :
+ Évaluation
+ Mobilisation
+ Migration et modernisation

Elastic suit des phases de migration similaires avec une terminologie complémentaire :
+ Initier
+ Plan
+ Mettre en œuvre
+ Livrer
+ Fermer

Elastic utilise la méthodologie de mise en œuvre Elastic pour faciliter l'obtention des résultats du projet. Cela est inclusif dès la conception afin de garantir que Elastic, les équipes de conseil et les équipes clients travaillent ensemble avec clarté pour obtenir conjointement les résultats escomptés.

La méthodologie Elastic combine le phasage en cascade traditionnel avec Scrum au cours de la phase de mise en œuvre. Les configurations des exigences techniques sont fournies de manière itérative de manière collaborative tout en minimisant les risques.

![\[Schéma illustrant les cinq étapes de la méthodologie de mise en œuvre élastique.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/23d1b437-22ff-420e-80ac-834f1116d234/images/b041c61d-980e-49a0-a721-791c20edde64.png)


 

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

**Services AWS**
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) — Amazon Route 53 est un service Web de système de noms de domaine (DNS) hautement disponible et évolutif. Vous pouvez utiliser Route 53 pour effectuer trois fonctions importantes dans n'importe quelle combinaison : l'enregistrement de domaine, le routage DNS et la surveillance de l'état.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) — Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets. Vous pouvez utiliser Amazon S3 pour stocker et récupérer n'importe quelle quantité de données, n'importe quand et depuis n'importe quel emplacement sur le Web. Ce modèle utilise un compartiment S3 et [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) — Elastic Load Balancing distribue automatiquement votre trafic entrant sur plusieurs cibles, telles que les EC2 instances, les conteneurs et les adresses IP, dans une ou plusieurs zones de disponibilité.

**Autres outils**
+ [Beats — Beats](https://www.elastic.co/beats/) expédie des données depuis Logstash ou Elasticsearch
+ [Elastic Cloud](https://www.elastic.co/cloud/) — Elastic Cloud est un service géré pour l'hébergement d'Elasticsearch.
+ [Elasticsearch](https://www.elastic.co/elasticsearch/) — Elasticsearch est un moteur de recherche et d'analyse qui utilise la Suite Elastic pour stocker de manière centralisée vos données à des fins de recherche et d'analyse évolutives. Ce modèle utilise également la création de snapshots et la réplication entre clusters.
+ [Logstash](https://www.elastic.co/logstash/) — Logstash est un pipeline de traitement de données côté serveur qui ingère des données provenant de plusieurs sources, les transforme, puis les envoie vers votre espace de stockage de données.

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

### Préparer la migration
<a name="prepare-the-migration"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Identifiez les serveurs exécutant la solution Elastic sur site. | Vérifiez que la migration élastique est prise en charge. | Propriétaire de l'application | 
| Comprenez la configuration du serveur sur site. | Pour comprendre la configuration du serveur nécessaire pour gérer correctement les charges de travail sur site, déterminez l'encombrement matériel du serveur, la configuration réseau et les caractéristiques de stockage actuellement utilisées | Support pour les applications | 
| Collectez les informations relatives aux comptes des utilisateurs et des applications. | Identifiez les noms d'utilisateur et les noms d'applications utilisés par l'environnement Elastic sur site. | Administrateur système, support des applications | 
| Documentez la configuration de Beats et de l'expéditeur de données. | Pour documenter les configurations, examinez les sources de données et les récepteurs existants. Pour plus d'informations, consultez la [documentation Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest.html). | Assistance pour les applications | 
| Déterminez la vélocité et le volume des données. | Établissez une base de référence pour la quantité de données traitée par le cluster. | Administrateur système, support des applications | 
| Documentez les scénarios RPO et RTO. | Documentez les scénarios d'objectif de point de reprise (RPO) et d'objectif de temps de reprise (RTO) en termes de pannes et d'accords de niveau de service ()SLAs. | Propriétaire de l'application, administrateur système, assistance de l'application | 
| Déterminez les paramètres de cycle de vie des instantanés optimaux. | Définissez la fréquence à laquelle les données doivent être sécurisées en utilisant des instantanés Elastic *pendant et après* la migration. | Propriétaire de l'application, administrateur système, assistance de l'application | 
| Définissez les attentes en matière de performances après la migration. | Générez des métriques sur l'actualisation actuelle et attendue de l'écran, les temps d'exécution des requêtes et les comportements de l'interface utilisateur. | Administrateur système, support des applications | 
| Documentez les exigences en matière de transport, de bande passante et de disponibilité de l'accès à Internet. | Vérifiez la vitesse, la latence et la résilience des connexions Internet pour copier des instantanés vers Amazon S3. | Administrateur réseau | 
| Documentez les coûts actuels de l'exécution sur site pour Elastic. | Assurez-vous que le dimensionnement de l'environnement cible AWS est conçu pour être à la fois performant et rentable. | DBA, administrateur système, support des applications | 
| Identifiez les besoins en matière d'authentification et d'autorisation. | Les fonctionnalités de sécurité d'Elastic Stack fournissent des domaines intégrés tels que le protocole LDAP (Lightweight Directory Access Protocol), le langage SAML (Security Assertion Markup Language) et OpenID Connect (OIDC). | DBA, administrateur système, support des applications | 
| Comprenez les exigences réglementaires spécifiques en fonction de la situation géographique. | Assurez-vous que les données sont exportées et cryptées conformément à vos exigences et à toutes les exigences nationales pertinentes. | DBA, administrateur système, support des applications | 

### Mettre en œuvre la migration
<a name="implement-the-migration"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Préparez la zone de transit sur Amazon S3.  | Pour recevoir des instantanés sur Amazon S3, [créez un compartiment S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) et un rôle AWS Identity and Access Management (IAM) temporaire avec un accès complet à votre compartiment nouvellement créé. Pour plus d'informations, consultez [Création d'un rôle pour déléguer des autorisations à un utilisateur IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html). Utilisez le service AWS Security Token Service pour [demander des informations d'identification de sécurité temporaires](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html). Protégez l'identifiant de la clé d'accès, la clé d'accès secrète et le jeton de session.Activez [Amazon S3 Transfer Acceleration](https://docs.aws.amazon.com/AmazonS3/latest/userguide/transfer-acceleration-examples.html) sur le compartiment. | Administrateur AWS | 
| Installez l'AWS CLI et le plug-in Amazon S3 sur site. | Sur chaque nœud Elasticsearch, exécutez la commande suivante.<pre>sudo bin/elasticsearch-plugin install repository-s3</pre>Redémarrez ensuite le nœud. | Administrateur AWS | 
| Configurez l'accès au client Amazon S3. | Ajoutez les clés créées précédemment en exécutant les commandes suivantes.<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> | Administrateur AWS | 
| Enregistrer un référentiel de snapshots pour Elastic Data | Utilisez les [outils de développement Kibana](https://www.elastic.co/guide/en/kibana/current/console-kibana.html) pour indiquer au cluster local sur site dans quel compartiment S3 distant il doit écrire. | Administrateur AWS | 
| Configurez la politique de capture instantanée. | Pour configurer la gestion du cycle de vie des snapshots, dans l'onglet **Politiques** de Kibana, choisissez la **politique SLM** et définissez les heures, les flux de données ou les index à inclure, ainsi que les noms à utiliser.Configurez une politique qui prend fréquemment des instantanés. Les instantanés sont incrémentiels et permettent une utilisation efficace du stockage. Faites correspondre votre décision d'évaluation de l'état de préparation. Une politique peut également spécifier une [politique de rétention](https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-retention.html) et supprimer automatiquement les instantanés lorsqu'ils ne sont plus nécessaires. | Assistance pour les applications | 
| Vérifiez que les instantanés fonctionnent. | Dans Kibana Dev Tools, exécutez la commande suivante.<pre>GET _snapshot/<your_repo_name>/_all</pre> | administrateur AWS, support des applications,  | 
| Déployez un nouveau cluster sur Elastic Cloud.  | [Connectez-vous à Elastic](https://cloud.elastic.co/login?redirectTo=%2Fhome) et choisissez un cluster pour « l'observabilité, la recherche ou la sécurité » en fonction des résultats de l'évaluation du niveau de préparation de votre entreprise. | Administrateur AWS, support des applications | 
| Configurez l'accès au magasin de clés du cluster. | Le nouveau cluster doit accéder au compartiment S3 qui stockera les instantanés. Sur la console Elasticsearch Service, choisissez **Security**, puis entrez les clés d'accès et secrètes IAM que vous avez créées précédemment. | Administrateur AWS | 
| Configurez le cluster hébergé par Elastic Cloud pour accéder à Amazon S3. | Configurez un nouvel accès de cluster au référentiel de snapshots créé précédemment dans Amazon S3. À l'aide de Kibana, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/migrate-an-elk-stack-to-elastic-cloud-on-aws.html) | Administrateur AWS, Support des applications | 
| Vérifiez le nouveau référentiel Amazon S3. | Assurez-vous que vous pouvez accéder à votre nouveau référentiel hébergé dans le cluster Elastic Cloud. | Administrateur AWS | 
| Initialisez le cluster de services Elasticsearch. | Sur l'Elasticsearch Service Console, initialisez le cluster de services Elasticsearch à partir du snapshot S3.Exécutez les commandes suivantes en tant que POST.<pre>*/_close?expand_wildcards=all</pre><pre>/_snapshot/<your-repo-name>/  <your-snapshot-name>/_restore</pre><pre>*/_open?expand_wildcards=all</pre> | Support pour les applications | 

### Terminez la migration
<a name="complete-the-migration"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Vérifiez que la restauration du snapshot a réussi. | À l'aide de Kibana Dev Tools, exécutez la commande suivante.<pre>GET _cat/indices</pre> | Assistance pour les applications | 
| Redéployez les services d'ingestion. | Connectez les points de terminaison de Beats et Logstash au nouveau point de terminaison du service Elasticsearch. | Assistance pour les applications | 

### Testez l'environnement du cluster et nettoyez
<a name="test-the-cluster-environment-and-clean-up"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Validez l'environnement du cluster. | Une fois l'environnement de cluster Elastic sur site migré vers AWS, vous pouvez vous y connecter et utiliser vos propres outils de test d'acceptation utilisateur (UAT) pour valider le nouvel environnement. | Assistance pour les applications | 
| Nettoyez les ressources. | Après avoir vérifié que le cluster a bien migré, supprimez le compartiment S3 et le rôle IAM utilisés pour la migration. | Administrateur AWS | 

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

**Références élastiques**
+ [Cloud élastique](https://www.elastic.co/cloud/)
+ [Elasticsearch et Kibana gérés sur AWS](https://www.elastic.co/elasticsearch/service)
+ [Recherche d'entreprise élastique](https://www.elastic.co/enterprise-search)
+ [Intégrations élastiques](https://www.elastic.co/integrations?search=amazon)
+ [Observabilité élastique](https://www.elastic.co/observability)
+ [Sécurité élastique](https://www.elastic.co/security)
+ [Battements](https://www.elastic.co/beats/)
+ [APM élastique](https://www.elastic.co/apm/)
+ [Migrer vers la gestion du cycle de vie des index](https://www.elastic.co/guide/en/cloud-enterprise/current/ece-migrate-index-management.html)
+ [Abonnements élastiques](https://www.elastic.co/subscriptions)
+ [Contactez Elastic](https://www.elastic.co/contact)

*Articles de blog Elastic*
+ [Comment migrer d'Elasticsearch autogéré vers Elastic Cloud sur AWS](https://www.elastic.co/blog/how-to-migrate-from-self-managed-elasticsearch-to-elastic-cloud-on-aws) (article de blog)
+ [Migration vers Elastic Cloud](https://www.elastic.co/blog/migrating-to-elastic-cloud) (article de blog)

*Documentation élastique*
+ [Tutoriel : Automatisez les sauvegardes avec SLM](https://www.elastic.co/guide/en/elasticsearch/reference/7.10/getting-started-snapshot-lifecycle-management.html)
+ [ILM : gestion du cycle de vie des index](https://www.elastic.co/guide/en/elasticsearch/reference/current/index-lifecycle-management.html)
+ [Logstash](https://www.elastic.co/guide/en/logstash/current/index.html)
+ [Réplication entre clusters (CCR)](https://www.elastic.co/guide/en/elasticsearch/reference/7.14/xpack-ccr.html)
+ [Pipelines d'ingestion](https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest.html)
+ [Exécuter des requêtes d'API Elasticsearch](https://www.elastic.co/guide/en/kibana/current/console-kibana.html)
+ [Conservation des instantanés](https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-retention.html)

*Vidéo et webinaire Elastic*
+ [Migration élastique vers le cloud](https://www.youtube.com/watch?v=WbPJi-APZ_Q)
+ [Elastic Cloud : pourquoi les clients migrent-ils](https://www.elastic.co/webinars/elastic-cloud-why-customers-are-migrating-now) (webinaire)

**Références AWS**
+ [Elastic Cloud sur AWS Marketplace](https://aws.amazon.com/marketplace/seller-profile?id=d8f59038-c24c-4a9d-a66d-6711d35d7305)
+ [interface ligne de commande AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/setup-aws-cli.html)
+ [AWS Direct Connect](https://aws.amazon.com/directconnect/)
+ [Programme d’accélération des migrations AWS](https://aws.amazon.com/migration-acceleration-program/)
+ [Network Load Balancers](https://aws.amazon.com/elasticloadbalancing/network-load-balancer/)
+ [Régions et zones de disponibilité](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/)
+ [Connexions VPN](https://docs.aws.amazon.com/vpc/latest/userguide/vpn-connections.html)
+ [Framework Well-Architected](https://aws.amazon.com/architecture/well-architected/?wa-lens-whitepapers.sort-by=item.additionalFields.sortDate&wa-lens-whitepapers.sort-order=desc)

## Informations supplémentaires
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws-additional"></a>

Si vous envisagez de migrer des charges de travail complexes, faites appel à [Elastic Consulting Services](https://www.elastic.co/consulting/engage). Si vous avez des questions de base concernant les configurations et les services, contactez l'équipe du [Support Elastic](mailto:support@elastic.co).

# Migrez les données vers le AWS Cloud en utilisant Starburst
<a name="migrate-data-to-the-aws-cloud-by-using-starburst"></a>

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

*Shaun Van Staden, aucun*

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

Starburst vous aide à accélérer votre migration de données vers Amazon Web Services (AWS) en fournissant un moteur de requête d'entreprise qui réunit les sources de données existantes dans un point d'accès unique. Vous pouvez effectuer des analyses sur plusieurs sources de données pour obtenir des informations précieuses, avant de finaliser tout plan de migration. Sans perturber les business-as-usual analyses, vous pouvez migrer les données à l'aide du moteur Starburst ou d'une application d'extraction, de transformation et de chargement (ETL) dédiée.

## Conditions préalables et limitations
<a name="migrate-data-to-the-aws-cloud-by-using-starburst-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS
+ Un cloud privé virtuel (VPC)
+ Un cluster Amazon Elastic Kubernetes Service (Amazon EKS)
+ Un groupe Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling
+ Liste des charges de travail actuelles du système qui doivent être migrées
+ Connectivité réseau depuis AWS votre environnement sur site

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

**Architecture de référence**

Le schéma d'architecture de haut niveau suivant montre le déploiement typique de Starburst Enterprise dans AWS Cloud :

1. Le cluster Starburst Enterprise s'exécute dans votre Compte AWS.

1. Un utilisateur s'authentifie à l'aide du protocole LDAP (Lightweight Directory Access Protocol) ou d'Open Authorization (OAuth) et interagit directement avec le cluster Starburst.

1. Starburst peut se connecter à plusieurs sources de AWS données AWS Glue, telles qu'Amazon Simple Storage Service (Amazon S3), Amazon Relational Database Service (Amazon RDS) et Amazon Redshift. Starburst fournit des fonctionnalités de requêtes fédérées entre les sources de données dans AWS Cloud, sur site ou dans d'autres environnements cloud.

1. Vous lancez Starburst Enterprise dans un cluster Amazon EKS à l'aide de diagrammes Helm.

1. Starburst Enterprise utilise les groupes Amazon EC2 Auto Scaling et les instances Amazon EC2 Spot pour optimiser son infrastructure.

1. Starburst Enterprise se connecte directement à vos sources de données sur site existantes pour lire les données en temps réel. En outre, si vous avez déjà déployé Starburst Enterprise dans cet environnement, vous pouvez connecter directement votre nouveau cluster Starburst AWS Cloud à ce cluster existant.

![\[Schéma d'architecture de haut niveau du déploiement de Starburst Enterprise dans le cloud AWS\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/12ae0463-9029-4a32-9d7b-70cdb5406fb0/images/e9975d3a-f75b-41a2-8c08-5b82539adf8c.png)


Veuillez noter ce qui suit :
+ Starburst n'est pas une plateforme de virtualisation de données. Il s'agit d'un moteur de requêtes MPP (Massively Parallel Processing) basé sur SQL qui constitue la base d'une stratégie globale de maillage des données pour l'analyse.
+ Lorsque Starburst est déployé dans le cadre d'une migration, il dispose d'une connectivité directe à l'infrastructure sur site existante.
+ Starburst fournit plusieurs connecteurs d'entreprise et open source intégrés qui facilitent la connectivité à une variété de systèmes existants. Pour une liste complète des connecteurs et de leurs fonctionnalités, voir [Connecteurs](https://docs.starburst.io/latest/connector.html) dans le *guide de l'utilisateur de Starburst Enterprise*.
+ Starburst peut interroger des données en temps réel à partir de sources de données locales. Cela permet d'éviter les interruptions des opérations commerciales régulières pendant la migration des données.
+ Si vous migrez depuis un déploiement Starburst Enterprise sur site existant, vous pouvez utiliser un connecteur spécial, *Starburst Stargate, pour connecter votre cluster Starburst* Enterprise directement à votre cluster sur site. AWS Cela offre des avantages supplémentaires en termes de performances lorsque les utilisateurs professionnels et les analystes de données fédérent les AWS Cloud requêtes depuis votre environnement sur site.

**Présentation générale du processus**

Vous pouvez accélérer les projets de migration de données en utilisant Starburst, car Starburst permet d'obtenir des informations sur toutes vos données avant de les migrer. L'image suivante montre le processus typique de migration de données à l'aide de Starburst.

![\[Flux de processus pour la migration des données vers le cloud AWS à l'aide de Starburst\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/12ae0463-9029-4a32-9d7b-70cdb5406fb0/images/e79b0084-7275-4824-8854-646236ec23dc.png)


**Rôles**

Les rôles suivants sont généralement requis pour effectuer une migration à l'aide de Starburst :
+ **Administrateur du cloud** : responsable de la mise à disposition des ressources du cloud pour exécuter l'application Starburst Enterprise
+ **Administrateur Starburst** : responsable de l'installation, de la configuration, de la gestion et du support de l'application Starburst
+ **Ingénieur de données** — Responsable de :
  + Migration des données existantes vers le cloud
  + Création de vues sémantiques à l'appui de l'analyse
+ **Propriétaire de la solution ou du système** : responsable de la mise en œuvre globale de la solution

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

**Services AWS**
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) fournit une capacité de calcul évolutive dans le AWS Cloud. Vous pouvez lancer autant de serveurs virtuels que vous le souhaitez et les augmenter ou les diminuer rapidement.
+ [Amazon Elastic Kubernetes Service (Amazon](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) EKS) vous permet d'exécuter AWS Kubernetes sans avoir à installer ou à gérer votre propre plan de contrôle ou vos propres nœuds Kubernetes.

**Autres outils**
+ [Helm](https://helm.sh/docs/) — Helm est un gestionnaire de packages pour Kubernetes qui vous aide à installer et à gérer des applications sur votre cluster Kubernetes.
+ [Starburst Enterprise](https://docs.starburst.io/latest/index.html) — Starburst Enterprise est un moteur de requêtes MPP (Massively Parallel Processing) basé sur SQL qui constitue la base d'une stratégie globale de maillage des données pour l'analyse.
+ [Starburst Stargate](https://docs.starburst.io/latest/connector/starburst-stargate.html) — Starburst Stargate relie les catalogues et les sources de données d'un environnement Starburst Enterprise, tel qu'un cluster dans un centre de données sur site, aux catalogues et sources de données d'un autre environnement Starburst Enterprise, tel qu'un cluster dans le. AWS Cloud

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

### Évaluez les données
<a name="assess-the-data"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Identifiez et hiérarchisez vos données. | Identifiez les données que vous souhaitez déplacer. Les grands systèmes existants sur site peuvent inclure des données de base que vous souhaitez migrer ainsi que des données que vous ne souhaitez pas déplacer ou ne peuvent pas être déplacées pour des raisons de conformité. Commencer par un inventaire des données vous permet de hiérarchiser les données à cibler en premier. Pour plus d'informations, voir [Démarrez avec la découverte automatique de portefeuilles](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/get-started-with-automated-portfolio-discovery.html). | Ingénieur de données, DBA | 
| Explorez, inventoriez et sauvegardez vos données. | Validez la qualité, la quantité et la pertinence des données pour votre cas d'utilisation. Sauvegardez ou créez un instantané des données selon vos besoins, puis finalisez l'environnement cible pour les données. | Ingénieur de données, DBA | 

### Configuration de l'environnement Starburst Enterprise
<a name="set-up-the-starburst-enterprise-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez Starburst Enterprise dans le. AWS Cloud | Pendant le catalogage des données, configurez Starburst Enterprise dans un cluster Amazon EKS géré. Pour plus d'informations, voir [Déploiement avec Kubernetes](https://docs.starburst.io/latest/k8s.html) dans la documentation de référence de *Starburst Enterprise*. Cela permet d' business-as-usualeffectuer des analyses pendant le processus de migration des données. | Administrateur AWS, développeur d'applications | 
| Connect Starburst aux sources de données. | Après avoir identifié les données et configuré Starburst Enterprise, connectez Starburst aux sources de données. Starburst lit les données directement depuis la source de données sous forme de requête SQL. Pour plus d'informations, consultez la [documentation de référence de Starburst Enterprise](https://docs.starburst.io/latest/overview.html). | Administrateur AWS, développeur d'applications | 

### Migrer les données
<a name="migrate-the-data"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez et exécutez les pipelines ETL. | Commencez le processus de migration des données. Cette activité peut avoir lieu en même temps que les business-as-usual analyses. Pour la migration, vous pouvez utiliser un produit tiers ou Starburst. Starburst a la capacité de lire et d'écrire des données provenant de différentes sources. Pour plus d'informations, consultez la [documentation de référence de Starburst Enterprise](https://docs.starburst.io/latest/overview.html). | Ingénieur de données | 
| Validez les données. | Une fois les données migrées, validez-les pour vous assurer que toutes les données requises ont été déplacées et sont intactes. | Ingénieur de données, DevOps ingénieur | 

### Découper
<a name="cut-over"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Réduisez les données. | Une fois la migration et la validation des données terminées, vous pouvez supprimer les données. Cela implique de modifier les liens de connexion de données dans Starburst. Au lieu de pointer vers les sources locales, vous pointez vers les nouvelles sources cloud et vous mettez à jour les vues sémantiques. Pour plus d'informations, consultez [Connecteurs](https://docs.starburst.io/latest/connector.html) dans la *documentation de référence de Starburst Enterprise*. | Ingénieur de données, responsable du transfert | 
| Déployez auprès des utilisateurs. | Les consommateurs de données commencent à travailler à partir des sources de données migrées. Ce processus est invisible pour les utilisateurs finaux des outils d'analyse. | Responsable du transfert, ingénieur des données | 

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

**AWS Marketplace**
+ [Galaxie Starburst](https://aws.amazon.com/marketplace/pp/prodview-yugyv4gbgn5ss?ref_=srh_res_product_title)
+ [Starburst Entreprise](https://aws.amazon.com/marketplace/pp/prodview-pwnl3c6p2jycg?ref_=srh_res_product_title)
+ [Données Starburst JumpStart](https://aws.amazon.com/marketplace/pp/prodview-ou6drb23gch2u?ref_=srh_res_product_title)
+ [Starburst Enterprise avec Graviton](https://aws.amazon.com/marketplace/pp/prodview-2bpppdqlesn6w?ref_=srh_res_product_title)

**Documentation sur Starburst**
+ [Guide de l'utilisateur de Starburst Enterprise](https://docs.starburst.io/index.html)
+ [Documentation de référence de Starburst Enterprise](https://docs.starburst.io/latest/index.html)

**Autre AWS documentation**
+ [Commencez par la découverte automatisée des portefeuilles](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/get-started-with-automated-portfolio-discovery.html) (directives AWS prescriptives)
+ [Optimisation des coûts et des performances de l'infrastructure cloud avec Starburst on AWS](https://aws.amazon.com/blogs/architecture/optimizing-cloud-infrastructure-cost-and-performance-with-starburst-on-aws/) (article de AWS blog)

# Optimisation de l'ingestion ETL de la taille du fichier d'entrée sur AWS
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws"></a>

*Soutenez Patrikar, Amazon Web Services*

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

Ce modèle vous montre comment optimiser l'étape d'ingestion du processus d'extraction, de transformation et de chargement (ETL) pour le Big Data et les charges de travail Apache Spark sur AWS Glue en optimisant la taille des fichiers avant de traiter vos données. Utilisez ce modèle pour prévenir ou résoudre le *problème des petits fichiers*. C'est-à-dire lorsqu'un grand nombre de petits fichiers ralentit le traitement des données en raison de la taille globale des fichiers. Par exemple, des centaines de fichiers de quelques centaines de kilo-octets chacun peuvent considérablement ralentir la vitesse de traitement des données pour vos tâches AWS Glue. Cela est dû au fait qu'AWS Glue doit exécuter des fonctions de liste internes sur Amazon Simple Storage Service (Amazon S3) et YARN (Yet Another Resource Negotiator) doit stocker une grande quantité de métadonnées. Pour améliorer les vitesses de traitement des données, vous pouvez utiliser le regroupement pour permettre à vos tâches ETL de lire un groupe de fichiers d'entrée sur une seule partition en mémoire. La partition regroupe automatiquement les petits fichiers. Vous pouvez également utiliser un code personnalisé pour ajouter une logique de traitement par lots à vos fichiers existants.

## Conditions préalables et limitations
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ Une ou plusieurs [tâches](https://docs.aws.amazon.com/glue/latest/dg/author-job.html) AWS Glue
+ Une ou plusieurs charges de travail Big Data ou [Apache Spark](https://spark.apache.org/)
+ [Compartiment S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html)

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

Le modèle suivant montre comment les données de différents formats sont traitées par une tâche AWS Glue, puis stockées dans un compartiment S3 pour obtenir une visibilité sur les performances.

![\[Les données sous différents formats sont traitées par une tâche AWS Glue, puis stockées dans un compartiment S3.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/88ee332f-2f12-4d88-b491-e78bbb173850/images/9a97b54a-3f67-4a48-94d2-5807373ace25.png)


Le schéma suivant illustre le flux de travail suivant :

1. 
**Note**  
Une tâche AWS Glue convertit de petits fichiers au format CSV, JSON et Parquet en cadres dynamiques. : La taille du fichier d'entrée a l'impact le plus significatif sur les performances de la tâche AWS Glue.

1. La tâche AWS Glue exécute des fonctions de liste internes dans un compartiment S3.

## Outils
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-tools"></a>
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) est un service ETL entièrement géré. Il vous aide à classer, nettoyer, enrichir et déplacer les données de manière fiable entre les magasins de données et les flux de données.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.

## Épopées
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-epics"></a>

### Utilisez le regroupement pour optimiser l'ingestion d'ETL pendant la lecture
<a name="use-grouping-to-optimize-etl-ingestion-during-reading"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Spécifiez la taille du groupe. | Si vous avez plus de 50 000 fichiers, le regroupement est effectué par défaut. Toutefois, vous pouvez également utiliser le regroupement pour moins de 50 000 fichiers en spécifiant la taille du groupe dans le `connectionOptions` paramètre. Le `connectionOptions` paramètre se trouve dans la `create_dynamic_frame.from_options` méthode. | Ingénieur de données | 
| Écrivez le code de regroupement. | Utilisez `create_dynamic_frame` cette méthode pour créer un cadre dynamique. Par exemple :<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>`groupFiles`À utiliser pour regrouper des fichiers dans un groupe de partitions Amazon S3. Permet `groupSize` de définir la taille cible du groupe à lire en mémoire. Spécifiez `groupSize` en octets (1048576 = 1 Mo). | Ingénieur de données | 
| Ajoutez le code au flux de travail. | Ajoutez le code de regroupement à votre [flux de travail](https://docs.aws.amazon.com/glue/latest/dg/workflows_overview.html) dans AWS Glue. | Ingénieur de données | 

### Utilisez une logique personnalisée pour optimiser l'ingestion d'ETL
<a name="use-custom-logic-to-optimize-etl-ingestion"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Choisissez la langue et la plateforme de traitement. | Choisissez le langage de script et la plate-forme de traitement adaptés à votre cas d'utilisation. | Architecte du cloud | 
| Écrivez le code. | Écrivez la logique personnalisée pour regrouper vos fichiers. | Architecte du cloud | 
| Ajoutez le code au flux de travail. | Ajoutez le code à votre [flux de travail](https://docs.aws.amazon.com/glue/latest/dg/workflows_overview.html) dans AWS Glue. Cela permet d'appliquer votre logique personnalisée à chaque exécution de la tâche. | Ingénieur de données | 

### Répartition lors de l'écriture de données après transformation
<a name="repartition-when-writing-data-after-transformation"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Analysez les habitudes de consommation. | Découvrez comment les applications en aval utiliseront les données que vous écrivez. Par exemple, s'ils interrogent des données chaque jour et que vous partitionnez uniquement les données par région ou que vous avez de très petits fichiers de sortie, tels que 2,5 Ko par fichier, cela n'est pas optimal en termes de consommation. | DBA | 
| Répartissez les données avant de les écrire. | Répartition basée sur les jointures ou les requêtes pendant le traitement (selon la logique de traitement) et après le traitement (en fonction de la consommation). Par exemple, une répartition basée sur la taille des octets, telle que`.repartition(100000)`, ou une répartition basée sur des colonnes, telle que. `.repartition("column_name")` | Ingénieur de données | 

## Ressources connexes
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-resources"></a>
+ [Lecture de fichiers d'entrée dans des groupes plus importants](https://docs.aws.amazon.com/glue/latest/dg/grouping-input-files.html)
+ [Surveillance d'AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/monitor-glue.html)
+ [Surveillance d'AWS Glue à l'aide CloudWatch des métriques Amazon](https://docs.aws.amazon.com/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)
+ [Surveillance et débogage des tâches](https://docs.aws.amazon.com/glue/latest/dg/monitor-profile-glue-job-cloudwatch-metrics.html)
+ [Commencer à utiliser l'ETL sans serveur sur AWS Glue](https://docs.aws.amazon.com/prescriptive-guidance/latest/serverless-etl-aws-glue/welcome.html)

## Informations supplémentaires
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-additional"></a>

**Détermination de la taille du fichier**

Il n'existe aucun moyen simple de déterminer si la taille d'un fichier est trop grande ou trop petite. L'impact de la taille du fichier sur les performances de traitement dépend de la configuration de votre cluster. Dans le noyau de Hadoop, nous vous recommandons d'utiliser des fichiers de 128 Mo ou 256 Mo pour tirer le meilleur parti de la taille des blocs.

Pour la plupart des charges de travail de fichiers texte sur AWS Glue, nous recommandons une taille de fichier comprise entre 100 Mo et 1 Go pour un cluster de 5 à 10 DPU. Pour déterminer la taille optimale des fichiers d'entrée, surveillez la section de prétraitement de votre tâche AWS Glue, puis vérifiez l'utilisation du processeur et de la mémoire de la tâche.

**Considérations supplémentaires**

Si les performances au cours des premières étapes de l'ETL constituent un obstacle, envisagez de regrouper ou de fusionner les fichiers de données avant le traitement. Si vous contrôlez totalement le processus de génération de fichiers, il peut être encore plus efficace d'agréger les points de données sur le système source lui-même avant que les données brutes ne soient envoyées à AWS.

# Orchestrez un pipeline ETL avec validation, transformation et partitionnement à l'aide de AWS Step Functions
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions"></a>

*Sandip Gangapadhyay, Amazon Web Services*

## Résumé
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-summary"></a>

Ce modèle décrit comment créer un pipeline d'extraction, de transformation et de chargement (ETL) sans serveur pour valider, transformer, compresser et partitionner un ensemble de données CSV volumineux afin d'optimiser les performances et les coûts. Le pipeline est orchestré par AWS Step Functions et inclut des fonctionnalités de gestion des erreurs, de réessai automatique et de notification aux utilisateurs.

Lorsqu'un fichier CSV est chargé dans un dossier source du bucket Amazon Simple Storage Service (Amazon S3), le pipeline ETL commence à s'exécuter. Le pipeline valide le contenu et le schéma du fichier CSV source, transforme le fichier CSV au format Apache Parquet compressé, partitionne le jeu de données par année, mois et jour, et le stocke dans un dossier distinct pour que les outils d'analyse puissent le traiter.

Le code qui automatise ce modèle est disponible sur GitHub, dans le [pipeline ETL avec AWS Step Functions](https://github.com/aws-samples/aws-step-functions-etl-pipeline-pattern) référentiel.

## Conditions préalables et limitations
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS.
+ AWS Command Line Interface (AWS CLI) installé et configuré avec votre Compte AWS, afin que vous puissiez créer des AWS ressources en déployant une AWS CloudFormation pile. Nous vous recommandons d'utiliser AWS CLI la version 2. Pour obtenir des instructions, consultez la section [Installation ou mise à jour vers la dernière version AWS CLI de](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) la AWS CLI documentation. Pour les instructions de configuration, consultez [la section Paramètres des fichiers de configuration et d'identification](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) dans la AWS CLI documentation.
+ Un compartiment Amazon S3.
+ Un jeu de données CSV avec le schéma correct. (Le [référentiel de code](https://github.com/aws-samples/aws-step-functions-etl-pipeline-pattern/) inclus dans ce modèle fournit un exemple de fichier CSV contenant le schéma et le type de données appropriés que vous pouvez utiliser.)
+ Un navigateur Web qui prend en charge le AWS Management Console. (Consultez la [liste des navigateurs pris en charge](https://aws.amazon.com/premiumsupport/knowledge-center/browsers-management-console/).)
+ AWS Glue accès à la console.
+ AWS Step Functions accès à la console.

**Limites**
+ En AWS Step Functions, la limite maximale de conservation des journaux d'historique est de 90 jours. Pour plus d'informations, consultez la section [Quotas de service Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/service-quotas.html) dans la AWS Step Functions documentation.

**Versions du produit**
+ Python 3.13 pour AWS Lambda
+ AWS Glue version 4.0

## Architecture
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-architecture"></a>

![\[Processus ETL depuis le compartiment source S3 via Step Functions, AWS Glue et Amazon SNS en 10 étapes.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/8eb792b0-d35b-4a63-ba2d-71eb8d2c1203/images/054c8e9d-76a2-4334-b21a-cbe76af45923.png)


 

Le flux de travail illustré dans le diagramme comprend les étapes de haut niveau suivantes :

1. L'utilisateur télécharge un fichier CSV dans le dossier source d'Amazon S3.

1. Un événement de notification Amazon S3 lance une AWS Lambda fonction qui démarre la machine à AWS Step Functions états.

1. La fonction Lambda valide le schéma et le type de données du fichier CSV brut.

1. En fonction des résultats de validation :

   1. Si la validation du fichier source aboutit, le fichier est transféré dans le dossier de stage pour un traitement ultérieur.

   1. Si la validation échoue, le fichier est transféré dans le dossier des erreurs et une notification d'erreur est envoyée via Amazon Simple Notification Service (Amazon SNS).

1. Un AWS Glue robot d'exploration crée le schéma du fichier brut à partir du dossier stage dans Amazon S3.

1. Une AWS Glue tâche transforme, compresse et partitionne le fichier brut au format Parquet.

1. La AWS Glue tâche déplace également le fichier vers le dossier de transformation d'Amazon S3.

1. Le AWS Glue robot crée le schéma à partir du fichier transformé. Le schéma obtenu peut être utilisé par n'importe quelle tâche d'analyse. Vous pouvez également utiliser Amazon Athena pour exécuter des requêtes ad hoc.

1. Si le pipeline se termine sans erreur, le fichier de schéma est déplacé vers le dossier d'archive. En cas d'erreur, le fichier est plutôt déplacé vers le dossier des erreurs.

1. Amazon SNS envoie une notification indiquant le succès ou l'échec en fonction de l'état d'achèvement du pipeline.

Toutes les AWS ressources utilisées dans ce modèle sont sans serveur. Il n'y a aucun serveur à gérer.

## Outils
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-tools"></a>

**Services AWS**
+ [AWS Glue](https://aws.amazon.com/glue/)— AWS Glue est un service ETL entièrement géré qui permet aux clients de préparer et de charger facilement leurs données à des fins d'analyse.
+ [AWS Step Functions](https://aws.amazon.com/step-functions/)— AWS Step Functions est un service d'orchestration sans serveur qui vous permet de combiner des AWS Lambda fonctions et d'autres fonctions Services AWS pour créer des applications critiques pour l'entreprise. La console AWS Step Functions graphique vous permet de voir le flux de travail de votre application comme une série d'étapes pilotées par des événements.
+ [Amazon S3](https://aws.amazon.com/s3/) — Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets qui offre une évolutivité, une disponibilité des données, une sécurité et des performances de pointe.
+ [Amazon SNS —](https://aws.amazon.com/sns/) Amazon Simple Notification Service (Amazon SNS) est un service de messagerie hautement disponible, durable, sécurisé et entièrement pub/sub géré qui vous permet de dissocier les microservices, les systèmes distribués et les applications sans serveur.
+ [AWS Lambda](https://aws.amazon.com/lambda/)— AWS Lambda est un service de calcul qui vous permet d'exécuter du code sans provisionner ni gérer de serveurs. AWS Lambda exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de quelques requêtes par jour à des milliers par seconde.

**Code**

Le code de ce modèle est disponible sur GitHub, dans le [pipeline ETL avec AWS Step Functions](https://github.com/aws-samples/aws-step-functions-etl-pipeline-pattern) référentiel. Le référentiel de code contient les fichiers et dossiers suivants :
+ `template.yml`— AWS CloudFormation modèle pour créer le pipeline ETL avec AWS Step Functions.
+ `parameter.json`— Contient tous les paramètres et leurs valeurs. Vous mettez à jour ce fichier pour modifier les valeurs des paramètres, comme décrit dans la section *Epics*.
+ `myLayer/python`dossier — Contient les packages Python nécessaires pour créer la AWS Lambda couche requise pour ce projet.
+ `lambda`dossier — Contient les fonctions Lambda suivantes :
  + `move_file.py`— Déplace le jeu de données source vers le dossier d'archive, de transformation ou d'erreur.
  + `check_crawler.py`— Vérifie l'état du AWS Glue robot d'exploration autant de fois que configuré par la variable d'`RETRYLIMIT `environnement avant qu'il n'envoie un message d'échec.
  + `start_crawler.py`— Démarre le AWS Glue crawler.
  + `start_step_function.py`— Démarre AWS Step Functions.
  + `start_codebuild.py`— Démarre le AWS CodeBuild projet.
  + `validation.py`— Valide le jeu de données brut en entrée.
  + `s3object.py`— Crée la structure de répertoire requise dans le compartiment Amazon S3.
  + `notification.py`— Envoie des notifications de réussite ou d'erreur à la fin du pipeline.

Pour utiliser l'exemple de code, suivez les instructions de la section *Epics*.

## Épopées
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-epics"></a>

### Préparez les fichiers sources
<a name="prepare-the-source-files"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Clonez le référentiel d'exemples de code. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.html) | Developer | 
| Mettez à jour les valeurs des paramètres. | Dans votre copie locale du référentiel, modifiez le `parameter.json` fichier et mettez à jour les valeurs des paramètres par défaut comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.html) | Developer | 
| Téléchargez le code source dans le compartiment Amazon S3. | Avant de déployer le AWS CloudFormation modèle qui automatise le pipeline ETL, vous devez empaqueter les fichiers source du modèle et les charger dans un compartiment Amazon S3. Pour ce faire, exécutez la AWS CLI commande suivante avec votre profil préconfiguré :<pre>aws cloudformation package --template-file template.yml --s3-bucket <bucket_name> --output-template-file packaged.template --profile <profile_name></pre>où :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.html) | Developer | 

### Créez la pile .
<a name="create-the-stack"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez le CloudFormation modèle. | Pour déployer le AWS CloudFormation modèle, exécutez la AWS CLI commande suivante :<pre>aws cloudformation deploy --stack-name <stack_name> --template-file packaged.template --parameter-overrides file://parameter.json --capabilities CAPABILITY_IAM --profile <profile_name></pre>où :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.html) | Developer | 
| Vérifiez les progrès. | Sur la [AWS CloudFormation console](https://console.aws.amazon.com/cloudformation/), vérifiez l'état d'avancement du développement de la pile. Lorsque le statut est défini`CREATE_COMPLETE`, la pile a été déployée avec succès. | Developer | 
| Notez le nom de la AWS Glue base de données. | L'onglet **Sorties** de la pile affiche le nom de la AWS Glue base de données. Le nom de la clé est`GlueDBOutput`. | Developer | 

### Testez le pipeline
<a name="test-the-pipeline"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Démarrez le pipeline ETL. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.html) | Developer | 
| Vérifiez la présence du jeu de données partitionné. | Lorsque le pipeline ETL est terminé, vérifiez que l'ensemble de données partitionné est disponible dans le dossier de transformation Amazon S3 (`transform`ou dans le nom du dossier que vous avez défini dans le `parameter.json` fichier). | Developer | 
| Vérifiez la base de AWS Glue données partitionnée. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.html) | Developer | 
| Exécutez des requêtes. | (Facultatif) Utilisez Amazon Athena pour exécuter des requêtes ad hoc sur la base de données partitionnée et transformée. Pour obtenir des instructions, consultez la section [Exécuter des requêtes SQL dans Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/querying-athena-tables.html) dans la AWS documentation. | analyste de base de données | 

## Résolution des problèmes
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Gestion des identités et des accès AWS Autorisations (IAM) pour le AWS Glue job et le crawler | Si vous personnalisez davantage la AWS Glue tâche ou le robot d'exploration, veillez à accorder les autorisations IAM appropriées dans le rôle IAM utilisé par la AWS Glue tâche, ou à fournir des autorisations de données à. AWS Lake Formation Pour plus d’informations, consultez la [documentation AWS](https://docs.aws.amazon.com/lake-formation/latest/dg/upgrade-glue-lake-formation.html). | 

## Ressources connexes
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-resources"></a>

**Service AWS documentation**
+ [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/)

## Informations supplémentaires
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-additional"></a>

Le schéma suivant montre le AWS Step Functions flux de travail pour un pipeline ETL réussi, à partir du panneau AWS Step Functions **Inspector**. ****

![\[Workflow Step Functions pour valider le fichier .csv d'entrée, analyser les données et exécuter la tâche AWS Glue.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/8eb792b0-d35b-4a63-ba2d-71eb8d2c1203/images/bd77de7b-4d04-44bb-95d2-3ec4599b3770.png)


Le schéma suivant montre le AWS Step Functions flux de travail d'un pipeline ETL qui échoue en raison d'une erreur de validation des entrées, à partir du panneau Step Functions **Inspector**. 

![\[Step Functions : le flux de travail échoue, de sorte que le fichier est déplacé vers le dossier des erreurs.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/8eb792b0-d35b-4a63-ba2d-71eb8d2c1203/images/5fd7dd79-ba4c-4c20-b1f0-ad4b5f22bdfc.png)


 

# Effectuez des analyses avancées à l'aide d'Amazon Redshift ML
<a name="perform-advanced-analytics-using-amazon-redshift-ml"></a>

*Po Hong et Chyanna Antonio, Amazon Web Services*

## Résumé
<a name="perform-advanced-analytics-using-amazon-redshift-ml-summary"></a>

Sur le cloud Amazon Web Services (AWS), vous pouvez utiliser l'apprentissage automatique Amazon Redshift (Amazon Redshift ML) pour effectuer des analyses de machine learning sur les données stockées dans un cluster Amazon Redshift ou sur Amazon Simple Storage Service (Amazon S3). Amazon Redshift ML prend en charge l'apprentissage supervisé, qui est généralement utilisé pour des analyses avancées. Les cas d'utilisation d'Amazon Redshift ML incluent les prévisions de revenus, la détection des fraudes par carte de crédit, la valeur à vie du client (CLV) ou les prévisions de désabonnement des clients.

Amazon Redshift ML permet aux utilisateurs de bases de données de créer, d'entraîner et de déployer facilement des modèles de ML à l'aide de commandes SQL standard. Amazon Redshift ML utilise Amazon SageMaker Autopilot pour entraîner et ajuster automatiquement les meilleurs modèles de ML à des fins de classification ou de régression en fonction de vos données, tout en conservant le contrôle et la visibilité.

Toutes les interactions entre Amazon Redshift, Amazon S3 et Amazon SageMaker sont supprimées et automatisées. Une fois le modèle ML formé et déployé, il devient disponible en tant que [fonction définie par l'utilisateur](https://docs.aws.amazon.com/redshift/latest/dg/user-defined-functions.html) (UDF) dans Amazon Redshift et peut être utilisé dans les requêtes SQL.  

Ce modèle complète les modèles de [création, d'entraînement et de déploiement de modèles de machine learning dans Amazon Redshift en utilisant SQL avec 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/) du blog AWS, ainsi que le didacticiel sur [la création, l'entraînement et le déploiement d'un modèle de machine learning avec SageMaker Amazon](https://aws.amazon.com/getting-started/hands-on/build-train-deploy-machine-learning-model-sagemaker/) [du Getting](https://aws.amazon.com/getting-started/) Started Resource Center.

## Conditions préalables et limitations
<a name="perform-advanced-analytics-using-amazon-redshift-ml-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ Données existantes dans une table Amazon Redshift

**Compétences**
+ *Connaissance des termes et concepts utilisés par Amazon Redshift ML, *notamment l'apprentissage automatique*, la formation *et les* prédictions.* Pour plus d'informations à ce sujet, consultez la section [Training ML models](https://docs.aws.amazon.com/machine-learning/latest/dg/training-ml-models.html) dans la documentation Amazon Machine Learning (Amazon ML).
+ Expérience de la configuration utilisateur d'Amazon Redshift, de la gestion des accès et de la syntaxe SQL standard. Pour plus d'informations à ce sujet, consultez [Getting started with Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html) dans la documentation Amazon Redshift.
+ Connaissance et expérience d'Amazon S3 et d'AWS Identity and Access Management (IAM). 
+ L'expérience de l'exécution de commandes dans l'interface de ligne de commande AWS (AWS CLI) est également utile, mais elle n'est pas obligatoire. 

**Limites**
+ Le cluster Amazon Redshift et le compartiment S3 doivent être situés dans la même région AWS.
+ L'approche de ce modèle ne prend en charge que les modèles d'apprentissage supervisé tels que la régression, la classification binaire et la classification multiclasse. 

## Architecture
<a name="perform-advanced-analytics-using-amazon-redshift-ml-architecture"></a>

![\[Le flux de travail montre comment Amazon Redshift ML fonctionne SageMaker pour créer, former et déployer un modèle de machine learning.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/3b6a5f49-c647-45f4-940e-b623f989326a/images/36cc39fe-c1f3-4d68-b89e-e636156001a6.png)


Les étapes suivantes expliquent comment Amazon Redshift ML fonctionne SageMaker pour créer, entraîner et déployer un modèle de ML : 

1. Amazon Redshift exporte les données d'entraînement vers un compartiment S3.

1. SageMaker Le pilote automatique prétraite automatiquement les données d'entraînement.

1. Une fois l'`CREATE MODEL`instruction invoquée, Amazon Redshift ML l'utilise SageMaker pour l'entraînement.

1. SageMaker Le pilote automatique recherche et recommande l'algorithme ML et les hyperparamètres optimaux qui optimisent les métriques d'évaluation.

1. Amazon Redshift ML enregistre le modèle ML de sortie en tant que fonction SQL dans le cluster Amazon Redshift.

1. La fonction du modèle ML peut être utilisée dans une instruction SQL. 

**Pile technologique**
+ Amazon Redshift
+ SageMaker
+ Amazon S3

## Outils
<a name="perform-advanced-analytics-using-amazon-redshift-ml-tools"></a>
+ [Amazon Redshift — Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/welcome.html) est un service d'entreposage de données entièrement géré au niveau de l'entreprise, à l'échelle du pétaoctet.
+ [Amazon Redshift ML](https://docs.aws.amazon.com/redshift/latest/dg/machine_learning.html) — Amazon Redshift Machine Learning (Amazon Redshift ML) est un service robuste basé sur le cloud qui permet aux analystes et aux data scientists de tous niveaux d'utiliser facilement la technologie ML.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) — Amazon Simple Storage Service (Amazon S3) est un service de stockage pour Internet. 
+ [Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) — SageMaker est un service de machine learning entièrement géré. 
+ [Amazon SageMaker Autopilot](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development.html) — Le SageMaker pilote automatique est un ensemble de fonctionnalités qui automatise les tâches clés d'un processus d'apprentissage automatique (AutoML).

 

**Code**

Vous pouvez créer un modèle de machine learning supervisé dans Amazon Redshift à l'aide du code suivant :

```
"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'
);")
```

**Note**  
L'`SELECT`état peut faire référence aux tables standard Amazon Redshift, aux tables externes Amazon Redshift Spectrum, ou aux deux.

## Épopées
<a name="perform-advanced-analytics-using-amazon-redshift-ml-epics"></a>

### Préparer un ensemble de données de formation et de test
<a name="prepare-a-training-and-test-dataset"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Préparez un ensemble de données de formation et de test. | Connectez-vous à l'AWS Management Console et ouvrez la SageMaker console Amazon. Suivez les instructions du didacticiel sur la [création, l'entraînement et le déploiement d'un modèle d'apprentissage automatique](https://aws.amazon.com/getting-started/hands-on/build-train-deploy-machine-learning-model-sagemaker/) pour créer un fichier .csv ou Apache Parquet comportant une colonne d'étiquette (*formation supervisée*) et aucun en-tête. Nous vous recommandons de mélanger et de diviser le jeu de données brut en un ensemble d'apprentissage pour l'entraînement du modèle (70 %) et un ensemble de test pour l'évaluation des performances du modèle (30 %). | Scientifique des données | 

### Préparation et configuration de la pile technologique
<a name="prepare-and-configure-the-technology-stack"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez et configurez un cluster Amazon Redshift. | Sur la console Amazon Redshift, créez un cluster en fonction de vos besoins. Pour plus d'informations à ce sujet, consultez la section [Créer un cluster](https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-data-launch-cluster.html) dans la documentation Amazon Redshift.  Les clusters Amazon Redshift doivent être créés avec le suivi de `SQL_PREVIEW` maintenance. Pour plus d'informations sur les pistes de prévisualisation, consultez [Choisir les pistes de maintenance du cluster](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-mgmt-maintenance-tracks) dans la documentation Amazon Redshift. | DBA, architecte cloud | 
| Créez un compartiment S3 pour stocker les données d'entraînement et les artefacts du modèle. | Sur la console Amazon S3, créez un compartiment S3 pour les données d'entraînement et de test. Pour plus d'informations sur la création d'un compartiment S3, consultez [Créer un compartiment S3](https://docs.aws.amazon.com/quickstarts/latest/s3backup/step-1-create-bucket.html) à partir d'AWS Quick Starts. Assurez-vous que votre cluster Amazon Redshift et votre compartiment S3 se trouvent dans la même région.  | DBA, architecte cloud | 
| Créez et associez une politique IAM au cluster Amazon Redshift. | Créez une politique IAM pour autoriser le cluster Amazon Redshift à SageMaker accéder à Amazon S3. Pour obtenir des instructions et des étapes, consultez la section [Configuration du cluster pour l'utilisation d'Amazon Redshift ML](https://docs.aws.amazon.com/redshift/latest/dg/cluster-setup.html) dans la documentation Amazon Redshift. | DBA, architecte cloud | 
| Autorisez les utilisateurs et les groupes Amazon Redshift à accéder aux schémas et aux tables. | Accordez des autorisations pour permettre aux utilisateurs et aux groupes d'Amazon Redshift d'accéder aux schémas et aux tables internes et externes. Pour connaître les étapes et les instructions, consultez [la section Gestion des autorisations et de la propriété](https://docs.aws.amazon.com/redshift/latest/dg/permissions-ownership.html) dans la documentation Amazon Redshift. | DBA | 

### Créez et entraînez le modèle ML dans Amazon Redshift
<a name="create-and-train-the-ml-model-in-amazon-redshift"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez et entraînez le modèle ML dans Amazon Redshift. | Créez et entraînez votre modèle de machine learning dans Amazon Redshift ML. Pour plus d'informations, consultez la `CREATE MODEL` déclaration contenue dans la documentation Amazon Redshift. | Développeur, data scientist | 

### Effectuer des inférences et des prédictions par lots dans Amazon Redshift
<a name="perform-batch-inference-and-prediction-in-amazon-redshift"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Effectuez une inférence à l'aide de la fonction de modèle ML générée. | Pour plus d'informations sur l'inférence à l'aide de la fonction de modèle ML générée, consultez [Prediction](https://docs.aws.amazon.com/redshift/latest/dg/prediction.html) dans la documentation Amazon Redshift. | Data scientist, utilisateur de business intelligence | 

## Ressources connexes
<a name="perform-advanced-analytics-using-amazon-redshift-ml-resources"></a>

**Préparer un ensemble de données de formation et de test**
+ [Création, formation et déploiement d'un modèle d'apprentissage automatique avec Amazon SageMaker](https://aws.amazon.com/getting-started/hands-on/build-train-deploy-machine-learning-model-sagemaker/)

 

**Préparation et configuration de la pile technologique**
+ [Création d'un cluster Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-data-launch-cluster.html)
+ [Choisir les pistes de maintenance du cluster Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-mgmt-maintenance-tracks)
+ [Création d'un compartiment S3](https://docs.aws.amazon.com/quickstarts/latest/s3backup/step-1-create-bucket.html)
+ [Configuration d'un cluster Amazon Redshift pour utiliser Amazon Redshift ML](https://docs.aws.amazon.com/redshift/latest/dg/cluster-setup.html)
+ [Gestion des autorisations et de la propriété dans Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/permissions-ownership.html)

 

**Créez et entraînez le modèle ML dans Amazon Redshift**
+ [Déclaration CREATE MODEL dans Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_MODEL.html#r_simple_create_model) 

 

**Effectuer des inférences et des prédictions par lots dans Amazon Redshift**
+ [Prédiction dans Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/prediction.html) 

 

**Autres ressources**
+ [Commencer à utiliser Amazon Redshift ML](https://docs.aws.amazon.com/redshift/latest/dg/geting-started-machine-learning.html)
+ [Création, formation et déploiement de modèles de machine learning dans Amazon Redshift à l'aide de SQL avec 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/)
+ [Partenaires 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)
+ [Partenaires de compétences AWS en apprentissage automatique](https://aws.amazon.com/machine-learning/partner-solutions/?partner-solutions-cards.sort-by=item.additionalFields.partnerNameLower&partner-solutions-cards.sort-order=asc)

# Interrogez les tables Amazon DynamoDB avec SQL à l'aide d'Amazon Athena
<a name="query-amazon-dynamodb-tables-sql-amazon-athena"></a>

*Gavin Perrie, Ajit Ambike et Brad Yates, Amazon Web Services*

## Résumé
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-summary"></a>

Si vos données incluent des sources autres qu'Amazon Simple Storage Service (Amazon S3), vous pouvez utiliser des requêtes fédérées pour accéder à ces sources de données relationnelles, non relationnelles, objets ou personnalisées. Ce modèle montre comment configurer l'accès aux requêtes fédérées via Amazon Athena vers Amazon DynamoDB à l'aide d'un connecteur de source de données SQL.

À l'aide de ce modèle, vous pouvez effectuer les opérations suivantes :
+ Interrogez les tables DynamoDB à l'aide de SQL.
+ Exécutez des requêtes SQL fédérées dans Athena et associez des tables DynamoDB à d'autres sources de données prises en charge.

## Conditions préalables et limitations
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-prereqs"></a>

**Conditions préalables**
+ Une table DynamoDB.
+ Un groupe de travail Athena configuré pour utiliser la version 2 du moteur Athena. Pour obtenir des instructions, consultez la documentation d'[Athena](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-changing.html).
+ Un compartiment S3 dans lequel la `AthenaDynamoDBConnector` AWS Lambda fonction peut diffuser les données. Le compartiment S3 et la fonction Lambda doivent se trouver dans la même région AWS.

Si c'est la première fois que vous accédez à Athena, vous aurez besoin d'un compartiment S3 supplémentaire à utiliser comme emplacement des résultats de requête. Pour obtenir des instructions, consultez la documentation d'[Athena](https://docs.aws.amazon.com/athena/latest/ug/querying.html#query-results-specify-location-console).

**Limites**
+ Les opérations d'écriture telles que [INSERT INTO](https://docs.aws.amazon.com/athena/latest/ug/insert-into.html) ne sont pas prises en charge. ****

**Versions du produit**
+ [Athena Query Federation sort sur GitHub](https://github.com/awslabs/aws-athena-query-federation/releases)

## Architecture
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-architecture"></a>

**Architecture cible**

Le schéma suivant montre le flux de connexion une fois le schéma établi. L'utilisateur se connecte à Amazon Athena pour fournir la requête. Athena transmet la requête et la cible à la fonction Lambda du connecteur de source de données DynamoDB, qui récupère et renvoie les données à Athena. Si de grandes quantités de données sont renvoyées, Athena stocke les résultats temporaires dans le seau avant de conditionner et de renvoyer l'ensemble de données complet.

![\[Flux de travail entre les utilisateurs, Athena et Lambda, qui se connecte au compartiment S3 et à la table DynamoDB.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/9d1ee529-36f3-4c7e-a2e7-05b76e09a3d8/images/e50a00cf-a55a-4def-81d5-4d2755dc9a97.png)


## Outils
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-tools"></a>

**Services AWS**
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) est un service de requêtes interactif qui vous permet d'analyser les données directement dans Amazon Simple Storage Service (Amazon S3) à l'aide du langage SQL standard. Ce modèle utilise le [connecteur Amazon Athena DynamoDB, un outil créé](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-dynamodb) à l'aide du SDK Amazon Athena Query Federation et installé en tant qu'application via le. AWS Lambda AWS Serverless Application Repository
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) est un service de base de données NoSQL entièrement géré, offrant des performances rapides, prévisibles et évolutives.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.

**Référentiel de code**

Le code de ce modèle est disponible dans le référentiel GitHub [Athena Query Federation](https://github.com/awslabs/aws-athena-query-federation/releases).

## Épopées
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-epics"></a>

### Configuration et test du connecteur de source de données DynamoDB
<a name="set-up-and-test-the-ddb-data-source-connector"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez AthenaDynamo DBConnector l'application. | Pour effectuer AthenaDynamo DBConnecter le déploiement, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/query-amazon-dynamodb-tables-sql-amazon-athena.html) | AWS DevOps | 
| Créez une source de données pour Athena. | Pour créer la source de données, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/query-amazon-dynamodb-tables-sql-amazon-athena.html) | AWS DevOps | 
| Utilisez Athena pour interroger la table DynamoDB. | Pour interroger la table DynamoDB, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/query-amazon-dynamodb-tables-sql-amazon-athena.html) | Développeur d’applications | 

## Résolution des problèmes
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| La requête échoue avec `GENERIC_INTERNAL_ERROR: The bucket is in this region: <region>`*.* | Assurez-vous que le godet de déversement Athena et la fonction Lambda sont créés de la même manière. Région AWS | 
| La source de données nouvellement créée n'est pas visible sur la console Athena. | Les catalogues de données Athena sont régionaux. Assurez-vous `AthenaDynamoDBConnector` qu'il a été déployé dans la région où vous essayez d'utiliser Athéna. | 
| Vous ne pouvez pas exécuter la requête sur la source de données nouvellement créée. | Vérifiez que l'**emplacement des résultats de la requête** a été défini. | 

## Ressources connexes
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-resources"></a>
+ [Connecteur Amazon Athena DynamoDB](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-dynamodb)
+ [Requête fédérée Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/connect-to-a-data-source.html)

# Accédez aux tables Amazon DynamoDB, interrogez-les et joignez-les à l'aide d'Athena
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena"></a>

*Moinul Al-Mamun, Amazon Web Services*

## Résumé
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-summary"></a>

Ce modèle explique comment configurer une connexion entre Amazon Athena et Amazon DynamoDB à l'aide du connecteur Amazon Athena DynamoDB. Le connecteur utilise une fonction AWS Lambda pour interroger les données dans DynamoDB. Vous n'avez pas besoin d'écrire de code pour configurer la connexion. Une fois la connexion établie, vous pouvez accéder rapidement aux tables DynamoDB et les analyser en utilisant [Athena Federated Query pour exécuter des commandes SQL depuis Athena](https://docs.aws.amazon.com/athena/latest/ug/connect-to-a-data-source.html). Vous pouvez également joindre une ou plusieurs tables DynamoDB entre elles ou à d'autres sources de données, telles qu'Amazon Redshift ou Amazon Aurora.

## Conditions préalables et limitations
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif autorisé à gérer les tables DynamoDB, les sources de données Athena, Lambda et les rôles AWS Identity and Access Management (IAM)
+ Un bucket Amazon Simple Storage Service (Amazon S3) dans lequel Athena peut stocker les résultats des requêtes
+ Un compartiment S3 dans lequel le connecteur Athena DynamoDB peut enregistrer les données à court terme
+ Une région AWS qui prend en charge la version 2 [du moteur Athena](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-reference-0002.html)
+ Autorisations IAM pour accéder à Athena et aux compartiments S3 requis
+ [Connecteur Amazon Athena DynamoDB](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-dynamodb), installé

**Limites**

L'interrogation des tables DynamoDB entraîne un coût. Les tailles de table supérieures à quelques gigaoctets (GBs) peuvent entraîner des coûts élevés. Nous vous recommandons de tenir compte des coûts avant d'effectuer une opération de numérisation complète de la table. Pour plus d’informations, consultez [Tarification Amazon DynamoDB](https://aws.amazon.com/dynamodb/pricing/). Pour réduire les coûts et atteindre des performances élevées, nous vous recommandons de toujours utiliser LIMIT dans votre requête (par exemple,`SELECT * FROM table1 LIMIT 10`). Par ailleurs, avant d'exécuter une requête JOIN ou GROUP BY dans un environnement de production, tenez compte de la taille de vos tables. Si vos tables sont trop volumineuses, envisagez d'autres options, telles que [la migration de la table vers Amazon S3](https://aws.amazon.com/blogs/database/simplify-amazon-dynamodb-data-extraction-and-analysis-by-using-aws-glue-and-amazon-athena/).

## Architecture
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-architecture"></a>

Le schéma suivant montre comment un utilisateur peut exécuter une requête SQL sur une table DynamoDB à partir d'Athena.

![\[Flux de travail permettant de connecter Athena et DynamoDB pour exécuter une requête SQL.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/e6ff94af-d208-40c7-94e4-af257755a603/images/bc8e0132-b578-463b-bf55-3c39ce359c17.png)


Le schéma suivant illustre le flux de travail suivant :

1. Pour interroger une table DynamoDB, un utilisateur exécute une requête SQL depuis Athena.

1. Athena lance une fonction Lambda.

1. La fonction Lambda interroge les données demandées dans la table DynamoDB.

1. DynamoDB renvoie les données demandées à la fonction Lambda. Ensuite, la fonction transfère les résultats de la requête à l'utilisateur via Athena.

1. La fonction Lambda stocke les données dans le compartiment S3.

**Pile technologique**
+ Amazon Athena
+ Amazon DynamoDB
+ Amazon S3
+ AWS Lambda

## Outils
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-tools"></a>
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) est un service de requête interactif qui vous permet d'analyser les données directement dans Amazon S3 à l'aide du SQL standard.
+ Le [connecteur Amazon Athena DynamoDB est un outil AWS qui permet à Athena de se connecter à DynamoDB](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-dynamodb) et d'accéder à vos tables à l'aide de requêtes SQL.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) est un service de base de données NoSQL entièrement géré, offrant des performances rapides, prévisibles et évolutives.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous permet d'exécuter du code sans avoir à provisionner ou à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.

## Épopées
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-epics"></a>

### Création d'exemples de tables DynamoDB
<a name="create-sample-dynamodb-tables"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez le premier exemple de table.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html) | Developer | 
| Insérez des exemples de données dans le premier tableau. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/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> | Developer | 
| Créez le deuxième exemple de table.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html) | Developer | 
| Insérez des exemples de données dans le deuxième tableau. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/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> | Developer | 

### Création d'une source de données dans Athena pour DynamoDB
<a name="create-a-data-source-in-athena-for-dynamodb"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez le connecteur de source de données. | Créez une source de données pour DynamoDB, puis créez une fonction Lambda pour vous connecter à cette source de données.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html) | Developer | 
| Vérifiez que la fonction Lambda peut accéder au compartiment de déversement S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html)Si vous rencontrez des erreurs, consultez la section *Informations supplémentaires* de ce modèle pour obtenir des conseils. | Developer | 

### Accédez aux tables DynamoDB depuis Athena
<a name="access-dynamodb-tables-from-athena"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Interrogez les tables DynamoDB. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html) | Developer | 
| Joignez les deux tables DynamoDB. | DynamoDB est un magasin de données NoSQL qui ne prend pas en charge l'opération de jointure SQL. Par conséquent, vous devez effectuer une opération de jointure sur deux tables DynamoDB :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/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> | Developer | 

## Ressources connexes
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-resources"></a>
+ [Connecteur Amazon Athena DynamoDB (AWS Labs)](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-dynamodb)
+ [Interrogez n'importe quelle source de données avec la nouvelle requête fédérée d'Amazon Athena](https://aws.amazon.com/blogs/big-data/query-any-data-source-with-amazon-athenas-new-federated-query/) (blog AWS Big Data)
+ [Référence de version du moteur Athena](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-reference.html) (Guide de l'utilisateur Athena)
+ [Simplifiez l'extraction et l'analyse des données Amazon DynamoDB en utilisant AWS Glue et Amazon Athena](https://aws.amazon.com/blogs/database/simplify-amazon-dynamodb-data-extraction-and-analysis-by-using-aws-glue-and-amazon-athena/) (blog de base de données AWS)

## Informations supplémentaires
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-additional"></a>

Si vous exécutez une requête dans Athena `spill_bucket` au `{bucket_name}/folder_name/` format, le message d'erreur suivant peut s'afficher :

```
"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]"
```

Pour résoudre cette erreur, mettez à jour la variable d'environnement de la fonction Lambda `spill_bucket` vers`{bucket_name_only}`, puis mettez à jour la politique Lambda IAM suivante pour l'accès en écriture au 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"
        }
```

Vous pouvez également supprimer le connecteur de source de données Athena que vous avez créé précédemment et le recréer en utilisant uniquement pour. `{bucket_name}` `spill_bucket`

# Configurer un tri spécifique à la langue pour les résultats des requêtes Amazon Redshift à l'aide d'un UDF Python scalaire
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf"></a>

*Ethan Stark, Amazon Web Services*

## Résumé
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf-summary"></a>

Ce modèle fournit des étapes et un exemple de code pour utiliser une UDF (fonction définie par l'utilisateur) Python scalaire afin de configurer un tri linguistique insensible aux majuscules et minuscules pour les résultats des requêtes Amazon Redshift. Il est nécessaire d'utiliser un UDF Python scalaire car Amazon Redshift renvoie des résultats basés sur l'ordre binaire UTF-8 et ne prend pas en charge le tri spécifique à une langue. Un UDF Python est un code de traitement non SQL basé sur un programme Python et exécuté dans un entrepôt de données. Vous pouvez exécuter du code UDF Python avec une instruction SQL dans une seule requête. Pour plus d'informations, consultez le billet de blog [consacré à l'introduction à Python UDFs dans Amazon Redshift](https://aws.amazon.com/blogs/big-data/introduction-to-python-udfs-in-amazon-redshift/) AWS Big Data.

Les données d'échantillon de ce modèle sont basées sur l'alphabet turc à des fins de démonstration. Le scalaire Python UDF utilisé dans ce modèle est conçu pour que les résultats de requête par défaut d'Amazon Redshift soient conformes à l'ordre linguistique des caractères en turc. Pour plus d'informations, voir l'*exemple de langue turque* dans la section *Informations supplémentaires* de ce modèle. Vous pouvez modifier l'UDF Python scalaire dans ce modèle pour d'autres langages.

## Conditions préalables et limitations
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf-prereqs"></a>

**Conditions préalables**
+ [Cluster Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html) avec base de données, schéma et tables
+ [Utilisateur Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/r_Users.html) avec `CREATE TABLE` autorisations et autorisations `CREATE FUNCTION`
+ [Python 2.7](https://www.python.org/download/releases/2.7/) ou version ultérieure

**Limites**

Le tri linguistique utilisé par les requêtes dans ce modèle ne fait pas la distinction majuscules/minuscules.

## Outils
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf-tools"></a>

**Services AWS**
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html) est un service d'entrepôt de données géré à l'échelle du pétaoctet situé dans le. AWS Cloud Amazon Redshift est intégré à votre lac de données, ce qui vous permet d'utiliser vos données pour acquérir de nouvelles informations pour votre entreprise et vos clients.

**Autres outils**
+ Les [fonctions définies par l'utilisateur Python (UDFs)](https://docs.snowflake.com/en/developer-guide/udf/python/udf-python-introduction.html) sont des fonctions que vous pouvez écrire en Python puis appeler dans des instructions SQL.

## Épopées
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf-epics"></a>

### Développez du code pour trier les résultats des requêtes par ordre linguistique
<a name="develop-code-to-sort-query-results-in-linguistic-order"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un tableau pour vos exemples de données. | Pour créer une table dans Amazon Redshift et y insérer vos exemples de données, utilisez les instructions SQL suivantes :<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>Les prénoms figurant dans les échantillons de données incluent des caractères spéciaux de l'alphabet turc. Pour plus d'informations sur les considérations relatives à la langue *turque pour cet exemple, voir l'exemple de langue turque* dans la section *Informations supplémentaires* de ce modèle. | Ingénieur de données | 
| Vérifiez le tri par défaut des échantillons de données. | Pour voir le tri par défaut de vos exemples de données dans Amazon Redshift, exécutez la requête suivante :<pre>SELECT first_name FROM my_table ORDER BY first_name;</pre>La requête renvoie la liste des prénoms de la table que vous avez créée précédemment :<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>Les résultats de la requête ne sont pas dans le bon ordre car l'ordre binaire UTF-8 par défaut ne correspond pas à l'ordre linguistique des caractères spéciaux turcs. | Ingénieur de données | 
| Créez un UDF Python scalaire. | Pour créer un UDF Python scalaire, utilisez le code SQL suivant : <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> | Ingénieur de données | 
| Interrogez les exemples de données. | Pour interroger les exemples de données à l'aide de l'UDF Python, exécutez la requête SQL suivante :<pre>SELECT first_name FROM my_table ORDER BY collate_sort(first_name);</pre>La requête renvoie désormais les exemples de données dans l'ordre linguistique turc :<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> | Ingénieur de données | 

## Ressources connexes
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf-resources"></a>
+ [Clause ORDER BY](https://docs.aws.amazon.com/redshift/latest/dg/r_ORDER_BY_clause.html) (documentation Amazon Redshift)
+ [Création d'un UDF Python scalaire (documentation](https://docs.aws.amazon.com/redshift/latest/dg/udf-creating-a-scalar-udf.html) Amazon Redshift)

## Informations supplémentaires
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf-additional"></a>

**Exemple de langue turque**

Amazon Redshift renvoie les résultats des requêtes sur la base d'un ordre de tri binaire UTF-8, et non d'un ordre de tri spécifique à une langue. Cela signifie que si vous interrogez une table Amazon Redshift contenant des caractères turcs, les résultats de la requête ne sont pas triés selon l'ordre linguistique de la langue turque. La langue turque contient six caractères spéciaux (ç, ı, ğ, ö, ş et ü) qui n'apparaissent pas dans l'alphabet latin. Ces caractères spéciaux sont placés à la fin d'un ensemble de résultats triés en fonction de l'ordre binaire UTF-8, comme le montre le tableau suivant.


| 
| 
| Ordre binaire UTF-8 | Ordre linguistique turc | 
| --- |--- |
| a | a | 
| b | b | 
| c | c | 
| d | **mois (\$1)** | 
| e | d | 
| f | e | 
| g | f | 
| h | g | 
| i | **ğ (\$1)** | 
| j | h | 
| k | **Oui (\$1)** | 
| l | i | 
| m | j | 
| n | k | 
| o | l | 
| p | m | 
| r | n | 
| s | o | 
| t | **île (\$1)** | 
| u | p | 
| v | r | 
| y | s | 
| z | **Oui (\$1)** | 
| **mois (\$1)** | t | 
| **ğ (\$1)** | u | 
| **Oui (\$1)** | **ü (\$1)** | 
| **île (\$1)** | v | 
| **Oui (\$1)** | y | 
| **ü (\$1)** | z | 

**Note**  
L'astérisque (\$1) indique un caractère spécial dans la langue turque.

Comme l'illustre le tableau ci-dessus, le caractère spécial **ç** se situe entre **c** et **d** dans l'ordre linguistique turc, mais apparaît après **z** dans l'ordre binaire UTF-8. Dans ce modèle, le scalaire Python UDF utilise le dictionnaire de remplacement de caractères suivant pour remplacer les caractères spéciaux turcs par des caractères équivalents en latin correspondants.


| 
| 
| Caractère spécial turc | Caractère équivalent en latin | 
| --- |--- |
| ç | c\$1 | 
| ı | h\$1 | 
| ğ | g\$1 | 
| ö | o\$1 | 
| ş | s\$1 | 
| ü | u\$1 | 

**Note**  
Un tilde (\$1) est ajouté à la fin des caractères latins pour remplacer les caractères spéciaux turcs correspondants.

**Modifier une fonction UDF Python scalaire**

Pour modifier la fonction UDF scalaire de Python à partir de ce modèle afin qu'elle accepte un paramètre de localisation et prenne en charge un dictionnaire de transactions multiples, utilisez le code SQL suivant :

```
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;
```

L'exemple de code suivant montre comment interroger l'UDF Python modifié :

```
SELECT first_name FROM my_table ORDER BY collate_order(first_name, 'tr-TR');
```

# Abonnement d'une fonction Lambda aux notifications d'événements provenant de compartiments S3 dans différentes régions 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 et Arindom Sarkar, aucun*

## Résumé
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions-summary"></a>

Les notifications d'événements [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/NotificationHowTo.html) publient des notifications pour certains événements de votre compartiment S3 (par exemple, les événements créés par des objets, les événements de suppression d'objets ou les événements de restauration d'objets). Vous pouvez utiliser une fonction AWS Lambda pour traiter ces notifications conformément aux exigences de votre application. Cependant, la fonction Lambda ne peut pas s'abonner directement aux notifications provenant de compartiments S3 hébergés dans différentes régions AWS.

L'approche de ce modèle déploie un [scénario de fanout](https://docs.aws.amazon.com/sns/latest/dg/sns-common-scenarios.html) pour traiter les notifications Amazon S3 provenant de compartiments S3 interrégionaux en utilisant une rubrique Amazon Simple Notification Service (Amazon SNS) pour chaque région. Ces rubriques SNS régionales envoient les notifications d'événements Amazon S3 à une file d'attente Amazon Simple Queue Service (Amazon SQS) située dans une région centrale qui contient également votre fonction Lambda. La fonction Lambda s'abonne à cette file d'attente SQS et traite les notifications d'événements conformément aux exigences de votre organisation.

## Conditions préalables et limitations
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif.
+ Des compartiments S3 existants dans plusieurs régions, y compris une région centrale pour héberger la file d'attente Amazon SQS et la fonction Lambda.
+ Interface de ligne de commande AWS (AWS CLI), installée et configurée. Pour plus d'informations à ce sujet, consultez la section [Installation, mise à jour et désinstallation de l'interface de ligne de commande AWS dans la](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) documentation de l'interface de ligne de commande AWS. 
+ Connaissance du scénario de fanout dans Amazon SNS. Pour plus d'informations à ce sujet, consultez [les scénarios Amazon SNS courants](https://docs.aws.amazon.com/sns/latest/dg/sns-common-scenarios.html) dans la documentation Amazon SNS.

## Architecture
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions-architecture"></a>

Le schéma suivant montre l'architecture de l'approche de ce modèle. 

![\[Workflow utilise Amazon SNS, S3 et SQS pour traiter les notifications d'événements provenant de compartiments S3 interrégionaux.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/cf6c1804-8c41-46f1-9f17-ff361708c595/images/760cf4c0-0cb3-48d1-92ae-1cf0fa8ae076.png)


Le schéma suivant illustre le flux de travail suivant :

1. Amazon S3 envoie des notifications d'événements concernant les compartiments S3 (par exemple, un objet créé, un objet supprimé ou un objet restauré) à une rubrique SNS de la même région.

1. La rubrique SNS publie l'événement dans une file d'attente SQS de la région centrale.

1. La file d'attente SQS est configurée comme source d'événements pour votre fonction Lambda et met en mémoire tampon les messages d'événement de la fonction Lambda. 

1. La fonction Lambda interroge la file d'attente SQS à la recherche de messages et traite les notifications d'événements Amazon S3 conformément aux exigences de votre application.

 

**Pile technologique**
+ Lambda
+ Amazon SNS
+ Amazon SQS
+ Amazon S3

## Outils
<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) — L'interface de ligne de commande AWS (AWS CLI) est un outil open source permettant d'interagir avec les services AWS par le biais de commandes dans votre shell de ligne de commande. Avec une configuration minimale, vous pouvez exécuter des commandes de l'interface de ligne de commande AWS qui mettent en œuvre des fonctionnalités équivalentes à celles fournies par la console de gestion AWS basée sur un navigateur à partir d'une invite de commande.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) — AWS vous CloudFormation aide à modéliser et à configurer vos ressources AWS, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie. Vous pouvez utiliser un modèle pour décrire vos ressources et leurs dépendances, puis les lancer et les configurer ensemble sous forme de pile, au lieu de gérer les ressources individuellement. Vous pouvez gérer et approvisionner des piles sur plusieurs comptes AWS et régions AWS.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) — AWS Lambda est un service de calcul qui prend en charge l'exécution de code sans provisionner ni gérer de serveurs. Lambda exécute le code uniquement lorsque cela est nécessaire et se met à l’échelle automatiquement, qu’il s’agisse de quelques requêtes par jour ou de milliers de requêtes par seconde. Vous payez uniquement le temps de calcul que vous utilisez. Vous n'exposez aucuns frais quand votre code n'est pas exécuté.
+ [Amazon SNS —](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) Amazon Simple Notification Service (Amazon SNS) coordonne et gère la distribution ou l'envoi de messages entre les éditeurs et les clients, y compris les serveurs Web et les adresses e-mail. Les abonnés reçoivent tous les messages publiés dans les rubriques auxquelles ils sont abonnés, et tous les abonnés à une rubrique reçoivent les mêmes messages.
+ [Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) — Amazon Simple Queue Service (Amazon SQS) propose une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de dissocier les systèmes et composants logiciels distribués. Amazon SQS prend en charge les files d'attente standard et FIFO.

## Épopées
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions-epics"></a>

### Créez la file d'attente SQS et la fonction Lambda dans votre région centrale
<a name="create-the-sqs-queue-and-lambda-function-in-your-central-region"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une file d'attente SQS avec un déclencheur Lambda. | Connectez-vous à l'AWS Management Console et suivez les instructions du didacticiel [Using Lambda with Amazon SQS](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-example.html) dans la documentation AWS Lambda pour créer les ressources suivantes dans votre région centrale :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions.html)Assurez-vous de configurer la file d'attente SQS comme source d'événements pour votre fonction Lambda. | AWS DevOps, architecte du cloud | 

### Créez une rubrique SNS et configurez des notifications d'événements pour les compartiments S3 dans chaque région requise
<a name="create-an-sns-topic-and-set-up-event-notifications-for-the-s3-buckets-in-each-required-region"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
|  Créez une rubrique SNS pour recevoir des notifications d'événements Amazon S3. | Créez une rubrique SNS dans une région à partir de laquelle vous souhaitez recevoir des notifications d'événements Amazon S3. Pour plus d'informations à ce sujet, consultez la [rubrique Création d'un réseau SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html) dans la documentation Amazon SNS. Assurez-vous d'enregistrer le nom de ressource Amazon (ARN) de votre rubrique SNS.  | AWS DevOps, architecte du cloud | 
| Abonnez la rubrique SNS à la file d'attente SQS centrale. | Abonnez votre rubrique SNS à la file d'attente SQS hébergée par votre région centrale. Pour plus d'informations à ce sujet, consultez la section [Abonnement à une rubrique SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html) dans la documentation Amazon SNS. | AWS DevOps, architecte du cloud | 
| Mettez à jour la politique d'accès de la rubrique SNS.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/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, architecte du cloud | 
| Configurez des notifications pour chaque compartiment S3 de la région. | Configurez des notifications d'événements pour chaque compartiment S3 de la région. Pour plus d'informations à ce sujet, consultez la section [Activation et configuration des notifications d'événements à l'aide de la console Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-event-notifications.html) dans la documentation Amazon S3.Dans la section **Destination**, choisissez le **sujet SNS** et spécifiez l'ARN du sujet SNS que vous avez créé précédemment. | AWS DevOps, architecte du cloud | 
| Répétez cette épopée pour toutes les régions requises. | Répétez les tâches de cette épopée pour chaque région dont vous souhaitez recevoir des notifications d'événements Amazon S3, y compris votre région centrale. | AWS DevOps, architecte du cloud | 

## Ressources connexes
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions-resources"></a>
+ [Configuration d'une politique d'accès](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-add-permissions.html) (documentation Amazon SQS)
+ [Configuration d'une file d'attente SQS en tant que source d'événements](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html#events-sqs-eventsource) (documentation AWS Lambda)
+ [Configuration d'une file d'attente SQS pour lancer une fonction Lambda (documentation](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-lambda-function-trigger.html) Amazon SQS)
+ [AWS::Lambda::Function ressource](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html) ( CloudFormation documentation AWS)

# Trois types de tâches ETL AWS Glue pour convertir des données vers Apache Parquet
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet"></a>

*Adnan Alvee, Nith Govindasivan et Karthikeyan Ramachandran, Amazon Web Services*

## Résumé
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-summary"></a>

Sur le cloud Amazon Web Services (AWS), AWS Glue est un service d'extraction, de transformation et de chargement (ETL) entièrement géré. AWS Glue permet de classer vos données, de les nettoyer, de les enrichir et de les déplacer de manière fiable entre différents magasins de données et flux de données à moindre coût.

Ce modèle fournit différents types de tâches dans AWS Glue et utilise trois scripts différents pour illustrer la création de tâches ETL.

Vous pouvez utiliser AWS Glue pour écrire des tâches ETL dans un environnement shell Python. Vous pouvez également créer des tâches ETL par lots et en streaming en utilisant Python (PySpark) ou Scala dans un environnement Apache Spark géré. Pour vous aider à créer des tâches ETL, ce modèle se concentre sur les tâches ETL par lots à l'aide du shell Python et de Scala. PySpark Les jobs shell Python sont destinés aux charges de travail nécessitant une puissance de calcul moindre. L'environnement Apache Spark géré est destiné aux charges de travail nécessitant une puissance de calcul élevée.

Apache Parquet est conçu pour prendre en charge des schémas de compression et d'encodage efficaces. Il peut accélérer vos charges de travail d'analyse car il stocke les données sous forme de colonnes. La conversion de données au format Parquet peut vous faire économiser de l'espace de stockage, de l'argent et du temps à long terme. Pour en savoir plus sur Parquet, consultez le billet de blog [Apache Parquet : comment être un héros avec le format de données colonnaire open source](https://blog.openbridge.com/how-to-be-a-hero-with-powerful-parquet-google-and-amazon-f2ae0f35ee04).

## Conditions préalables et limitations
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-prereqs"></a>

**Conditions préalables**
+ Rôle AWS Identity and Access Management (IAM) (si vous n'avez pas de rôle, consultez la section [Informations supplémentaires](#three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-additional).)

## Architecture
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-architecture"></a>

**Pile technologique cible**
+ AWS Glue
+ Amazon Simple Storage Service (Amazon S3)
+ Apache Parquet

**Automatisation et mise à l'échelle**
+ [Les flux de travail AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/workflows_overview.html) prennent en charge l'automatisation complète d'un pipeline ETL.
+ Vous pouvez modifier le nombre d'unités de traitement des données (DPUs), ou les types de travailleurs, pour qu'ils soient redimensionnés horizontalement et verticalement.

## Outils
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-tools"></a>

**Services AWS**
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) est un service ETL entièrement géré qui permet de classer, de nettoyer, d'enrichir et de déplacer vos données entre différents magasins de données et flux de données.

**Autres outils**
+ [Apache Parquet](https://parquet.apache.org/) est un format de fichier de données open source orienté colonne conçu pour le stockage et la récupération.

**Configuration**

Utilisez les paramètres suivants pour configurer la puissance de calcul d'AWS Glue ETL. Pour réduire les coûts, utilisez les paramètres minimaux lorsque vous exécutez la charge de travail fournie dans ce modèle. 
+ **Shell Python** — Vous pouvez utiliser 1 DPU pour utiliser 16 Go de mémoire ou 0,0625 DPU pour utiliser 1 Go de mémoire. Ce modèle utilise 0,0625 DPU, qui est la valeur par défaut dans la console AWS Glue.
+ **Python ou Scala pour Spark** : si vous choisissez les types de tâches liés à Spark dans la console, AWS Glue utilise par défaut 10 travailleurs et le type de travail G-1X. Ce modèle utilise deux travailleurs, qui est le nombre minimum autorisé, avec le type de travailleur standard, qui est suffisant et rentable.

Le tableau suivant présente les différents types de travailleurs AWS Glue pour l'environnement Apache Spark. Comme une tâche shell Python n'utilise pas l'environnement Apache Spark pour exécuter Python, elle n'est pas incluse dans le tableau.


| 
| 
|  | Standard | G.1X | G.2X | 
| --- |--- |--- |--- |
| vCPU | 4 | 4 | 8 | 
| Mémoire | 16 Go | 16 Go | 32 GO | 
| Espace disque | 50 Go | 64 Go | 128 Go | 
| Exécuteur par travailleur | 2 | 1  | 1 | 

**Code**

Pour le code utilisé dans ce modèle, y compris le rôle IAM et la configuration des paramètres, consultez la section [Informations supplémentaires](#three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-additional).

## Épopées
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-epics"></a>

### Téléchargez les données
<a name="upload-the-data"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Téléchargez les données dans un compartiment S3 nouveau ou existant. | Créez ou utilisez un compartiment S3 existant dans votre compte. Téléchargez le fichier sample\$1data.csv depuis la section [Pièces jointes](#attachments-8c926709-8fa4-417f-9aaf-bcc8113d018f) et notez l'emplacement du compartiment S3 et du préfixe. | AWS général | 

### Création et exécution de la tâche AWS Glue
<a name="create-and-run-the-aws-glue-job"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez la tâche AWS Glue. | Dans la section ETL de la console AWS Glue, ajoutez une tâche AWS Glue. Sélectionnez le type de tâche approprié, la version d'AWS Glue, ainsi que le DPU/Worker type et le nombre de travailleurs correspondants. Pour plus de détails, consultez la section *Configuration*. | Développeur, cloud ou données | 
| Modifiez les emplacements d'entrée et de sortie. | Copiez le code correspondant à votre tâche AWS Glue et modifiez l'emplacement d'entrée et de sortie indiqué dans l'épisode **Upload the data**. | Développeur, cloud ou données | 
| Configurez les paramètres. | Vous pouvez utiliser les extraits fournis dans la section [Informations supplémentaires](#three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-additional) pour définir les paramètres de votre tâche ETL. AWS Glue utilise quatre noms d'arguments en interne :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet.html)Le `--JOB_NAME` paramètre doit être saisi explicitement sur la console AWS Glue. Choisissez **Tâches**, **Modifier la tâche**, **Configuration de sécurité, bibliothèques de scripts et paramètres de tâche (facultatif)**. Entrez `--JOB_NAME` comme clé et saisissez une valeur. Vous pouvez également utiliser l'interface de ligne de commande AWS (AWS CLI) ou l'API AWS Glue pour définir ce paramètre. Le `--JOB_NAME` paramètre est utilisé par Spark et n'est pas nécessaire dans une tâche d'environnement shell Python.Vous devez en ajouter `--` avant chaque nom de paramètre, sinon le code ne fonctionnera pas. Par exemple, pour les extraits de code, les paramètres de localisation doivent être invoqués par `--input_loc` et. `--output_loc` | Développeur, cloud ou données | 
| Exécutez le job ETL. | Exécutez votre tâche et vérifiez le résultat. Notez combien d'espace a été réduit par rapport au fichier d'origine. | Développeur, cloud ou données | 

## Ressources connexes
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-resources"></a>

**Références**
+ [Apache Spark](https://spark.apache.org/)
+ [AWS Glue : comment ça marche](https://docs.aws.amazon.com/glue/latest/dg/how-it-works.html)
+ [Tarification d'AWS Glue](https://aws.amazon.com/glue/pricing/)

**Tutoriels et vidéos**
+ [Qu'est-ce qu'AWS Glue ?](https://www.youtube.com/watch?v=qgWMfNSN9f4)

## Informations supplémentaires
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-additional"></a>

**Rôle IAM**

Lorsque vous créez les tâches AWS Glue, vous pouvez utiliser soit un rôle IAM existant doté des autorisations indiquées dans l'extrait de code suivant, soit un nouveau rôle.

Pour créer un nouveau rôle, utilisez le code YAML suivant.

```
# (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 ] ]
```

**Coque Python AWS Glue**

Le code Python utilise les Pandas et les PyArrow bibliothèques pour convertir les données en Parquet. La bibliothèque Pandas est déjà disponible. La PyArrow bibliothèque est téléchargée lorsque vous exécutez le modèle, car il s'agit d'une exécution unique. Vous pouvez utiliser des fichiers wheel pour les PyArrow convertir en bibliothèque et fournir le fichier sous forme de package de bibliothèque. Pour plus d'informations sur l'empaquetage des fichiers Wheel, consultez [Fournir votre propre bibliothèque Python](https://docs.aws.amazon.com/glue/latest/dg/add-job-python.html).

*Paramètres du shell AWS Glue Python*

```
from awsglue.utils import getResolvedOptions

args = getResolvedOptions(sys.argv, ["input_loc", "output_loc"])
```

*Code du shell AWS Glue Python*

```
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())
```

**Tâche AWS Glue Spark avec Python**

Pour utiliser un type de tâche AWS Glue Spark avec Python, choisissez **Spark** comme type de tâche. Choisissez **Spark 3.1, Python 3 avec un temps de démarrage des tâches amélioré (Glue Version 3.0)** comme version AWS Glue.

*Paramètres Python d'AWS Glue*

```
from awsglue.utils import getResolvedOptions

args = getResolvedOptions(sys.argv, ["JOB_NAME", "input_loc", "output_loc"])
```

*Tâche AWS Glue Spark avec du code 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")
```

Pour un grand nombre de gros fichiers compressés (par exemple, 1 000 fichiers d'environ 3 Mo chacun), utilisez le `compressionType` paramètre associé au `recurse` paramètre pour lire tous les fichiers disponibles dans le préfixe, comme indiqué dans le code suivant.

```
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": ","}
                    )
```

Pour un grand nombre de petits fichiers compressés (par exemple, 1 000 fichiers d'environ 133 Ko chacun), utilisez le `groupFiles` paramètre ainsi que les `recurse` paramètres `compressionType` et. Le `groupFiles` paramètre regroupe les petits fichiers en plusieurs gros fichiers et contrôle le regroupement selon la taille spécifiée en octets (par exemple, 1 Mo). `groupSize` L'extrait de code suivant fournit un exemple d'utilisation de ces paramètres dans le code.

```
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": ","}
                    )
```

Sans aucune modification des nœuds de travail, ces paramètres permettent à la tâche AWS Glue de lire plusieurs fichiers (grands ou petits, avec ou sans compression) et de les écrire sur la cible au format Parquet.

**Tâche AWS Glue Spark avec Scala**

Pour utiliser un type de tâche AWS Glue Spark avec Scala, choisissez **Spark** comme type de tâche et **Language** comme **Scala**. Choisissez **Spark 3.1, Scala 2 avec un temps de démarrage des tâches amélioré (Glue Version 3.0)** comme version AWS Glue. Pour économiser de l'espace de stockage, l'exemple d'AWS Glue with Scala suivant utilise également `applyMapping` cette fonctionnalité pour convertir les types de données.

*Paramètres d'AWS Glue Scala*

```
import com.amazonaws.services.glue.util.GlueArgParser val args = GlueArgParser.getResolvedOptions(sysArgs, Seq("JOB_NAME", "inputLoc", "outputLoc").toArray)
```

*Tâche AWS Glue Spark avec code 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)
  }
}
```

## Pièces jointes
<a name="attachments-8c926709-8fa4-417f-9aaf-bcc8113d018f"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/8c926709-8fa4-417f-9aaf-bcc8113d018f/attachments/attachment.zip)

# Visualisez les journaux d'audit d'Amazon Redshift à l'aide d'Amazon Athena et Amazon QuickSight
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight"></a>

*Sanket Sirsikar et Gopal Krishna Bhatia, Amazon Web Services*

## Résumé
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight-summary"></a>

La sécurité fait partie intégrante des opérations de base de données sur le cloud Amazon Web Services (AWS). Votre organisation doit veiller à surveiller les activités et les connexions des utilisateurs de la base de données afin de détecter les incidents et les risques de sécurité potentiels. Ce modèle vous permet de surveiller vos bases de données à des fins de sécurité et de résolution des problèmes, un processus connu sous le nom d'audit des bases de données.

 Ce modèle fournit un script SQL qui automatise la création d'une table et de vues Amazon Athena pour un tableau de bord de reporting dans Amazon qui vous aide à auditer les journaux QuickSight Amazon Redshift. Cela garantit que les utilisateurs chargés de surveiller les activités de la base de données ont un accès pratique aux fonctionnalités de sécurité des données.  

## Conditions préalables et limitations
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif.
+ Un cluster Amazon Redshift existant. Pour plus d'informations à ce sujet, consultez la section [Créer un cluster Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-data-launch-cluster.html) dans la documentation Amazon Redshift.
+ Accès à un groupe de travail Athena existant. Pour plus d'informations, consultez [Comment fonctionnent les groupes de travail](https://docs.aws.amazon.com/athena/latest/ug/user-created-workgroups.html) dans la documentation Amazon Athena. 
+ Un compartiment source Amazon Simple Storage Service (Amazon S3) existant avec les autorisations AWS Identity and Access Management (IAM) requises. Pour plus d'informations, consultez la section [Permissions des compartiments pour la journalisation des audits Amazon Redshift dans la section Journalisation](https://docs.aws.amazon.com/redshift/latest/mgmt/db-auditing.html#db-auditing-bucket-permissions) des [audits de base de données](https://docs.aws.amazon.com/redshift/latest/mgmt/db-auditing.html) dans la documentation Amazon Redshift.

## Architecture
<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/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/90e69009-001e-4ced-bef0-3c361f93ae87/images/9fde7f01-17ab-4207-8a59-a12daf85a382.png)


 

**Pile technologique**
+ Athena
+ Amazon Redshift 
+ Amazon S3 
+ QuickSight

## Outils
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight-tools"></a>
+ [Amazon Athena — Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) est un service de requête interactif qui facilite l'analyse des données dans Amazon S3 à l'aide du SQL standard. 
+ [Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) QuickSight est un service de business intelligence (BI) évolutif, sans serveur, intégrable et basé sur l'apprentissage automatique. 
+ [Amazon Redshift — Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html) est un service d'entrepôt de données entièrement géré au niveau de l'entreprise, à l'échelle du pétaoctet. 
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) — Amazon Simple Storage Service (Amazon S3) est un service de stockage pour Internet.

## Épopées
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight-epics"></a>

### Configuration du cluster Amazon Redshift
<a name="configure-the-amazon-redshift-cluster"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
|  Activez la journalisation des audits pour le cluster Amazon Redshift. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight.html) | DBA, ingénieur de données | 
| Activez la journalisation dans le groupe de paramètres du cluster Amazon Redshift. | Vous pouvez activer l'audit des journaux de connexion, des journaux des utilisateurs et des journaux d'activité des utilisateurs en même temps à l'aide de l'AWS Management Console, de la référence d'API Amazon Redshift ou de l'interface de ligne de commande AWS (AWS CLI).  Pour auditer les journaux d'activité des utilisateurs, vous devez activer le paramètre `enable_user_activity_logging` de base de données. Si vous activez uniquement la fonctionnalité de journalisation des audits, mais pas le paramètre associé, l'audit de base de données enregistre les informations de journalisation pour la connexion et les journaux utilisateur, mais pas pour les journaux d'activité des utilisateurs. Le `enable_user_activity_logging` paramètre n'est pas activé par défaut, mais vous pouvez l'activer en le remplaçant `false` par`true`.Vous devez créer un nouveau groupe de paramètres de cluster avec le `user_activity_logging` paramètre activé et l'associer à votre cluster Amazon Redshift. Pour plus d'informations à ce sujet, consultez [la section Modification d'un cluster](https://docs.aws.amazon.com/redshift/latest/mgmt/managing-clusters-console.html#modify-cluster) dans la documentation Amazon Redshift.Pour plus d'informations sur cette tâche, consultez les [groupes de paramètres Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html) et [Configuration de l'audit à l'aide de la console](https://docs.aws.amazon.com/redshift/latest/mgmt/db-auditing-console.html) dans la documentation Amazon Redshift. | DBA, ingénieur de données | 
| Configurez les autorisations du compartiment S3 pour la journalisation du cluster Amazon Redshift. | Lorsque vous activez la journalisation, Amazon Redshift collecte les informations de journalisation et les télécharge dans des fichiers journaux stockés dans un compartiment S3. Vous pouvez utiliser un compartiment S3 existant ou en créer un nouveau.Assurez-vous qu'Amazon Redshift dispose des autorisations IAM requises pour accéder au compartiment S3. Pour plus d'informations à ce sujet, consultez la section [Permissions des compartiments pour la journalisation des audits Amazon Redshift dans la section Journalisation](https://docs.aws.amazon.com/redshift/latest/mgmt/db-auditing.html#db-auditing-bucket-permissions) des [audits de base de données](https://docs.aws.amazon.com/redshift/latest/mgmt/db-auditing.html) de la documentation Amazon Redshift. | DBA, ingénieur de données | 

### Création de la table et des vues Athena
<a name="create-the-athena-table-and-views"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez la table et les vues Athena pour interroger les données du journal d'audit Amazon Redshift à partir du compartiment S3. | Ouvrez la console Amazon Athena et utilisez la requête DDL (Data Definition Language) du script `AuditLogging.sql` SQL (ci-joint) pour créer la table et les vues des journaux d'activité des utilisateurs, des journaux des utilisateurs et des journaux de connexion.Pour plus d'informations et d'instructions, consultez le didacticiel sur la [création de tables et l'exécution de requêtes](https://athena-in-action.workshop.aws/30-basics/301-create-tables.html) dans le cadre de l'atelier Amazon Athena. | Ingénieur de données | 

### Configurer la surveillance des journaux dans le QuickSight tableau de bord
<a name="set-up-log-monitoring-in-the-quicksight-dashboard"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un QuickSight tableau de bord en utilisant Athena comme source de données. | Ouvrez la QuickSight console Amazon et créez un QuickSight tableau de bord en suivant les instructions du didacticiel [Visualize with QuickSight using Athena](https://athena-in-action.workshop.aws/30-basics/307-quicksight.html) du Amazon Athena Workshop. | DBA, ingénieur de données | 

## Ressources connexes
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight-resources"></a>
+ [Création de tables et exécution de requêtes dans Athena](https://athena-in-action.workshop.aws/30-basics/301-create-tables.html)
+ [Visualisez en QuickSight utilisant Athena](https://athena-in-action.workshop.aws/30-basics/307-quicksight.html)

## Pièces jointes
<a name="attachments-90e69009-001e-4ced-bef0-3c361f93ae87"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/90e69009-001e-4ced-bef0-3c361f93ae87/attachments/attachment.zip)

# Visualisez les rapports d'identification IAM pour tous les comptes AWS à l'aide d'Amazon Quick Sight
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight"></a>

*Parag Nagwekar et Arun Chanapillai, Amazon Web Services*

## Résumé
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight-summary"></a>


| 
| 
| Avertissement : les utilisateurs IAM disposent d'informations d'identification à long terme, ce qui présente un risque de sécurité. Pour atténuer ce risque, nous vous recommandons de ne fournir à ces utilisateurs que les autorisations dont ils ont besoin pour effectuer la tâche et de supprimer ces autorisations lorsqu’elles ne sont plus nécessaires. | 
| --- |

Vous pouvez utiliser les rapports d'identification d'AWS Identity and Access Management (IAM) pour vous aider à répondre aux exigences de sécurité, d'audit et de conformité de votre organisation. [Les rapports d'identification](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_getting-report.html) fournissent une liste de tous les utilisateurs de vos comptes AWS et indiquent l'état de leurs informations d'identification, telles que les mots de passe, les clés d'accès et les dispositifs d'authentification multifactorielle (MFA). Vous pouvez utiliser les rapports d'identification pour plusieurs comptes AWS gérés par [AWS Organizations](https://docs.aws.amazon.com/whitepapers/latest/organizing-your-aws-environment/core-concepts.html).

Ce modèle inclut des étapes et du code pour vous aider à créer et à partager des rapports d'identification IAM pour tous les comptes AWS de votre organisation à l'aide des tableaux de bord Amazon Quick Sight. Vous pouvez partager les tableaux de bord avec les parties prenantes de votre organisation. Les rapports peuvent aider votre organisation à atteindre les résultats commerciaux ciblés suivants :
+ Identifier les incidents de sécurité liés aux utilisateurs IAM
+ Suivez la migration en temps réel des utilisateurs IAM vers l'authentification unique (SSO)
+ Suivez les régions AWS auxquelles les utilisateurs IAM ont accédé
+ Restez en conformité
+ Partage d'informations avec d'autres parties prenantes

## Conditions préalables et limitations
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ Une [organisation](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tutorials_basic.html) avec des comptes membres
+ Un [rôle IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) avec des autorisations d'accès aux comptes dans Organizations
+ [Interface de ligne de commande AWS (AWS CLI) version 2[, installée et](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html#getting-started-install-instructions) configurée](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ Un [abonnement](https://docs.aws.amazon.com/quicksight/latest/user/signing-up.html) à l'[édition Amazon Quick Enterprise](https://docs.aws.amazon.com/quicksight/latest/user/editions.html)

## Architecture
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight-architecture"></a>

**Pile technologique**
+ 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

**Architecture cible**

Le schéma suivant montre une architecture permettant de configurer un flux de travail qui capture les données des rapports d'identification IAM provenant de plusieurs comptes AWS.

![\[La capture d'écran suivante illustre le schéma d'architecture\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/8724ff28-40f6-4c43-9c65-fbd18bbbfd0f/images/e780916a-4ab7-4fdc-8ecc-c837c7d90d13.png)


1. EventBridge invoque une fonction Lambda tous les jours.

1. La fonction Lambda assume un rôle IAM dans chaque compte AWS de l'organisation. La fonction crée ensuite le rapport d'informations d'identification IAM et stocke les données du rapport dans un compartiment S3 centralisé. Vous devez activer le chiffrement et désactiver l'accès public sur le compartiment S3.

1. Un robot d'exploration AWS Glue explore le compartiment S3 quotidiennement et met à jour la table Athena en conséquence.

1. Quick Sight importe et analyse les données du rapport d'identification et crée un tableau de bord qui peut être visualisé et partagé avec les parties prenantes.

## Outils
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight-tools"></a>

**Services AWS**
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) est un service de requête interactif qui facilite l'analyse des données dans Amazon S3 à l'aide du langage SQL standard.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) est un service de bus d'événements sans serveur qui vous permet de connecter vos applications à des données en temps réel provenant de diverses sources. Par exemple, les fonctions Lambda, les points de terminaison d'appel HTTP utilisant des destinations d'API ou les bus d'événements dans d'autres comptes AWS.
+ [Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) est un service de business intelligence (BI) à l'échelle du cloud qui vous permet de visualiser, d'analyser et de rapporter vos données dans un tableau de bord unique. Quick Sight est un composant essentiel d'Amazon Quick. Il fournit une visualisation interactive des données, des analyses SPICE en mémoire, des analyses intégrées et le partage de tableaux de bord.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) vous aide à gérer en toute sécurité l'accès à vos ressources AWS en contrôlant qui est authentifié et autorisé à les utiliser.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous permet d'exécuter du code sans avoir à approvisionner ou à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.

**Code**

Le code de ce modèle est disponible dans le GitHub [getiamcredsreport-allaccounts-org](https://github.com/aws-samples/getiamcredsreport-allaccounts-org)référentiel. Vous pouvez utiliser le code de ce référentiel pour créer des rapports d'identification IAM sur les comptes AWS dans Organizations et les stocker dans un emplacement central.

## Épopées
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight-epics"></a>

### Configuration de l'infrastructure
<a name="set-up-the-infrastructure"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez l'édition Amazon Quick Enterprise. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight.html) | Administrateur AWS, AWS DevOps, administrateur du cloud, architecte du cloud | 
| Intégrez Amazon Quick Sight à Amazon S3 et Athena. | Vous devez [autoriser](https://docs.aws.amazon.com/quicksight/latest/user/troubleshoot-connect-to-datasources.html) Quick Sight à utiliser Amazon S3 et Athena avant de déployer la pile AWS CloudFormation . | Administrateur AWS, AWS DevOps, administrateur du cloud, architecte du cloud | 

### Déployer l'infrastructure
<a name="deploy-the-infrastructure"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Clonez le GitHub dépôt. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight.html) | Administrateur AWS | 
| Déployez l'infrastructure. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight.html) | Administrateur AWS | 
| Créez une politique d'autorisation IAM. | [Créez une politique IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) pour chaque compte AWS de votre organisation avec les autorisations suivantes :<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, administrateur de cloud, architecte de cloud, ingénieur de données | 
| Créez un rôle IAM avec une politique de confiance. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/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>`arn:aws:iam::<MasterAccountID>:role/<LambdaRole>`Remplacez-le par l'ARN du rôle Lambda que vous avez noté précédemment.Organisations utilisent généralement l'automatisation pour créer des rôles IAM pour leurs comptes AWS. Nous vous recommandons d'utiliser cette automatisation, si elle est disponible. Vous pouvez également utiliser le `CreateRoleforOrg.py` script depuis**** le référentiel de code. Le script nécessite un rôle administratif existant ou tout autre rôle IAM autorisé à créer une politique et un rôle IAM dans chaque compte AWS. | Administrateur cloud, architecte cloud, administrateur AWS | 
| Configurez Amazon Quick Sight pour visualiser les données. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight.html) | AWS DevOps, administrateur de cloud, architecte de cloud, ingénieur de données | 

## Informations supplémentaires
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight-additional"></a>

**Considérations supplémentaires**

Éléments à prendre en compte :
+ Après CloudFormation avoir déployé l'infrastructure, vous pouvez attendre que les rapports soient créés dans Amazon S3 et analysés par Athena jusqu'à ce que Lambda et AWS Glue soient exécutés conformément à leurs plannings. Vous pouvez également exécuter Lambda manuellement pour obtenir les rapports dans Amazon S3, puis exécuter le robot d'exploration AWS Glue pour obtenir la table Athena créée à partir des données.
+ Quick est un puissant outil d'analyse et de visualisation des données en fonction des besoins de votre entreprise. Vous pouvez utiliser des [paramètres](https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html) dans Quick pour contrôler les données du widget en fonction des champs de données que vous choisissez. Vous pouvez également utiliser une analyse rapide pour créer des paramètres (par exemple, des champs Compte, Date et Utilisateur tels que `partition_0``partition_1`, et `user` respectivement) à partir de votre ensemble de données afin d'ajouter des contrôles pour les paramètres Compte, Date et Utilisateur.
+ Pour créer vos propres tableaux de bord Quick Sight, consultez [Quick Workshops sur](https://catalog.workshops.aws/quicksight/en-US) le site Web d'AWS Workshop Studio.
+ Pour voir des exemples de tableaux de bord Quick Sight, consultez le référentiel de GitHub [getiamcredsreport-allaccounts-org](https://github.com/aws-samples/getiamcredsreport-allaccounts-org)code.

**Résultats commerciaux ciblés**

Vous pouvez utiliser ce modèle pour obtenir les résultats commerciaux ciblés suivants :
+ **Identifiez les incidents de sécurité liés aux utilisateurs IAM** : examinez chaque utilisateur de chaque compte AWS de votre organisation à l'aide d'un seul écran. Vous pouvez suivre la tendance des dernières régions AWS consultées par un utilisateur IAM et des services qu'il a utilisés.
+ **Suivez la migration en temps réel des utilisateurs IAM vers l'authentification SSO** : grâce à l'authentification unique, les utilisateurs peuvent se connecter une seule fois avec un seul identifiant et accéder à plusieurs comptes et applications AWS. Si vous envisagez de migrer vos utilisateurs IAM vers le SSO, ce modèle peut vous aider à passer au SSO et à suivre l'utilisation de toutes les informations d'identification des utilisateurs IAM (telles que l'accès à la console de gestion AWS ou l'utilisation des clés d'accès) sur tous les comptes AWS.
+ **Suivez les régions AWS auxquelles les utilisateurs IAM accèdent** : vous pouvez contrôler l'accès des utilisateurs IAM aux régions à diverses fins, telles que la souveraineté des données et le contrôle des coûts. Vous pouvez également suivre l'utilisation des régions par n'importe quel utilisateur IAM.
+ **Restez en conformité** : en suivant le principe du moindre privilège, vous ne pouvez accorder que les autorisations IAM spécifiques requises pour effectuer une tâche spécifique. Vous pouvez également suivre l'accès aux services AWS, à l'AWS Management Console et l'utilisation des informations d'identification à long terme.
+ **Partagez des informations avec d'autres parties prenantes** : vous pouvez partager des tableaux de bord personnalisés avec d'autres parties prenantes, sans leur accorder l'accès aux rapports d'identification IAM ou aux comptes AWS.

# Plus de modèles
<a name="analytics-more-patterns-pattern-list"></a>

**Topics**
+ [Authentifiez les utilisateurs existants de l'application React à l'aide d'Amazon Cognito et de l'interface utilisateur AWS Amplify](authenticate-react-app-users-cognito-amplify-ui.md)
+ [Extrayez automatiquement le contenu de fichiers PDF à l'aide d'Amazon Textract](automatically-extract-content-from-pdf-files-using-amazon-textract.md)
+ [Créez un modèle de prévision de démarrage à froid en utilisant DeePar pour les séries chronologiques dans Amazon SageMaker AI Studio Lab](build-a-cold-start-forecasting-model-by-using-deepar.md)
+ [Créez des rapports détaillés sur les coûts et l'utilisation des clusters Amazon EMR à l'aide d'AWS Cost Explorer](create-detailed-cost-and-usage-reports-for-amazon-emr-clusters-by-using-aws-cost-explorer.md)
+ [Créez des rapports détaillés sur les coûts et l'utilisation pour Amazon RDS et Amazon Aurora](create-detailed-cost-and-usage-reports-for-amazon-rds-and-amazon-aurora.md)
+ [Créez des rapports détaillés sur les coûts et l'utilisation des tâches AWS Glue à l'aide d'AWS Cost Explorer](create-detailed-cost-and-usage-reports-for-aws-glue-jobs-by-using-aws-cost-explorer.md)
+ [Fournissez des enregistrements DynamoDB à Amazon S3 à l'aide de Kinesis Data Streams et Firehose avec AWS CDK](deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk.md)
+ [Déployer une tâche AWS Glue avec un pipeline AWS CodePipeline CI/CD](deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline.md)
+ [Intégrez des composants visuels Amazon Quick Sight dans des applications Web à l'aide d'Amazon Cognito et de l'automatisation iAc](embed-quick-sight-visual-components-into-web-apps-cognito-iac.md)
+ [Estimation des coûts de stockage pour une table Amazon DynamoDB](estimate-storage-costs-for-an-amazon-dynamodb-table.md)
+ [Exécutez des requêtes SQL Amazon Redshift à l'aide de Terraform](execute-redshift-sql-queries-using-terraform.md)
+ [Extraire et interroger AWS IoT SiteWise les attributs de métadonnées dans un lac de données](extract-and-query-aws-iot-sitewise-metadata-attributes-in-a-data-lake.md)
+ [Générez des informations sur les données AWS Mainframe Modernization en utilisant Amazon Q dans Quick Sight](generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.md)
+ [Générez des informations sur z/OS les données DB2 en utilisant AWS Mainframe Modernization Amazon Q dans Quick Sight](generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.md)
+ [Donnez aux instances de SageMaker bloc-notes un accès temporaire à un CodeCommit référentiel dans un autre compte AWS](give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account.md)
+ [Identifiez et alertez lorsque les ressources Amazon Data Firehose ne sont pas chiffrées à l'aide d'une clé AWS KMS](identify-and-alert-when-amazon-data-firehose-resources-are-not-encrypted-with-an-aws-kms-key.md)
+ [Importez la bibliothèque psycopg2 pour interagir avec votre base AWS Lambda de données PostgreSQL](import-psycopg2-library-lambda.md)
+ [Ingérez et analysez les journaux de sécurité AWS dans Microsoft Sentinel](ingest-analyze-aws-security-logs-sentinel.md)
+ [Migrez Amazon RDS for Oracle vers Amazon RDS for PostgreSQL en mode SSL à l'aide d'AWS DMS](migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms.md)
+ [Migrer une base de données Oracle vers Amazon RDS for Oracle à l'aide d'adaptateurs de GoldenGate fichiers plats Oracle](migrate-an-oracle-database-to-amazon-rds-for-oracle-by-using-oracle-goldengate-flat-file-adapters.md)
+ [Migrer une base de données Oracle vers Amazon Redshift à l'aide d'AWS DMS et d'AWS SCT](migrate-an-oracle-database-to-amazon-redshift-using-aws-dms-and-aws-sct.md)
+ [Migrez les données d'un environnement Hadoop sur site vers Amazon S3 à l'aide d' DistCp AWS PrivateLink pour Amazon S3](migrate-data-from-an-on-premises-hadoop-environment-to-amazon-s3-using-distcp-with-aws-privatelink-for-amazon-s3.md)
+ [Migrer du serveur Couchbase vers Couchbase Capella sur AWS](migrate-from-couchbase-server-to-couchbase-capella-on-aws.md)
+ [Migrez les charges de travail Cloudera sur site vers Cloudera Data Platform sur AWS](migrate-on-premises-cloudera-workloads-to-cloudera-data-platform-on-aws.md)
+ [Gérez le basculement multi-AZ pour les clusters EMR à l'aide d'Application Recovery Controller](multi-az-failover-spark-emr-clusters-arc.md)
+ [Automatisez blue/green les déploiements de bases de données mondiales Amazon Aurora en utilisant les principes IaC](p-automate-blue-green-deployments-aurora-global-databases-iac.md)
+ [Provisionner AWS Service Catalog des produits basés sur AWS CloudFormation des modèles à l'aide d' GitHub actions](provision-aws-service-catalog-products-using-github-actions.md)
+ [Exécutez des tests unitaires pour les tâches ETL Python en AWS Glue utilisant le framework pytest](run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework.md)
+ [Configurer un tableau de bord de surveillance Grafana pour AWS ParallelCluster](set-up-a-grafana-monitoring-dashboard-for-aws-parallelcluster.md)
+ [Déchargez les données d'un cluster Amazon Redshift entre différents comptes vers Amazon S3](unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.md)
+ [Visualisez les résultats AI/ML du modèle à l'aide de Flask et AWS Elastic Beanstalk](visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.md)