Salta al contenuto

Come posso risolvere i problemi di integrazione di Amazon RDS per Oracle con Amazon S3?

7 minuti di lettura
0

Desidero risolvere i problemi e gli errori che si verificano durante l'integrazione di Amazon Relational Database Service (Amazon RDS) per Oracle con Amazon Simple Storage Service (Amazon S3).

Breve descrizione

Prima di trasferire file tra un'istanza Amazon RDS per Oracle DB e un bucket Amazon S3, verifica nella configurazione le seguenti condizioni:

  • L'istanza database e il bucket S3 si trovano nella stessa Regione AWS.
  • L'istanza database ha l'accesso richiesto al bucket S3.
  • L'istanza database è associata a un gruppo di opzioni che include l'opzione S3_INTEGRATION.
  • Carichi file solo dall'oggetto directory di Oracle. Questa directory può essere una directory creata dall'utente o una directory DATA_PUMP_DIR.
  • Se utilizzi una directory creata dall'utente, l'utente che esegue il caricamento e il download deve avere le autorizzazioni richieste per la directory. Per ulteriori informazioni, consulta Importazione di dati in Oracle in Amazon RDS.
  • Se copi dati all'interno di sottodirectory, specifica il nome della sottodirectory in modo esplicito quando utilizzi i pacchetti rdsadmin. Non puoi copiare sottodirectory che utilizzano l'opzione S3_INTEGRATION.

Risoluzione

Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta la sezione Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Assicurati che l'istanza database disponga dell'accesso richiesto al bucket S3

Verifica se l'istanza database ha un ruolo AWS Identity and Access Management (AWS IAM) con le autorizzazioni minime per il caricamento e il download da S3. Completa i seguenti passaggi:

  1. Apri la console Amazon RDS.
  2. Nel pannello di navigazione, scegli Database.
  3. Seleziona l'istanza database che desideri controllare.
  4. Scegli la scheda Connettività e sicurezza.
  5. Scorri verso il basso fino alla sezione Gestisci ruoli IAM per verificare se disponi di un ruolo IAM attivo che include le seguenti autorizzazioni
    S3:ListBucket
    S3:PutObject
    S3:GetObject

Per verificare se l'istanza database ha un ruolo IAM con le autorizzazioni minime, esegui questo comando AWS CLI describe-db-instances:

aws rds describe-db-instances \--db-instance-identifier example-db-instance \--query 'DBInstances[*].[AssociatedRoles[*]]'

Dopo aver verificato se il ruolo IAM esiste, intraprendi una delle seguenti azioni:

  • Se il ruolo IAM esiste ma non ha le autorizzazioni minime, modificalo in modo da includerle.
  • Se non hai un ruolo IAM con le autorizzazioni richieste, crea prima una policy IAM con le autorizzazioni necessarie per trasferire i file. Quindi crea un ruolo per l'istanza database Amazon RDS per Oracle e collega la policy al ruolo. Infine, associa il ruolo IAM all'istanza database Amazon RDS per Oracle. Per ulteriori informazioni, consulta Requisiti e limitazioni di RDS Custom per Oracle. Quando crei la policy IAM, assicurati di aggiungere ai bucket le autorizzazioni a livello di bucket e agli oggetti le autorizzazioni a livello di oggetto.

Se il problema con le autorizzazioni del bucket persiste, modifica il ruolo IAM per concedere l'accesso completo al bucket S3:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "arn:aws:s3:::example-bucket/*",
        "arn:aws:s3:::example-bucket"
      ]
    }
  ]
}

Importante: il ruolo IAM viene modificato per concedere l'accesso completo solo per verificare se il problema è causato da una configurazione errata delle autorizzazioni IAM. Dopo aver risolto il problema, riporta le autorizzazioni personalizzate allo stato precedente.

Per caricare file in una cartella specifica in Amazon S3, utilizza il parametro p_s3_prefix nella procedura rdsadmin.rdsadmin_s3_tasks.upload_to_s3. Assicurati di avere le autorizzazioni necessarie prima di caricare i file.

Ad esempio, per caricare file nella cartella example-folder nel bucket S3 example-bucket, collega la seguente policy 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/*"
      ]
    }
  ]
}

Assicurati che l'istanza database sia associata a un gruppo di opzioni che include l'opzione S3_INTEGRATION

Per verificare se hai un gruppo di opzioni collegato all'istanza database RDS, completa i seguenti passaggi:

  1. Apri la console Amazon RDS.
  2. Nel pannello di navigazione, scegli Database.
  3. Scegli l'istanza database che desideri controllare.
  4. Scegli la scheda Configurazione.
  5. Prendi nota del parametro Gruppi di opzioni.

Se il gruppo di opzioni non è nello stato in-sync e tenti di aggiungere l'opzione S3_INTEGRATION, l'opzione non viene aggiunta. È consigliabile assicurarsi che il gruppo di opzioni sia nello stato in-sync.

Per verificare se il gruppo di opzioni è nello stato in-sync, esegui questo comando AWS CLI:

aws rds describe-db-instances \--db-instance-identifier example-db-instance \
--query 'DBInstances[*].[OptionGroupMemberships[*]]'

Se il gruppo di opzioni non è nello stato in-sync, scegli la scheda Log ed eventi per il database, quindi consulta la sezione Eventi recenti. Identifica il componente che impedisce la sincronizzazione del gruppo di opzioni e rimuovilo dal database.

Se il gruppo di opzioni è nello stato in-sync, verifica che l'opzione S3_INTEGRATION sia inclusa nel gruppo di opzioni. Per ulteriori informazioni, consulta Generazione di un elenco delle opzioni e delle impostazioni delle opzioni per un gruppo di opzioni. Se l'opzione S3_INTEGRATION non è inclusa nel gruppo di opzioni, aggiungila. Per ulteriori informazioni, consulta Aggiunta dell'opzione di integrazione Amazon S3.

Nota: se l'opzione S3_INTEGRATION non viene aggiunta all'istanza database, ricevi l'errore "ORA-00904: "RDSADMIN"."RDSADMIN_S3_TASKS"."UPLOAD_TO_S3": invalid identifier";". Questo errore mostra che le procedure richieste per il caricamento e il download non vengono create nell'istanza database.

Non si verificano tempi di inattività quando aggiungi l'opzione S3_INTEGRATION ad Amazon RDS. Se intendi utilizzare l'opzione Applica immediatamente, assicurati che non vi siano azioni di manutenzione in sospeso. Se sono presenti azioni di manutenzione in sospeso, tali azioni vengono applicate con l'integrazione S3. Per ulteriori informazioni, consulta Manutenzione di un'istanza database.

Assicurati di caricare e scaricare file solo dall'oggetto directory di Oracle creato dall'utente o dalla directory DATA_PUMP_DIR

Non puoi accedere ai file di Amazon S3 direttamente nell'istanza database. Per accedere a questi file, devi copiarli in una directory dell'host Amazon RDS. Per caricare e scaricare file dall'istanza database in un bucket S3, completa i seguenti passaggi:

  1. Utilizza il comando expdp, l'API dbms_datapump in DATA_DUMP_DIR o la directory personalizzata per copiare i file di esportazione da Amazon RDS ad Amazon S3. Assicurati di creare i file di dump.
  2. Utilizza la procedura rdsadmin.rdsadmin_s3_tasks.upload_to_s3 per caricare file in S3. Per ulteriori informazioni, consulta Caricamento di file da un'istanza database Oracle a un bucket Amazon S3.
  3. Utilizzare la procedura rdsadmin. rdsadmin_s3_tasks.download_from_s3 per scaricare i file dal bucket S3 nella cartella DATA_PUMP_DIR o in una directory creata dall'utente. Per ulteriori informazioni, consulta Download di file da un bucket Amazon S3 a un'istanza database Oracle.

Visualizza il log generato quando esegui la procedura di caricamento o download del pacchetto rdsadmin per monitorare lo stato del trasferimento dei file. Per visualizzare i log, completa i seguenti passaggi:

  1. Apri la console Amazon RDS.
  2. Nel pannello di navigazione, scegli Database.
  3. Scegli l'istanza database che desideri visualizzare.
  4. Scegli la scheda Log ed eventi.
  5. Nella sezione Log, inserisci l'ID dell'attività restituito dalla procedura nel filtro di ricerca.
  6. Seleziona il file restituito.
  7. Scegli Guarda per visualizzare i log.
    -oppure-
    Scegli Download per scaricarli.

Per leggere il file di log generato durante il processo di caricamento/download, esegui questo comando:

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

Nota: assicurati di sostituire task-id con l'ID dell'attività restituito dalla procedura.

Informazioni correlate

Integrazione Amazon S3

Perché la mia istanza database Amazon RDS per Oracle utilizza più spazio di archiviazione del previsto?