Como faço para solucionar problemas ao integrar o Amazon RDS para Oracle com o Amazon S3?
Quero solucionar problemas ao integrar o Amazon Relational Database Service (Amazon RDS) para Oracle com o Amazon Simple Storage Service (Amazon S3).
Breve descrição
Antes de transferir arquivos entre uma instância de banco de dados do Amazon RDS para Oracle e um bucket do Amazon S3, confirme os seguintes requisitos:
- A instância de banco de dados e o bucket do S3 estão na mesma região da AWS.
- O perfil do AWS Identity and Access Management (AWS IAM) para a instância do banco de dados tem o acesso necessário ao bucket do S3.
- A instância de banco de dados está associada a um grupo de opções que inclui a opção S3_INTEGRATION.
- Você faz upload de arquivos somente do objeto de diretório do Oracle.
Observação: esse diretório pode ser um diretório criado pelo usuário ou um diretório DATA_PUMP_DIR. - Se você usar um diretório criado pelo usuário, certifique-se de que o usuário que faz o upload e o download tenha as permissões necessárias no diretório.
- Se você estiver copiando dados em subdiretórios, especifique explicitamente o nome do subdiretório ao usar os pacotes rdsadmin.
Observação: não é possível copiar subdiretórios que usam a opção S3_INTEGRATION. Só é possível usar a opção S3_INTEGRATION para copiar arquivos entre um diretório lógico do Oracle, como DATA_PUMP_DIR e o Amazon S3.
Resolução
Observação: se você receber mensagens de erro ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Verifique se o perfil do IAM na instância do banco de dados tem permissões para o bucket do S3
Conclua as etapas a seguir:
-
Abra o console do Amazon RDS.
-
No painel de navegação, clique em Bancos de dados.
-
Selecione a instância de banco de dados que você deseja verificar.
-
Clique na guia Conectividade e segurança.
-
Role para baixo até a seção Gerenciar perfis do IAM e verifique se você tem um perfil do IAM Ativo que possui as seguintes permissões mínimas:
S3:ListBucket
S3:PutObject
S3:GetObject
Também é possível executar o comando describe-db-instances:aws rds describe-db-instances \--db-instance-identifier example-db-instance \--query 'DBInstances[*].[AssociatedRoles[*]]'Observação: substitua example-db-instance pela sua instância de banco de dados.
-
Se o perfil do IAM existir, mas não tiver as permissões mínimas, atualize o perfil para incluir essas permissões.
Se você não tiver um perfil do IAM com as permissões necessárias, conclua as seguintes etapas:
- Crie uma política do IAM com as permissões necessárias para transferir os arquivos.
Observação: ao criar a política do IAM, certifique-se de adicionar permissões ao nível de bucket aos buckets e permissões ao nível de objeto aos objetos. - Crie um perfil do IAM em sua instância de banco de dados do Amazon RDS para Oracle e anexe sua política ao perfil.
- Associe seu perfil do IAM à sua instância de banco de dados do Amazon RDS para Oracle.
Se o problema com as permissões do bucket persistir, use o exemplo de política a seguir para conceder ao perfil do IAM acesso total ao bucket do S3:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:*" ], "Resource": [ "arn:aws:s3:::example-bucket/*", "arn:aws:s3:::example-bucket" ] } ] }
Importante: só conceda acesso total ao bucket do S3 para testar se a configuração incorreta das permissões do IAM causou o problema. Depois de resolver o problema, retorne as permissões personalizadas ao estado anterior.
Para fazer upload de arquivos para uma pasta específica no Amazon S3, use o parâmetro p_s3_prefix no procedimento rdsadmin.rdsadmin_s3_tasks.upload_to_s3. Certifique-se de ter as permissões necessárias antes de fazer o upload dos arquivos.
Por exemplo, para fazer upload de arquivos para a pasta example-folder para o bucket do S3 example-bucket, anexe a seguinte política do IAM:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::example-bucket/example-folder/*" ] } ] }
Verifique se você tem um grupo de opções anexado à sua instância de banco de dados do RDS
Conclua as etapas a seguir:
-
Abra o console do Amazon RDS.
-
No painel de navegação, clique em Bancos de dados.
-
Selecione a instância de banco de dados que você deseja verificar.
-
Clique na guia Configuração e anote o parâmetro Grupos de opções.
-
Para verificar se esse grupo de opções está no estado in-sync, execute o seguinte comando describe-db-instances:
aws rds describe-db-instances \--db-instance-identifier example-db-instance \--query 'DBInstances[*].[OptionGroupMemberships[*]]'Observação: substitua example-db-instance pela sua instância de banco de dados.
-
Realize uma das ações a seguir:
Se o grupo de opções não estiver no estado in-sync, clique na guia Logs e eventos e analise a seção Eventos recentes. Identifique o componente que impede o estado in_sync do grupo de opções e remova-o do banco de dados.
-ou-
Se o grupo de opções estiver no estado in_sync, verifique se a opção S3_INTEGRATION foi incluída no grupo de opções. Se a opção S3_INTEGRATION não estiver incluída no grupo de opções, adicione a opção de integração do S3.
Observação: se você receber a mensagem de erro "ORA-00904: "RDSADMIN"."RDSADMIN_S3_TASKS"."UPLOAD_TO_S3": invalid identifier";" certifique-se de adicionar a opção S3_INTEGRATION à sua instância de banco de dados.
O tempo de inatividade não ocorre quando você adiciona a opção S3_INTEGRATION. Se você planeja usar a opção Aplicar imediatamente, certifique-se de que não haja ações de manutenção pendentes. Se houver ações de manutenção pendentes, essas ações serão aplicadas à integração do S3. Para obter mais informações, consulte Manutenção de uma instância de banco de dados.
Faça upload e download de arquivos
Não é possível acessar os arquivos do Amazon S3 diretamente na instância do banco de dados. Para acessar esses arquivos, você deve copiá-los para um diretório no host do Amazon RDS. Para fazer upload ou download dos arquivos da instância de banco de dados para um bucket do S3, siga as seguintes etapas:
- Use o comando expdp, a API dbms_datapump em DATA_DUMP_DIR ou o diretório personalizado para criar os arquivos de exportação para o Amazon S3.
- Use o procedimento rdsadmin.rdsadmin_s3_tasks.upload_to_s3 para fazer upload de arquivos para o S3.
- Use o procedimento rdsadmin. rdsadmin_s3_tasks.download_from_s3 para fazer download de arquivos do bucket do S3 para a pasta DATA_PUMP_DIR ou um diretório criado pelo usuário.
Ao executar o procedimento de upload ou download do pacote rdsadmin, visualize os logs e monitore o status da transferência do arquivo. Para visualizar esses logs, conclua as seguintes etapas:
-
Abra o console do Amazon RDS.
-
No painel de navegação, clique em Bancos de dados.
-
Selecione a instância de banco de dados que você deseja visualizar.
-
Clique na guia Logs e eventos.
-
Na seção Logs, insira o ID da tarefa do procedimento no filtro de pesquisa.
-
Selecione o arquivo retornado.
-
Clique em Assistir para ver os logs ou em Download para baixar os logs.
-
Você também pode executar a declaração a seguir para ler o arquivo de log gerado durante o processo de upload ou download:
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-task-id.log'));Observação: substitua task-id pelo ID da tarefa que o procedimento retorna.
Informações relacionadas
- Idioma
- Português
Vídeos relacionados


Conteúdo relevante
- feita há um ano