

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.

# Création d'une intégration de source de données Amazon S3 dans OpenSearch Service
<a name="direct-query-s3-creating"></a>

Vous pouvez créer une nouvelle source de données à requête directe Amazon S3 pour OpenSearch Service par le biais de l'API AWS Management Console ou de l'API. Chaque nouvelle source de données utilise le AWS Glue Data Catalog pour gérer les tables qui représentent les compartiments Amazon S3. 

**Topics**
+ [Conditions préalables](#direct-query-s3-prereq)
+ [Procédure](#direct-query-s3-create)
+ [Étapes suivantes](#direct-query-s3-next-steps)
+ [Cartographier le AWS Glue Data Catalog rôle](#direct-query-s3-permissions)
+ [Ressources supplémentaires](#direct-query-s3-additional-resources)

## Conditions préalables
<a name="direct-query-s3-prereq"></a>

Avant de commencer, assurez-vous d'avoir pris connaissance de la documentation suivante :
+ [Limitations](direct-query-s3-overview.md#direct-query-s3-limitations)
+ [Recommandations](direct-query-s3-overview.md#direct-query-s3-recommendations)
+ [Quotas](direct-query-s3-overview.md#direct-query-s3-quotas)

Avant de créer une source de données, vous devez disposer des ressources suivantes dans votre Compte AWS :
+ **Un OpenSearch domaine doté de la version 2.13 ou ultérieure.** Il s'agit de la base de la configuration de l'intégration directe des requêtes. Pour obtenir des instructions sur cette configuration, reportez-vous à la section[Création de domaines OpenSearch de service](createupdatedomains.md#createdomains).
+ **Un ou plusieurs compartiments S3.** Vous devez spécifier les compartiments contenant les données que vous souhaitez interroger, ainsi qu'un compartiment dans lequel stocker les points de contrôle de votre requête. Pour obtenir des instructions sur la création d'un compartiment S3, consultez [la section Création d'un compartiment](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) dans le guide de l'utilisateur Amazon S3.
+ **(Facultatif) Une ou plusieurs AWS Glue tables.**Pour interroger des données sur Amazon S3, vous devez configurer des tables AWS Glue Data Catalog pour pointer vers les données S3. Vous devez créer les tables à l'aide de OpenSearch Query Workbench. Les tables Hive existantes ne sont pas compatibles. 

  Si c'est la première fois que vous configurez une source de données Amazon S3, vous devez créer une source de données d'administration pour configurer toutes vos AWS Glue Data Catalog tables. Vous pouvez le faire en installant OpenSearch out-of-the-box des intégrations ou en utilisant OpenSearch Query Workbench pour créer des tables SQL personnalisées pour des cas d'utilisation avancés. Pour des exemples sur la création de tables pour VPC et de journaux AWS WAF, consultez la documentation sur le GitHub [VPC](https://github.com/opensearch-project/opensearch-catalog/blob/main/integrations/observability/amazon_vpc_flow/assets/create_table_vpc_schema-1.0.0.sql), et. CloudTrail [CloudTrail[AWS WAF](https://github.com/opensearch-project/opensearch-catalog/blob/main/integrations/observability/aws_waf/assets/create_table-1.0.0.sql)](https://github.com/opensearch-project/opensearch-catalog/blob/main/integrations/observability/aws_cloudtrail/assets/create_table_cloud-trail-records-1.0.0.sql) Après avoir créé vos tables, vous pouvez créer de nouvelles sources de données Amazon S3 et restreindre l'accès à un nombre limité de tables.
+ **(Facultatif) Rôle IAM créé manuellement.**Vous pouvez utiliser ce rôle pour gérer l'accès à votre source de données. Vous pouvez également demander à OpenSearch Service de créer automatiquement un rôle pour vous avec les autorisations requises. Si vous choisissez d'utiliser un rôle IAM créé manuellement, suivez les instructions figurant dans[Autorisations requises pour les rôles IAM créés manuellement](#direct-query-s3-additional-resources-required-permissions).

## Procédure
<a name="direct-query-s3-create"></a>

Vous pouvez configurer une source de données à requête directe sur un domaine à l'aide de l'API AWS Management Console ou du OpenSearch service.

### Pour configurer une source de données à l'aide du AWS Management Console
<a name="creating-direct-query-s3-console-create"></a>

1. Accédez à la console Amazon OpenSearch Service à l'adresse[https://console.aws.amazon.com/aos/](https://console.aws.amazon.com/aos/).

1. Dans le volet de navigation de gauche, choisissez **Domaines**. 

1. Sélectionnez le domaine pour lequel vous souhaitez configurer une nouvelle source de données. Cette action ouvre la page des détails du domaine. 

1. Cliquez sur l'onglet **Connexions** sous les détails généraux du domaine et recherchez la section **Requête directe**.

1. Choisissez **Configurer la source de données**.

1. Entrez un nom et une description facultative pour votre nouvelle source de données. 

1. Choisissez **Amazon S3 avec AWS Glue Data Catalog**. 

1. Dans les **paramètres d'accès aux autorisations IAM**, choisissez le mode de gestion de l'accès.

   1. Si vous souhaitez créer automatiquement un rôle pour cette source de données, procédez comme suit :

      1. Sélectionnez **Créer un nouveau rôle**.

      1. Saisissez un nom pour le rôle IAM.

      1. Sélectionnez un ou plusieurs compartiments S3 contenant les données que vous souhaitez interroger.

      1. Sélectionnez un compartiment S3 de points de contrôle dans lequel stocker les points de contrôle des requêtes.

      1. Sélectionnez une ou plusieurs AWS Glue bases de données ou tables pour définir les données qui peuvent être consultées. Si les tables n'ont pas encore été créées, donnez accès à la base de données par défaut.

   1. Si vous souhaitez utiliser un rôle existant que vous gérez vous-même, procédez comme suit :

      1. Sélectionnez **Utiliser un rôle existant**.

      1. Sélectionnez un rôle existant dans le menu déroulant.
**Note**  
Lorsque vous utilisez votre propre rôle, vous devez vous assurer qu'il dispose de toutes les autorisations nécessaires en joignant les politiques requises depuis la console IAM. Pour plus d'informations, reportez-vous à l'exemple de politique présenté dans[Autorisations requises pour les rôles IAM créés manuellement](#direct-query-s3-additional-resources-required-permissions).

1. Choisissez **Configurer**. Cela ouvre l'écran des détails de la source de données avec une URL de tableau de OpenSearch bord. Vous pouvez accéder à cette URL pour effectuer les étapes suivantes.

### OpenSearch API de service
<a name="creating-direct-query-s3-api-create"></a>

Utilisez l'opération [AddDataSource](https://docs.aws.amazon.com/opensearch-service/latest/APIReference/API_AddDataSource.html)API pour créer une nouvelle source de données dans votre domaine.

```
POST https://es.region.amazonaws.com/2021-01-01/opensearch/domain/domain-name/dataSource

{
   "DataSourceType": {
        "S3GlueDataCatalog": {
            "RoleArn": "arn:aws:iam::account-id:role/role-name"
        }
    }
   "Description": "data-source-description",
   "Name": "my-data-source"
}
```

## Étapes suivantes
<a name="direct-query-s3-next-steps"></a>

### Visitez les OpenSearch tableaux de bord
<a name="direct-query-s3-next-steps-dashboard"></a>

Une fois que vous avez créé une source de données, OpenSearch Service vous fournit un lien vers OpenSearch les tableaux de bord. Vous pouvez l'utiliser pour configurer le contrôle d'accès, définir des tables, installer out-of-the-box des intégrations et interroger vos données.

Pour de plus amples informations, veuillez consulter [Configuration et interrogation d'une source de données S3 dans OpenSearch les tableaux de bord](direct-query-s3-configure.md).

## Cartographier le AWS Glue Data Catalog rôle
<a name="direct-query-s3-permissions"></a>

Si vous avez activé le [contrôle d'accès détaillé](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/fgac.html) après avoir créé une source de données, vous devez associer les utilisateurs non administrateurs à un rôle IAM disposant d'un AWS Glue Data Catalog accès afin d'exécuter des requêtes directes. Pour créer manuellement un `glue_access` rôle principal que vous pouvez mapper au rôle IAM, effectuez les opérations suivantes :

**Note**  
Les index sont utilisés pour toutes les requêtes portant sur la source de données. Un utilisateur disposant d'un accès en lecture à l'index des requêtes pour une source de données donnée peut lire *toutes les* requêtes relatives à cette source de données. Un utilisateur disposant d'un accès en lecture à l'index des résultats peut lire les résultats de *toutes les* requêtes portant sur cette source de données.

1. Dans le menu principal OpenSearch des tableaux de bord, sélectionnez **Sécurité**, **Rôles** et **Créer des rôles**.

1. Nommez le rôle **glue\$1access**.

1. Pour les **autorisations du cluster**`indices:data/write/bulk*`, sélectionnez`indices:data/read/scroll`,`indices:data/read/scroll/clear`.

1. Dans **Index**, entrez les index suivants auxquels vous souhaitez accorder l'accès à l'utilisateur ayant le rôle :
   + `.query_execution_request_<name of data source>`
   + `query_execution_result_<name of data source>`
   + `.async-query-scheduler`
   + `flint_*`

1. Pour les **autorisations d'indexation**, sélectionnez`indices_all`. 

1. Choisissez **Créer**.

1. Choisissez **Mapped users (Utilisateurs mappés)**, **Manage mapping (Gérer le mappage)**. 

1. Sous **Rôles principaux**, ajoutez l'ARN du AWS Glue rôle qui a besoin d'une autorisation pour appeler votre domaine.

   ```
   arn:aws:iam::account-id:role/role-name
   ```

1. Sélectionnez **Carte** et confirmez que le rôle apparaît sous **Utilisateurs mappés**.

Pour plus d'informations sur le mappage des rôles, consultez[Mappage des rôles aux utilisateurs](fgac.md#fgac-mapping).

## Ressources supplémentaires
<a name="direct-query-s3-additional-resources"></a>

### Autorisations requises pour les rôles IAM créés manuellement
<a name="direct-query-s3-additional-resources-required-permissions"></a>

 Lorsque vous créez une source de données pour votre domaine, vous choisissez un rôle IAM pour gérer l'accès à vos données. Vous avez deux options :

1. Création automatique d'un nouveau rôle IAM

1. Utiliser un rôle IAM existant que vous avez créé manuellement

Si vous utilisez un rôle créé manuellement, vous devez associer les autorisations appropriées au rôle. Les autorisations doivent autoriser l'accès à la source de données spécifique et permettre au OpenSearch Service d'assumer le rôle. Cela est nécessaire pour que le OpenSearch Service puisse accéder à vos données et interagir avec celles-ci en toute sécurité. 

L'exemple de politique suivant illustre les autorisations de moindre privilège requises pour créer et gérer une source de données. Si vous disposez d'autorisations plus larges, telles que `s3:*` la `AdminstratorAccess` politique, ces autorisations incluent les autorisations de moindre privilège indiquées dans l'exemple de politique.

Dans l'exemple de politique suivant, remplacez les *placeholder text * par vos propres informations.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"HttpActionsForOpenSearchDomain",
         "Effect":"Allow",
         "Action":"es:ESHttp*",
"Resource":"arn:aws:es:us-east-1:111122223333:domain/example.com/*"
      },
      {
         "Sid":"AmazonOpenSearchS3GlueDirectQueryReadAllS3Buckets",
         "Effect":"Allow",
         "Action":[
            "s3:GetObject",
            "s3:GetObjectVersion",
            "s3:ListBucket"
         ],
         "Condition":{
            "StringEquals":{
               "aws:ResourceAccount":"111122223333"
            }
         },
         "Resource":"*"
      },
      {
         "Sid":"AmazonOpenSearchDirectQueryGlueCreateAccess",
         "Effect":"Allow",
         "Action":[
            "glue:CreateDatabase",
            "glue:CreatePartition",
            "glue:CreateTable",
            "glue:BatchCreatePartition"
         ],
         "Resource":"*"
      },
      {
         "Sid":"AmazonOpenSearchS3GlueDirectQueryModifyAllGlueResources",
         "Effect":"Allow",
         "Action":[
            "glue:DeleteDatabase",
            "glue:DeletePartition",
            "glue:DeleteTable",
            "glue:GetDatabase",
            "glue:GetDatabases",
            "glue:GetPartition",
            "glue:GetPartitions",
            "glue:GetTable",
            "glue:GetTableVersions",
            "glue:GetTables",
            "glue:UpdateDatabase",
            "glue:UpdatePartition",
            "glue:UpdateTable",
            "glue:BatchGetPartition",
            "glue:BatchDeletePartition",
            "glue:BatchDeleteTable"
         ],
         "Resource":[
            "arn:aws:glue:us-east-1:111122223333:table/*",
            "arn:aws:glue:us-east-1:111122223333:database/*",
            "arn:aws:glue:us-east-1:111122223333:catalog",
            "arn:aws:es:us-east-1:111122223333:domain/domain_name"
         ],
         "Condition":{
            "StringEquals":{
               "aws:ResourceAccount":"111122223333"
            }
         }
      },
      {
         "Sid":"ReadAndWriteActionsForS3CheckpointBucket",
         "Effect":"Allow",
         "Action":[
            "s3:ListMultipartUploadParts",
            "s3:DeleteObject",
            "s3:GetObject",
            "s3:PutObject",
            "s3:GetBucketLocation",
            "s3:ListBucket"
         ],
         "Condition":{
            "StringEquals":{
               "aws:ResourceAccount":"111122223333"
            }
         },
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-bucket",
            "arn:aws:s3:::amzn-s3-demo-bucket/*"
         ]
      }
   ]
}
```

------

Pour prendre en charge les compartiments Amazon S3 dans différents comptes, vous devez inclure une condition dans la politique Amazon S3 et ajouter le compte approprié. 

Dans l'état d'exemple suivant, remplacez-le *placeholder text * par vos propres informations.

```
"Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "{{accountId}}"
                }
```

Le rôle doit également avoir la politique de confiance suivante, qui spécifie l'ID cible.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
       {
          "Effect":"Allow",
          "Principal":{
             "Service": "directquery.opensearchservice.amazonaws.com"
          },
          "Action":"sts:AssumeRole"
       }
     ]
}
```

------

Pour obtenir des instructions quant à la création du rôle, consultez [Création d’un rôle à l’aide de politiques d’approbation personnalisées](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html).

Si le contrôle d'accès détaillé est activé dans OpenSearch Service, un nouveau rôle de contrôle OpenSearch d'accès détaillé sera automatiquement créé pour votre source de données. Le nom du nouveau rôle de contrôle d'accès détaillé sera. `AWS OpenSearchDirectQuery <name of data source>`

Par défaut, le rôle a uniquement accès aux index de sources de données de requête directe. Bien que vous puissiez configurer le rôle pour limiter ou autoriser l'accès à votre source de données, il est recommandé de ne pas ajuster l'accès de ce rôle. **Si vous supprimez la source de données, ce rôle sera supprimé**. Cela supprimera l'accès de tous les autres utilisateurs s'ils sont mappés au rôle.