Amazon Relational Database Service
Guide de l'utilisateur

Intégration Amazon S3

Vous pouvez transférer des fichiers entre un Amazon RDS pour une instance de base de données Oracle et un compartiment Amazon S3. Vous pouvez utiliser l'intégration Amazon S3 avec les fonctionnalités Oracle telles que Data Pump. Par exemple, vous pouvez télécharger des fichiers Data Pump de Amazon S3 vers l'hôte d'instance de base de données.

Note

L'instance de base de données et le compartiment Amazon S3 doivent se situer dans la même région AWS.

Conditions préalables à l'intégration de Amazon RDS Oracle avec Amazon S3

Pour utiliser l'intégration de Amazon RDS pour Oracle avec Amazon S3, l'instance de base de données Amazon RDS doit avoir accès à un compartiment Amazon S3. Pour cela, créez une stratégie AWS Identity and Access Management (IAM) et un rôle IAM. Le Amazon VPC utilisé par votre instance de base de données n'a pas besoin de fournir d'accès aux points de terminaison Amazon S3.

Note

Pour ajouter un rôle à une instance de base de données, le statut de l'instance de base de données doit être available.

Console

Pour créer une stratégie IAM afin d'autoriser l'accès Amazon RDS à un compartiment Amazon S3

  1. Ouvrez IAM Management Console.

  2. Dans le panneau de navigation, choisissez Stratégies.

  3. Choisissez Créer une stratégie.

  4. Sous l'onglet Visual editor (Éditeur visuel), choisissez Choose a service (Choisir un service), puis S3.

  5. Choisissez Expand all (Développer tout) sous Actions, puis choisissez les autorisations de compartiment et d'objet nécessaires à la stratégie IAM.

    Incluez les actions appropriées dans la stratégie en fonction du type d'accès requis :

    • GetObject – Obligatoire pour transférer les fichiers d'un compartiment Amazon S3 vers Amazon RDS.

    • ListBucket – Obligatoire pour transférer les fichiers d'un compartiment Amazon S3 vers Amazon RDS.

    • PutObject – Obligatoire pour transférer les fichiers de Amazon RDS vers un compartiment Amazon S3.

    Les autorisations d'objet sont des autorisations pour les opérations d'objet dans Amazon S3. Elles doivent être accordées pour les objets d'un compartiment et non pour le compartiment lui-même. Pour plus d'informations sur les autorisations liées aux opérations d'objet dans Amazon S3, consultez Autorisations pour des opérations d'objet.

  6. Choisissez Resources (Ressources), puis Add ARN (Ajouter un ARN) pour bucket (compartiment).

  7. Dans la boîte de dialogue Add ARN(s) (Ajouter un ou des ARN), fournissez les détails sur votre ressource, puis choisissez Add (Ajouter).

    Spécifiez le compartiment Amazon S3 auquel autoriser l'accès. Par exemple, si vous voulez autoriser Amazon RDS à accéder au compartiment Amazon S3 nommé example-bucket, définissez la valeur d'ARN sur arn:aws:s3:::example-bucket.

  8. Si la ressource object (objet) est répertoriée, choisissez Add ARN (Ajouter un ARN) pour object (objet).

  9. Dans la boîte de dialogue Add ARN(s) (Ajouter un ou des ARN), fournissez les détails sur votre ressource.

    Pour le compartiment Amazon S3, spécifiez le compartiment Amazon S3 auquel autoriser l'accès. Pour l'objet, vous pouvez choisir Any (Tous) pour accorder des autorisations à tous les objets du compartiment.

    Note

    Vous pouvez affecter à Amazon Resource Name (ARN) une valeur d'ARN plus spécifique afin d'autoriser Amazon RDS à accéder uniquement à des fichiers ou des dossiers spécifiques dans un compartiment Amazon S3. Pour plus d'informations sur la définition d'une stratégie d'accès pour Amazon S3, consultez Gestion des autorisations d'accès de vos ressources Amazon S3.

  10. Choisissez éventuellement Add additional permissions (Ajouter des autorisations supplémentaires) pour ajouter un autre compartiment Amazon S3 à la stratégie, puis répétez les étapes précédentes pour le compartiment.

    Note

    Vous pouvez répéter ces étapes pour ajouter les instructions d'autorisation de compartiment correspondantes à votre stratégie pour chaque compartiment Amazon S3 auquel Amazon RDS doit accéder. Si vous le souhaitez, vous pouvez également accorder l'accès à tous les compartiments et à tous les objets dans Amazon S3.

  11. Choisissez Examiner une stratégie.

  12. Dans Name (Name), attribuez un nom à votre stratégie IAM, par exemple rds-s3-integration-policy. Vous utilisez ce nom lorsque vous créez un rôle IAM à associer à votre cluster de base de données. Vous pouvez également ajouter une valeur Description facultative.

  13. Choisissez Créer une stratégie.

Pour créer un rôle IAM afin d'autoriser Amazon RDS à accéder à un compartiment Amazon S3

  1. Dans le volet de navigation, choisissez Rôles.

  2. Sélectionnez Créer un rôle.

  3. Pour Service AWS, choisissez RDS.

  4. Pour Sélectionner votre cas d'utilisation, choisissez RDS – Ajouter un rôle à la base de données.

  5. Choisissez Suivant : Autorisations.

  6. Pour Rechercher, sous Attacher les stratégies d'autorisations, entrez le nom de la stratégie IAM que vous avez créée et choisissez la stratégie lorsqu'elle apparaît dans la liste.

  7. Choisissez Suivant : Balises, puis Suivant : Vérification.

  8. DansNom du rôle, attribuez un nom à votre rôle IAM, par exemple, rds-s3-integration-role. De même, vous pouvez éventuellement compléter le champ Description du rôle.

  9. Choisissez Créer le rôle.

Pour associer le rôle IAM à votre instance de base de données

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

  2. Choisissez le nom de l'instance de base de données Oracle pour afficher ses détails.

  3. Dans l'onglet Connectivité & sécurité de la section Gérer les rôles IAM, choisissez le rôle à ajouter sous Ajouter des rôles IAM à cette instance.

  4. Pour Fonction, choisissez S3_INTEGRATION.

    
                            Ajoutez le rôle S3_INTEGRATION
  5. Choisissez Ajouter un rôle.

AWS CLI

Pour accorder à Amazon RDS l'accès à un compartiment Amazon S3

  1. Créez une stratégie AWS Identity and Access Management (IAM) qui accorde à Amazon RDS un accès à un compartiment Amazon S3.

    Incluez les actions appropriées dans la stratégie en fonction du type d'accès requis :

    • GetObject – Obligatoire pour transférer les fichiers d'un compartiment Amazon S3 vers Amazon RDS.

    • ListBucket – Obligatoire pour transférer les fichiers d'un compartiment Amazon S3 vers Amazon RDS.

    • PutObject – Obligatoire pour transférer les fichiers de Amazon RDS vers un compartiment Amazon S3.

    La commande AWS CLI suivante permet de créer une stratégie IAM nommée rds-s3-integration-policy avec ces options. Elle accorde un accès à un compartiment nommé your-s3-bucket-arn.

    Exemple

    Pour Linux, OS X ou Unix :

    aws iam create-policy \ --policy-name rds-s3-integration-policy \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3integration", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::your-s3-bucket-arn", "arn:aws:s3:::your-s3-bucket-arn/*" ] } ] }'

    Pour Windows :

    aws iam create-policy ^ --policy-name rds-s3-integration-policy ^ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3integration", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::your-s3-bucket-arn", "arn:aws:s3:::your-s3-bucket-arn/*" ] } ] }'
  2. Après avoir créé la stratégie, notez son ARN (Amazon Resource Name). Vous en aurez besoin lors d'une étape ultérieure.

  3. Créez un rôle IAM qu'Amazon RDS peut endosser en votre nom pour accéder à vos compartiments Amazon S3.

    La commande AWS CLI suivante crée le paramètre rds-s3-integration-role à cet effet.

    Exemple

    Pour Linux, OS X ou Unix :

    aws iam create-role \ --role-name rds-s3-integration-role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'

    Pour Windows :

    aws iam create-role ^ --role-name rds-s3-integration-role ^ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'

    Pour de plus amples informations, veuillez consulter Création d'un rôle pour déléguer des autorisations à un utilisateur IAM dans le Guide de l'utilisateur IAM.

  4. Une fois le rôle créé, notez son ARN. Vous en aurez besoin lors d'une étape ultérieure.

  5. Attachez la stratégie que vous avez créée au rôle que vous avez créé.

    La commande AWS CLI suivante attache la stratégie au rôle nommé rds-s3-integration-role.

    Exemple

    Pour Linux, OS X ou Unix :

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

    Pour Windows :

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

    Remplacez your-policy-arn par l'ARN de stratégie que vous avez noté lors d'une étape précédente.

  6. Ajoutez le rôle à l'instance de base de données Oracle.

    La commande AWS CLI suivante ajoute le rôle à une instance de base de données Oracle nommée mydbinstance.

    Exemple

    Pour Linux, OS X ou Unix :

    aws rds add-role-to-db-instance \ --db-instance-identifier mydbinstance \ --feature-name S3_INTEGRATION \ --role-arn your-role-arn

    Pour Windows :

    aws rds add-role-to-db-instance ^ --db-instance-identifier mydbinstance ^ --feature-name S3_INTEGRATION ^ --role-arn your-role-arn

    Remplacez your-role-arn par l'ARN du rôle que vous avez noté lors d'une étape précédente. S3_INTEGRATION doit être spécifié pour l'option --feature-name.

Ajout de l'option d'intégration Amazon S3

Pour que vous puissiez ajouter l'intégration Amazon RDS pour Oracle avec Amazon S3, votre instance de base de données Amazon RDS Oracle doit être associée à un groupe d'options qui inclut l'option S3_INTEGRATION.

Console

Pour configurer un groupe d'options pour l'intégration Amazon S3

  1. Créez un groupe d'options ou identifiez un groupe d'options existant auquel vous pouvez ajouter l'option S3_INTEGRATION.

    Pour de plus amples informations sur la création d'un groupe d'options, veuillez consulter Création d'un groupe d'options.

  2. Ajoutez l'option S3_INTEGRATION au groupe d'options.

    Pour de plus amples informations sur l'ajout d'une option à un groupe d'options, veuillez consulter Ajout d'une option à un groupe d'options.

  3. Créez une instance de base de données Oracle et associez le groupe d'options à cette instance ou modifiez une instance de base de données Oracle pour lui associer le groupe d'options.

    Pour de plus amples informations sur la création d'une instance de base de données Oracle, veuillez consulter Création d'une instance de base de données exécutant le moteur de base de données Oracle.

    Pour de plus amples informations sur la modification d'une instance de base de données Oracle, veuillez consulter Modification d'une instance de base de données exécutant le moteur de base de données Oracle.

AWS CLI

Pour configurer un groupe d'options pour l'intégration Amazon S3

  1. Créez un groupe d'options ou identifiez un groupe d'options existant auquel vous pouvez ajouter l'option S3_INTEGRATION.

    Pour de plus amples informations sur la création d'un groupe d'options, veuillez consulter Création d'un groupe d'options.

  2. Ajoutez l'option S3_INTEGRATION au groupe d'options.

    Par exemple, la commande AWS CLI suivante ajoute l'option S3_INTEGRATION à un groupe d'options nommé myoptiongroup.

    Exemple

    Pour Linux, OS X ou Unix :

    aws rds add-option-to-option-group \ --option-group-name myoptiongroup \ --options OptionName=S3_INTEGRATION,OptionVersion=1.0

    Pour Windows :

    aws rds add-option-to-option-group ^ --option-group-name myoptiongroup ^ --options OptionName=S3_INTEGRATION,OptionVersion=1.0
  3. Créez une instance de base de données Oracle et associez le groupe d'options à cette instance ou modifiez une instance de base de données Oracle pour lui associer le groupe d'options.

    Pour de plus amples informations sur la création d'une instance de base de données Oracle, veuillez consulter Création d'une instance de base de données exécutant le moteur de base de données Oracle.

    Pour de plus amples informations sur la modification d'une instance de base de données Oracle, veuillez consulter Modification d'une instance de base de données exécutant le moteur de base de données Oracle.

Transfert de fichiers entre Amazon RDS pour Oracle et un compartiment Amazon S3

Vous pouvez utiliser les procédures Amazon RDS pour charger les fichiers d'une instance de base de données Oracle vers un compartiment Amazon S3. Vous pouvez également utiliser les procédures Amazon RDS pour télécharger les fichiers d'un compartiment Amazon S3 vers une instance de base de données Oracle.

Note

Ces procédures chargent ou téléchargent les fichiers dans un répertoire unique. Vous ne pouvez pas inclure de sous-répertoires dans ces opérations. Les opérations de chargement et de téléchargement sont traitées en série.

Chargement de fichiers d'une instance de base de données Oracle vers un compartiment Amazon S3

Pour charger les fichiers d'une instance de base de données Oracle vers un compartiment Amazon S3, utilisez la procédure Amazon RDS rdsadmin.rdsadmin_s3_tasks.upload_to_s3. Par exemple, vous pouvez charger les fichiers de sauvegarde Oracle Recovery Manager (RMAN). Pour de plus amples informations sur les sauvegardes RMAN, veuillez consulter Tâches Recovery Manager (RMAN) DBA courantes pour les instances base de données Oracle.

La procédure rdsadmin.rdsadmin_s3_tasks.upload_to_s3 possède les paramètres suivants.

Nom du paramètre Type de données Par défaut Obligatoire Description

p_bucket_name

VARCHAR2

obligatoire

Nom du compartiment Amazon S3 dans lequel charger les fichiers.

p_directory_name

VARCHAR2

obligatoire

Nom de l'objet de répertoire Oracle à partir duquel les fichiers doivent être chargés. Le répertoire peut être n'importe quel objet de répertoire créé par l'utilisateur ou répertoire Data Pump, par exemple DATA_PUMP_DIR.

Note

Vous pouvez uniquement charger les fichiers à partir du répertoire spécifié. Vous ne pouvez pas charger les fichiers des sous-répertoires dans le répertoire spécifié.

p_s3_prefix

VARCHAR2

obligatoire

Préfixe de nom de fichier Amazon S3 en fonction duquel les fichiers sont chargés. Un préfixe vide charge tous les fichiers au niveau supérieur dans le compartiment Amazon S3 spécifié et n'ajoute pas de préfixe aux noms de fichier.

Par exemple, si le préfixe est folder_1/oradb, les fichiers sont chargés dans folder_1. Dans ce cas, le préfixe oradb est ajouté à chaque fichier.

p_prefix

VARCHAR2

obligatoire

Préfixe de nom de fichier que les noms de fichier doivent contenir pour être chargés. Un préfixe vide charge tous les fichiers du répertoire spécifié.

L'exemple suivant télécharge tous les fichiers d'un répertoire DATA_PUMP_DIR dans le compartiment Amazon S3 nommé mys3bucket.

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => 'mys3bucket', p_prefix => '', p_s3_prefix => '', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;

L'exemple suivant télécharge tous les fichiers ayant le préfixe db dans le répertoireDATA_PUMP_DIR du compartiment Amazon S3 nommé mys3bucket.

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => 'mys3bucket', p_prefix => 'db', p_s3_prefix => '', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;

L'exemple suivant télécharge tous les fichiers d'un répertoire DATA_PUMP_DIR dans le compartiment Amazon S3 nommé mys3bucket. Les fichiers sont chargés dans un dossier dbfiles.

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => 'mys3bucket', p_prefix => '', p_s3_prefix => 'dbfiles/', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;

L'exemple suivant télécharge tous les fichiers d'un répertoire DATA_PUMP_DIR dans le compartiment Amazon S3 nommé mys3bucket. Les fichiers sont chargés dans un dossier dbfiles et ora est ajouté au début de chaque nom de fichier.

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => 'mys3bucket', p_prefix => '', p_s3_prefix => 'dbfiles/ora', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;

Dans chaque exemple, l'instruction SELECT renvoie l'ID de la tâche dans un type de données VARCHAR2.

Téléchargement des fichiers d'un compartiment Amazon S3 vers une instance de base de données Oracle

Pour télécharger les fichiers d'un compartiment Amazon S3 vers une instance de base de données Oracle, utilisez la procédure Amazon RDS rdsadmin.rdsadmin_s3_tasks.download_from_s3. La procédure rdsadmin.rdsadmin_s3_tasks.download_from_s3 possède les paramètres suivants.

Nom du paramètre Type de données Par défaut Obligatoire Description

p_bucket_name

VARCHAR2

obligatoire

Nom du compartiment Amazon S3 à partir duquel télécharger les fichiers.

p_directory_name

VARCHAR2

obligatoire

Nom de l'objet de répertoire Oracle vers lequel les fichiers doivent être téléchargés. Le répertoire peut être n'importe quel objet de répertoire créé par l'utilisateur ou répertoire Data Pump, par exemple DATA_PUMP_DIR.

p_s3_prefix

VARCHAR2

''

facultatif

Préfixe de nom de fichier que les noms de fichier doivent contenir pour être téléchargés. Un préfixe vide télécharge tous les fichiers au niveau le plus haut dans le compartiment Amazon S3 spécifié, mais pas les dossiers dans le compartiment.

La procédure télécharge les objets Amazon S3 du dossier de premier niveau correspondant au préfixe. Les structures de répertoire imbriquées correspondant au préfixe spécifié ne sont pas téléchargées.

Par exemple, supposons qu'un compartiment Amazon S3 ait la structure de dossiers folder_1/folder_2/folder_3. Supposons également que vous ayez spécifié le préfixe 'folder_1/folder_2/'. Dans ce cas, seuls les fichiers de folder_2 sont téléchargés, et non ceux de folder_1 ou folder_3.

Si à la place vous spécifiez le préfixe 'folder_1/folder_2', tous les fichiers dans folder_1 qui correspondent au préfixe 'folder_2' sont téléchargés et aucun fichier dans folder_2 n’est téléchargé.

L'exemple suivant télécharge tous les fichiers du compartiment Amazon S3 nommé mys3bucket vers le répertoire DATA_PUMP_DIR.

SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => 'mys3bucket', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;

L'exemple suivant télécharge tous les fichiers ayant le préfixe db dans le compartiment Amazon S3 nommé mys3bucket du répertoire DATA_PUMP_DIR.

SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => 'mys3bucket', p_s3_prefix => 'db', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;

Dans chaque exemple, l'instruction SELECT renvoie l'ID de la tâche dans un type de données VARCHAR2.

L'exemple suivant télécharge tous les fichiers du dossier myfolder/ du compartiment Amazon S3 nommé mys3bucket vers le répertoire DATA_PUMP_DIR. Utilisez la définition du paramètre de préfixe pour spécifier le dossier Amazon S3.

SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => 'mys3bucket', p_s3_prefix => 'myfolder/', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;

Dans chaque exemple, l'instruction SELECT renvoie l'ID de la tâche dans un type de données VARCHAR2.

Note

Vous pouvez utiliser la procédure Oracle UTL_FILE.FREMOVE pour supprimer les fichiers d'un répertoire. Pour de plus amples informations, veuillez consulter FREMOVE Procedure dans la documentation Oracle.

Surveillance du statut d'un transfert de fichiers

Les tâches de transfert de fichiers publient des événements Amazon RDS lorsqu'elles démarrent et lorsqu'elles se terminent. Pour de plus amples informations sur l'affichage des événements, veuillez consulter Affichage d'événements Amazon RDS.

Vous pouvez consulter le statut d'une tâche en cours dans un fichier bdump. Les fichiers bdump se trouvent dans le répertoire /rdsdbdata/log/trace. Chaque nom de fichier bdump a le format suivant.

dbtask-task-id.log

Remplacez task-id par l'ID de la tâche que vous souhaitez surveiller.

Vous pouvez utiliser la procédure stockée rdsadmin.rds_file_util.read_text_file pour afficher le contenu des fichiers bdump. Par exemple, la requête suivante renvoie le contenu du fichier bdump dbtask-1546988886389-2444.log.

SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-1546988886389-2444.log'));

Suppression de l'option d'intégration Amazon S3

Vous pouvez supprimer l'option d'intégration Amazon S3 d'une instance de base de données.

Pour supprimer l'option d'intégration Amazon S3 d'une instance de base de données, effectuez l'une des actions suivantes :

  • Pour supprimer l'option d'intégration Amazon S3 de plusieurs instances de base de données, supprimez l'option S3_INTEGRATION du groupe d'options auquel celles-ci appartiennent. Ce changement affecte toutes les instances de bases de données qui utilisent le groupe d'options. Pour de plus amples informations, veuillez consulter Suppression d'une option d'un groupe d'options.

  • Pour supprimer l'option d'intégration Amazon S3 d'une instance de base de données particulière, modifiez l'instance de base de données et spécifiez un autre groupe d'options qui n'inclut pas l'option S3_INTEGRATION. Vous pouvez spécifier le groupe d'options (vide) par défaut, ou un groupe d'options personnalisées différent. Pour de plus amples informations, veuillez consulter Modification d'une instance de base de données exécutant le moteur de base de données Oracle.