

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.

# Importation de données Amazon S3 dans une d'un cluster de base de données Aurora PostgreSQL
Importation de données depuis Amazon S3 vers Aurora PostgreSQL

Vous pouvez importer des données qui ont été stockées à l'aide d'Amazon Simple Storage Service dans une table sur une instance de cluster de base de données Aurora PostgreSQL. Pour ce faire, vous devez d'abord installer l'extension `aws_s3` Aurora PostgreSQL . Cette extension fournit les fonctions que vous utilisez pour importer des données à partir d'un compartiment Amazon S3. Un *compartiment* est un conteneur Amazon S3 pour les objets et les fichiers. Les données peuvent résider dans un fichier CSV (valeur séparée par des virgules), un fichier texte ou un fichier compressé (gzip). Vous apprendrez ensuite comment installer l'extension et comment importer des données d'Amazon S3 dans un tableau. 

Votre base de données doit exécuter PostgreSQL version 10.7 ou supérieure pour importer depuis Simple Storage Service (Amazon S3) vers . Aurora PostgreSQL. 

Si vous n'avez pas de données stockées sur Amazon S3, vous devez d'abord créer un compartiment et y stocker les données. Pour en savoir plus, consulter les rubriques suivantes dans le *Guide de l'utilisateur d'Amazon Simple Storage Service*. 
+ [Créez un compartiment](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html#creating-bucket)
+ [Ajout d'un objet dans un compartiment](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html#uploading-an-object-bucket) 

L'importation entre comptes depuis Amazon S3 est prise en charge. Pour plus d’informations, consultez [Octroi d'autorisations entre comptes](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html) dans le *Guide de l'utilisateur Amazon Simple Storage Service*.

Vous pouvez utiliser la clé gérée par le client pour le chiffrement lors de l'importation de données depuis S3. Pour plus d'informations, consultez [Clés KMS stockées dans AWS KMS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html) dans le *Guide de l'utilisateur Amazon Simple Storage Service*.

**Note**  
L'importation des données à partir d'Amazon S3 n'est pas prise en charge pour Aurora Serverless v1. Elle est prise en charge pour Aurora Serverless v2.

**Topics**
+ [

# Installation de l'extension aws\$1s3
](USER_PostgreSQL.S3Import.InstallExtension.md)
+ [

# Présentation de l’importation de données à partir de données Amazon S3
](USER_PostgreSQL.S3Import.Overview.md)
+ [

# Configuration de l’accès à un compartiment Amazon S3
](USER_PostgreSQL.S3Import.AccessPermission.md)
+ [

# Importation de données depuis Amazon S3 vers votre instance de base de données Aurora PostgreSQL pour PostgreSQL
](USER_PostgreSQL.S3Import.FileFormats.md)
+ [

# Références de fonctions
](USER_PostgreSQL.S3Import.Reference.md)

# Installation de l'extension aws\$1s3
Installation de l'extension

Avant de pouvoir utiliser Amazon S3 avec votre cluster de base de données Aurora PostgreSQL , vous devez installer l'extension. Cette extension fournit des fonctions pour importer des données depuis un compartiment Amazon S3. Il fournit également des fonctions pour exporter des données depuis une instance d'un cluster de base de données Aurora PostgreSQL vers un compartiment Amazon S3. Pour de plus amples informations, consultez [Exportation de données à partir d’un cluster de bases de données Aurora PostgreSQL vers Amazon S3](postgresql-s3-export.md). L'extension `aws_s3` dépend de certaines des fonctions d'aide de l'extension `aws_commons`, qui est installée automatiquement lorsque cela est nécessaire. 

**Pour installer l'extension `aws_s3`**

1. Utilisez psql (ou pgAdmin) pour vous connecter à l'instance de base de données en écriture de votre cluster de base de données Aurora PostgreSQL en tant qu'utilisateur disposant de privilèges `rds_superuser`. Si vous avez conservé le nom par défaut pendant le processus d'installation, vous vous connectez en tant que `postgres`.

   ```
   psql --host=111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
   ```

1. Pour installer l'extension, exécutez la commande suivante. 

   ```
   postgres=> CREATE EXTENSION aws_s3 CASCADE;
   NOTICE: installing required extension "aws_commons"
   CREATE EXTENSION
   ```

1. Pour vérifier que l'extension est installée, vous pouvez utiliser la métacommande psql `\dx`.

   ```
   postgres=> \dx
          List of installed extensions
       Name     | Version |   Schema   |                 Description
   -------------+---------+------------+---------------------------------------------
    aws_commons | 1.2     | public     | Common data types across AWS services
    aws_s3      | 1.1     | public     | AWS S3 extension for importing data from S3
    plpgsql     | 1.0     | pg_catalog | PL/pgSQL procedural language
   (3 rows)
   ```

Les fonctions d'importation de données depuis Amazon S3 et d'exportation de données vers Amazon S3 sont désormais disponibles.

# Présentation de l’importation de données à partir de données Amazon S3
Présentation de l’importation de données à partir d’Amazon S3

**Pour importer des données S3 dans Aurora PostgreSQL**

Tout d’abord, rassemblez les informations que vous devez fournir à la fonction. Il s'agit notamment du nom de la table sur l'instance de votre cluster de base de données Aurora PostgreSQL, de votre instance de Amazon S3 sont stockées. Pour plus d’informations, consultez [View an object](https://docs.aws.amazon.com/AmazonS3/latest/userguide/OpeningAnObject.html) (Afficher un objet) dans le *Guide de l’utilisateur Amazon Simple Storage Service*.
**Note**  
L’importation de données partitionnées depuis Amazon S3 n’est pas prise en charge actuellement.

1. Obtenez le nom de la table dans laquelle la fonction `aws_s3.table_import_from_s3` doit importer les données. À titre d’exemple, la commande suivante crée une table `t1` qui peut être utilisée dans les étapes suivantes. 

   ```
   postgres=> CREATE TABLE t1 
       (col1 varchar(80), 
       col2 varchar(80), 
       col3 varchar(80));
   ```

1. Obtenez les détails sur le compartiment Amazon S3 et les données à importer. Pour ce faire, ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/), puis choisissez **Buckets**. Trouvez le compartiment contenant vos données dans la liste. Sélectionnez le compartiment, ouvrez sa page Object overview (Présentation des objets), puis choisissez Properties (Propriétés).

   Notez le nom du compartiment, le chemin Région AWS, le et le type de fichier. Vous aurez besoin du nom Amazon Resource Name (ARN) pour configurer l’accès à Amazon S3 via un rôle IAM. Pour obtenir plus d’informations, consultez [Configuration de l’accès à un compartiment Amazon S3](USER_PostgreSQL.S3Import.AccessPermission.md). L’image suivante montre un exemple.   
![\[Image d’un objet fichier dans un compartiment Amazon S3.\]](http://docs.aws.amazon.com/fr_fr/AmazonRDS/latest/AuroraUserGuide/images/aws_s3_import-export_s3_bucket-info.png)

1. Vous pouvez vérifier le chemin d'accès aux données du compartiment Amazon S3 à l'aide de la AWS CLI commande`aws s3 cp`. Si les informations sont correctes, cette commande télécharge une copie du fichier Amazon S3. 

   ```
   aws s3 cp s3://amzn-s3-demo-bucket/sample_file_path ./ 
   ```

1. Configurez les autorisations sur votre cluster de bases de données Aurora PostgreSQL pour permettre l’accès au fichier sur le compartiment Amazon S3. Pour ce faire, vous devez utiliser un rôle Gestion des identités et des accès AWS (IAM) ou des informations d'identification de sécurité. Pour de plus amples informations, veuillez consulter [Configuration de l’accès à un compartiment Amazon S3](USER_PostgreSQL.S3Import.AccessPermission.md).

1. Fournissez le chemin et les autres détails de l’objet Amazon S3 recueillis (voir l’étape 2) à la fonction `create_s3_uri` pour construire un objet URI Amazon S3. Pour en savoir plus sur cette fonction, consultez [aws\$1commons.create\$1s3\$1uri](USER_PostgreSQL.S3Import.Reference.md#USER_PostgreSQL.S3Import.create_s3_uri). Voici un exemple de construction de cet objet pendant une session psql.

   ```
   postgres=> SELECT aws_commons.create_s3_uri(
      'docs-lab-store-for-rpg',
      'versions_and_jdks_listing.csv',
      'us-west-1'
   ) AS s3_uri \gset
   ```

   Dans l’étape suivante, vous transmettez cet objet (`aws_commons._s3_uri_1`) à la fonction `aws_s3.table_import_from_s3` pour importer les données dans la table. 

1. Appelez la fonction `aws_s3.table_import_from_s3` pour importer les données d’Amazon S3 dans votre table. Pour obtenir des informations de référence, consultez [aws\$1s3.table\$1import\$1from\$1s3](USER_PostgreSQL.S3Import.Reference.md#aws_s3.table_import_from_s3). Pour obtenir des exemples, consultez [Importation de données depuis Amazon S3 vers votre instance de base de données Aurora PostgreSQL pour PostgreSQL](USER_PostgreSQL.S3Import.FileFormats.md). 

# Configuration de l’accès à un compartiment Amazon S3


Pour importer des données à partir d’un fichier Amazon S3, vous devez accorder au cluster de bases de données Aurora PostgreSQL une autorisation d’accès au compartiment Amazon S3 contenant le fichier. Pour accorder l’accès à un compartiment Amazon S3, vous pouvez employer une des deux méthodes décrites dans les rubriques suivantes.

**Topics**
+ [

## Utilisation d’un rôle IAM pour accéder à un compartiment Amazon S3
](#USER_PostgreSQL.S3Import.ARNRole)
+ [

## Utilisation d’informations d’identification de sécurité pour accéder à un compartiment Amazon S3
](#USER_PostgreSQL.S3Import.Credentials)
+ [

## Résolution des problèmes d’accès à Amazon S3
](#USER_PostgreSQL.S3Import.troubleshooting)

## Utilisation d’un rôle IAM pour accéder à un compartiment Amazon S3


Avant de charger des données à partir d’un fichier Amazon S3, accordez à votre cluster de bases de données Aurora PostgreSQL l’autorisation d’accéder au compartiment Amazon S3 dans lequel se trouve le fichier. De cette façon, vous n’avez pas à gérer d’informations d’identification supplémentaires ni à les fournir dans l’appel de fonction [aws\$1s3.table\$1import\$1from\$1s3](USER_PostgreSQL.S3Import.Reference.md#aws_s3.table_import_from_s3).

Pour ce faire, créez une politique IAM qui donne accès au compartiment Amazon S3. Créez un rôle IAM et attachez la politique à ce rôle. Attribuez ensuite le rôle IAM à votre cluster de base de données. 

**Note**  
Vous ne pouvez pas associer un rôle IAM à un cluster de bases de données Aurora Serverless v1, de sorte que les étapes suivantes ne s’appliquent pas.

**Pour permettre à un cluster de base de données Aurora PostgreSQL d'accéder à Amazon S3 via un rôle IAM**

1. Créez une politique IAM. 

   Celle-ci fournit au compartiment et à l’objet les autorisations permettant à votre cluster de bases de données Aurora PostgreSQL d’accéder à Amazon S3. 

   Incluez à la politique les actions obligatoires suivantes pour permettre le transfert de fichiers d’un compartiment Amazon S3 vers Aurora PostgreSQL : 
   + `s3:GetObject` 
   + `s3:ListBucket` 

   Incluez à la politique les ressources suivantes pour identifier le compartiment Amazon S3 et les objets qu’il contient. Voici le format Amazon Resource Name (ARN) permettant d’accéder à Amazon S3 :
   + arn:aws:s3 : *amzn-s3-demo-bucket*
   + arn:aws:s3 : :1 /\$1 *amzn-s3-demo-bucket*

   Pour obtenir plus d’informations sur la création d’une politique IAM pour Aurora PostgreSQL, consultez [Création et utilisation d'une politique IAM pour l'accès à une base de données IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md). Consultez également [Didacticiel : création et attachement de votre première politique gérée par le client](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html) dans le *Guide de l’utilisateur IAM*.

   La AWS CLI commande suivante crée une politique IAM nommée `rds-s3-import-policy` avec ces options. Elle accorde un accès à un compartiment nommé *amzn-s3-demo-bucket*. 
**Note**  
Notez le Amazon Resource Name (ARN) de la politique renvoyée par cette commande. Vous en aurez besoin par la suite pour attacher la politique à un rôle IAM.  
**Example**  

   Pour Linux, macOS ou Unix :

   ```
   aws iam create-policy \
      --policy-name rds-s3-import-policy \
      --policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Sid": "s3import",
            "Action": [
              "s3:GetObject",
              "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
              "arn:aws:s3:::amzn-s3-demo-bucket", 
              "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ] 
          }
        ] 
      }'
   ```

   Pour Windows :

   ```
   aws iam create-policy ^
      --policy-name rds-s3-import-policy ^
      --policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Sid": "s3import",
            "Action": [
              "s3:GetObject",
              "s3:ListBucket"
            ], 
            "Effect": "Allow",
            "Resource": [
              "arn:aws:s3:::amzn-s3-demo-bucket", 
              "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ] 
          }
        ] 
      }'
   ```

1. Créez un rôle IAM. 

   L’objectif est ici de permettre à Aurora PostgreSQL d’endosser ce rôle IAM pour accéder à vos compartiments Amazon S3. 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) dans le *Guide de l’utilisateur IAM*.

   Nous vous recommandons d’utiliser les clés de contexte de condition globale `[aws:SourceArn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)` et `[aws:SourceAccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)` dans des politiques basées sur les ressources pour limiter les autorisations du service à une ressource spécifique. C’est le moyen le plus efficace de se protéger contre le [problème du député confus](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). 

   Si vous utilisez les deux clés de contexte de condition globale et que la valeur de `aws:SourceArn` contient l’ID de compte, la valeur de `aws:SourceAccount` et le compte indiqué dans la valeur de `aws:SourceArn` doivent utiliser le même ID de compte lorsqu’il est utilisé dans la même déclaration de politique.
   + Utilisez `aws:SourceArn` si vous souhaitez un accès interservices pour une seule ressource. 
   + Utilisez `aws:SourceAccount` si vous souhaitez autoriser une ressource de ce compte à être associée à l’utilisation interservices.

   Dans la politique, veillez à utiliser la clé de contexte de condition globale `aws:SourceArn` avec l’ARN complet de la ressource. L'exemple suivant montre comment procéder à l'aide de la AWS CLI commande pour créer un rôle nommé`rds-s3-import-role`.   
**Example**  

   Pour Linux, macOS ou Unix :

   ```
   aws iam create-role \
      --role-name rds-s3-import-role \
      --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
               "Service": "rds.amazonaws.com"
             },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                   "aws:SourceAccount": "111122223333",
                   "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:cluster:clustername"
                   }
                }
          }
        ] 
      }'
   ```

   Pour Windows :

   ```
   aws iam create-role ^
      --role-name rds-s3-import-role ^
      --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
               "Service": "rds.amazonaws.com"
             },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                   "aws:SourceAccount": "111122223333",
                   "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:cluster:clustername"
                   }
                }
          }
        ] 
      }'
   ```

1. Attachez la politique IAM que vous avez créée au rôle IAM que vous venez de créer.

   La AWS CLI commande suivante associe la politique créée à l'étape précédente au rôle nommé `rds-s3-import-role` Remplacer `your-policy-arn` par l'ARN de stratégie que vous avez noté à l'étape précédente.   
**Example**  

   Pour Linux, macOS ou Unix :

   ```
   aws iam attach-role-policy \
      --policy-arn your-policy-arn \
      --role-name rds-s3-import-role
   ```

   Pour Windows :

   ```
   aws iam attach-role-policy ^
      --policy-arn your-policy-arn ^
      --role-name rds-s3-import-role
   ```

1. Ajoutez le rôle IAM au cluster de base de données. 

   Pour ce faire, utilisez le AWS Management Console ou AWS CLI, comme décrit ci-dessous. 

### Console


**Pour ajouter un rôle IAM au cluster de base de données PostgreSQL à l’aide de la console**

1. Connectez-vous à la console Amazon RDS AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)l'adresse.

1. Choisissez le nom du cluster de base de données PostgreSQL pour afficher ses détails.

1. Sous l’onglet **Connectivity & security** (Connectivité et sécurité), accédez à la section **Manage IAM roles** (Gérer les rôles IAM) et choisissez le rôle à ajouter sous **Add IAM roles to this cluster** (Ajouter des rôles IAM à ce cluster/cette instance). 

1. Sous **Feature** (Fonction), choisissez **s3Import**.

1. Choisissez **Add role** (Ajouter un rôle).

### AWS CLI


**Pour ajouter un rôle IAM à un cluster de bases de données PostgreSQL à l’aide de CLI**
+ Utilisez la commande suivante pour ajouter le rôle au cluster de bases de données PostgreSQL nommé `my-db-cluster`. Remplacez *`your-role-arn`* par l’ARN de rôle que vous avez noté lors d’une étape précédente. Utilisez `s3Import` comme valeur de l’option `--feature-name`.   
**Example**  

  Pour Linux, macOS ou Unix :

  ```
  aws rds add-role-to-db-cluster \
     --db-cluster-identifier my-db-cluster \
     --feature-name s3Import \
     --role-arn your-role-arn   \
     --region your-region
  ```

  Pour Windows :

  ```
  aws rds add-role-to-db-cluster ^
     --db-cluster-identifier my-db-cluster ^
     --feature-name s3Import ^
     --role-arn your-role-arn ^
     --region your-region
  ```

### API RDS


Pour ajouter un rôle IAM pour une de cluster de base de données PostgreSQL à l'aide de l'API Amazon RDS, appelez l'opération. [AddRoleToDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_AddRoleToDBCluster.html) 

## Utilisation d’informations d’identification de sécurité pour accéder à un compartiment Amazon S3


Si vous préférez, au lieu de donner à accès un compartiment Amazon S3 avec un rôle IAM, vous pouvez utiliser des informations d’identification de sécurité. Pour ce faire, spécifiez le paramètre `credentials` dans l’appel de fonction [aws\$1s3.table\$1import\$1from\$1s3](USER_PostgreSQL.S3Import.Reference.md#aws_s3.table_import_from_s3). 

Le `credentials` paramètre est une structure de type contenant `aws_commons._aws_credentials_1` des AWS informations d'identification. Utilisez la fonction [aws\$1commons.create\$1aws\$1credentials](USER_PostgreSQL.S3Import.Reference.md#USER_PostgreSQL.S3Import.create_aws_credentials) pour définir la clé d’accès et la clé secrète dans une structure `aws_commons._aws_credentials_1`, comme indiqué ci-après. 

```
postgres=> SELECT aws_commons.create_aws_credentials(
   'sample_access_key', 'sample_secret_key', '')
AS creds \gset
```

Après avoir créé la structure `aws_commons._aws_credentials_1 `, utilisez la fonction [aws\$1s3.table\$1import\$1from\$1s3](USER_PostgreSQL.S3Import.Reference.md#aws_s3.table_import_from_s3) avec le paramètre `credentials` pour importer les données, comme indiqué ci-après.

```
postgres=> SELECT aws_s3.table_import_from_s3(
   't', '', '(format csv)',
   :'s3_uri', 
   :'creds'
);
```

Vous pouvez également inclure l’appel de fonction [aws\$1commons.create\$1aws\$1credentials](USER_PostgreSQL.S3Import.Reference.md#USER_PostgreSQL.S3Import.create_aws_credentials) en ligne au sein de l’appel de fonction `aws_s3.table_import_from_s3`.

```
postgres=> SELECT aws_s3.table_import_from_s3(
   't', '', '(format csv)',
   :'s3_uri', 
   aws_commons.create_aws_credentials('sample_access_key', 'sample_secret_key', '')
);
```

## Résolution des problèmes d’accès à Amazon S3


Si vous rencontrez des problèmes de connexion lorsque vous tentez d’importer des données depuis Amazon S3, consultez les recommandations suivantes :
+ [Résolution des problèmes liés à Identity and Access Amazon Aurora](security_iam_troubleshoot.md)
+ [Dépannage d’Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/troubleshooting.html) dans le *Guide de l’utilisateur Amazon Simple Storage Service*.
+ [Dépannage d’Amazon S3 et IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_iam-s3.html) dans le *Guide de l’utilisateur IAM*

# Importation de données depuis Amazon S3 vers votre instance de base de données Aurora PostgreSQL pour PostgreSQL


Vous importez des données depuis votre compartiment Amazon S3 en utilisant la fonction `table_import_from_s3` de l'extension aws\$1s3. Pour obtenir des informations de référence, consultez [aws\$1s3.table\$1import\$1from\$1s3](USER_PostgreSQL.S3Import.Reference.md#aws_s3.table_import_from_s3). 

**Note**  
Les exemples suivants utilisent la méthode du rôle IAM pour donner accès au compartiment Amazon S3. Les appels de fonction `aws_s3.table_import_from_s3` n'incluent donc aucun paramètre d'informations d'identification.

L'exemple suivant montre un exemple typique.

```
postgres=> SELECT aws_s3.table_import_from_s3(
   't1',
   '', 
   '(format csv)',
   :'s3_uri'
);
```

Les paramètres sont les suivants :
+ `t1` – Nom de la table du cluster de base de base de données PostgreSQL dans laquelle copier les données. 
+ `''` – Liste facultative des colonnes de la table de base de données. Vous pouvez utiliser ce paramètre pour indiquer quelles colonnes des données S3 sont copiées dans quelles colonnes de table. Si aucune colonne n'est spécifiée, toutes les colonnes sont copiées dans la table. Pour obtenir un exemple d'utilisation d'une liste de colonnes, veuillez consulter [Importation d'un fichier Amazon S3 qui utilise un délimiteur personnalisé](#USER_PostgreSQL.S3Import.FileFormats.CustomDelimiter).
+ `(format csv)` – Arguments PostgreSQL COPY. Le processus de copie utilise les arguments et le format de la commande [PostgreSQL COPY](https://www.postgresql.org/docs/current/sql-copy.html) pour importer les données. Les choix de format comprennent les valeurs séparées par des virgules (CSV) comme dans cet exemple, le texte et les données binaires. Par défaut, il s'agit de texte. 
+  `s3_uri` – Structure contenant les informations d'identification du fichier Amazon S3. Pour obtenir un exemple d'utilisation de la fonction [aws\$1commons.create\$1s3\$1uri](USER_PostgreSQL.S3Import.Reference.md#USER_PostgreSQL.S3Import.create_s3_uri) pour créer une structure `s3_uri`, consultez [Présentation de l’importation de données à partir de données Amazon S3](USER_PostgreSQL.S3Import.Overview.md).

Pour plus d’informations sur cette fonction, consultez [aws\$1s3.table\$1import\$1from\$1s3](USER_PostgreSQL.S3Import.Reference.md#aws_s3.table_import_from_s3).

La fonction `aws_s3.table_import_from_s3` retourne du texte. Pour spécifier d'autres types de fichiers à importer à partir d'un compartiment Amazon S3, consultez l'un des exemples suivants. 

**Note**  
L'importation d'un fichier de 0 octet entraîne une erreur.

**Topics**
+ [

## Importation d'un fichier Amazon S3 qui utilise un délimiteur personnalisé
](#USER_PostgreSQL.S3Import.FileFormats.CustomDelimiter)
+ [

## Importation d'un fichier compressé Amazon S3 (gzip)
](#USER_PostgreSQL.S3Import.FileFormats.gzip)
+ [

## Importation d'un fichier codé Amazon S3
](#USER_PostgreSQL.S3Import.FileFormats.Encoded)

## Importation d'un fichier Amazon S3 qui utilise un délimiteur personnalisé


L'exemple suivant montre comment importer un fichier qui utilise un délimiteur personnalisé. Il montre également comment définir l'emplacement de destination des données dans la table de base de données à l'aide du paramètre `column_list` de la fonction [aws\$1s3.table\$1import\$1from\$1s3](USER_PostgreSQL.S3Import.Reference.md#aws_s3.table_import_from_s3). 

Pour cet exemple, supposons que les informations suivantes sont organisées en colonnes délimitées par une barre verticale dans le fichier Amazon S3.

```
1|foo1|bar1|elephant1
2|foo2|bar2|elephant2
3|foo3|bar3|elephant3
4|foo4|bar4|elephant4
...
```

**Pour importer un fichier qui utilise un délimiteur personnalisé**

1. Créez une table dans la base de données pour les données importées.

   ```
   postgres=> CREATE TABLE test (a text, b text, c text, d text, e text);
   ```

1. Utilisez le format suivant de la fonction [aws\$1s3.table\$1import\$1from\$1s3](USER_PostgreSQL.S3Import.Reference.md#aws_s3.table_import_from_s3) pour importer des données à partir du fichier Amazon S3. 

   Vous pouvez inclure l'appel de fonction [aws\$1commons.create\$1s3\$1uri](USER_PostgreSQL.S3Import.Reference.md#USER_PostgreSQL.S3Import.create_s3_uri) en ligne au sein de l'appel de fonction `aws_s3.table_import_from_s3` pour spécifier le fichier. 

   ```
   postgres=> SELECT aws_s3.table_import_from_s3(
      'test',
      'a,b,d,e',
      'DELIMITER ''|''', 
      aws_commons.create_s3_uri('amzn-s3-demo-bucket', 'pipeDelimitedSampleFile', 'us-east-2')
   );
   ```

Les données se retrouvent désormais dans la table dans les colonnes suivantes.

```
postgres=> SELECT * FROM test;
a | b | c | d | e 
---+------+---+---+------+-----------
1 | foo1 | | bar1 | elephant1
2 | foo2 | | bar2 | elephant2
3 | foo3 | | bar3 | elephant3
4 | foo4 | | bar4 | elephant4
```

## Importation d'un fichier compressé Amazon S3 (gzip)


L'exemple suivant montre comment importer un fichier compressé avec gzip à partir d'Amazon S3. Le fichier que vous importez doit comporter les métadonnées Amazon S3 suivantes :
+ Clé : `Content-Encoding`
+ Valeur : `gzip`

Si vous chargez le fichier à l'aide du AWS Management Console, les métadonnées sont généralement appliquées par le système. Pour plus d'informations sur le chargement de fichiers vers Amazon S3 à l'aide de, de AWS Management Console AWS CLI, ou de l'API, consultez la section [Chargement d'objets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) dans le guide de l'*utilisateur d'Amazon Simple Storage Service*. 

Pour de plus amples informations sur les métadonnées Amazon S3 et les métadonnées fournies par le système, veuillez consulter [Editing object metadata in the Amazon S3 console](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-object-metadata.html) dans le *Guide de l'utilisateur Amazon Simple Storage Service*.

Importez le fichier gzip dans votrecluster Aurora PostgreSQL comme décrit ci-après.

```
postgres=> CREATE TABLE test_gzip(id int, a text, b text, c text, d text);
postgres=> SELECT aws_s3.table_import_from_s3(
 'test_gzip', '', '(format csv)',
 'amzn-s3-demo-bucket', 'test-data.gz', 'us-east-2'
);
```

## Importation d'un fichier codé Amazon S3


L'exemple suivant montre comment importer un fichier codé en Windows-1252 à partir d'Amazon S3.

```
postgres=> SELECT aws_s3.table_import_from_s3(
 'test_table', '', 'encoding ''WIN1252''',
 aws_commons.create_s3_uri('amzn-s3-demo-bucket', 'SampleFile', 'us-east-2')
);
```

# Références de fonctions


**Topics**
+ [

## aws\$1s3.table\$1import\$1from\$1s3
](#aws_s3.table_import_from_s3)
+ [

## aws\$1commons.create\$1s3\$1uri
](#USER_PostgreSQL.S3Import.create_s3_uri)
+ [

## aws\$1commons.create\$1aws\$1credentials
](#USER_PostgreSQL.S3Import.create_aws_credentials)

## aws\$1s3.table\$1import\$1from\$1s3
aws\$1s3.table\$1import\$1from\$1s3

Importe les données Amazon S3 vers une table Aurora PostgreSQL. L'extension `aws_s3` fournit la fonction `aws_s3.table_import_from_s3`. La valeur renvoyée est du texte.

### Syntaxe


Les paramètres requis sont `table_name`, `column_list` et `options`. Ils identifient la table de base de données et spécifient la façon dont les données sont copiées dans la table. 

Vous pouvez également utiliser les paramètres suivants : 
+ Le paramètre `s3_info` spécifie le fichier Amazon S3 à importer. Lorsque vous utilisez ce paramètre, l'accès à Amazon S3 est fourni par un rôle IAM pour le cluster de base de données PostgreSQL.

  ```
  aws_s3.table_import_from_s3 (
     table_name text, 
     column_list text, 
     options text, 
     s3_info aws_commons._s3_uri_1
  )
  ```
+ Le paramètre `credentials` spécifie les informations d'identification permettant d'accéder à Amazon S3. Lorsque vous utilisez ce paramètre, vous n'utilisez pas de rôle IAM.

  ```
  aws_s3.table_import_from_s3 (
     table_name text, 
     column_list text, 
     options text, 
     s3_info aws_commons._s3_uri_1,
     credentials aws_commons._aws_credentials_1
  )
  ```

### Parameters


 *table\$1name*   
Chaîne de texte obligatoire contenant le nom de la table de base de données PostgreSQL dans laquelle importer les données. 

 *column\$1list*   
Chaîne de texte obligatoire contenant la liste facultative des colonnes de la table de base de données PostgreSQL dans lesquelles copier les données. Si la chaîne est vide, toutes les colonnes de la table sont utilisées. Pour obtenir un exemple, veuillez consulter [Importation d'un fichier Amazon S3 qui utilise un délimiteur personnalisé](USER_PostgreSQL.S3Import.FileFormats.md#USER_PostgreSQL.S3Import.FileFormats.CustomDelimiter).

 *options*   
Chaîne de texte obligatoire contenant les arguments de la commande `COPY` de PostgreSQL. Ces arguments spécifient la façon dont les données sont copiées dans la table PostgreSQL. Pour plus d'informations, consultez la [documentation sur la commande COPY de PostgreSQL](https://www.postgresql.org/docs/current/sql-copy.html).

 *s3\$1info*   
Type composite `aws_commons._s3_uri_1` contenant les informations suivantes sur l'objet S3 :  
+ `bucket` – Nom du compartiment Amazon S3 contenant le fichier.
+ `file_path` – Nom du fichier Amazon S3, avec le chemin d'accès à celui-ci.
+ `region`— La AWS région dans laquelle se trouve le fichier. Pour obtenir la liste des noms de AWS régions et des valeurs associées, consultez[ Régions et zones de disponibilité](Concepts.RegionsAndAvailabilityZones.md).

 *credentials*   
Type composite `aws_commons._aws_credentials_1` contenant les informations d'identification suivantes à utiliser pour l'opération d'importation :  
+ Clé d'accès
+ Clé secrète
+ Jeton de session
Pour plus d'informations sur la création d'une structure composite `aws_commons._aws_credentials_1`, veuillez consulter [aws\$1commons.create\$1aws\$1credentials](#USER_PostgreSQL.S3Import.create_aws_credentials).

### Syntaxe alternative


Pour faciliter le test, vous pouvez utiliser un ensemble étendu de paramètres au lieu des paramètres `s3_info` et `credentials`. Plusieurs variations de syntaxe supplémentaires pour la fonction `aws_s3.table_import_from_s3` sont fournies ci-dessous. 
+ Au lieu d'utiliser le paramètre `s3_info` pour identifier un fichier Amazon S3, utilisez la combinaison des paramètres `bucket`, `file_path` et `region`. Sous cette forme, l'accès à Amazon S3 est fourni par un rôle IAM sur l'instance de base de données PostgreSQL.

  ```
  aws_s3.table_import_from_s3 (
     table_name text, 
     column_list text, 
     options text, 
     bucket text, 
     file_path text, 
     region text 
  )
  ```
+ Au lieu d'utiliser le paramètre `credentials` pour spécifier l'accès à Amazon S3, utilisez la combinaison des paramètres `access_key`, `session_key` et `session_token`.

  ```
  aws_s3.table_import_from_s3 (
     table_name text, 
     column_list text, 
     options text, 
     bucket text, 
     file_path text, 
     region text, 
     access_key text, 
     secret_key text, 
     session_token text 
  )
  ```

### Autres paramètres


*bucket*  
Chaîne de texte comportant le nom du compartiment Amazon S3 qui contient le fichier. 

*file\$1path*  
Chaîne de texte contenant le nom du fichier Amazon S3, avec le chemin d'accès à celui-ci. 

*region*  
Chaîne de texte identifiant l' Région AWS emplacement du fichier. Pour obtenir la liste des Région AWS noms et des valeurs associées, consultez[ Régions et zones de disponibilité](Concepts.RegionsAndAvailabilityZones.md).

*access\$1key*  
Chaîne de texte contenant la clé d'accès à utiliser pour l'opération d'importation. La valeur par défaut est NULL.

*secret\$1key*  
Chaîne de texte contenant la clé secrète à utiliser pour l'opération d'importation. La valeur par défaut est NULL.

*session\$1token*  
(Facultatif) Chaîne de texte contenant la clé de session à utiliser pour l'opération d'importation. La valeur par défaut est NULL.

## aws\$1commons.create\$1s3\$1uri
aws\$1commons.create\$1s3\$1uri

Crée une structure `aws_commons._s3_uri_1` pour contenir les informations relatives au fichier Amazon S3. Utilisez les résultats de la fonction `aws_commons.create_s3_uri` dans le paramètre `s3_info` de la fonction [aws\$1s3.table\$1import\$1from\$1s3](#aws_s3.table_import_from_s3). 

### Syntaxe


```
aws_commons.create_s3_uri(
   bucket text,
   file_path text,
   region text
)
```

### Parameters


*bucket*  
Chaîne de texte obligatoire contenant le nom du compartiment Amazon S3 pour le fichier.

*file\$1path*  
Chaîne de texte obligatoire contenant le nom du fichier Amazon S3, avec le chemin d’accès à celui-ci.

*region*  
Chaîne de texte obligatoire Région AWS contenant le contenu du fichier. Pour obtenir la liste des Région AWS noms et des valeurs associées, consultez[ Régions et zones de disponibilité](Concepts.RegionsAndAvailabilityZones.md).

## aws\$1commons.create\$1aws\$1credentials
aws\$1commons.create\$1aws\$1credentials

Définit une clé d'accès et une clé secrète dans une structure `aws_commons._aws_credentials_1`. Utilisez les résultats de la fonction `aws_commons.create_aws_credentials` dans le paramètre `credentials` de la fonction [aws\$1s3.table\$1import\$1from\$1s3](#aws_s3.table_import_from_s3). 

### Syntaxe


```
aws_commons.create_aws_credentials(
   access_key text,
   secret_key text,
   session_token text
)
```

### Parameters


*access\$1key*  
Chaîne de texte obligatoire contenant la clé d'accès à utiliser pour l'importation d'un fichier Amazon S3. La valeur par défaut est NULL.

*secret\$1key*  
Chaîne de texte obligatoire contenant la clé secrète à utiliser pour l'importation d'un fichier Amazon S3. La valeur par défaut est NULL.

*session\$1token*  
Chaîne de texte facultative contenant le jeton de session à utiliser pour l'importation d'un fichier Amazon S3. La valeur par défaut est NULL. Si vous saisissez le paramètre `session_token` facultatif, vous pouvez utiliser les informations d'identification temporaires.