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.
Temas
- Configuración de permisos IAM para la integración de RDS para Oracle con Amazon S3
- Adición de la opción de integración con Amazon S3
- Transferencia de archivos entre Amazon RDS for Oracle y un bucket de Amazon S3
- Solución de problemas de la integración de Amazon S3
- Eliminación de la opción de integración con Amazon S3
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.
Temas
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
-
Abra la consola de administración de IAM
. -
En Access management (Administración de acceso), seleccione Policies (Políticas).
-
Seleccione Crear política.
-
En la pestaña Visual editor (Editor visual), seleccione Choose a service (Elegir un servicio) y, a continuación, S3.
-
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.
-
-
Elija Recursos y, a continuación, haga lo siguiente:
-
Elija Específico.
-
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).
-
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.
-
-
(Opcional) Elija Add additional permissions (Agregar permisos adicionales) para agregar recursos a la política. Por ejemplo, haga lo siguiente:
-
Si el bucket está cifrado con una clave KMS personalizada, seleccione KMS para el servicio.
-
En Acciones manuales, seleccione lo siguiente:
-
Encrypt
-
Volver a cifrar desde y Volver a cifrar a
-
Decrypt
-
DescribeKey
-
GenerateDataKey
-
-
En Recursos, elija Específico.
-
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.
-
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.
-
-
Elija Next: Tags (Siguiente: Etiquetas) y, a continuación, Next: Review (Siguiente: Revisar).
-
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). -
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
con estas opciones. Otorga acceso a un bucket llamado rds-s3-integration-policy
.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
Inicie sesión en la AWS Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/
. -
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.
-
Elija Permissions (Permisos).
-
En Bucket Policy (Política de bucket), elija Edit (Editar). Se abre la página Edit bucket policy (Editar política de bucket).
-
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:
-
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).
-
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).
-
Una vez que haya terminado de agregar instrucciones, elija Generar política.
-
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.
-
-
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
/*" ] } ] } -
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
-
Abra la consola de administración de IAM
. -
Seleccione Roles en el panel de navegación.
-
Elija Crear rol.
-
Elija Servicio de AWS.
-
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.
-
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.
-
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). -
Elija Crear rol.
Para crear un rol de IAM y asociarle su política
-
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
yaws: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 deaws:SourceAccount
y la cuenta del valor deaws: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
para este propósito.rds-s3-integration-role
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.
-
-
Después de crear el rol, anote el ARN del rol. Necesita el ARN para un paso posterior.
-
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-namerds-s3-integration-role
En Windows:
aws iam attach-role-policy ^ --policy-arn
your-policy-arn
^ --role-namerds-s3-integration-role
Sustituya
por el ARN de la política anotado en el paso anterior.your-policy-arn
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
Inicie sesión en la AWS Management Console y abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/
. -
Elija Databases (Bases de datos) en el panel de navegación.
-
Seleccione el nombre de la instancia de base de datos de RDS para Oracle para ver sus detalles.
-
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.
-
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.
-
En Feature (Característica), elija S3_INTEGRATION.
-
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-arnyour-role-arn
En Windows:
aws rds add-role-to-db-instance ^ --db-instance-identifier
mydbinstance
^ --feature-name S3_INTEGRATION ^ --role-arnyour-role-arn
Sustituya
por el ARN del rol anotado en el paso anterior. your-role-arn
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)
-
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.
-
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.
-
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)
-
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.
-
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 denominadomyoptiongroup
.ejemplo
Para Linux, macOS o Unix:
aws rds add-option-to-option-group \ --option-group-name
myoptiongroup
\ --options OptionName=S3_INTEGRATION,OptionVersion=1.0En Windows:
aws rds add-option-to-option-group ^ --option-group-name
myoptiongroup
^ --options OptionName=S3_INTEGRATION,OptionVersion=1.0 -
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.
Temas
- Requisitos y limitaciones de la transferencia de archivos
- Carga de archivos desde la instancia de base de datos de RDS para Oracle en un bucket de Amazon S3
- Descarga de archivos desde un bucket de Amazon S3 en una instancia de base de datos de Oracle
- Monitoreo del estado de una transferencia de archivos
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 directoriosadump
,bdump
otrace
. -
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 |
---|---|---|---|---|
|
VARCHAR2 |
– |
obligatorio |
Nombre del bucket de Amazon S3 en el que cargar archivos. |
|
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 notaSolo puede cargar archivos desde el directorio especificado. No puede cargar archivos en subdirectorios en el directorio especificado. |
|
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 |
|
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. |
|
NUMBER |
|
opcional |
El nivel de compresión GZIP. Los valores válidos van de
|
|
VARCHAR2 |
– |
opcional |
Configuración de control de acceso para el bucket. Los únicos valores válidos son null o |
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
en el bucket de Amazon S3 denominado DATA_PUMP_DIR
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
del directorio db
en el bucket de Amazon S3 denominado DATA_PUMP_DIR
. Amazon RDS aplica el nivel más alto de compresión GZIP a los archivos.DOC-EXAMPLE-BUCKET
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
en el bucket de Amazon S3 denominado DATA_PUMP_DIR
. Los archivos se cargan en una carpeta DOC-EXAMPLE-BUCKET
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
en el bucket de Amazon S3 denominado DATA_PUMP_DIR
. Los archivos se cargan en una carpeta DOC-EXAMPLE-BUCKET
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
al bucket denominado DATA_PUMP_DIR
. El control de acceso está configurado en s3bucketOwnedByAccountB
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
con el ID de tarea devuelto por el procedimiento.task-id
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 |
---|---|---|---|---|
|
VARCHAR2 |
– |
Obligatoria |
Nombre del bucket de Amazon S3 desde el que descargar archivos. |
|
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 |
|
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 |
|
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 Si, de lo contrario, especifico el prefijo |
|
VARCHAR2 |
– |
Opcional |
El formato de compresión. Los valores válidos son |
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
en el directorio DOC-EXAMPLE-BUCKET
. Los archivos no están comprimidos, por lo que no se aplica descompresión.DATA_PUMP_DIR
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
del bucket de Amazon S3 denominado db
en el directorio DOC-EXAMPLE-BUCKET
. Los archivos están comprimidos con GZIP, por lo que se aplica descompresión. El parámetro DATA_PUMP_DIR
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
del bucket de Amazon S3 denominado myfolder/
en el directorio DOC-EXAMPLE-BUCKET
. Use el parámetro DATA_PUMP_DIR
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
en el bucket de Simple Storage Service (Amazon S3) con el nombre mydumpfile.dmp
del directorio DOC-EXAMPLE-BUCKET
. No se aplica descompresión.DATA_PUMP_DIR
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
con el ID de tarea devuelto por el procedimiento.task-id
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
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
por el ID de la tarea que desea monitorizar.task-id
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 nameDOC-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.