Integración de Amazon S3 - Amazon Relational Database Service

Integración de Amazon S3

Puede transferir archivos entre una instancia de RDS para Oracle BD y un bucket de Amazon S3. Puede usar la integración de Amazon S3 con características de Oracle Batabase como Oracle Data Pump. Por ejemplo, puede descargar archivos de Data Pump desde Amazon S3 en su instancia de base de datos de RDS para Oracle. Para obtener más información, consulte Importación de datos a Oracle en Amazon RDS.

nota

Su instancia de base de datos y el bucket de Amazon S3 deben estar en la misma Región de AWS.

Configuración de permisos IAM para la integración de RDS para Oracle con Amazon S3

Para que RDS para Oracle se integre con Amazon S3, su instancia de base de datos debe tener acceso a un bucket Amazon S3. La Amazon VPC utilizada por la instancia de base de datos no necesita ofrecer acceso a los puntos de enlace de Amazon S3.

RDS para Oracle admite la transferencia de archivos entre una instancia de base de datos en una cuenta y un bucket de Amazon S3 en una cuenta diferente. En los casos en que se requieren pasos adicionales, se indican en las siguientes secciones.

Paso 1: Crear una política de IAM para su rol de Amazon RDS

En este paso, cree una política AWS Identity and Access Management (IAM) con los permisos necesarios para transferir archivos entre el bucket de Amazon S3 a la instancia de base de datos de RDS. En este paso, también se asume que ya ha creado un bucket de S3.

Antes de crear la política, anote la siguiente información:

  • El nombre de recurso de Amazon (ARN) del bucket

  • El ARN para su clave de AWS KMS, si el bucket utiliza el cifrado SSE-KMS o SSE-S3

    nota

    Una instancia de base de datos de RDS para Oracle no puede acceder a los buckets de Amazon S3 cifrados con SSE-C.

Para obtener más información, consulte Protección de los datos con el cifrado del servidor en la Guía del usuario de Amazon Simple Storage Service.

Para crear una política de IAM que permita a Amazon RDS acceder a un bucket de Amazon S3
  1. Abra la consola de administración de IAM.

  2. En Access management (Administración de acceso), seleccione Policies (Políticas).

  3. Seleccione Crear política.

  4. En la pestaña Visual editor (Editor visual), seleccione Choose a service (Elegir un servicio) y, a continuación, S3.

  5. En Actions (Acciones), seleccione Expand all (Expandir todo)y, a continuación, elija los permisos de bucket y los permisos de objeto necesarios para transferir archivos de un bucket Amazon S3 a Amazon RDS. Por ejemplo, haga lo siguiente:

    • Expanda List (Lista)y, a continuación, seleccione ListBucket.

    • Expanda Read (Lectura)y, a continuación, seleccione GetObject.

    • Expanda Write (Escritura) y, a continuación, seleccione PutObject y DeleteObject.

    • Expanda Permissions management (Administración de permisos)y, a continuación, seleccione PutObjectAcl. Este permiso es necesario si planea cargar archivos en un bucket propiedad de otra cuenta y esta cuenta necesita un control total del contenido del bucket.

    Los permisos de objeto son permisos para operaciones de objeto en Amazon S3. Debe concederlos para los objetos de un bucket, y no para el bucket en sí. Para más información, consulte Permisos para operaciones con objetos.

  6. Elija Recursos y, a continuación, haga lo siguiente:

    1. Elija Específico.

    2. En el bucket, seleccione Agregar ARN. Introduzca el ARN de su bucket. El nombre del bucket se rellena automáticamente. A continuación, elija Add (Añadir).

    3. Si se muestra el recurso del objeto, elija Agregar ARN para añadir recursos manualmente o elija Cualquiera.

      nota

      Puede establecer en Amazon Resource Name (ARN) (Nombre de recurso de Amazon [ARN]) un valor de ARN más específico y que así Amazon RDS solo tenga acceso a archivos o carpetas determinados de un bucket de Amazon S3. Para obtener más información acerca del modo de definir una política de acceso en Amazon S3, consulte Administración de permisos de acceso para los recursos de Amazon S3.

  7. (Opcional) Elija Add additional permissions (Agregar permisos adicionales) para agregar recursos a la política. Por ejemplo, haga lo siguiente:

    1. Si el bucket está cifrado con una clave KMS personalizada, seleccione KMS para el servicio.

    2. En Acciones manuales, seleccione lo siguiente:

      • Encrypt

      • Volver a cifrar desde y Volver a cifrar a

      • Decrypt

      • DescribeKey

      • GenerateDataKey

    3. En Recursos, elija Específico.

    4. En la clave, seleccione Agregar ARN. Introduzca el ARN de su clave personalizada como recurso y luego elija Añadir.

      Para obtener más información, consulte Protección de datos con el cifrado en el servidor mediante claves de KMS almacenadas en AWS Key Management Service (SSE-KMS) en la guía del usuario de Amazon Simple Storage Service.

    5. Si desea que Amazon RDS acceda a otros buckets, agregue los ARN de estos buckets. Opcionalmente, también puede conceder acceso a todos los buckets y objetos de Amazon S3.

  8. Elija Next: Tags (Siguiente: Etiquetas) y, a continuación, Next: Review (Siguiente: Revisar).

  9. En Name (Nombre), escriba un nombre para la política de IAM, por ejemplo, rds-s3-integration-policy. Utilizará este nombre al crear un rol de IAM y asociarlo a la instancia de base de datos. También puede añadir una descripción opcional en Description (Descripción).

  10. Elija Create Policy (Crear política).

Cree una política de AWS Identity and Access Management (IAM) que conceda a Amazon RDS acceso a un bucket de Amazon S3. Después de crear la política, apunte el ARN de esta. Necesita el ARN para un paso posterior.

Incluya las acciones adecuadas en la política en función del tipo de acceso necesario:

  • GetObject: se requiere para transferir archivos desde un bucket de Amazon S3 a Amazon RDS.

  • ListBucket: se requiere para transferir archivos desde un bucket de Amazon S3 a Amazon RDS.

  • PutObject: se requiere para transferir archivos desde Amazon RDS a un bucket de Amazon S3.

El siguiente comando de la AWS CLI crea una política de IAM denominada rds-s3-integration-policy con estas opciones. Otorga acceso a un bucket llamado DOC-EXAMPLE-BUCKET.

ejemplo

Para Linux, macOS o 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:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ] } ] }'

En el ejemplo siguiente se incluyen permisos para claves KMS personalizadas.

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:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "arn:aws:kms:::your-kms-arn" ] } ] }'

En 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:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ] } ] }'

En el ejemplo siguiente se incluyen permisos para claves KMS personalizadas.

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:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "arn:aws:kms:::your-kms-arn" ] } ] }'

Paso 2: (Opcional) Crear una política de IAM para su bucket de Amazon S3

Este paso solo es necesario en las siguientes condiciones:

  • Tiene previsto cargar archivos en un bucket de Amazon S3 desde una cuenta (cuenta A) y acceder a ellos desde otra cuenta (cuenta B).

  • La cuenta A es la propietaria del bucket.

  • La cuenta B necesita un control total de los objetos cargados en el bucket.

Si las condiciones anteriores no le atañen, vaya a Paso 3: Crear un rol de IAM para la instancia de base de datos y asociar la política.

Para crear la política del bucket, asegúrese de que dispone de lo siguiente:

  • El ID de cuenta de la cuenta A

  • El nombre de usuario de la cuenta A

  • El valor ARN para el bucket de Amazon S3 en la cuenta B

Para crear o editar una política de bucket
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En la lista Buckets (Buckets), elija el nombre del bucket para el que desea crear una política de bucket o cuya política de bucket quiera editar.

  3. Elija Permissions (Permisos).

  4. En Bucket Policy (Política de bucket), elija Edit (Editar). Se abre la página Edit bucket policy (Editar política de bucket).

  5. En la página Edit bucket policy (Editar política de bucket), examine Policy examples (Ejemplos de políticas) en la Guía del usuario de Amazon S3. Elija Policy generator (Generador de políticas) para generar una política automáticamente o edite el JSON en la sección Policy (Política).

    Si elige Policy generator (Generador de políticas), se abre el generador de políticas de AWS en una ventana nueva:

    1. En la página AWS Policy Generator (Generador de políticas de AWS), en Select Type of Policy (Seleccionar tipo de política), elija S3 Bucket Policy (Política de bucket de S3).

    2. Agregue una instrucción ingresando la información en los campos proporcionados y, a continuación, elija Add Statement (Agregar declaración). Repita el procedimiento para tantas instrucciones como desee agregar. Para obtener más información acerca de estos campos, consulte la Referencia de los elementos de las políticas de JSON de IAM en la Guía del usuario de IAM.

      nota

      Para mayor comodidad, la página Edit bucket policy (Editar política de bucket) muestra el Bucket ARN (nombre de recurso de Amazon [ARN]) del bucket actual encima del campo de texto Policy (Política). Puede copiar este ARN para utilizarlo en las instrucciones de la página AWS Policy Generator (Generador de políticas de AWS).

    3. Una vez que haya terminado de agregar instrucciones, elija Generar política.

    4. Copie el texto de la política generada, elija Cerrar y vuelva a la página Editar política de bucket en la consola de Amazon S3.

  6. En el cuadro Policy (Política), edite la política existente o pegue la política de bucket desde el generador de políticas. Asegúrese de resolver advertencias de seguridad, errores, advertencias generales y sugerencias antes de guardar la política.

    { "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:::DOC-EXAMPLE-DESTINATION-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET/*" ] } ] }
  7. Elija Save changes (Guardar cambios), que lo redirecciona a la página Bucket Permissions (Permisos de bucket).

Paso 3: Crear un rol de IAM para la instancia de base de datos y asociar la política

En este paso se supone que se ha creado la política de IAM en Paso 1: Crear una política de IAM para su rol de Amazon RDS. En este paso, creará un rol para la instancia de base de datos de RDS para Oracle y, a continuación, asociará la política al rol.

Para crear un rol de IAM que permita el acceso de Amazon RDS a un bucket de Amazon S3
  1. Abra la consola de administración de IAM.

  2. Seleccione Roles en el panel de navegación.

  3. Elija Crear rol.

  4. Elija Servicio de AWS.

  5. En Casos de uso de otros servicios de AWS:, elija RDS y, a continuación, RDS: Añadir rol a la base de datos. A continuación, elija Next.

  6. En Buscar, en Políticas de permisos, escriba el nombre de la política de IAM que ha creado en Paso 1: Crear una política de IAM para su rol de Amazon RDS y elija la política cuando aparezca en la lista. A continuación, elija Next.

  7. En Nombre del rol, escriba un nombre para el rol de IAM, por ejemplo, rds-s3-integration-role. También puede añadir una descripción opcional en Description (Descripción).

  8. Elija Crear rol.

Para crear un rol de IAM y asociarle su política
  1. Cree un rol de IAM que Amazon RDS pueda asumir en su nombre para acceder a sus buckets de Amazon S3.

    Se recomienda usar las claves de contexto de condición global aws:SourceArn y aws:SourceAccount en las relaciones de confianza basadas en recursos para limitar los permisos del servicio a un recurso específico. Esta es la forma más eficaz de protegerse contra el problema del suplente confuso.

    Puede utilizar claves de contexto de condición globales y hacer que el valor de aws:SourceArn contenga el ID de cuenta. En estos casos, el valor de aws:SourceAccount y la cuenta del valor de aws:SourceArn deben utilizar el mismo ID de cuenta cuando se utilizan en la misma instrucción.

    • Use aws:SourceArn si quiere acceso entre servicios para un único recurso.

    • Use aws:SourceAccount si quiere permitir que cualquier recurso de esa cuenta se asocie al uso entre servicios.

    En la relación de confianza, asegúrese de usar la clave de contexto de la condición global aws:SourceArn con el nombre de recurso de Amazon (ARN) completo de los recursos que acceden al rol.

    El siguiente comando AWS CLI crea el rol nombrado rds-s3-integration-role para este propósito.

    ejemplo

    Para Linux, macOS o 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" } } } ] }'

    En 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" } } } ] }'

    Para obtener más información, consulte Creación de un rol para delegar permisos a un usuario de IAM en la Guía del usuario de IAM.

  2. Después de crear el rol, anote el ARN del rol. Necesita el ARN para un paso posterior.

  3. Asocie la política que ha creado al rol que ha creado.

    El siguiente comando de la AWS CLI asocia la política al rol denominado rds-s3-integration-role.

    ejemplo

    Para Linux, macOS o Unix:

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

    En Windows:

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

    Sustituya your-policy-arn por el ARN de la política anotado en el paso anterior.

Paso 4: Asocie su rol de IAM a su instancia de base de datos de RDS para Oracle

El último paso para configurar los permisos para la integración de Amazon S3 es asociar el rol de IAM con la instancia de base de datos. Tenga en cuenta los siguientes requisitos:

  • Debe tener acceso a un rol de IAM con la política de permisos de Amazon S3 requerida adjunta.

  • Solo puede asociar un rol de IAM a su instancia de base de datos de RDS para Oracle cada vez.

  • Su instancia de base de datos debe tener el estado Disponible.

Para asociar su rol de IAM a su instancia de base de datos de RDS para Oracle
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/.

  2. Elija Databases (Bases de datos) en el panel de navegación.

  3. Seleccione el nombre de la instancia de base de datos de RDS para Oracle para ver sus detalles.

  4. En la pestaña Connectivity & Security (Conectividad y seguridad), desplácese hacia abajo hasta la sección Manage IAM roles (Administrar roles de IAM) de la parte inferior de la página.

  5. En Añadir roles de IAM a esta instancia, elija el rol que creó en Paso 3: Crear un rol de IAM para la instancia de base de datos y asociar la política.

  6. En Feature (Característica), elija S3_INTEGRATION.

    Añadir rol S3_INTEGRATION
  7. Seleccione Add role (Añadir rol).

El siguiente comando de la AWS CLI añade el rol a una instancia de base de datos de Oracle denominada mydbinstance.

ejemplo

Para Linux, macOS o Unix:

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

En Windows:

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

Sustituya your-role-arn por el ARN del rol anotado en el paso anterior. S3_INTEGRATION debe especificarse para la opción --feature-name.

Adición de la opción de integración con Amazon S3

Para integrar Amazon RDS para Oracle con Amazon S3, su instancia de base de datos debe estar asociada a un grupo de opciones que incluya la opción S3_INTEGRATION.

Para configurar un grupo de opciones para la integración con Simple Storage Service (Amazon S3)
  1. Cree un nuevo grupo de opciones o identifique uno ya existente al que pueda añadir la opción S3_INTEGRATION.

    Para obtener información acerca de cómo crear un grupo de opciones, consulte Creación de un grupo de opciones.

  2. Añada la opción S3_INTEGRATION al grupo de opciones.

    Para obtener información acerca de cómo añadir una opción a un grupo de opciones, consulte Agregar una opción a un grupo de opciones.

  3. Cree una nueva instancia de base de datos de RDS para Oracle y asocie el grupo de opciones a ella, o bien modifique una instancia de base de datos de RDS para Oracle para asociarla al grupo de opciones.

    Para obtener información acerca de la creación de una instancia de base de datos, consulte Creación de una instancia de base de datos de Amazon RDS.

    Para obtener más información acerca de la modificación de una instancia de base de datos , consulte Modificación de una instancia de base de datos de Amazon RDS.

Para configurar un grupo de opciones para la integración con Simple Storage Service (Amazon S3)
  1. Cree un nuevo grupo de opciones o identifique uno ya existente al que pueda añadir la opción S3_INTEGRATION.

    Para obtener información acerca de cómo crear un grupo de opciones, consulte Creación de un grupo de opciones.

  2. Añada la opción S3_INTEGRATION al grupo de opciones.

    Por ejemplo, el siguiente comando de la AWS CLI añade la opción S3_INTEGRATION a un grupo de opciones denominado myoptiongroup.

    ejemplo

    Para Linux, macOS o Unix:

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

    En Windows:

    aws rds add-option-to-option-group ^ --option-group-name myoptiongroup ^ --options OptionName=S3_INTEGRATION,OptionVersion=1.0
  3. Cree una nueva instancia de base de datos de RDS para Oracle y asocie el grupo de opciones a ella, o bien modifique una instancia de base de datos de RDS para Oracle para asociarla al grupo de opciones.

    Para obtener información acerca de la creación de una instancia de base de datos, consulte Creación de una instancia de base de datos de Amazon RDS.

    Para obtener información acerca de cómo modificar una instancia de base de datos de RDS para Oracle, consulte Modificación de una instancia de base de datos de Amazon RDS.

Transferencia de archivos entre Amazon RDS for Oracle y un bucket de Amazon S3

Para transferir archivos entre una instancia de base de datos de RDS para Oracle y un bucket Amazon S3, puede utilizar el paquete rdsadmin_s3_tasks de Amazon RDS. Puede comprimir archivos con GZIP al cargarlos y descomprimirlos durante la descarga.

Requisitos y limitaciones de la transferencia de archivos

Antes de transferir archivos entre una instancia de base de datos y un bucket de Amazon S3, tenga en cuenta lo siguiente:

  • El paquete rdsadmin_s3_tasks transfiere los archivos que se encuentran en un único directorio. No puede incluir subdirectorios en una transferencia.

  • El tamaño máximo de objeto en un bucket de Amazon S3 es de 5 TB.

  • Las tareas creadas por rdsadmin_s3_tasks se ejecutan de forma asíncrona.

  • Puede cargar archivos desde el directorio de Data Pump, como DATA_PUMP_DIR, o desde cualquier directorio creado por el usuario. No puede cargar archivos desde un directorio que utilizan los procesos en segundo plano de Oracle, como los directorios adump, bdump o trace.

  • El límite de descargas es de 2000 archivos por llamada a procedimiento para download_from_s3. Si necesita descargar más de 2000 archivos de Amazon S3, divida la descarga en acciones independientes, con un máximo de 2000 archivos por llamada al procedimiento.

  • Si existe un archivo en la carpeta de descargas e intenta descargar un archivo con el mismo nombre, download_from_s3 omite la descarga. Para quitar un archivo del directorio de descarga, utilice el procedimiento PL/SQL UTL_FILE.FREMOVE.

Carga de archivos desde la instancia de base de datos de RDS para Oracle en un bucket de Amazon S3

Para cargar archivos desde una instancia de base de datos en un bucket de Amazon S3, use el procedimiento rdsadmin.rdsadmin_s3_tasks.upload_to_s3. Por ejemplo, puede cargar archivos de copia de seguridad de Oracle Recovery Manager (RMAN) o archivos de Oracle Data Pump. Para obtener información acerca del uso de objetos, consulte Guía del usuario de Amazon Simple Storage Service. Para obtener más información acerca de cómo realizar copias de seguridad de RMAN, consulte Realización de tareas RMAN comunes para instancias de base de datos de Oracle.

El procedimiento rdsadmin.rdsadmin_s3_tasks.upload_to_s3 tiene los siguientes parámetros.

Nombre del parámetro Tipo de datos Valor predeterminado Obligatorio Descripción

p_bucket_name

VARCHAR2

obligatorio

Nombre del bucket de Amazon S3 en el que cargar archivos.

p_directory_name

VARCHAR2

obligatorio

Nombre del objeto de directorio de Oracle desde el que cargar archivos. El directorio puede ser cualquier objeto de directorio creado por el usuario o el directorio Data Pump, como DATA_PUMP_DIR. No puede cargar archivos desde un directorio que utilizan los procesos en segundo plano, como adump, bdump y trace.

nota

Solo puede cargar archivos desde el directorio especificado. No puede cargar archivos en subdirectorios en el directorio especificado.

p_s3_prefix

VARCHAR2

obligatorio

Prefijo del nombre de archivo de Amazon S3 en el que se cargan los archivos. Un prefijo vacío carga todos los archivos en el nivel superior en el bucket de Amazon S3 especificado y no añade un prefijo a los nombres de archivo.

Por ejemplo, si el prefijo es folder_1/oradb, los archivos se cargan en folder_1. En este caso, el prefijo oradb se añade a cada archivo.

p_prefix

VARCHAR2

obligatorio

Prefijo del nombre de archivo con el que deben coincidir los nombres de archivo para cargarse. Un prefijo vacío carga todos los archivos en el directorio especificado.

p_compression_level

NUMBER

0

opcional

El nivel de compresión GZIP. Los valores válidos van de 0 a 9:

  • 0: sin compresión

  • 1: la compresión más rápida

  • 9: la compresión más alta

p_bucket_owner_full_control

VARCHAR2

opcional

Configuración de control de acceso para el bucket. Los únicos valores válidos son null o FULL_CONTROL. Esta configuración solo es obligatoria si carga archivos de una cuenta (cuenta A) en un bucket propiedad de otra cuenta (cuenta B) y la cuenta B necesita el control total de los archivos.

El valor devuelto para el procedimiento rdsadmin.rdsadmin_s3_tasks.upload_to_s3 es un ID de tarea.

En el siguiente ejemplo se cargan todos los archivos del directorio DATA_PUMP_DIR en el bucket de Amazon S3 denominado DOC-EXAMPLE-BUCKET. Los archivos no están comprimidos.

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

En el siguiente ejemplo se cargan todos los archivos con el prefijo db del directorio DATA_PUMP_DIR en el bucket de Amazon S3 denominado DOC-EXAMPLE-BUCKET. Amazon RDS aplica el nivel más alto de compresión GZIP a los archivos.

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => 'DOC-EXAMPLE-BUCKET', p_prefix => 'db', p_s3_prefix => '', p_directory_name => 'DATA_PUMP_DIR', p_compression_level => 9) AS TASK_ID FROM DUAL;

En el siguiente ejemplo se cargan todos los archivos del directorio DATA_PUMP_DIR en el bucket de Amazon S3 denominado DOC-EXAMPLE-BUCKET. Los archivos se cargan en una carpeta dbfiles. En este ejemplo, el nivel de compresión GZIP es 1, que es el nivel de compresión más rápido.

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => 'DOC-EXAMPLE-BUCKET', p_prefix => '', p_s3_prefix => 'dbfiles/', p_directory_name => 'DATA_PUMP_DIR', p_compression_level => 1) AS TASK_ID FROM DUAL;

En el siguiente ejemplo se cargan todos los archivos del directorio DATA_PUMP_DIR en el bucket de Amazon S3 denominado DOC-EXAMPLE-BUCKET. Los archivos se cargan en una carpeta dbfiles y ora se añade al principio de cada nombre de archivo. No se aplica compresión.

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

En el ejemplo siguiente se supone que el comando se ejecuta en la cuenta A, pero la cuenta B requiere un control total del contenido del bucket. El comando rdsadmin_s3_tasks.upload_to_s3 transfiere todos los archivos del directorio DATA_PUMP_DIR al bucket denominado s3bucketOwnedByAccountB. El control de acceso está configurado en FULL_CONTROL para que la cuenta B pueda acceder a los archivos del bucket. El nivel de compresión GZIP es 6, que equilibra la velocidad y el tamaño del archivo.

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;

En cada ejemplo, la instrucción SELECT devuelve el identificador de la tarea en un tipo de datos VARCHAR2.

Para ver el resultado, visualice el archivo de salida de la tarea.

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

Reemplace task-id con el ID de tarea devuelto por el procedimiento.

nota

Las tareas se ejecutan de forma asíncrona.

Descarga de archivos desde un bucket de Amazon S3 en una instancia de base de datos de Oracle

Para descargar archivos desde un bucket de Amazon S3 en una instancia de RDS para Oracle, use el procedimiento de Amazon RDS rdsadmin.rdsadmin_s3_tasks.download_from_s3.

El procedimiento download_from_s3 tiene los siguientes parámetros.

Nombre del parámetro Tipo de datos Valor predeterminado Obligatorio Descripción

p_bucket_name

VARCHAR2

Obligatoria

Nombre del bucket de Amazon S3 desde el que descargar archivos.

p_directory_name

VARCHAR2

Obligatoria

Nombre del directorio de Oracle en el que descargar archivos. El directorio puede ser cualquier objeto de directorio creado por el usuario o el directorio Data Pump, como DATA_PUMP_DIR.

p_error_on_zero_downloads

VARCHAR2

FALSO

Opcional

Indicador que determina si la tarea genera un error cuando ningún objeto del bucket de Amazon S3 coincide con el prefijo. Si este parámetro no está establecido o se establece en FALSE (predeterminado), la tarea imprime un mensaje en el que se indica que no se ha encontrado ningún objeto, pero no genera ninguna excepción ni se produce un error. Si este parámetro es TRUE, la tarea genera una excepción y se produce un error.

Algunos ejemplos de especificaciones de prefijos que no superan las pruebas de coincidencia son los espacios en los prefijos, como en ' import/test9.log', y los desajustes de mayúsculas y minúsculas, como en test9.log y test9.LOG.

p_s3_prefix

VARCHAR2

Obligatoria

Prefijo del nombre de archivo con el que deben coincidir los nombres de archivo para descargarse. Un prefijo vacío descarga todos los archivos de nivel superior en el bucket de Amazon S3 especificado pero no los archivos en las carpetas en el bucket.

El procedimiento descarga objetos de Amazon S3 solo desde la primera carpeta de nivel que coincide con el prefijo. Las estructuras de directorios anidados que coinciden con el prefijo especificado no se descargan.

Por ejemplo, supongamos que un bucket de Amazon S3 tiene la estructura de carpetas folder_1/folder_2/folder_3. Especifique el prefijo 'folder_1/folder_2/'. En este caso, solo se descargan los archivos de folder_2, no los archivos de folder_1 ni de folder_3.

Si, de lo contrario, especifico el prefijo 'folder_1/folder_2', se descargan todos los archivos en folder_1 que coincidan con el prefijo 'folder_2' y no se descarga ningún archivo en folder_2.

p_decompression_format

VARCHAR2

Opcional

El formato de compresión. Los valores válidos son NONE sin descompresión y GZIP para descompresión.

El valor devuelto para el procedimiento rdsadmin.rdsadmin_s3_tasks.download_from_s3 es un ID de tarea.

En el siguiente ejemplo se descargan todos los archivos del bucket de Amazon S3 denominado DOC-EXAMPLE-BUCKET en el directorio DATA_PUMP_DIR. Los archivos no están comprimidos, por lo que no se aplica descompresión.

SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => 'DOC-EXAMPLE-BUCKET', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;

En el siguiente ejemplo se descargan todos los archivos con el prefijo db del bucket de Amazon S3 denominado DOC-EXAMPLE-BUCKET en el directorio DATA_PUMP_DIR. Los archivos están comprimidos con GZIP, por lo que se aplica descompresión. El parámetro p_error_on_zero_downloads activa la comprobación de errores de prefijos, de modo que si el prefijo no coincide con ningún archivo del bucket, la tarea generará una excepción y fallará.

SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => 'DOC-EXAMPLE-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;

En el siguiente ejemplo se descargan todos los archivos de la carpeta myfolder/ del bucket de Amazon S3 denominado DOC-EXAMPLE-BUCKET en el directorio DATA_PUMP_DIR. Use el parámetro p_s3_prefix para especificar la carpeta de Amazon S3. Los archivos cargados se comprimen con GZIP, pero no se descomprimen durante la descarga.

SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => 'DOC-EXAMPLE-BUCKET', p_s3_prefix => 'myfolder/', p_directory_name => 'DATA_PUMP_DIR', p_decompression_format => 'NONE') AS TASK_ID FROM DUAL;

El siguiente ejemplo descarga el archivo mydumpfile.dmp en el bucket de Simple Storage Service (Amazon S3) con el nombre DOC-EXAMPLE-BUCKET del directorio DATA_PUMP_DIR. No se aplica descompresión.

SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => 'DOC-EXAMPLE-BUCKET', p_s3_prefix => 'mydumpfile.dmp', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;

En cada ejemplo, la instrucción SELECT devuelve el identificador de la tarea en un tipo de datos VARCHAR2.

Para ver el resultado, visualice el archivo de salida de la tarea.

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

Reemplace task-id con el ID de tarea devuelto por el procedimiento.

nota

Las tareas se ejecutan de forma asíncrona.

Puede utilizar el procedimiento UTL_FILE.FREMOVE de Oracle para eliminar archivos de un directorio. Para más información, consulte FREMOVE Procedure en la documentación de Oracle.

Monitoreo del estado de una transferencia de archivos

Las tareas de transferencia de archivos publican eventos de Amazon RDS al comenzar y al completarse. El mensaje de evento contiene el identificador de la tarea para la transferencia del archivo. Para obtener información acerca de cómo ver los eventos, consulte Consulta de eventos de Amazon RDS.

Puede ver el estado de una tarea continua en un archivo bdump. Los archivos bdump están ubicados en el directorio /rdsdbdata/log/trace. El nombre del archivo bdump está en el siguiente formato.

dbtask-task-id.log

Reemplace task-id por el ID de la tarea que desea monitorizar.

nota

Las tareas se ejecutan de forma asíncrona.

Puede utilizar el procedimiento almacenado rdsadmin.rds_file_util.read_text_file para ver el contenido de los archivos bdump. Por ejemplo, la siguiente consulta devuelve el contenido del archivo bdump dbtask-1234567890123-1234.log.

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

A continuación, se muestra un ejemplo de archivo de registro de una transferencia fallida.

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 DOC-EXAMPLE-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 DOC-EXAMPLE-BUCKET and key sample.dmp. 2023-04-17 18:21:34.189 UTC [INFO ] The task failed.

Solución de problemas de la integración de Amazon S3

Para obtener consejos sobre la solución de problemas, consulte el artículo de AWS re:post ¿Cómo puedo solucionar los problemas al integrar Amazon RDS para Oracle con Amazon S3?

Eliminación de la opción de integración con Amazon S3

Puede eliminar la opción de integración con Amazon S3 de una instancia de base de datos.

Para eliminar la opción de integración con Amazon S3 de una instancia de base de datos, realice una de las siguientes acciones:

  • Para eliminar la opción de integración con Amazon S3 de varias instancias de base de datos, elimine la opción S3_INTEGRATION del grupo de opciones al que pertenecen las instancias de base de datos. Este cambio afecta a todas las instancias de base de datos que utilizan el grupo de opciones. Para obtener más información, consulte Quitar una opción de un grupo de opciones.

  • Para eliminar la opción de integración con Amazon S3 de una sola instancia, modifique la instancia de base de datos y especifique otro grupo de opciones que no incluya la opción S3_INTEGRATION. Puede especificar el grupo de opciones predeterminado (vacío) u otro grupo de opciones personalizado. Para obtener más información, consulte Modificación de una instancia de base de datos de Amazon RDS.