Como faço para solucionar problemas ao integrar o Amazon RDS para Oracle com o Amazon S3?
Quero solucionar problemas e erros ao integrar o Amazon Relational Database Service (Amazon RDS) para Oracle com o Amazon Simple Storage Service (Amazon S3).
Breve descrição
Ao transferir arquivos entre uma instância de banco de dados Amazon RDS para Oracle e um bucket do Amazon S3, verifique as seguintes condições:
- A instância de banco de dados e o bucket do S3 estão na mesma região da AWS.
- A instância de 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.
- O upload de arquivos está partindo somente do objeto de diretório Oracle. Esse diretório pode ser criado pelo usuário ou um diretório DATA_PUMP_DIR.
- Em caso de diretório criado pelo usuário, o usuário que está realizando o upload e o download deve ter os privilégios de leitura e gravação necessários. Para obter mais informações, consulte Como faço para gerenciar privilégios e funções de usuário na minha instância de banco de dados Amazon RDS for Oracle?
- Se você estiver copiando dados em subdiretórios, especifique o nome do subdiretório ao usar os pacotes rdsadmin. Não é possível usar a opção S3_INTEGRATION para copiar subdiretórios.
Resolução
Certifique-se de que a instância de banco de dados tenha o acesso necessário ao bucket do S3
Verifique se sua instância de banco de dados tem uma função do AWS Identity and Access Management (IAM) com o mínimo de privilégios para fazer upload e download do S3:
- Abra o console do Amazon RDS.
- No painel de navegação, escolha Bancos de dados.
- Escolha a instância de banco de dados que você deseja verificar.
- Escolha a guia Conectividade e segurança.
- Role para baixo até a seção Gerenciar perfis do IAM para verificar se você tem um perfil do IAM ativo com os seguintes privilégios:
S3:ListBucket
S3:PutObject
S3:GetObject
Você também pode usar o comando describe-db-instances da AWS Command Line Interface (AWS CLI) para verificar se sua instância de banco de dados tem um perfil do IAM com esses privilégios mínimos:
aws rds describe-db-instances \ --db-instance-identifier example-db-instance \ --query 'DBInstances[*].[AssociatedRoles[*]]'
Observação: se você receber erros ao executar comandos da AWS CLI, certifique-se de estar usando a versão mais recente da AWS CLI.
Depois de verificar se o perfil do IAM existe, faça o seguinte, com base na sua descoberta:
- Se o perfil do IAM existir, mas não tiver esses privilégios mínimos, modifique-o para incluir essas permissões.
- Se você não tiver um perfil do IAM com as permissões necessárias, crie uma política do IAM. Conceda a essa política permissões para transferir os arquivos do bucket do S3 para o Amazon RDS. Ao criar a política do IAM, certifique-se de adicionar permissões de bucket aos buckets e permissões de objeto aos objetos.
Se você ainda tiver problemas com as permissões do bucket, modifique o perfil do IAM para conceder 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: isso modifica o perfil do IAM para conceder acesso total somente para o fim de testar se o problema resulta dos privilégios do IAM. Depois de resolver o problema, ajuste os privilégios personalizados conforme necessário.
Para fazer upload de arquivos para uma pasta específica no 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/*" ] } ] }
Certifique-se de que a instância de banco de dados esteja associada a um grupo de opções que inclua a opção S3_INTEGRATION
Verifique se você tem um grupo de opções anexado à sua instância de banco de dados do RDS:
- Abra o console do Amazon RDS.
- No painel de navegação, escolha Bancos de dados.
- Escolha a instância de banco de dados que você deseja verificar.
- Escolha a guia Configuração.
- Observe o parâmetro de Grupos de opções.
Se esse grupo de opções não estiver no estado in_sync e você estiver adicionando a opção S3_INTEGRATION, a opção não será adicionada com êxito. Portanto, certifique-se de que o grupo de opções esteja no estado in_sync.
Para verificar se esse grupo de opções está no estado in_sync, execute o seguinte comando da AWS CLI:
aws rds describe-db-instances \ --db-instance-identifier example-db-instance \ --query 'DBInstances[*].[OptionGroupMemberships[*]]'
Se o grupo de opções não estiver no estado in_sync, escolha a guia Registros e eventos do seu banco de dados e, em seguida, role para baixo até 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.
Se o grupo de opções estiver em no estado in_sync, verifique se a opção S3_INTEGRATION foi incluída no grupo de opções. Para obter mais informações, consulte Listar as opções e configurações de opções de um grupo de opções. Se a opção S3_INTEGRATION não estiver incluída no grupo de opções, adicione-a. Para obter mais informações, consulte Adicionar a opção de integração do Amazon S3.
Observação: se a opção S3_INTEGRATION não for adicionada à sua instância de banco de dados, você receberá o erro ORA-00904: "RDSADMIN"."RDSADMIN_S3_TASKS"."UPLOAD_TO_S3": invalid identifier". Esse erro indica que os procedimentos necessários para upload e download não foram criados na instância de banco de dados.
Adicionar a opção S3_INTEGRATION ao Amazon RDS não resulta em inatividade do sistema. Se você quiser usar a opção Aplicar imediatamente, certifique-se de que não haja ações de manutenção pendentes. Se houver alguma ação pendente, ela entrará em vigor com a integração do Amazon S3. Para obter mais informações, consulte Manter uma instância de banco de dados.
Verifique se você está fazendo upload/download de arquivos somente do objeto de diretório Oracle criado pelo usuário ou do diretório DATA_PUMP_DIR
Não é possível acessar os arquivos do S3 diretamente na instância do banco de dados. Para acessar esses arquivos, você deve copiá-los para um diretório do host RDS. Para fazer upload ou download dos arquivos da instância de banco de dados para um bucket do S3, siga as seguintes etapas:
- Para copiar os arquivos de exportação no Amazon RDS para o S3, primeiro crie os arquivos de despejo. Para fazer isso, use o comando expdp ou a API dbms_datapump no diretório DATA_DUMP_DIR ou no diretório personalizado. Em seguida, use o procedimento rdsadmin.rdsadmin_s3_tasks.upload_to_s3 para carregar arquivos para o S3. Para obter informações sobre os parâmetros desse procedimento e exemplos de consultas para upload de arquivos, consulte Fazer upload de arquivos de uma instância de banco de dados Oracle para um bucket do Amazon S3.
- Use o procedimento rdsadmin. rdsadmin_s3_tasks.download_from_s3 para fazer download dos arquivos do bucket do S3 para a pasta DATA_PUMP_DIR ou qualquer diretório criado pelo usuário. Para obter informações sobre os parâmetros desse procedimento e ver exemplos de consultas para o download de arquivos, consulte Fazer download de arquivos de um bucket do Amazon S3 para uma instância de banco de dados Oracle.
Para monitorar o status da transferência de arquivos, visualize o registro gerado quando você executa o procedimento para fazer upload ou download dos pacotes rdsadmin:
- Abra o console do Amazon RDS.
- No painel de navegação, escolha Bancos de dados.
- Escolha a instância de banco de dados cujos registros você deseja visualizar.
- Escolha a guia Logs e eventos.
- Na seção Logs, insira a ID da tarefa retornada pelo procedimento no filtro de pesquisa.
- Selecione o arquivo retornado.
- Escolha Visualizar para ver os logs.
-ou-
Escolha Fazer download para baixar os logs.
Você também pode executar o comando 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 retornada pelo procedimento.
Informações relacionadas
Conteúdo relevante
- feita há 22 diaslg...
- Resposta aceitafeita há 6 diaslg...
- feita há 8 diaslg...
- feita há 8 diaslg...
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 7 meses
- AWS OFICIALAtualizada há 3 anos