

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.

# Configuration de l’accès à un compartiment Amazon S3
<a name="USER_PostgreSQL.S3Import.AccessPermission"></a>

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
<a name="USER_PostgreSQL.S3Import.ARNRole"></a>

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
<a name="collapsible-section-1"></a>

**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
<a name="collapsible-section-2"></a>

**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
<a name="collapsible-section-3"></a>

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
<a name="USER_PostgreSQL.S3Import.Credentials"></a>

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
<a name="USER_PostgreSQL.S3Import.troubleshooting"></a>

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*