Integração do Amazon S3
É possível transferir arquivos entre uma instância de banco de dados do RDS para Oracle e um bucket do Amazon S3. É possível usar a integração do Amazon S3 com recursos do banco de dados do Oracle, como o Oracle Data Pump. Por exemplo, é possível baixar arquivos do Data Pump do Amazon S3 para a instância de banco de dados do RDS para Oracle. Para ter mais informações, consulteImportar dados para o Oracle no Amazon RDS
nota
A instância de banco de dados e o bucket do Amazon S3 devem estar na mesma Região da AWS.
Tópicos
Configurar permissões do IAM para a integração do RDS para Oracle com o Amazon S3
Para que o RDS para Oracle se integre com o Amazon S3, a instância de banco de dados deve ter acesso a um bucket do Amazon S3. A Amazon VPC usada pela instância de banco de dados não precisa conceder acesso aos endpoints do Amazon S3.
O RDS para Oracle é compatível com o carregamento de arquivos de uma instância de banco de dados em uma conta para um bucket do Amazon S3 em uma conta diferente. Quando etapas adicionais forem necessárias, elas serão indicadas nas seções a seguir.
Tópicos
- Etapa 1: Criar uma política do IAM para ser usada pelo perfil do Amazon RDS
- Etapa 2: (opcional) Criar uma política do IAM para o bucket do Amazon S3
- Etapa 3: Criar um perfil do IAM para a instância de banco de dados e anexar a política
- Etapa 4: Associar um perfil do IAM à sua instância de banco de dados do RDS para Oracle
Etapa 1: Criar uma política do IAM para ser usada pelo perfil do Amazon RDS
Nesta etapa, crie uma política do AWS Identity and Access Management (IAM) com as permissões necessárias para transferir arquivos do bucket do Amazon S3 para a instância de banco de dados do RDS. Esta etapa pressupõe que você já tenha criado um bucket do S3.
Antes de criar a política, observe as seguintes informações:
-
Nome do recurso da Amazon (ARN) do bucket.
-
O ARN da chave do AWS KMS, se o bucket usar criptografia SSE-KMS ou SSE-S3
nota
Uma instância de banco de dados do RDS para Oracle não pode acessar buckets do Amazon S3 criptografados com SSE-C.
Para ter mais informações, consulte Como proteger dados usando criptografia do lado do servidor no Guia do usuário do Amazon Simple Storage Service.
Como criar uma política do IAM para permitir acesso do Amazon RDS a um bucket do Amazon S3
-
Abra o Console de Gerenciamento do IAM
. -
Em Access management (Gerenciamento de acesso), escolha Policies (Políticas).
-
Escolha Create Policy (Criar política).
-
Na guia Editor visual, selecione Escolher um serviço e, em seguida, escolha S3.
-
Em Actions (Ações), escolha Expand all (Expandir tudo)e, em seguida, escolha as permissões de bucket e as permissões de objeto necessárias para transferir arquivos de um Amazon S3 bucket para Amazon RDS. Por exemplo, faça o seguinte:
-
Expanda List (Lista)e, em seguida, selecione ListBucket.
-
Expanda Read (Ler) e, em seguida, selecione GetObject.
-
Expanda Write (Gravar) e selecione PutObject e DeleteObject.
-
Amplie Permissions management (Gerenciamento de permissões) e selecione PutObjectAcl. Essa permissão será necessária se você planejar o carregamento de arquivos em um bucket de propriedade de uma conta diferente, e essa conta precisar ter controle total do conteúdo do bucket.
Permissões de objetos são permissões para operações de objetos no Amazon S3. Você deve concedê-las para objetos em um bucket, não para o próprio bucket. Para ter mais informações, consulte Permissões para operações de objetos.
-
-
Selecione Recursos e, depois, faça o seguinte:
-
Selecione Específico.
-
Para bucket, selecione Adicionar ARN. Insira o ARN de seu bucket. O nome do bucket é preenchido automaticamente. Em seguida, escolha Adicionar.
-
Se o recurso do objeto for exibido, selecione Adicionar ARN para adicionar recursos manualmente ou escolha Qualquer.
nota
É possível definir o nome de recurso da Amazon (ARN) como um valor de ARN mais específico para permitir que o Amazon RDS acesse apenas arquivos ou pastas específicos em um bucket do Amazon S3. Para ter mais informações sobre como definir uma política de acesso para o Amazon S3, consulte Gerenciar permissões de acesso aos recursos do Amazon S3.
-
-
(Opcional) Escolha Adicionar permissões adicionais para adicionar recursos à política. Por exemplo, faça o seguinte:
-
Se o bucket estiver criptografado com uma chave KMS personalizada, selecione KMS para o serviço.
-
Em Ações manuais, selecione o seguinte:
-
Encrypt
-
Criptografar novamente de e Criptografar novamente para
-
Decrypt
-
DescribeKey
-
GenerateDataKey
-
-
Em Recursos, selecione Específico.
-
Para chave, selecione Adicionar ARN. Insira o ARN de sua chave personalizada como o recurso e, depois, selecione Adicionar.
Para ter mais informações, consulte Como proteger os dados usando criptografia do lado do servidor com chaves do KMS armazenadas no AWS Key Management Service (SSE-KMS) do Guia do usuário do Amazon Simple Storage Service.
-
Se você Amazon RDS quiser acessar outros bucket, adicione os ARNs para esses buckets. Opcionalmente, você também pode conceder acesso a todos os buckets e objetos no Amazon S3.
-
-
Escolha Next: Tags (Próximo: tags) e Next: Review (Próximo: revisar).
-
Em Name (Nome), insira um nome para a sua política do IAM, por exemplo
rds-s3-integration-policy
. Você usará esse nome ao criar um perfil do IAM a ser associado à sua instância de banco de dados. Você também pode adicionar um valor opcional para Description (Descrição). -
Escolha Create policy (Criar política).
Crie uma política do AWS Identity and Access Management (IAM) que conceda ao Amazon RDS acesso a um bucket do Amazon S3. Depois de criar a política, anote o ARN da política. Você precisa do ARN para uma etapa subsequente.
Inclua as ações apropriadas na política com base no tipo de acesso necessário:
-
GetObject
– necessário para transferir arquivos de um bucket do Amazon S3 para o Amazon RDS. -
ListBucket
– necessário para transferir arquivos de um bucket do Amazon S3 para o Amazon RDS. -
PutObject
– Necessário para transferir arquivos do Amazon RDS para um bucket do Amazon S3.
O comando da AWS CLI a seguir cria uma política do IAM denominada
com essas opções. Ele concede acesso a um bucket denominado rds-s3-integration-policy
.your-s3-bucket-arn
exemplo
Para Linux, macOS ou Unix:
aws iam create-policy \ --policy-name
rds-s3-integration-policy
\ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3integration
", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::your-s3-bucket-arn
", "arn:aws:s3:::your-s3-bucket-arn/*
" ] } ] }'
O exemplo a seguir inclui permissões para chaves 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:::your-s3-bucket-arn
", "arn:aws:s3:::your-s3-bucket-arn/*
", "arn:aws:kms:::your-kms-arn
" ] } ] }'
Para Windows:
aws iam create-policy ^ --policy-name
rds-s3-integration-policy
^ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3integration
", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::your-s3-bucket-arn
", "arn:aws:s3:::your-s3-bucket-arn/*
" ] } ] }'
O exemplo a seguir inclui permissões para chaves 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:::your-s3-bucket-arn
", "arn:aws:s3:::your-s3-bucket-arn/*
", "arn:aws:kms:::your-kms-arn
" ] } ] }'
Etapa 2: (opcional) Criar uma política do IAM para o bucket do Amazon S3
Esta etapa é necessária somente nas seguintes condições:
-
Você planeja carregar arquivos para um bucket do Amazon S3 de uma conta (conta A) e acessá-los em uma conta diferente (conta B).
-
A conta B é a proprietária do bucket.
-
A conta B precisa ter controle total dos objetos carregados no bucket.
Se as condições anteriores não se aplicarem a você, avance para Etapa 3: Criar um perfil do IAM para a instância de banco de dados e anexar a política.
Para criar a política de bucket, verifique se você tem o seguinte:
-
O ID da conta A
-
O nome do usuário da conta A
-
O valor do ARN do bucket do Amazon S3 na conta B
Para criar ou editar uma política de bucket
Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/
. -
Na lista Buckets, escolha o nome do bucket para o qual você deseja criar uma política de bucket ou cuja política de bucket você deseja editar.
-
Escolha Permissions (Permissões).
-
Em Bucket policy (Política de bucket), escolha Edit (Editar). Isso abre a página Edit bucket policy (Editar política de bucket).
-
Na página Edit bucket policy (Editar política de buckets), explore Exemplos de políticas no Guia do usuário do Amazon S3, escolha Policy generator (Gerador de políticas) para gerar uma política automaticamente ou edite o JSON na seção Policy (Política).
Se você escolher Policy generator (Gerador de políticas), o AWS Policy Generator será aberto em uma nova janela:
-
Na página AWS Policy Generator, em Select Type of Policy (Selecionar tipo de política), S3 Bucket Policy (Política de bucket do S3).
-
Adicione uma instrução inserindo as informações nos campos fornecidos e escolha Add Statement (Adicionar instrução). Repita para todas as instruções que deseja adicionar. Para ter mais informações sobre esses campos, consulte a Referência de elementos de política JSON do IAM no Guia do usuário do IAM.
nota
Por conveniência, a página Edit bucket policy (Editar política do bucket) exibe o nome do recurso da Amazon (ARN) do bucket atual acima do campo de texto Policy (Política). Você pode copiar este ARN para usá-lo nas instruções da página do AWS Policy Generator.
-
Depois de terminar de adicionar as instruções, escolha Generate Policy (Gerar política).
-
Copie o texto da política gerada, escolha Close (Fechar) e retorne à página Edit bucket policy (Editar política de bucket) no console do Amazon S3.
-
-
Na caixa Policy (Política), edite a política existente ou cole a política de bucket do gerador de políticas. Solucione avisos de segurança, erros, avisos gerais e sugestões antes de salvar a 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:::account-B-bucket-arn
", "arn:aws:s3:::account-B-bucket-arn
/*" ] } ] } -
Escolha Save changes (Salvar alterações), o que o levará à página Bucket Permissions (Permissões do bucket).
Etapa 3: Criar um perfil do IAM para a instância de banco de dados e anexar a política
Esta etapa pressupõe que você tenha criado a política do IAM no Etapa 1: Criar uma política do IAM para ser usada pelo perfil do Amazon RDS. Nesta etapa, você cria um perfil para a instância de banco de dados do RDS para Oracle e anexa a política ao perfil.
Como criar um perfil do IAM para permitir acesso do Amazon RDS a um bucket do Amazon S3
-
Abra o Console de Gerenciamento do IAM
. -
No painel de navegação, escolha Roles.
-
Escolha Criar Perfil.
-
Selecione Serviço da AWS.
-
Em Casos de uso de outros serviços da AWS:, selecione RDS e, depois, RDS: adicionar perfil ao banco de dados. Em seguida, escolha Próximo.
-
Em Pesquisar, em Políticas de permissões, insira o nome da política do IAM que você criou em Etapa 1: Criar uma política do IAM para ser usada pelo perfil do Amazon RDS e selecione a política quando ela aparecer na lista. Em seguida, escolha Próximo.
-
Em Nome do perfil, insira um nome para seu perfil do IAM, por exemplo,
rds-s3-integration-role
. Você também pode adicionar um valor opcional para Description (Descrição). -
Escolha Criar Perfil.
Como criar um perfil e anexar uma política a ele
-
Crie um perfil do IAM que o Amazon RDS possa assumir em seu nome para acessar seus buckets do Amazon S3.
Recomendamos usar as chaves de contexto de condição global
aws:SourceArn
eaws:SourceAccount
em relações baseadas em recursos para limitar as permissões do serviço a um recurso específico. Essa é a maneira mais eficiente de se proteger contra o problema "confused deputy".Você pode usar as duas chaves de contexto de condição global e fazer com que o valor
aws:SourceArn
contenha o ID da conta. Nesses casos, verifique se o valoraws:SourceAccount
e a conta noaws:SourceArn
usa o mesmo ID de conta quando eles são usados na mesma instrução.-
Use
aws:SourceArn
se quiser acesso entre serviços para um único recurso. -
Use
aws:SourceAccount
se você quiser permitir que qualquer recurso nessa conta seja associado ao uso entre serviços.
Na relação de confiança, certifique-se de usar a chave de contexto de condição global
aws:SourceArn
com o nome do recurso da Amazon (ARN) completo dos recursos que acessam a função.O seguinte comando da AWS CLI cria a função chamada
para essa finalidade.rds-s3-integration-role
exemplo
Para Linux, macOS 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
" } } } ] }'Para 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 ter mais informações, consulte Criar uma função para delegar permissões a um usuário do IAM no Guia do usuário do IAM.
-
-
Depois que a função for criada, observe seu ARN. Você precisa do ARN para uma etapa subsequente.
-
Anexe a política criada à função criada.
O seguinte comando da AWS CLI anexa a política à função denominada
.rds-s3-integration-role
exemplo
Para Linux, macOS ou Unix:
aws iam attach-role-policy \ --policy-arn
your-policy-arn
\ --role-namerds-s3-integration-role
Para Windows:
aws iam attach-role-policy ^ --policy-arn
your-policy-arn
^ --role-namerds-s3-integration-role
Substitua
pelo ARN da política que você anotou em uma etapa anterior.your-policy-arn
Etapa 4: Associar um perfil do IAM à sua instância de banco de dados do RDS para Oracle
A última etapa na configuração de permissões para a integração com o Amazon S3 é associar seu perfil do IAM à sua instância de banco de dados. Observe os seguintes requisitos:
-
Você precisa ter acesso a um perfil do IAM com a política de permissões do Amazon S3 necessária anexada a ele.
-
Só é possível associar um perfil do IAM à instância de banco de dados do RDS para Oracle por vez.
-
Sua instância de banco de dados deve estar no estado Disponível.
Como associar um perfil do IAM à instância de banco de dados do RDS para Oracle
Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/
. -
Escolha Databases (Bancos de dados) no painel de navegação.
-
Selecione o nome da instância de banco de dados Oracle para exibir os detalhes.
-
Na guia Connectivity & security (Conectividade e segurança), role para baixo até a seção Manage IAM roles (Gerenciar funções do IAM) na parte inferior da página.
-
Em Adicionar perfis do IAM a essa instância, selecione o perfil que você criou em Etapa 3: Criar um perfil do IAM para a instância de banco de dados e anexar a política.
-
Em Feature (Recurso), escolha S3_INTEGRATION.
-
Escolha Add role (adicionar função).
O seguinte comando da AWS CLI adiciona a função a uma instância de banco de dados Oracle denominada
.mydbinstance
exemplo
Para Linux, macOS ou Unix:
aws rds add-role-to-db-instance \ --db-instance-identifier
mydbinstance
\ --feature-name S3_INTEGRATION \ --role-arnyour-role-arn
Para Windows:
aws rds add-role-to-db-instance ^ --db-instance-identifier
mydbinstance
^ --feature-name S3_INTEGRATION ^ --role-arnyour-role-arn
Substitua
pelo ARN da função que você anotou em uma etapa anterior. your-role-arn
S3_INTEGRATION
deve ser especificado para a opção --feature-name
.
Adicionar a opção de integração do Amazon S3
Para integrar o Amazon RDS para Oracle ao Amazon S3, sua instância de banco de dados deve estar associada a um grupo de opções que inclua a opção S3_INTEGRATION
.
Para configurar um grupo de opções para a integração com o Amazon S3
-
Crie um novo grupo de opções ou identifique um grupo de opções existente ao qual você pode adicionar a opção
S3_INTEGRATION
.Para obter informações sobre como criar um grupo de opções, consulte Criar um grupo de opções.
-
Adicione a opção
S3_INTEGRATION
ao grupo de opções.Para obter informações sobre como adicionar uma opção a um grupo de opções, consulte Adicionar uma opção a um grupo de opções.
-
Crie uma instância de banco de dados do RDS para Oracle e associe a ela o grupo de opções ou modifique uma instância de banco de dados do RDS para Oracle para associar o grupo de opções a ela.
Para obter informações sobre como criar uma instância de banco de dados, consulte Criar uma instância de banco de dados do Amazon RDS.
Para mais informações sobre a modificação de uma instância de banco de dados , consulte Modificar uma instância de banco de dados do Amazon RDS.
Para configurar um grupo de opções para a integração com o Amazon S3
-
Crie um novo grupo de opções ou identifique um grupo de opções existente ao qual você pode adicionar a opção
S3_INTEGRATION
.Para obter informações sobre como criar um grupo de opções, consulte Criar um grupo de opções.
-
Adicione a opção
S3_INTEGRATION
ao grupo de opções.Por exemplo, o seguinte comando da AWS CLI adiciona a opção
S3_INTEGRATION
a um grupo de opções denominadomyoptiongroup
.exemplo
Para Linux, macOS ou Unix:
aws rds add-option-to-option-group \ --option-group-name
myoptiongroup
\ --options OptionName=S3_INTEGRATION,OptionVersion=1.0Para Windows:
aws rds add-option-to-option-group ^ --option-group-name
myoptiongroup
^ --options OptionName=S3_INTEGRATION,OptionVersion=1.0 -
Crie uma instância de banco de dados do RDS para Oracle e associe a ela o grupo de opções ou modifique uma instância de banco de dados do RDS para Oracle para associar o grupo de opções a ela.
Para obter informações sobre como criar uma instância de banco de dados, consulte Criar uma instância de banco de dados do Amazon RDS.
Para ter informações sobre como modificar uma instância de banco de dados do RDS para Oracle, consulte Modificar uma instância de banco de dados do Amazon RDS.
Transferir arquivos entre o Amazon RDS para Oracle e um bucket do Amazon S3
É possível usar um pacote rdsadmin_s3_tasks
do Amazon RDS para transferir arquivos entre uma instância de banco de dados do RDS para Oracle e um bucket do Amazon S3. É possível compactar arquivos com o GZIP ao carregá-los e descompactá-los ao baixar.
Tópicos
Requisitos e limitações das transferências de arquivos
Antes de transferir arquivos entre a instância de banco de dados e um bucket do Amazon S3, observe o seguinte:
-
O pacote
rdsadmin_s3_tasks
transfere arquivos localizados em um único diretório. Não é possível incluir subdiretórios em uma transferência. -
O tamanho máximo do objeto em um bucket do Amazon S3 é 5 TB.
-
Tarefas criadas por
rdsadmin_s3_tasks
são executadas de forma assíncrona. -
É possível fazer upload de arquivos do diretório Data Pump, como
DATA_PUMP_DIR
, ou de qualquer diretório criado pelo usuário. Não é possível fazer upload de arquivos de um diretório usado pelos processos em segundo plano da Oracle, como os diretóriosadump
,bdump
outrace
. -
O limite de download é de 2 mil arquivos por chamada de procedimento para
download_from_s3
. Se você precisar baixar mais de 2.000 arquivos do Amazon S3, divida o download em ações separadas, com no máximo 2.000 arquivos por chamado do procedimento. -
Se já existir um arquivo na pasta de download e você tentar baixar um arquivo com o mesmo nome,
download_from_s3
vai ignorar o download. Para remover um arquivo do diretório de downloads, use o procedimento PL/SQL UTL_FILE.FREMOVE.
Carregar arquivos de uma instância de banco de dados do RDS para Oracle para um bucket do Amazon S3
Para carregar arquivos da instância de banco de dados para um bucket do Amazon S3, use o procedimento rdsadmin.rdsadmin_s3_tasks.upload_to_s3
. Por exemplo, você pode carregar arquivos de backup do Oracle Recovery Manager (RMAN) ou arquivos do Oracle Data Pump. Para ter mais informações sobre como trabalhar com objetos, consulte o Guia do usuário do Amazon Simple Storage Service. Para ter mais informações sobre como executar backups do RMAN, consulte Realização de tarefas comuns do RMAN para instâncias de banco de dados Oracle.
O procedimento rdsadmin.rdsadmin_s3_tasks.upload_to_s3
tem os seguintes parâmetros.
Nome do parâmetro | Tipo de dados | Padrão | Obrigatório | Descrição |
---|---|---|---|---|
|
VARCHAR2 |
– |
obrigatório |
O nome do bucket do Amazon S3 no qual fazer o upload de arquivos. |
|
VARCHAR2 |
– |
obrigatório |
O nome do objeto de diretório Oracle do qual carregar arquivos. O diretório pode ser qualquer objeto de diretório criado pelo usuário ou o diretório Data Pump, como notaVocê só pode fazer o upload de arquivos do diretório especificado. Não é possível fazer upload de arquivos em subdiretórios no diretório especificado. |
|
VARCHAR2 |
– |
obrigatório |
Um prefixo de nome de arquivo do Amazon S3 no qual os arquivos são carregados. Um prefixo vazio faz upload de todos os arquivos para o nível superior no bucket do Amazon S3 especificado e não adiciona um prefixo aos nomes de arquivos. Por exemplo, se o prefixo for |
|
VARCHAR2 |
– |
obrigatório |
Um prefixo de nome de arquivo ao qual os nomes de arquivo devem corresponder para serem transferidos por upload. Um prefixo vazio faz upload de todos os arquivos no diretório especificado. |
|
NUMBER |
|
optional |
O nível de compactação do GZIP. O intervalo de valores válidos varia de
|
|
VARCHAR2 |
– |
optional |
A configuração de controle de acesso do bucket. Os únicos valores válidos são nulo ou |
O valor de retorno do procedimento rdsadmin.rdsadmin_s3_tasks.upload_to_s3
é um ID de tarefa.
O exemplo a seguir faz upload todos os arquivos no diretório
para o bucket do Amazon S3 denominado DATA_PUMP_DIR
. Os arquivos não são compactados.mys3bucket
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => '
mys3bucket
', p_prefix => '', p_s3_prefix => '', p_directory_name => 'DATA_PUMP_DIR
') AS TASK_ID FROM DUAL;
O exemplo a seguir faz upload todos os arquivos com o prefixo
no diretório db
para o bucket do Amazon S3 denominado DATA_PUMP_DIR
. O Amazon RDS aplica o nível mais alto de compactação GZIP aos arquivos.mys3bucket
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => '
mys3bucket
', p_prefix => 'db
', p_s3_prefix => '', p_directory_name => 'DATA_PUMP_DIR
', p_compression_level =>9
) AS TASK_ID FROM DUAL;
O exemplo a seguir faz upload todos os arquivos no diretório
para o bucket do Amazon S3 denominado DATA_PUMP_DIR
. Os arquivos são carregados em uma pasta mys3bucket
dbfiles
. Neste exemplo, o nível de compactação GZIP é 1
, que é o nível de compactação mais rápido.
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => '
mys3bucket
', p_prefix => '', p_s3_prefix => 'dbfiles/
', p_directory_name => 'DATA_PUMP_DIR
', p_compression_level =>1
) AS TASK_ID FROM DUAL;
O exemplo a seguir faz upload todos os arquivos no diretório
para o bucket do Amazon S3 denominado DATA_PUMP_DIR
. Os arquivos são carregados em uma pasta mys3bucket
dbfiles
e ora
é adicionado ao início de cada nome de arquivo. Nenhuma compactação é aplicada.
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => '
mys3bucket
', p_prefix => '', p_s3_prefix => 'dbfiles/ora
', p_directory_name => 'DATA_PUMP_DIR
') AS TASK_ID FROM DUAL;
O exemplo a seguir pressupõe que o comando é executado na conta A, mas a conta B requer o controle total do conteúdo do bucket. O comando rdsadmin_s3_tasks.upload_to_s3
transfere todos os arquivos no diretório
para o bucket chamadoDATA_PUMP_DIR
. O controle de acesso está definido como s3bucketOwnedByAccountB
FULL_CONTROL
para que a conta B possa acessar os arquivos no bucket. O nível de compactação GZIP é 6
, o que equilibra a velocidade e o tamanho do arquivo.
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;
Em cada exemplo, a instrução SELECT
retorna o ID da tarefa em um tipo de dados VARCHAR2
.
Você pode visualizar o resultado exibindo o arquivo de saída da tarefa.
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-
task-id
.log'));
Substitua
pelo ID da tarefa retornado pelo procedimento.task-id
nota
As tarefas são executadas de forma assíncrona.
Baixar arquivos de um bucket do Amazon S3 para uma instância de banco de dados Oracle
Para baixar arquivos de um bucket do Amazon S3 para uma instância do RDS para Oracle, use o procedimento rdsadmin.rdsadmin_s3_tasks.download_from_s3
do Amazon RDS.
O procedimento download_from_s3
tem os seguintes parâmetros.
Nome do parâmetro | Tipo de dados | Padrão | Obrigatório | Descrição |
---|---|---|---|---|
|
VARCHAR2 |
– |
Obrigatório |
O nome do bucket do Amazon S3 do qual baixar arquivos. |
|
VARCHAR2 |
– |
Obrigatório |
O nome do objeto de diretório Oracle no qual baixar arquivos. O diretório pode ser qualquer objeto de diretório criado pelo usuário ou o diretório Data Pump, como |
|
VARCHAR2 |
FALSE |
Opcional |
Um sinalizador que determina se a tarefa gera um erro quando nenhum objeto no bucket do Amazon S3 corresponde ao prefixo. Se esse parâmetro não estiver definido ou estiver definido como FALSE (padrão), a tarefa imprimirá uma mensagem de que nenhum objeto foi encontrado, mas não vai gerar uma exceção nem uma falha. Se esse parâmetro for TRUE, a tarefa vai gerar uma exceção e ocorrerá uma falha. Exemplos de especificações de prefixo que podem falhar nos testes de correspondência são espaços em prefixos, como em |
|
VARCHAR2 |
– |
Obrigatório |
Um prefixo de nome de arquivo ao qual os nomes de arquivo devem corresponder para serem baixados. Um prefixo vazio baixa todos os arquivos de nível superior no bucket do Amazon S3 especificado, mas não os arquivos nas pastas do bucket. O procedimento baixa objetos Amazon S3 somente da pasta de primeiro nível que corresponde ao prefixo. Estruturas de diretório aninhadas que correspondem ao prefixo especificado não são baixados. Por exemplo, suponha que um bucket do Amazon S3 tenha a estrutura de pastas Em vez disso, se você especificar o prefixo |
|
VARCHAR2 |
– |
Opcional |
O formato da descompactação. Os valores válidos são |
O valor de retorno do procedimento rdsadmin.rdsadmin_s3_tasks.download_from_s3
é um ID de tarefa.
O exemplo a seguir baixa todos os arquivos no bucket do Amazon S3 denominado
para o diretório mys3bucket
. Os arquivos não são compactados, portanto, nenhuma descompactação é aplicada.DATA_PUMP_DIR
SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => '
mys3bucket
', p_directory_name => 'DATA_PUMP_DIR
') AS TASK_ID FROM DUAL;
O exemplo a seguir baixa todos os arquivos com o prefixo
no bucket do Amazon S3 denominado db
para o diretório mys3bucket
. Os arquivos são compactados com GZIP, portanto, nenhuma descompactação é aplicada. O parâmetro DATA_PUMP_DIR
p_error_on_zero_downloads
ativa a verificação de erros de prefixo, portanto, se o prefixo não corresponder a nenhum arquivo no bucket, a tarefa vai gerar uma exceção e ocorrerá uma falha.
SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => '
mys3bucket
', 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;
O exemplo a seguir baixa todos os arquivos da pasta
no bucket do Amazon S3 denominado myfolder/
para o diretório mys3bucket
. Use o parâmetro DATA_PUMP_DIR
p_s3_prefix
para especificar a pasta Amazon S3. Os arquivos carregados são compactados com o GZIP, mas não são descompactados durante o download.
SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => '
mys3bucket
', p_s3_prefix => 'myfolder/
', p_directory_name => 'DATA_PUMP_DIR
', p_decompression_format => 'NONE
') AS TASK_ID FROM DUAL;
O exemplo a seguir baixa o arquivo
no bucket do Simple Storage Service (Amazon S3) denominado mydumpfile.dmp
para o diretório mys3bucket
. Nenhuma descompactação é aplicada.DATA_PUMP_DIR
SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => '
mys3bucket
', p_s3_prefix => 'mydumpfile.dmp
', p_directory_name => 'DATA_PUMP_DIR
') AS TASK_ID FROM DUAL;
Em cada exemplo, a instrução SELECT
retorna o ID da tarefa em um tipo de dados VARCHAR2
.
Você pode visualizar o resultado exibindo o arquivo de saída da tarefa.
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-
task-id
.log'));
Substitua
pelo ID da tarefa retornado pelo procedimento.task-id
nota
As tarefas são executadas de forma assíncrona.
Você pode usar o procedimento UTL_FILE.FREMOVE
do Oracle para remover arquivos de um diretório. Para ter mais informações, consulte Procedimento FREMOVE
Monitorar o status de uma transferência de arquivo
Tarefas de transferência de arquivo de publicar eventos do Amazon RDS quando eles começam e quando são concluídos. A mensagem do evento contém o ID da tarefa para a transferência de arquivos. Para obter informações sobre como visualizar eventos, consulte Visualizar eventos do Amazon RDS.
Você pode visualizar o status de uma tarefa em andamento em um arquivo bdump. Os arquivos bdump estão localizados no diretório /rdsdbdata/log/trace
. Cada nome de arquivo bdump está no seguinte formato.
dbtask-
task-id
.log
Substitua
pelo ID da tarefa que você deseja monitorar.task-id
nota
As tarefas são executadas de forma assíncrona.
Você pode usar o procedimento armazenado rdsadmin.rds_file_util.read_text_file
para ver o conteúdo dos arquivos bdump. Por exemplo, a consulta a seguir retorna o conteúdo do arquivo bdump
.dbtask-1234567890123-1234.log
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','
dbtask-1234567890123-1234.log
'));
O exemplo a seguir mostra o arquivo de log de uma falha na transferência.
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 mys3bucket 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 mys3bucket and key sample.dmp. 2023-04-17 18:21:34.189 UTC [INFO ] The task failed.
Solução de problemas de integração do Amazon S3
Para obter dicas de solução de problemas, consulte o artigo do AWS re:Post Como solucionar problemas ao integrar o Amazon RDS para Oracle ao Amazon S3?
Remover a opção de integração do Amazon S3
Você pode remover a opção de integração do Amazon S3 de uma instância de banco de dados.
Para remover a opção de integração do Amazon S3 de uma instância de banco de dados, faça o seguinte:
-
Para remover a opção de integração do Amazon S3 de várias instâncias de bancos de dados, remova a opção
S3_INTEGRATION
do grupo de opções ao qual as instâncias de banco de dados pertencem. Essa alteração afeta todas as instâncias de bancos de dados que usam o grupo de opções. Para ter mais informações, consulteRemover uma opção de um grupo de opções -
Para remover a opção de integração do Amazon S3 de uma única instância de banco de dados, modifique a instância e especifique um grupo de opções diferente que não inclua a opção
S3_INTEGRATION
. Você pode especificar um grupo de opções padrão (vazio) ou criar um grupo de opções personalizado diferente. Para ter mais informações, consulteModificar uma instância de banco de dados do Amazon RDS