

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Integrazione Amazon S3
<a name="oracle-s3-integration"></a>

Puoi trasferire i file tra un'istanza database Amazon RDS per Oracle e un bucket Amazon S3. Puoi utilizzare l'integrazione Amazon S3 con le funzionalità Oracle Database, ad esempio Oracle Data Pump. Ad esempio, è possibile scaricare i file di Data Pump da Amazon S3 sull'istanza database RDS per Oracle. Per ulteriori informazioni, consulta [Importazione di dati in Oracle in Amazon RDS](Oracle.Procedural.Importing.md).

**Nota**  
L'istanza database e il bucket Amazon S3 devono trovarsi nella stessa Regione AWS.

**Topics**
+ [Configurazione delle autorizzazioni IAM per l'integrazione di RDS per Oracle con Amazon S3](oracle-s3-integration.preparing.md)
+ [Aggiunta dell'opzione di integrazione Amazon S3](oracle-s3-integration.preparing.option-group.md)
+ [Trasferimento dei file tra Amazon RDS for Oracle e un bucket Amazon S3](oracle-s3-integration.using.md)
+ [Risoluzione dei problemi di integrazione Amazon S3](#oracle-s3-integration.troubleshooting)
+ [Rimozione dell'opzione di integrazione Amazon S3](oracle-s3-integration.removing.md)

# Configurazione delle autorizzazioni IAM per l'integrazione di RDS per Oracle con Amazon S3
<a name="oracle-s3-integration.preparing"></a>

Affinché RDS per Oracle si integri con Amazon S3, l'istanza database avere accesso a un bucket Amazon S3. Il Amazon VPC utilizzato dall'istanza database non deve fornire accesso agli endpoint Amazon S3.

RDS per Oracle supporta il trasferimento di file tra un’istanza database in un account e un bucket Amazon S3 in un account diverso. Se sono necessari ulteriori passaggi, vengono annotati nelle sezioni seguenti.

**Topics**
+ [Fase 3: creazione di una policy IAM per il ruolo di Amazon RDS](#oracle-s3-integration.preparing.policy)
+ [Fase 2: (facoltativo) creazione di una policy IAM per il bucket Amazon S3](#oracle-s3-integration.preparing.policy-bucket)
+ [Fase 3: creazione di un ruolo IAM per l'istanza database e collegamento della policy](#oracle-s3-integration.preparing.role)
+ [Fase 4: associazione del ruolo IAM all'istanza database RDS per Oracle](#oracle-s3-integration.preparing.instance)

## Fase 3: creazione di una policy IAM per il ruolo di Amazon RDS
<a name="oracle-s3-integration.preparing.policy"></a>

In questo passaggio, crei una policy AWS Identity and Access Management (IAM) con le autorizzazioni necessarie per trasferire file tra il bucket Amazon S3 e l'istanza DB RDS. Questo passaggio presuppone che tu abbia già creato un bucket S3.

Prima di creare la policy, prendi nota delle seguenti informazioni:
+ L'Amazon Resource Name (ARN) del bucket
+ L'ARN per la tua AWS KMS chiave, se il bucket utilizza la crittografia SSE-KMS o SSE-S3
**Nota**  
Un'istanza database RDS per Oracle non può accedere ai bucket Amazon S3 crittografati con SSE-C.

Per ulteriori informazioni, consulta [Protezione dei dati con la crittografia lato server](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) nella *Guida per l'utente di Amazon Simple Storage Service*.

### Console
<a name="oracle-s3-integration.preparing.policy.console"></a>

**Per creare una policy IAM per consentire ad Amazon RDS l'accesso a un bucket Amazon S3**

1. Aprire la [console di gestione IAM](https://console.aws.amazon.com/iam/home?#home).

1. In **Gestione accessi** scegli **Policy**.

1. Scegli **Crea policy**.

1. Nella scheda **Visual editor (Editor visivo)** selezionare **Choose a service (Scegli un servizio)** e quindi **S3**.

1. Per **Operazioni**, seleziona **Espandi tutto**, quindi sceglie le autorizzazioni del bucket e dell’oggetto necessarie per trasferire i file da un bucket Amazon S3 a Amazon RDS. Ad esempio, completa le seguenti operazioni:
   + **Espandi** Elenco, **ListBucket**quindi seleziona.
   + Espandi **Leggi**, quindi seleziona **GetObject**.
   + Espandi **Scrittura**, quindi seleziona **PutObject**DeleteObject****, **AbortMultipartUpload**, e **ListMultipartUploadParts**. Le autorizzazioni per il caricamento in più parti sono necessarie per caricare file di grandi dimensioni (100 MB o più) su Amazon S3.
   + Espandi **Gestione delle autorizzazioni**, quindi seleziona **PutObjectAcl**. Questa autorizzazione è necessaria se si prevede di caricare file in un bucket di proprietà di un account diverso e questo account ha bisogno del pieno controllo del contenuto del bucket.

   Le *autorizzazioni oggetto* sono autorizzazioni per operazioni sugli oggetti in Amazon S3. Devi concedere queste autorizzazioni agli oggetti presenti nel bucket e non al bucket stesso. Per ulteriori informazioni, consulta la pagina [Autorizzazioni per le operazioni sugli oggetti](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-objects).

1. Scegli **Aggiungi regola**, quindi effettua le seguenti operazioni:

   1. Scegli **Specifiche**.

   1. In **Bucket**, scegli **Aggiungi ARN**. Inserisci l'ARN del bucket. Il nome del bucket viene inserito automaticamente. Quindi scegliere **Add (Aggiungi)**.

   1. Se viene visualizzata la risorsa **oggetto**, scegli **Aggiungi ARN** per aggiungere risorse manualmente o scegli **Qualsiasi**.
**Nota**  
È possibile impostare **Amazon Resource Name (ARN)** su un valore dell'ARN più specifico in modo da consentire ad Amazon RDS di accedere solo a specifici file o cartelle presenti in un bucket Amazon S3. Per ulteriori informazioni su come definire una policy di accesso per Amazon S3, consulta [Gestione delle autorizzazioni di accesso alle risorse Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).

1. (Facoltativo) Scegli **Aggiungi autorizzazioni aggiuntive** per aggiungere risorse alla policy. Ad esempio, completa le seguenti operazioni:

   1. Se il bucket è crittografato con una chiave KMS personalizzata, seleziona **KMS** per il servizio. 

   1. In **Operazioni manuali**, seleziona quanto segue:
      + **Encrypt**
      + **ReEncrypt da** **e per ReEncrypt **
      + **Decrypt**
      + **DescribeKey**
      + **GenerateDataKey**

   1. In **Risorse**, scegli **Specifiche**.

   1. In **Chiave**, scegli **Aggiungi ARN**. Specifica l'ARN della chiave personalizzata come risorsa, quindi scegli **Aggiungi**.

      Per ulteriori informazioni, consulta [Protezione dei dati utilizzando la crittografia lato server con chiavi KMS archiviate in AWS Key Management Service (SSE-KMS) nella Guida per l'utente di Amazon Simple](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html) *Storage Service*.

   1. Se desideri che Amazon RDS acceda per accedere ad altri bucket, aggiungi ARNs i relativi bucket. Facoltativamente, è anche possibile concedere l'accesso a tutti i bucket e gli oggetti in Amazon S3.

1. Scegliere **Next: Tags (Successivo: Tag)** e **Next: Review (Successivo: Verifica)**.

1. Per **Name (Nome)**, immettere un nome per la policy IAM, ad esempio `rds-s3-integration-policy`. Questo nome viene utilizzato quando si crea un ruolo IAM e lo si associa all'istanza database. È anche possibile aggiungere un valore **Description (Descrizione)** facoltativo.

1. Seleziona **Create Policy** (Crea policy).

### AWS CLI
<a name="oracle-s3-integration.preparing.policy.CLI"></a>

Crea una policy AWS Identity and Access Management (IAM) che conceda ad Amazon RDS l'accesso a un bucket Amazon S3. Dopo aver creato la policy, prendere nota del relativo ARN. L'ARN servirà in una fase successiva.

Includi le azioni appropriate nella policy in base al tipo di accesso richiesto:
+ `GetObject` – È necessario trasferire i file da un bucket Amazon S3 a Amazon RDS.
+ `ListBucket` – È necessario trasferire i file da un bucket Amazon S3 a Amazon RDS.
+ `PutObject` – È necessario trasferire i file da un bucket Amazon RDS a un bucket Amazon S3.
+ `AbortMultipartUpload`: è necessario per i caricamenti in più parti durante il trasferimento di file di grandi dimensioni (100 MB o più) da Amazon RDS a un bucket Amazon S3.
+ `ListMultipartUploadParts`: è necessario per i caricamenti in più parti durante il trasferimento di file di grandi dimensioni (100 MB o più) da Amazon RDS a un bucket Amazon S3.

Il AWS CLI comando seguente crea una policy IAM denominata `rds-s3-integration-policy` con queste opzioni. Concede l'accesso a un bucket denominato `amzn-s3-demo-bucket`.

**Example**  
Per 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",
           "s3:AbortMultipartUpload",
           "s3:ListMultipartUploadParts"
         ],
         "Effect": "Allow",
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket", 
           "arn:aws:s3:::amzn-s3-demo-bucket/*"
         ]
       }
     ]
   }'
```
Nell'esempio seguente sono incluse le autorizzazioni per le chiavi KMS personalizzate.  

```
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:::amzn-s3-demo-bucket", 
           "arn:aws:s3:::amzn-s3-demo-bucket/*",
           "arn:aws:kms:::your-kms-arn"
         ]
       }
     ]
   }'
```
Per 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",
           "s3:AbortMultipartUpload",
           "s3:ListMultipartUploadParts"
         ],
         "Effect": "Allow",
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket", 
           "arn:aws:s3:::amzn-s3-demo-bucket/*"
         ]
       }
     ]
   }'
```
Nell'esempio seguente sono incluse le autorizzazioni per le chiavi KMS personalizzate.  

```
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:::amzn-s3-demo-bucket", 
           "arn:aws:s3:::amzn-s3-demo-bucket/*",
           "arn:aws:kms:::your-kms-arn"
         ]
       }
     ]
   }'
```

## Fase 2: (facoltativo) creazione di una policy IAM per il bucket Amazon S3
<a name="oracle-s3-integration.preparing.policy-bucket"></a>

Questo passaggio è necessario solo nelle seguenti condizioni:
+ Prevedi di caricare i file su un bucket Amazon S3 da un account (account A) e di accedervi da un altro account (account B).
+ L'account B possiede il bucket.
+ L'account B necessita del pieno controllo degli oggetti caricati nel bucket.

Se le condizioni precedenti non si applicano al tuo scenario, passa a [Fase 3: creazione di un ruolo IAM per l'istanza database e collegamento della policy](#oracle-s3-integration.preparing.role).

Per creare la policy per il bucket, assicurati di disporre di quanto segue:
+ L'ID account dell'account A.
+ Il nome utente dell'account A
+ Il valore ARN per il bucket Amazon S3 nell'account B

### Console
<a name="oracle-s3-integration.preparing.policy-bucket.console"></a>

**Per creare o modificare una policy del bucket**

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nell'elenco **Buckets (Bucket)** scegliere il nome del bucket per il quale si desidera creare o modificare una policy di bucket.

1. Seleziona **Autorizzazioni**.

1. In **Policy del bucket**, scegli **Modifica**. Verrà visualizzata la pagina Modifica policy del bucket.

1. Nella pagina **Edit bucket policy (Modifica policy del bucket) **vai negli **Esempi di policy** della *Guida per l'utente di Amazon S3* e scegli **Policy generator (Generatore di policy)** per generare automaticamente una policy o modificare il JSON nella sezione **Policy**. 

   Se scegli **Policy generator**, il AWS Policy Generator si apre in una nuova finestra:

   1. Nella pagina **Generatore di policy di AWS**, all'opzione **Seleziona tipo di Policy**, scegli **Policy del bucket S3**.

   1. Aggiungi un'istruzione inserendo le informazioni nei campi forniti, quindi scegli **Aggiungi istruzione**. Ripetere per tutte le istruzioni che si desidera aggiungere. Per ulteriori informazioni su questi campi, consulta [Riferimento agli elementi delle policy IAM JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) nella *Guida per l'utente IAM*. 
**Nota**  
Per comodità, la pagina **Modifica policy del bucket** mostra l'**ARN (Amazon Resource Name) del bucket** corrente sopra il campo di testo della **Policy**. Puoi copiare questo ARN per utilizzarlo nelle istruzioni alla pagina **Generatore di policy di AWS**. 

   1. Dopo aver aggiunto le istruzioni, scegli **Genera policy**.

   1. Copia il testo della policy generata, scegli **Chiudi** e torna alla pagina **Modifica policy del bucket** nella console di Amazon S3.

1. Nella casella **Policy**, modificare la policy esistente o incollare la policy del bucket dal generatore di policy. Assicurati di risolvere gli avvisi di sicurezza, gli errori, gli avvisi generali e i suggerimenti prima di salvare la policy.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "ExamplePermissions",
         "Effect": "Allow",
         "Principal": {
           "AWS": "arn:aws:iam::123456789012:user/account-A-user"
         },
         "Action": [
           "s3:PutObject",
           "s3:PutObjectAcl"
         ],
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-destination-bucket",
           "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
         ]
       }
     ]
   }
   ```

------

1. Scegli **Salva le modifiche**, che ti riporterà alla pagina Autorizzazioni bucket.

## Fase 3: creazione di un ruolo IAM per l'istanza database e collegamento della policy
<a name="oracle-s3-integration.preparing.role"></a>

Questo passaggio presuppone che tu abbia creato la policy IAM in [Fase 3: creazione di una policy IAM per il ruolo di Amazon RDS](#oracle-s3-integration.preparing.policy). In questo passaggio, si crea un ruolo per l'istanza database RDS per Oracle e quindi si collega la policy al ruolo.

### Console
<a name="oracle-s3-integration.preparing.role.console"></a>

**Per creare un ruolo IAM per consentire ad Amazon RDS l'accesso a un bucket Amazon S3**

1. Aprire la [console di gestione IAM](https://console.aws.amazon.com/iam/home?#home).

1. Nel pannello di navigazione, seleziona **Roles** (Ruoli).

1. Selezionare **Create role (Crea ruolo)**.

1. Scegli un servizio in **Servizio AWS**.

1. Per i **casi d'uso per altri AWS servizi:**, scegli **RDS** e poi **RDS — Aggiungi ruolo al database**. Quindi scegli **Successivo**.

1. In **Cerca**, in **Policy di autorizzazione**, inserisci il nome della policy IAM creata in [Fase 3: creazione di una policy IAM per il ruolo di Amazon RDS](#oracle-s3-integration.preparing.policy) e seleziona la policy quando viene visualizzata nell'elenco. Quindi scegli **Successivo**.

1. In **Nome ruolo**, specifica un nome per il ruolo IAM, ad esempio `rds-s3-integration-role`. È anche possibile aggiungere un valore **Description (Descrizione)** facoltativo.

1. Scegli **Crea ruolo**.

### AWS CLI
<a name="integration.preparing.role.CLI"></a>

**Per creare un ruolo e collegarvi una policy**

1. Creare un ruolo IAM che Amazon RDS può assumere per conto dell'utente per accedere ai bucket Amazon S3.

   Si consiglia di utilizzare le chiavi di contesto delle condizioni globali [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) e [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) nelle relazioni di trust basate sulle risorse per limitare le autorizzazioni del servizio relative a una risorsa specifica. Questo è il modo più efficace per proteggersi dal [problema di deputy confused](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html).

   Puoi usare le chiavi di contesto delle condizioni globali e avere il valore `aws:SourceArn` che contiene l'ID dell'account. In questo caso, il valore `aws:SourceAccount` e l'account nel valore `aws:SourceArn` deve utilizzare lo stesso ID account quando viene utilizzato nella stessa istruzione.
   + Utilizzare `aws:SourceArn` se si desidera un accesso cross-service per una singola risorsa.
   + Utilizzare `aws:SourceAccount` se si desidera consentire l'associazione di qualsiasi risorsa in tale account all'uso cross-service.

   Nella relazione di trust, assicurati di utilizzare la chiave di contesto della condizione globale `aws:SourceArn` con l'Amazon Resource Name (ARN) completo delle risorse che accedono al ruolo.

   Il AWS CLI comando seguente crea il ruolo denominato `rds-s3-integration-role` per questo scopo.  
**Example**  

   Per 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"
                }
            }
          }
        ]
      }'
   ```

   Per 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"
                }
            }
          }
        ]
      }'
   ```

   Per ulteriori informazioni, consulta la pagina relativa alla [creazione di un ruolo per delegare le autorizzazioni a un utente IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) nella *Guida per l'utente IAM*.

1. Una volta creato il ruolo, annota l'ARN del ruolo. L'ARN servirà in una fase successiva.

1. Collega la policy creata al ruolo creato.

   Il AWS CLI comando seguente associa la policy al ruolo denominato`rds-s3-integration-role`.  
**Example**  

   Per Linux, macOS o Unix:

   ```
   aws iam attach-role-policy \
      --policy-arn your-policy-arn \
      --role-name rds-s3-integration-role
   ```

   Per Windows:

   ```
   aws iam attach-role-policy ^
      --policy-arn your-policy-arn ^
      --role-name rds-s3-integration-role
   ```

   Sostituire `your-policy-arn` con l'ARN della policy annotato nel passaggio precedente.

## Fase 4: associazione del ruolo IAM all'istanza database RDS per Oracle
<a name="oracle-s3-integration.preparing.instance"></a>

L'ultimo passaggio per configurare le autorizzazioni per l'integrazione di Amazon S3 prevede l'associazione del ruolo IAM all'istanza database. Si notino i requisiti seguenti:
+ Devi disporre dell'accesso a un ruolo a cui sono collegate le policy di autorizzazione di Amazon S3. 
+ È possibile associare un solo ruolo IAM alla volta all'istanza RDS per Oracle.
+ Lo stato dell'istanza database deve essere **Disponibile**.

### Console
<a name="oracle-s3-integration.preparing.instance.console"></a>

**Per associare il ruolo IAM all'istanza database RDS per Oracle**

1. Accedi a Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel pannello di navigazione seleziona **Database**.

1. Scegli il nome dell'istanza database RDS per Oracle per visualizzarne i dettagli.

1. Sulla scheda **Connettività e sicurezza**, scorri verso il basso fino alla sezione **Gestisci i ruoli IAM** in fondo alla pagina.

1. Per **Aggiungi i ruoli IAM a questa istanza**, scegli il ruolo creato in [Fase 3: creazione di un ruolo IAM per l'istanza database e collegamento della policy](#oracle-s3-integration.preparing.role).

1. Per **Feature (Caratteristica)**, selezionare **S3\$1INTEGRATION**.  
![\[Aggiungi ruolo S3_INTEGRATION\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/ora-s3-integration-role.png)

1. Scegliere **Add role (Aggiungi ruolo)**.

### AWS CLI
<a name="oracle-s3-integration.preparing.instance.CLI"></a>

Il AWS CLI comando seguente aggiunge il ruolo a un'istanza Oracle DB denominata`mydbinstance`.

**Example**  
Per Linux, macOS o Unix:  

```
aws rds add-role-to-db-instance \
   --db-instance-identifier mydbinstance \
   --feature-name S3_INTEGRATION \
   --role-arn your-role-arn
```
Per Windows:  

```
aws rds add-role-to-db-instance ^
   --db-instance-identifier mydbinstance ^
   --feature-name S3_INTEGRATION ^
   --role-arn your-role-arn
```

Sostituire `your-role-arn` con il ruolo ARN annotato nel passaggio precedente. `S3_INTEGRATION` deve essere specificato per l'opzione `--feature-name`.

# Aggiunta dell'opzione di integrazione Amazon S3
<a name="oracle-s3-integration.preparing.option-group"></a>

Per utilizzare l'integrazione tra Amazon RDS per Oracle e Amazon S3, l'istanza database deve essere associata a un gruppo di opzioni che include l'opzione `S3_INTEGRATION`.

## Console
<a name="oracle-s3-integration.preparing.option-group.console"></a>

**Per configurare un gruppo di opzioni per l'integrazione Amazon S3**

1. Creare un nuovo gruppo di opzioni o identificare un gruppo opzioni esistente a cui è possibile aggiungere l'opzione `S3_INTEGRATION`.

   Per informazioni sulla creazione di un gruppo di opzioni, consulta [Creazione di un gruppo di opzioni](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create).

1. Aggiungere l'opzione `S3_INTEGRATION` al gruppo di opzioni.

   Per informazioni sull'aggiunta di un'opzione a un gruppo di opzioni, consulta [Aggiunta di un'opzione a un gruppo di opzioni](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption).

1. Crea una nuova istanza database RDS per Oracle e associarvi il gruppo opzioni oppure modificare un'istanza database RDS per Oracle per associare il gruppo opzioni a essa.

   Per informazioni sulla creazione di un'istanza database, consulta [Creazione di un'istanza database Amazon RDS](USER_CreateDBInstance.md).

   Per ulteriori informazioni sulla modifica di un'istanza database, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md).

## AWS CLI
<a name="oracle-s3-integration.preparing.option-group.cli"></a>

**Per configurare un gruppo di opzioni per l'integrazione Amazon S3**

1. Creare un nuovo gruppo di opzioni o identificare un gruppo opzioni esistente a cui è possibile aggiungere l'opzione `S3_INTEGRATION`.

   Per informazioni sulla creazione di un gruppo di opzioni, consulta [Creazione di un gruppo di opzioni](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create).

1. Aggiungere l'opzione `S3_INTEGRATION` al gruppo di opzioni.

   Ad esempio, il comando seguente AWS CLI aggiunge l'opzione `S3_INTEGRATION` a un gruppo opzioni denominato **myoptiongroup**.  
**Example**  

   Per Linux, macOS o Unix:

   ```
   aws rds add-option-to-option-group \
      --option-group-name myoptiongroup \
      --options OptionName=S3_INTEGRATION,OptionVersion=1.0
   ```

   Per Windows:

   ```
   aws rds add-option-to-option-group ^
      --option-group-name myoptiongroup ^
      --options OptionName=S3_INTEGRATION,OptionVersion=1.0
   ```

1. Crea una nuova istanza database RDS per Oracle e associarvi il gruppo opzioni oppure modificare un'istanza database RDS per Oracle per associare il gruppo opzioni a essa.

   Per informazioni sulla creazione di un'istanza database, consulta [Creazione di un'istanza database Amazon RDS](USER_CreateDBInstance.md).

   Per informazioni sulla modifica di un'istanza database RDS per Oracle, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md).

# Trasferimento dei file tra Amazon RDS for Oracle e un bucket Amazon S3
<a name="oracle-s3-integration.using"></a>

Puoi utilizzare il package Amazon RDS `rdsadmin_s3_tasks` per trasferire file tra un'istanza database RDS per Oracle e un bucket Amazon S3. È possibile comprimere i file con GZIP al momento del caricamento e decomprimerli al momento del download.

**Topics**
+ [Requisiti e limitazioni per i trasferimenti di file](#oracle-s3-integration.using.reqs)
+ [Caricamento di file da un'istanza database Oracle a un bucket Amazon S3](#oracle-s3-integration.using.upload)
+ [Download di file da un bucket Amazon S3 a un'istanza database Oracle](#oracle-s3-integration.using.download)
+ [Monitoraggio dello stato di un file transfer](#oracle-s3-integration.using.task-status)

## Requisiti e limitazioni per i trasferimenti di file
<a name="oracle-s3-integration.using.reqs"></a>

Prima di trasferire i file tra un’istanza database e un bucket Amazon S3, tieni presente quanto segue:
+ Il pacchetto `rdsadmin_s3_tasks` trasferisce i file presenti in una singola directory. Non puoi includere sottodirectory in un trasferimento.
+ La dimensione massima dell'oggetto in un bucket Amazon S3 è di 5 TB. 
+ Le attività create da `rdsadmin_s3_tasks` vengono eseguite in modo asincrono.
+ Puoi caricare i file dalla directory Data Pump, ad esempio `DATA_PUMP_DIR`, o da qualsiasi directory creata dall’utente. Non puoi caricare file da una directory utilizzata dai processi in background di Oracle, ad esempio le directory `adump`, `bdump` o `trace`.
+ Per `download_from_s3`, il limite di scaricamento è pari a 2000 file per ogni chiamata della procedura. Se devi scaricare più di 2000 file da Amazon S3, suddividi il processo di scaricamento in operazioni distinte contenenti non più di 2000 file per chiamata. 
+ Se esiste un file nella cartella di scaricamento e si tenta di scaricare un file con lo stesso nome, `download_from_s3` ignora lo scaricamento del file in questione. Per rimuovere un file dalla directory di download, utilizzare la PL/SQL procedura [UTL\$1FILE.FREMOVE](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/UTL_FILE.html#GUID-09B09C2A-2C21-4F70-BF04-D0EEA7B59CAF).

## Caricamento di file da un'istanza database Oracle a un bucket Amazon S3
<a name="oracle-s3-integration.using.upload"></a>

Per caricare i file da un'istanza database a un bucket Amazon S3, utilizza la procedura `rdsadmin.rdsadmin_s3_tasks.upload_to_s3`. Ad esempio, è possibile caricare i file di backup di Oracle Recovery Manager (RMAN) o i file di Oracle Data Pump. Per informazioni sull'utilizzo di oggetti, consulta [Guida per l'utente di Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingObjects.html). Per ulteriori informazioni sull'esecuzione dei backup RMAN, consulta [Esecuzione di attività RMAN comuni per le istanze database Oracle](Appendix.Oracle.CommonDBATasks.RMAN.md).

La procedura `rdsadmin.rdsadmin_s3_tasks.upload_to_s3` include i seguenti parametri.


****  

| Nome del parametro | Tipo di dati | Default | Campo obbligatorio | Description | 
| --- | --- | --- | --- | --- | 
|  `p_bucket_name`  |  VARCHAR2  |  –  |  obbligatorio  |  Il nome del bucket Amazon S3 in cui caricare i file.   | 
|  `p_directory_name`  |  VARCHAR2  |  –  |  obbligatorio  |  Il nome dell'oggetto directory Oracle da cui caricare i file. La directory può essere un qualsiasi oggetto directory creato dall'utente o directory Data Pump, come `DATA_PUMP_DIR`. Non puoi caricare file da una directory utilizzata dai processi in background, ad esempio `adump`, `bdump` o `trace`.  È possibile solo caricare i file dalla directory specificata. NOn è possibile caricare i file nelle sottodirectory nella directory specificata.   | 
|  `p_s3_prefix`  |  VARCHAR2  |  –  |  obbligatorio  |  Un prefisso del nome file Amazon S3 con cui vengono caricati i file. Un prefisso vuoto carica tutti i file al livello superiore nel bucket Amazon S3 specificato e non aggiunge un prefisso ai nomi file.  Ad esempio, se il prefisso è `folder_1/oradb`, i file vengono caricati su `folder_1`. In questo caso, il prefisso `oradb` viene aggiunto a ogni file.   | 
|  `p_prefix`  |  VARCHAR2  |  –  |  obbligatorio  |  Un prefisso nome file con cui i nomi file devono corrispondere per essere caricati. Un prefisso vuoto carica tutti i file nella directory specificata.   | 
|  `p_compression_level`  |  NUMBER  |  `0`   |  facoltativo  |  Il livello di compressione GZIP. I valori validi sono compresi tra `0` e `9`. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/oracle-s3-integration.using.html)  | 
|  `p_bucket_owner_full_control`  |  VARCHAR2  |  –  |  facoltativo  |  L'impostazione di controllo degli accessi per il bucket. Gli unici valori validi sono null o `FULL_CONTROL`. Questa impostazione è necessaria solo se si caricano file da un account (account A) in un bucket di proprietà di un account diverso (account B) e l'account B ha bisogno del pieno controllo dei file.  | 

Il valore restituito per la procedura `rdsadmin.rdsadmin_s3_tasks.upload_to_s3` è un ID attività.

L'esempio seguente carica tutti i file nella directory `DATA_PUMP_DIR` nel bucket Amazon S3 denominato *amzn-s3-demo-bucket*. I file non vengono compressi.

```
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3(
      p_bucket_name    =>  'amzn-s3-demo-bucket',
      p_prefix         =>  '', 
      p_s3_prefix      =>  '', 
      p_directory_name =>  'DATA_PUMP_DIR') 
   AS TASK_ID FROM DUAL;
```

L'esempio seguente carica tutti i file con prefisso `db` nella directory `DATA_PUMP_DIR` nel bucket Amazon S3 denominato `amzn-s3-demo-bucket`. Amazon RDS applica ai file il livello di compressione GZIP più alto.

```
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3(
      p_bucket_name       =>  'amzn-s3-demo-bucket', 
      p_prefix            =>  'db', 
      p_s3_prefix         =>  '', 
      p_directory_name    =>  'DATA_PUMP_DIR',
      p_compression_level =>  9) 
   AS TASK_ID FROM DUAL;
```

L'esempio seguente carica tutti i file nella directory `DATA_PUMP_DIR` nel bucket Amazon S3 denominato `amzn-s3-demo-bucket`. I file vengono caricati in una cartella `dbfiles`. In questo esempio, il livello di compressione GZIP è*1*, che è il livello di compressione più veloce.

```
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3(
      p_bucket_name       =>  'amzn-s3-demo-bucket', 
      p_prefix            =>  '', 
      p_s3_prefix         =>  'dbfiles/', 
      p_directory_name    =>  'DATA_PUMP_DIR',
      p_compression_level =>  1) 
   AS TASK_ID FROM DUAL;
```

L'esempio seguente carica tutti i file nella directory `DATA_PUMP_DIR` nel bucket Amazon S3 denominato `amzn-s3-demo-bucket`. I file vengono caricati in una cartella `dbfiles` e `ora` viene aggiunto all'inizio di ogni nome file. Non viene applicata alcuna compressione.

```
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3(
      p_bucket_name    =>  'amzn-s3-demo-bucket', 
      p_prefix         =>  '', 
      p_s3_prefix      =>  'dbfiles/ora', 
      p_directory_name =>  'DATA_PUMP_DIR') 
   AS TASK_ID FROM DUAL;
```

L'esempio seguente presuppone che il comando sia eseguito nell'account A, ma l'account B richiede il pieno controllo del contenuto del bucket. Il comando `rdsadmin_s3_tasks.upload_to_s3` trasferisce tutti i file nella directory `DATA_PUMP_DIR` al bucket denominato `s3bucketOwnedByAccountB`. Il controllo degli accessi è impostato su `FULL_CONTROL` in modo che l'account B possa accedere ai file nel bucket. Il livello di compressione GZIP è*6*, che bilancia velocità e dimensione del file.

```
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;
```

In ogni esempio, l'istruzione `SELECT` restituisce l'ID dell'attività in un tipo di dati `VARCHAR2`.

È possibile visualizzare il risultato visualizzando il file di output dell'attività.

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

Sostituire *`task-id`* con l'ID attività restituito dalla procedura.

**Nota**  
Le attività vengono eseguite in modo asincrono.

## Download di file da un bucket Amazon S3 a un'istanza database Oracle
<a name="oracle-s3-integration.using.download"></a>

Per scaricare i file da un bucket Amazon S3 a un'istanza database RDS per Oracle, utilizza la procedura Amazon RDS `rdsadmin.rdsadmin_s3_tasks.download_from_s3`. 

La procedura `download_from_s3` include i seguenti parametri.


****  

| Nome del parametro | Tipo di dati | Default | Campo obbligatorio | Description | 
| --- | --- | --- | --- | --- | 
|  `p_bucket_name`  |  VARCHAR2  |  –  |  Richiesto  |  Il nome del bucket Amazon S3 da cui scaricare i file.   | 
|  `p_directory_name`  |  VARCHAR2  |  –  |  Richiesto  |  Il nome dell'oggetto directory Oracle su cui scaricare i file. La directory può essere un qualsiasi oggetto directory creato dall'utente o directory Data Pump, come `DATA_PUMP_DIR`.   | 
|  `p_error_on_zero_downloads`  |  VARCHAR2  | FALSE |  Facoltativo  |  Un flag che determina se l'attività genera un errore quando nessun oggetto nel bucket Amazon S3 corrisponde al prefisso. Se questo parametro non è impostato o è impostato su FALSE (impostazione predefinita), l'attività stampa un messaggio che indica che non è stato trovato alcun oggetto, ma non genera un'eccezione o un errore. Se questo parametro è TRUE, l'attività genera un'eccezione e non riesce.  Esempi di specifiche dei prefissi che possono non riuscire nei test di corrispondenza sono gli spazi nei prefissi, come in `' import/test9.log'`, e le mancate corrispondenze tra maiuscole e minuscole, come in `test9.log` e `test9.LOG`.  | 
|  `p_s3_prefix`  |  VARCHAR2  |  –  |  Richiesto  |  Un prefisso nome file con cui i nomi file devono corrispondere per essere scaricati. Un prefisso vuoto scarica tutti i file di livello superiore nel bucket Amazon S3 specificato, ma non i file nelle cartelle nel bucket.  La procedura scarica gli oggetti Amazon S3 solo dalla cartella di primo livello che corrisponde al prefisso. Le strutture directory nidificate corrispondenti al prefisso specificato non vengono scaricate. Ad esempio, si supponga che un bucket Amazon S3 abbia la struttura della cartella `folder_1/folder_2/folder_3`. Specifica il prefisso `'folder_1/folder_2/'`. In questo caso, vengono scaricati solo i file in `folder_2`, non i file in `folder_1` o `folder_3`. Se, invece, viene specificato il prefisso `'folder_1/folder_2'`, tutti i file in `folder_1` che corrispondono al prefisso `'folder_2'` vengono scaricati, mentre i file in `folder_2` non vengono scaricati.  | 
|  `p_decompression_format`  |  VARCHAR2  |  –  |  Facoltativo  |  Il formato di decompressione. I valori validi sono `NONE` per non eseguire la decompressione e `GZIP` per eseguire la decompressione.  | 

Il valore restituito per la procedura `rdsadmin.rdsadmin_s3_tasks.download_from_s3` è un ID attività.

L'esempio seguente scarica tutti i file nel bucket Amazon S3 denominato `amzn-s3-demo-bucket` nella directory `DATA_PUMP_DIR`. I file non sono compressi, quindi non viene applicata alcuna decompressione.

```
SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
      p_bucket_name    =>  'amzn-s3-demo-bucket',
      p_directory_name =>  'DATA_PUMP_DIR') 
   AS TASK_ID FROM DUAL;
```

L'esempio seguente scarica tutti i file con prefisso `db` nel bucket Amazon S3 denominato `amzn-s3-demo-bucket` nella directory `DATA_PUMP_DIR`. I file non sono compressi, quindi non viene applicata alcuna decompressione. Il parametro `p_error_on_zero_downloads` attiva il controllo degli errori dei prefissi, quindi se il prefisso non corrisponde a nessun file nel bucket, l'attività genera un'eccezione e non riesce.

```
SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
      p_bucket_name               =>  'amzn-s3-demo-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;
```

L'esempio seguente scarica tutti i file nella cartella `myfolder/` nel bucket Amazon S3 denominato `amzn-s3-demo-bucket` nella directory `DATA_PUMP_DIR`. Utilizzare il parametro `p_s3_prefix` per specificare la cartella Amazon S3. I file caricati vengono compressi con GZIP, ma non vengono decompressi durante il download. 

```
SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
      p_bucket_name          =>  'amzn-s3-demo-bucket', 
      p_s3_prefix            =>  'myfolder/', 
      p_directory_name       =>  'DATA_PUMP_DIR',
      p_decompression_format =>  'NONE')
   AS TASK_ID FROM DUAL;
```

L'esempio seguente scarica il file `mydumpfile.dmp` nel bucket Amazon S3 denominato `amzn-s3-demo-bucket` nella directory `DATA_PUMP_DIR`. Non viene applicata alcuna decompressione.

```
SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
      p_bucket_name    =>  'amzn-s3-demo-bucket', 
      p_s3_prefix      =>  'mydumpfile.dmp', 
      p_directory_name =>  'DATA_PUMP_DIR') 
   AS TASK_ID FROM DUAL;
```

In ogni esempio, l'istruzione `SELECT` restituisce l'ID dell'attività in un tipo di dati `VARCHAR2`.

È possibile visualizzare il risultato visualizzando il file di output dell'attività.

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

Sostituire *`task-id`* con l'ID attività restituito dalla procedura.

**Nota**  
Le attività vengono eseguite in modo asincrono.  
Per rimuovere i file da una directory, è possibile utilizzare la procedura Oracle `UTL_FILE.FREMOVE`. Per ulteriori informazioni, consulta la sezione relativa alla [Procedura FREMOVE](https://docs.oracle.com/database/121/ARPLS/u_file.htm#ARPLS70924) nella documentazione di Oracle.

## Monitoraggio dello stato di un file transfer
<a name="oracle-s3-integration.using.task-status"></a>

Le attività di file transfer pubblicano gli eventi Amazon RDS al loro inizio e al completamento. Il messaggio dell'evento contiene l'ID dell'attività per il trasferimento file. Per informazioni sulla visualizzazione degli eventi, consultare [Visualizzazione di eventi Amazon RDS](USER_ListEvents.md).

È possibile visualizzare lo stato di un'attività in corso in un file bdump. I file bdump si trovano nella directory `/rdsdbdata/log/trace`. Il nome del file bdump ha il formato che segue.

```
dbtask-task-id.log
```

Sostituire `task-id` con l'ID dell'attività da monitorare.

**Nota**  
Le attività vengono eseguite in modo asincrono.

Puoi usare la procedura memorizzata in `rdsadmin.rds_file_util.read_text_file` per visualizzare i contenuti dei file bdump. Ad esempio, la query seguente restituisce i contenuti del file bdump `dbtask-1234567890123-1234.log`.

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-1234567890123-1234.log'));
```

L'esempio seguente mostra il file di log di un trasferimento non riuscito.

```
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 amzn-s3-demo-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 name amzn-s3-demo-bucket and key sample.dmp.
2023-04-17 18:21:34.189 UTC [INFO ] The task failed.
```

## Risoluzione dei problemi di integrazione Amazon S3
<a name="oracle-s3-integration.troubleshooting"></a>

Per suggerimenti sulla risoluzione dei problemi, consulta l'articolo nella pagina AWS re:post intitolato [Come posso risolvere i problemi relativi all'integrazione di Amazon RDS per Oracle con Amazon S3?](https://repost.aws/en/knowledge-center/rds-oracle-s3-integration).

# Rimozione dell'opzione di integrazione Amazon S3
<a name="oracle-s3-integration.removing"></a>

Puoi rimuovere l'opzione di integrazione Amazon S3 da un'istanza database. 

Per rimuovere l'opzione di integrazione Amazon S3 da un'istanza database, procedi in uno dei seguenti modi: 
+ Per rimuovere l'opzione di integrazione Amazon S3 da più istanze database, rimuovere l'opzione `S3_INTEGRATION` dal gruppo di opzioni a cui appartengono le istanze database. Questa modifica coinvolge tutte le istanze database che usano il gruppo di opzioni. Per ulteriori informazioni, consulta [Rimozione di un'opzione da un gruppo di opzioni](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption).

   
+ Per rimuovere l'opzione di integrazione Amazon S3 da una singola istanza database, modifica l'istanza database e specifica un gruppo di opzioni diverso che non comprenda l'opzione `S3_INTEGRATION`. È possibile specificare il gruppo di opzioni predefinito (vuoto) o un gruppo di opzioni personalizzato diverso. Per ulteriori informazioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md).