Intégration Amazon S3 - Amazon Relational Database Service

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.

Intégration Amazon S3

Vous pouvez transférer des fichiers entre votre instance de base de données RDS pour Oracle et un compartiment Amazon S3. Vous pouvez utiliser l'intégration Amazon S3 avec les fonctionnalités Oracle Database telles que Oracle Data Pump. Par exemple, vous pouvez télécharger des fichiers Data Pump depuis Amazon S3 vers votre instance RDS de base de données Oracle. Pour de plus amples informations, veuillez consulter Importation de données dans Oracle sur Amazon RDS.

Note

Votre instance de base de données et votre compartiment Amazon S3 doivent se trouver dans la même Région AWS.

Configuration IAM des autorisations RDS pour l'intégration d'Oracle à Amazon S3

RDSPour qu'Oracle puisse s'intégrer à Amazon S3, votre instance de base de données doit avoir accès à un compartiment Amazon S3. L'Amazon VPC utilisé par votre instance de base de données n'a pas besoin de fournir un accès aux points de terminaison Amazon S3.

RDScar Oracle prend en charge le transfert de fichiers entre une instance de base de données d'un compte et un compartiment Amazon S3 d'un autre compte. Lorsque des étapes supplémentaires sont requises, elles sont indiquées dans les sections suivantes.

Étape 1 : créer une IAM politique pour votre RDS rôle Amazon

Au cours de cette étape, vous créez une politique AWS Identity and Access Management (IAM) avec les autorisations requises pour transférer des fichiers entre votre compartiment Amazon S3 et votre RDS instance de base de données. Cette étape suppose également que vous avez déjà créé un compartiment S3.

Avant de créer la politique, notez les informations suivantes :

  • Le nom de ressource Amazon (ARN) de votre compartiment

  • Le ARN code correspondant à votre AWS KMS clé, si votre compartiment utilise le SSE chiffrement - KMS ou SSE -S3

    Note

    Une instance RDS de base de données Oracle ne peut pas accéder aux compartiments Amazon S3 chiffrés avec SSE -C.

Pour plus d'informations, consultez la section Protection des données à l'aide du chiffrement côté serveur dans le Guide de l'utilisateur Amazon Simple Storage Service.

Pour créer une IAM politique permettant à Amazon RDS d'accéder à votre compartiment Amazon S3
  1. Ouvrez la console de gestion IAM.

  2. Sous Access Management (Gestion des accès), choisissez Policies (politiques).

  3. Choisissez Create Policy (Créer une politique).

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

  5. Pour Actions, choisissez Expand all, puis choisissez les autorisations de bucket et d'objet requises pour transférer des fichiers d'un bucket Amazon S3 vers AmazonRDS. Par exemple, procédez comme suit :

    • Développez la liste, puis sélectionnez ListBucket.

    • Développez Lire, puis sélectionnez GetObject.

    • Développez Write, puis sélectionnez PutObjectet DeleteObject.

    • Développez la gestion des autorisations, puis sélectionnez PutObjectAcl. Cette autorisation est nécessaire si vous envisagez de charger des fichiers dans un compartiment appartenant à un autre compte (ce compte doit avoir un contrôle total du contenu du compartiment).

    Les autorisations d'objet sont des autorisations pour les opérations sur les objets dans Amazon S3. Vous devez les accorder pour des objets d'un compartiment et non pour le compartiment lui-même. Pour plus d'informations, consultez Permissions for object operations.

  6. Choisissez Ressources et procédez comme suit :

    1. Choisissez Spécifique.

    2. Pour le compartiment, choisissez Ajouter ARN. Entrez dans votre seauARN. Le nom du compartiment est renseigné automatiquement. Choisissez ensuite Ajouter.

    3. Si la ressource de l'objet est affichée, choisissez Ajouter ARN pour ajouter des ressources manuellement ou choisissez N'importe laquelle.

      Note

      Vous pouvez définir une ARN valeur plus spécifique pour Amazon Resource Name (ARN) afin de permettre RDS à Amazon d'accéder uniquement à des fichiers ou 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.

  7. (Facultatif) Choisissez Add additional permissions (Ajouter des autorisations supplémentaires) pour ajouter des ressources à la stratégie. Par exemple, procédez comme suit :

    1. Si votre compartiment est chiffré à l'aide d'une KMS clé personnalisée, sélectionnez KMSle service.

    2. Pour Actions manuelles, sélectionnez ce qui suit :

      • Encrypt

      • ReEncrypt de et ReEncrypt vers

      • Decrypt

      • DescribeKey

      • GenerateDataKey

    3. Pour Resources (Ressources), choisissez Specific (Spécifique).

    4. Pour clé, choisissez Ajouter ARN. Entrez votre clé personnalisée comme ressource, puis choisissez Ajouter. ARN

      Pour plus d'informations, consultez la section Protection des données à l'aide du chiffrement côté serveur avec des KMS clés stockées dans AWS Key Management Service (SSE-KMS) dans le guide de l'utilisateur d'Amazon Simple Storage Service.

    5. Si vous souhaitez qu'Amazon y accède RDS pour accéder à d'autres compartiments, ajoutez le ARNs pour ces compartiments. Si vous le souhaitez, vous pouvez également accorder l'accès à tous les compartiments et à tous les objets dans Amazon S3.

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

  9. Dans Nom, entrez un nom pour votre IAM politique, par exemplerds-s3-integration-policy. Vous utilisez ce nom lorsque vous créez un IAM rôle à associer à votre instance de base de données. Vous pouvez également ajouter une valeur Description facultative.

  10. Choisissez Créer une politique.

Créez une politique AWS Identity and Access Management (IAM) qui accorde à Amazon RDS l'accès à un compartiment Amazon S3. Après avoir créé la stratégie, notez celle ARN de la stratégie. Vous en aurez besoin ARN pour une étape ultérieure.

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

  • GetObject— Nécessaire pour transférer des fichiers d'un compartiment Amazon S3 vers AmazonRDS.

  • ListBucket— Nécessaire pour transférer des fichiers d'un compartiment Amazon S3 vers AmazonRDS.

  • PutObject— Nécessaire pour transférer des fichiers d'Amazon RDS vers un compartiment Amazon S3.

La AWS CLI commande suivante crée une IAM politique nommée rds-s3-integration-policy avec ces options. Elle accorde un accès à un compartiment nommé amzn-s3-demo-bucket.

Exemple

Pour LinuxmacOS, 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:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }'

L'exemple suivant inclut les autorisations pour les KMS clés personnalisées.

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", "kms:Decrypt", "kms:Encrypt", "kms:ReEncrypt*", "kms:GenerateDataKey", "kms:DescribeKey", ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:kms:::your-kms-arn" ] } ] }'

Dans 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:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }'

L'exemple suivant inclut les autorisations pour les KMS clés personnalisées.

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", "kms:Decrypt", "kms:Encrypt", "kms:ReEncrypt", "kms:GenerateDataKey", "kms:DescribeKey", ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:kms:::your-kms-arn" ] } ] }'

Étape 2 : (Facultatif) Créez une IAM politique pour votre compartiment Amazon S3

Cette étape n'est nécessaire que dans les conditions suivantes :

  • Vous prévoyez de charger des fichiers dans un compartiment Amazon S3 à partir d'un compte (compte A) et d'y accéder depuis un autre compte (compte B).

  • Le compte A est le propriétaire du compartiment.

  • Le compte B nécessite un contrôle total des objets chargés dans le compartiment.

Si les conditions précédentes ne s'appliquent pas à votre cas, passez à Étape 3 : Créez un IAM rôle pour votre instance de base de données et associez votre politique.

Pour créer votre politique de compartiment, assurez-vous de disposer des éléments suivants :

  • ID de compte du compte A

  • Nom d'utilisateur du compte A

  • La ARN valeur du compartiment Amazon S3 dans le compte B

Pour créer ou modifier une stratégie de compartiment
  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans la liste Buckets (Compartiments), choisissez le nom du compartiment pour lequel vous souhaitez créer une stratégie de compartiment ou modifier la stratégie de compartiment existante.

  3. Choisissez Permissions.

  4. Sous Politique de compartiment, choisissez Modifier. La page Modifier la stratégie de compartiment s'ouvre.

  5. Sur la page Modifier la politique du compartiment, découvrez des exemples de politiques dans le guide de l'utilisateur d'Amazon S3, choisissez le générateur de politiques pour générer une politique automatiquement ou JSON modifiez-la dans la section Politique.

    Si vous choisissez le générateur de AWS politiques, celui-ci s'ouvre dans une nouvelle fenêtre :

    1. Sur la page AWS Policy Generator (Générateur de politiques), dans Select Type of Policy (Sélectionner le type de politique), sélectionnez S3 Bucket Policy (Politique de compartiment S3).

    2. Ajoutez une instruction en saisissant les informations dans les champs fournis, puis choisissez Add Statement (Ajouter une instruction). Répétez l'opération pour autant d'instructions que vous souhaitez ajouter. Pour plus d'informations sur ces champs, consultez la référence aux éléments de IAM JSON politique dans le guide de IAM l'utilisateur.

      Note

      Pour plus de commodité, la page Modifier la politique du bucket affiche le bucket ARN (Amazon Resource Name) du bucket actuel au-dessus du champ de texte de la politique. Vous pouvez le copier ARN pour l'utiliser dans les instructions de la page AWS Policy Generator.

    3. Une fois que vous avez fini d'ajouter des instructions, choisissez Generate Policy (Générer une stratégie).

    4. Copiez le texte de stratégie généré, choisissez Close (Fermer) et revenez à la page Edit bucket policy (Modifier la stratégie de compartiment) dans la console Amazon S3.

  6. Dans la boîte Policy (Stratégie), modifiez la stratégie existante ou collez la stratégie de compartiment à partir du générateur de stratégies. Veillez à résoudre les avertissements de sécurité, les erreurs, les avertissements généraux et les suggestions avant d'enregistrer votre stratégie.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Example permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-A-ID:account-A-user" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket", "arn:aws:s3:::amzn-s3-demo-destination-bucket/*" ] } ] }
  7. Choisissez Save Changes (Enregistrez les modifications), qui vous renvoie à la page Autorisations du compartiment.

Étape 3 : Créez un IAM rôle pour votre instance de base de données et associez votre politique

Cette étape suppose que vous avez créé la IAM politique dansÉtape 1 : créer une IAM politique pour votre RDS rôle Amazon. Au cours de cette étape, vous créez un rôle RDS pour votre instance de base de données for Oracle, puis vous associez votre politique au rôle.

Pour créer un IAM rôle permettant à Amazon RDS d'accéder à un compartiment Amazon S3
  1. Ouvrez la console de gestion IAM.

  2. Dans le panneau de navigation, choisissez Roles (Rôles).

  3. Sélectionnez Create role (Créer un rôle).

  4. Choisissez Service AWS .

  5. Pour les cas d'utilisation pour d'autres AWS services :, choisissez RDSpuis RDS— Ajouter un rôle à la base de données. Ensuite, sélectionnez Suivant.

  6. Pour Rechercher sous Politiques d'autorisations, entrez le nom de la IAM politique que vous avez crééeÉtape 1 : créer une IAM politique pour votre RDS rôle Amazon, puis sélectionnez la politique lorsqu'elle apparaît dans la liste. Ensuite, sélectionnez Suivant.

  7. Dans Nom du rôle, entrez le nom de votre IAM rôle, par exemple,rds-s3-integration-role. Vous pouvez également ajouter une valeur Description facultative.

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

Pour créer un rôle et y attacher votre politique
  1. Créez un IAM rôle qu'Amazon RDS peut assumer en votre nom pour accéder à vos compartiments Amazon S3.

    Nous vous recommandons d'utiliser les clés de contexte de condition globale aws:SourceArn et aws:SourceAccount dans des relations d'approbation 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.

    Vous pouvez utiliser les deux clés de contexte de condition globale et faire en sorte que la valeur aws:SourceArn contienne l'ID de compte. Dans ce cas, la valeur aws:SourceAccount et le compte dans la valeur aws:SourceArn doivent utiliser le même ID de compte lorsqu'ils sont utilisés dans la même instruction.

    • 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 relation de confiance, veillez à utiliser la clé de contexte de condition aws:SourceArn globale avec le nom complet de la ressource Amazon (ARN) des ressources accédant au rôle.

    La AWS CLI commande suivante crée le rôle nommé rds-s3-integration-role à cet effet.

    Exemple

    Pour LinuxmacOS, 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", "Condition": { "StringEquals": { "aws:SourceAccount": my_account_ID, "aws:SourceArn": "arn:aws:rds:Region:my_account_ID:db:dbname" } } } ] }'

    Dans 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", "Condition": { "StringEquals": { "aws:SourceAccount": my_account_ID, "aws:SourceArn": "arn:aws:rds:Region:my_account_ID:db:dbname" } } } ] }'

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

  2. Une fois le rôle créé, notez le ARN rôle. Vous en aurez besoin ARN pour une étape ultérieure.

  3. Attachez la politique que vous avez créée au rôle que vous avez créé.

    La AWS CLI commande suivante associe la politique au rôle nommérds-s3-integration-role.

    Exemple

    Pour LinuxmacOS, ou Unix :

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

    Dans Windows :

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

    your-policy-arnRemplacez-la par la politique ARN que vous avez notée à l'étape précédente.

Étape 4 : Associez votre IAM rôle à votre instance de base de données RDS pour Oracle

La dernière étape de configuration des autorisations pour l'intégration d'Amazon S3 consiste à associer votre IAM rôle à votre instance de base de données. Notez les critères suivants :

  • Vous devez avoir accès à un IAM rôle associé à la politique d'autorisation Amazon S3 requise.

  • Vous ne pouvez associer qu'un seul IAM rôle à votre instance RDS de base de données Oracle à la fois.

  • Votre instance de base de données doit être dans l'état Disponible.

Pour associer votre IAM rôle à votre instance de base de données RDS pour Oracle
  1. Connectez-vous à la RDS console Amazon AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/rds/.

  2. Choisissez Databases (Bases de données) dans le volet de navigation.

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

  4. Dans l'onglet Connectivité et sécurité, faites défiler l'écran jusqu'à la section Gérer les IAM rôles au bas de la page.

  5. Pour Ajouter IAM des rôles à cette instance, choisissez le rôle que vous avez créé dansÉtape 3 : Créez un IAM rôle pour votre instance de base de données et associez votre politique.

  6. Dans Feature, choisissez S3_ INTEGRATION.

    Ajouter le rôle S3_ INTEGRATION
  7. Choisissez Ajouter un rôle.

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

Exemple

Pour LinuxmacOS, ou Unix :

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

Dans Windows :

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

your-role-arnRemplacez-le par le rôle ARN que vous avez noté à l'étape précédente. S3_INTEGRATIONdoit être spécifié pour l'--feature-nameoption.

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

Pour intégrer Amazon RDS for Oracle à Amazon S3, votre instance de base de données doit être associée à un groupe d'options qui inclut l'S3_INTEGRATIONoption.

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 nouvelle instance RDS de base de données Oracle et associez-y le groupe d'options, ou modifiez une instance de base de données Oracle RDS pour y associer le groupe d'options.

    Pour de plus amples informations sur la création d'une instance de base de données, veuillez consulter Création d'une instance de base de données Amazon RDS.

    Pour plus d'informations sur la modification d'une instance de base de données , consultez Modification d'une instance de base de données Amazon RDS.

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 AWS CLI commande suivante ajoute l'S3_INTEGRATIONoption à un groupe d'options nommémyoptiongroup.

    Exemple

    Pour LinuxmacOS, ou Unix :

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

    Dans Windows :

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

    Pour de plus amples informations sur la création d'une instance de base de données, veuillez consulter Création d'une instance de base de données Amazon RDS.

    Pour plus d'informations sur la modification d'une instance de base de données RDS pour Oracle, consultezModification d'une instance de base de données Amazon RDS.

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

Pour transférer des fichiers entre une instance de base de données RDS pour Oracle et un compartiment Amazon S3, vous pouvez utiliser le RDS package Amazonrdsadmin_s3_tasks. Vous pouvez compresser des fichiers GZIP lors de leur téléchargement et les décompresser lors du téléchargement.

Exigences et limites relatives aux transferts de fichiers

Avant de transférer des fichiers entre votre instance de base de données et un compartiment Amazon S3, notez ce qui suit :

  • Le rdsadmin_s3_tasks package transfère les fichiers situés dans un seul répertoire. Vous ne pouvez pas inclure de sous-répertoires dans un transfert.

  • La taille maximale d'un objet dans un compartiment Amazon S3 est de 5 To.

  • Les tâches créées par rdsadmin_s3_tasks s'exécutent de manière asynchrone.

  • Vous pouvez télécharger des fichiers depuis le répertoire Data Pump, tel queDATA_PUMP_DIR, ou depuis n'importe quel répertoire créé par l'utilisateur. Vous ne pouvez pas télécharger de fichiers depuis un répertoire utilisé par les processus d'arrière-plan Oracle, tel que les adump trace répertoiresbdump, ou.

  • La limite de téléchargement est de 2 000 fichiers par appel de procéduredownload_from_s3. Si vous devez télécharger plus de 2 000 fichiers d'Amazon S3, divisez votre téléchargement en actions distinctes, avec un maximum de 2 000 fichiers par appel de procédure.

  • Si un fichier existe dans votre dossier de téléchargement et que vous tentez de télécharger un fichier portant le même nom, download_from_s3 ignore le téléchargement. Pour supprimer un fichier du répertoire de téléchargement, utilisez la SQL procédure PL/ UTL_FILE. FREMOVE.

Téléchargement de fichiers depuis votre instance de base de données RDS pour Oracle vers un compartiment Amazon S3

Pour charger les fichiers de votre instance de base de données vers un compartiment Amazon S3, utilisez la procédure rdsadmin.rdsadmin_s3_tasks.upload_to_s3. Par exemple, vous pouvez télécharger des fichiers de sauvegarde Oracle Recovery Manager (RMAN) ou des fichiers Oracle Data Pump. Pour plus d'informations sur l'utilisation des objets, consultez le Guide de l'utilisateur Amazon Simple Storage Service. Pour plus d'informations sur l'exécution de RMAN sauvegardes, consultezExécution des tâches RMAN courantes pour les instances de 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. Vous ne pouvez pas télécharger de fichiers depuis un répertoire utilisé par des processus d'arrière-planadump, tels quebdump, ettrace.

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é.

p_compression_level

NUMBER

0

facultatif

Le niveau de GZIP compression. La plage des valeurs valides est comprise entre 0 et 9 :

  • 0 – Pas de compression

  • 1 – Compression la plus rapide

  • 9 – Compression la plus élevée

p_bucket_owner_full_control

VARCHAR2

facultatif

Paramètre de contrôle d'accès pour le compartiment. Les seules valeurs valides sont null ou FULL_CONTROL. Ce paramètre est requis uniquement si vous chargez des fichiers depuis un compte (compte A) dans un compartiment appartenant à un autre compte (compte B). Le compte B doit avoir un contrôle total des fichiers.

La valeur renvoyée pour la procédure rdsadmin.rdsadmin_s3_tasks.upload_to_s3 est un ID de tâche.

L'exemple suivant télécharge tous les fichiers du DATA_PUMP_DIR répertoire dans le compartiment Amazon S3 nommé amzn-s3-demo-bucket. Les fichiers ne sont pas compressés.

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => 'amzn-s3-demo-bucket', 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é amzn-s3-demo-bucket. Amazon RDS applique le plus haut niveau de GZIP compression aux fichiers.

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => 'amzn-s3-demo-bucket', p_prefix => 'db', p_s3_prefix => '', p_directory_name => 'DATA_PUMP_DIR', p_compression_level => 9) 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é amzn-s3-demo-bucket. Les fichiers sont chargés dans un dossier dbfiles. Dans cet exemple, le niveau GZIP de compression est 1, qui est le niveau de compression le plus rapide.

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => 'amzn-s3-demo-bucket', p_prefix => '', p_s3_prefix => 'dbfiles/', p_directory_name => 'DATA_PUMP_DIR', p_compression_level => 1) 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é amzn-s3-demo-bucket. Les fichiers sont chargés dans un dossier dbfiles et ora est ajouté au début de chaque nom de fichier. Aucune compression n'est appliquée.

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

L'exemple suivant suppose que la commande est exécutée dans le compte A, mais le compte B exige un contrôle total du contenu du compartiment. La commande rdsadmin_s3_tasks.upload_to_s3 transfère tous les fichiers dans le répertoire DATA_PUMP_DIR du compartiment nommé s3bucketOwnedByAccountB. Le contrôle d'accès est défini sur FULL_CONTROL afin que le compte B puisse accéder aux fichiers du compartiment. Le niveau GZIP de compression est 6, qui équilibre la vitesse et la taille du fichier.

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => 's3bucketOwnedByAccountB', p_prefix => '', p_s3_prefix => '', p_directory_name => 'DATA_PUMP_DIR', p_bucket_owner_full_control => 'FULL_CONTROL', p_compression_level => 6) 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.

Vous pouvez afficher le résultat en affichant le fichier de sortie de la tâche.

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

Remplacez identifiant de tâche avec l'ID de tâche renvoyé par la procédure.

Note

Les tâches sont exécutées de manière asynchrone.

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

Pour télécharger des fichiers depuis un compartiment Amazon S3 vers une instance RDS pour Oracle, utilisez la RDS procédure Amazonrdsadmin.rdsadmin_s3_tasks.download_from_s3.

La procédure 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_error_on_zero_downloads

VARCHAR2

FALSE

Facultatif

Un indicateur qui détermine si la tâche génère une erreur quand aucun objet du compartiment Amazon S3 ne correspond au préfixe. Si ce paramètre n'est pas défini ou défini sur FALSE (valeur par défaut), la tâche affiche un message indiquant qu'aucun objet n'a été trouvé, mais ne déclenche aucune exception ni n'échoue. Si ce paramètre est le casTRUE, la tâche déclenche une exception et échoue.

Les exemples de spécifications de préfixe qui peuvent échouer aux tests de correspondance sont les espaces dans les préfixes, comme dans ' import/test9.log', et les différences de casse, comme dans test9.log et test9.LOG.

p_s3_prefix

VARCHAR2

Obligatoire

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. Vous spécifiez 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é.

p_decompression_format

VARCHAR2

Facultatif

Format de décompression. Les valeurs valides sont NONE (pas de décompression) et GZIP (décompression).

La valeur renvoyée pour la procédure rdsadmin.rdsadmin_s3_tasks.download_from_s3 est un ID de tâche.

L'exemple suivant télécharge tous les fichiers du compartiment Amazon S3 nommé amzn-s3-demo-bucket vers le répertoire DATA_PUMP_DIR. Les fichiers n'étant pas compressés, aucune décompression n'est appliquée.

SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => 'amzn-s3-demo-bucket', 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é amzn-s3-demo-bucket du répertoire DATA_PUMP_DIR. Les fichiers sont compressés avecGZIP, donc la décompression est appliquée. Le paramètre p_error_on_zero_downloads active la vérification des erreurs de préfixe. Ainsi, si le préfixe ne correspond à aucun fichier du compartiment, la tâche lève une exception et échoue.

SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => 'amzn-s3-demo-bucket', p_s3_prefix => 'db', p_directory_name => 'DATA_PUMP_DIR', p_decompression_format => 'GZIP', p_error_on_zero_downloads => 'TRUE') AS TASK_ID FROM DUAL;

L'exemple suivant télécharge tous les fichiers du dossier myfolder/ du compartiment Amazon S3 nommé amzn-s3-demo-bucket vers le répertoire DATA_PUMP_DIR. Utilisez le paramètre p_s3_prefix pour spécifier le dossier Amazon S3. Les fichiers téléchargés sont compressés avecGZIP, mais ne sont pas décompressés pendant le téléchargement.

SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => 'amzn-s3-demo-bucket', p_s3_prefix => 'myfolder/', p_directory_name => 'DATA_PUMP_DIR', p_decompression_format => 'NONE') AS TASK_ID FROM DUAL;

L'exemple suivant télécharge le fichier mydumpfile.dmp du compartiment Amazon S3 nommé amzn-s3-demo-bucket dans le répertoire DATA_PUMP_DIR. Aucune décompression n'est appliquée.

SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => 'amzn-s3-demo-bucket', p_s3_prefix => 'mydumpfile.dmp', 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.

Vous pouvez afficher le résultat en affichant le fichier de sortie de la tâche.

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

Remplacez identifiant de tâche avec l'ID de tâche renvoyé par la procédure.

Note

Les tâches sont exécutées de manière asynchrone.

Vous pouvez utiliser la procédure Oracle UTL_FILE.FREMOVE pour supprimer les fichiers d'un répertoire. Pour plus d'informations, consultez FREMOVEla procédure dans la documentation Oracle.

Surveillance du statut d'un transfert de fichiers

Les tâches de transfert de fichiers publient les RDS événements Amazon au début et à la fin. Le message d'événement contient l'ID de tâche pour le transfert de fichiers. Pour de plus amples informations sur l'affichage des événements, veuillez consulter Consulter les RDS événements Amazon.

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.

Note

Les tâches sont exécutées de manière asynchrone.

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-1234567890123-1234.log.

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

L'exemple suivant montre le fichier journal correspondant à un transfert ayant échoué.

TASK_ID -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1234567890123-1234 TEXT -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2023-04-17 18:21:33.993 UTC [INFO ] File #1: Uploading the file /rdsdbdata/datapump/A123B4CDEF567890G1234567890H1234/sample.dmp to Amazon S3 with bucket name amzn-s3-demo-bucket and key sample.dmp. 2023-04-17 18:21:34.188 UTC [ERROR] RDS doesn't have permission to write to Amazon S3 bucket name amzn-s3-demo-bucket and key sample.dmp. 2023-04-17 18:21:34.189 UTC [INFO ] The task failed.

Résolution des problèmes d'intégration avec Amazon S3

Pour obtenir des conseils de résolution des problèmes, consultez l'article AWS Re:Post Comment résoudre les problèmes liés à l'intégration d'Amazon RDS pour Oracle à Amazon S3 ? .

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 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 Amazon RDS.