

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 di un'istanza database Amazon RDS for SQL Server con Amazon S3
<a name="User.SQLServer.Options.S3-integration"></a>

Puoi trasferire i file tra un'istanza database che esegue Amazon RDS for SQL Server e un bucket Amazon S3. In questo modo, puoi utilizzare Amazon S3 con le caratteristiche di SQL Server, come BULK INSERT. Ad esempio, puoi scaricare file .csv, .xml, .txt e altri da Amazon S3 nell'host dell'istanza database e importare i dati da `D:\S3\` nel database. Tutti i file vengono archiviati in `D:\S3\` nell'istanza database.

Si applicano le limitazioni seguenti:

**Nota**  
Il traffico tra l'host RDS e S3 viene instradato attraverso gli endpoint VPC in RDS interno VPCs per tutte le funzionalità di SQL Server che utilizzano S3. Questo traffico non utilizza l’ENI dell’endpoint dell’istanza RDS. Le policy di bucket S3 non possono limitare il traffico RDS in base alle condizioni di rete.
+ I file nella cartella `D:\S3` vengono eliminati nella replica di standby dopo un failover su istanze Multi-AZ. Per ulteriori informazioni, consulta [Limitazioni Multi-AZ per l'integrazione S3](#S3-MAZ).
+ L'istanza DB e il bucket S3 devono trovarsi nella stessa regione. AWS 
+ Se si eseguono più attività di integrazione S3 alla volta, le attività vengono eseguite in sequenza, non in parallelo.
**Nota**  
Le attività di integrazione S3 condividono la stessa coda delle attività di backup e ripristino native. In questa coda possono essere presenti al massimo due attività in esecuzione in qualsiasi momento. Di conseguenza, due attività di backup e ripristino native in esecuzione bloccheranno tutte le attività di integrazione S3.
+ Dovrai riabilitare la caratteristica di integrazione di S3 nelle istanze ripristinate. L'integrazione S3 non viene propagata dall'istanza di origine all'istanza ripristinata. I file in `D:\S3` in un'istanza ripristinata vengono eliminati.
+ Il download nell'istanza database è limitato a 100 file. In altre parole, non possono essere presenti più di 100 file in `D:\S3\`.
+ Per il download sono supportati solo i file senza estensioni di file o con le seguenti estensioni di file: .abf, .asdatabase, .bcp, .configsettings, .csv, .dat, .deploymentoptions, .deploymenttargets, .fmt, .info, .ispac, .lst, .tbl, .txt, .xml, e .xmla.
+ Il bucket S3 deve avere lo stesso proprietario del ruolo correlato AWS Identity and Access Management (IAM). Pertanto, l'integrazione tra account S3 non è supportata.
+ Il bucket S3 non può essere aperto al pubblico.
+ Le dimensioni dei file per i caricamenti da RDS a S3 sono limitate a 50 GB per file.
+ La dimensione dei file per i download da S3 a RDS è limitata al massimo supportato da S3.

**Topics**
+ [Prerequisiti per l'integrazione di RDS for SQL Server con S3](Appendix.SQLServer.Options.S3-integration.preparing.md)
+ [Abilitazione dell'integrazione di RDS for SQL Server con S3](Appendix.SQLServer.Options.S3-integration.enabling.md)
+ [Trasferimento di file tra RDS for SQL Server e Amazon S3](Appendix.SQLServer.Options.S3-integration.using.md)
+ [Visualizzazione di file nell'istanza database RDS](Appendix.SQLServer.Options.S3-integration.using.listing-files.md)
+ [Eliminazione di file nell'istanza database RDS](Appendix.SQLServer.Options.S3-integration.using.deleting-files.md)
+ [Monitoraggio dello stato di un'attività di trasferimento di file](Appendix.SQLServer.Options.S3-integration.using.monitortasks.md)
+ [Annullamento di un'attività](Appendix.SQLServer.Options.S3-integration.canceltasks.md)
+ [Limitazioni Multi-AZ per l'integrazione S3](#S3-MAZ)
+ [Disabilitazione dell'integrazione di RDS for SQL Server con S3](Appendix.SQLServer.Options.S3-integration.disabling.md)

Per ulteriori informazioni sull'utilizzo dei file in Amazon S3, consulta [Nozioni di base su Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3).

# Prerequisiti per l'integrazione di RDS for SQL Server con S3
<a name="Appendix.SQLServer.Options.S3-integration.preparing"></a>

Prima di iniziare, trova o crea il bucket S3 che desideri utilizzare. Quindi, aggiungi le autorizzazioni in modo che l'istanza database RDS possa accedere al bucket S3. Per configurare questo accesso, crea una policy e un ruolo IAM.

## Console
<a name="Appendix.SQLServer.Options.S3-integration.preparing.console"></a>

**Per creare una policy IAM per accedere ad Amazon S3**

1. Nel riquadro di navigazione della [console di gestione IAM](https://console.aws.amazon.com/iam/home?#home), scegliere **Policies (Policy)**.

1. Creare una nuova policy e usare la scheda **Visual editor (Editor visivo)** per le seguenti fasi.

1. Per **Service (Servizio)**, immettere **S3** e scegliere il servizio **S3**.

1. Per **Actions (Operazioni)**, scegliere le seguenti opzioni per concedere l'accesso richiesto dall'istanza database:
   + `ListAllMyBuckets`— richiesto
   + `ListBucket`— richiesto
   + `GetBucketAcl`— richiesto
   + `GetBucketLocation`— richiesto
   + `GetObject` – obbligatorio per il download dei file da S3 a `D:\S3\`
   + `PutObject` – obbligatorio per il caricamento dei file da `D:\S3\` a S3
   + `ListMultipartUploadParts` – obbligatorio per il caricamento dei file da `D:\S3\` a S3
   + `AbortMultipartUpload` – obbligatorio per il caricamento dei file da `D:\S3\` a S3

1. Per **Resources (Risorse)**, le opzioni visualizzate dipendono dalle operazioni scelte nella fase precedente. Potrebbero essere visualizzate le opzioni per **bucket**, **object (oggetto)** o entrambi. Per ognuna di queste opzioni, aggiungere l'Amazon Resource Name (ARN) appropriato.

   Per **bucket**, aggiungere l'ARN per il bucket che si desidera utilizzare. Ad esempio, se il bucket è denominato *amzn-s3-demo-bucket*, impostare l'ARN su `arn:aws:s3:::amzn-s3-demo-bucket`.

   Per **object (oggetto)**, immettere l'ARN per il bucket e scegliere una delle opzioni seguenti:
   + Per concedere l'accesso a tutti i file nel bucket specificato, selezionare **Any (Qualsiasi)** per **Bucket name (Nome bucket)** e **Object name (Nome oggetto)**.
   + Per concedere l'accesso a file o cartelle specifici nel bucket, fornisci ARNs i bucket e gli oggetti specifici a cui desideri che SQL Server acceda. 

1. Seguire le istruzioni indicate nella console fino al termine della creazione della policy.

   Le precedenti sono indicazioni generali per la creazione di una policy. Per istruzioni più dettagliate sulla creazione delle policy IAM, consultare [Creazione di policy IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) nella *Guida per l'utente di IAM.*

**Per creare un ruolo IAM che utilizza la policy IAM della procedura precedente**

1. Nel riquadro di navigazione della [console di gestione IAM](https://console.aws.amazon.com/iam/home?#home), scegliere **Roles (Ruoli)**.

1. Creare un nuovo ruolo IAM e scegliere le seguenti opzioni quando vengono visualizzate nella console:
   + **AWSservice**
   + **RDS**
   + **RDS – Add Role to Database (RDS – Aggiungi ruolo al database)**

   Scegliere **Next: Permissions (Successivo: Autorizzazioni)** nella parte inferiore dello schermo.

1. Per **Attach permissions policies (Collega policy di autorizzazioni)**, immettere il nome della policy IAM precedentemente creata. Scegliere quindi la policy dall'elenco.

1. Seguire le istruzioni indicate nella console fino al termine della creazione del ruolo.

   Le precedenti sono indicazioni generali per la configurazione di un ruolo. Per istruzioni più dettagliate sulla creazione dei ruoli, consultare [Ruoli IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) nella *Guida per l'utente di IAM.*

## AWS CLI
<a name="Appendix.SQLServer.Options.S3-integration.preparing.CLI"></a>

Per concedere ad Amazon RDS l'accesso a un bucket Amazon S3, utilizza la seguente procedura:

1. Creare una policy IAM che conceda ad Amazon RDS l'accesso a un bucket S3.

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

   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. Collegare la policy IAM al ruolo IAM creato.

**Per creare la policy IAM**

Includere le operazioni appropriate per garantire l'accesso richiesto dall'istanza database:
+ `ListAllMyBuckets`— obbligatorio
+ `ListBucket`— richiesto
+ `GetBucketAcl`— richiesto
+ `GetBucketLocation`— richiesto
+ `GetObject` – obbligatorio per il download dei file da S3 a `D:\S3\`
+ `PutObject` – obbligatorio per il caricamento dei file da `D:\S3\` a S3
+ `ListMultipartUploadParts` – obbligatorio per il caricamento dei file da `D:\S3\` a S3
+ `AbortMultipartUpload` – obbligatorio per il caricamento dei file da `D:\S3\` a S3

1. 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": [
   	            {
   	                "Effect": "Allow",
   	                "Action": "s3:ListAllMyBuckets",
   	                "Resource": "*"
   	            },
   	            {
   	                "Effect": "Allow",
   	                "Action": [
   	                    "s3:ListBucket",
   	                    "s3:GetBucketAcl",
   	                    "s3:GetBucketLocation"
   	                ],
   	                "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
   	            },
   	            {
   	                "Effect": "Allow",
   	                "Action": [
   	                    "s3:GetObject",
   	                    "s3:PutObject",
   	                    "s3:ListMultipartUploadParts",
   	                    "s3:AbortMultipartUpload"
   	                ],
   	                "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/key_prefix/*"
   	            }
   	        ]
   	    }'
   ```

   Per Windows:

   Assicurarsi di cambiare i caratteri di fine riga con quelli supportati dall'interfaccia in uso (`^` al posto di `\`). Inoltre, in Windows, è necessario applicare a tutte le doppie virgolette il carattere di escape `\`. Per evitare l'uso del carattere di escape per le virgolette in JSON, è possibile salvarlo in un file e passarlo come parametro. 

   Per prima cosa creare il file `policy.json` con la seguente policy di autorizzazione:

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "s3:ListAllMyBuckets",
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetBucketACL",
                   "s3:GetBucketLocation"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:PutObject",
                   "s3:ListMultipartUploadParts",
                   "s3:AbortMultipartUpload"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/key_prefix/*"
           }
       ]
   }
   ```

------

   Usare il comando seguente per creare la policy:

   ```
   aws iam create-policy ^
        --policy-name rds-s3-integration-policy ^
        --policy-document file://file_path/assume_role_policy.json
   ```

1. Dopo aver creato la policy, annotarne l'Amazon Resource Name (ARN). L'ARN sarà necessario in una fase successiva.

**Per creare il ruolo IAM**
+ Il AWS CLI comando seguente crea il ruolo `rds-s3-integration-role` IAM 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"
  	       }
  	     ]
  	   }'
  ```

  Per Windows:

  Assicurarsi di cambiare i caratteri di fine riga con quelli supportati dall'interfaccia in uso (`^` al posto di `\`). Inoltre, in Windows, è necessario applicare a tutte le doppie virgolette il carattere di escape `\`. Per evitare l'uso del carattere di escape per le virgolette in JSON, è possibile salvarlo in un file e passarlo come parametro. 

  Per prima cosa creare il file `assume_role_policy.json` con la seguente policy:

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "Service": [
                      "rds.amazonaws.com"
                  ]
              },
              "Action": "sts:AssumeRole"
          }
      ]
  }
  ```

------

  Usare il comando seguente per creare il ruolo IAM:

  ```
  aws iam create-role ^
       --role-name rds-s3-integration-role ^
       --assume-role-policy-document file://file_path/assume_role_policy.json
  ```  
**Example di utilizzare la chiave del contesto delle condizioni globale per creare il ruolo IAM**  

  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 policy basate sulle risorse per limitare le autorizzazioni del servizio 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 della policy.
  + 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 policy, 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. Per l'integrazione con S3, assicurati di includere l'istanza DB ARNs, come mostrato nell'esempio seguente.

  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:SourceArn":"arn:aws:rds:Region:my_account_ID:db:db_instance_identifier"
                      }
                  }
  	       }
  	     ]
  	   }'
  ```

  Per Windows:

  Aggiungi la chiave di contesto delle condizioni globali a `assume_role_policy.json`.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "Service": [
                      "rds.amazonaws.com"
                  ]
              },
              "Action": "sts:AssumeRole",
              "Condition": {
                  "StringEquals": {
                      "aws:SourceArn":"arn:aws:rds:Region:my_account_ID:db:db_instance_identifier"
                  }
              }
          }
      ]
  }
  ```

------

**Per allegare la policy IAM al ruolo IAM**
+ Il AWS CLI comando seguente collega la policy al ruolo denominato. `rds-s3-integration-role` Sostituire `your-policy-arn` con l'ARN della policy annotato nel passaggio precedente.  
**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
  ```

# Abilitazione dell'integrazione di RDS for SQL Server con S3
<a name="Appendix.SQLServer.Options.S3-integration.enabling"></a>

Nella sezione seguente viene descritto come abilitare l'integrazione di Amazon S3 con Amazon RDS for SQL Server. Per utilizzare l'integrazione di S3, l'istanza database deve essere associata al ruolo IAM precedentemente creato prima di utilizzare il parametro feature-name `S3_INTEGRATION`.

**Nota**  
Per aggiungere un ruolo IAM a un'istanza database, lo stato dell'istanza database deve essere **available (disponibile)**.

## Console
<a name="Appendix.SQLServer.Options.S3-integration.enabling.console"></a>

**Per associare il ruolo IAM all'istanza database**

1. Accedi alla 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. Scegli il nome dell'istanza database RDS for SQL Server per visualizzarne i dettagli.

1. Nella sezione **Manage IAM roles (Gestisci ruoli IAM)** della scheda **Connectivity & security (Connettività e sicurezza)**, selezionare il ruolo da aggiungere per **Add IAM roles to this instance (Aggiungi ruoli IAM a questa istanza)**.

1. Per **Feature (Caratteristica)**, selezionare **S3\$1INTEGRATION**.  
![\[Aggiunta del 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="Appendix.SQLServer.Options.S3-integration.enabling.cli"></a>

**Per aggiungere il ruolo IAM all'istanza database RDS for SQL Server**
+ Il seguente comando di AWS CLI aggiunge il ruolo IAM a un'istanza database RDS for SQL Server 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`.

# Trasferimento di file tra RDS for SQL Server e Amazon S3
<a name="Appendix.SQLServer.Options.S3-integration.using"></a>

Puoi utilizzare le stored procedure Amazon RDS per scaricare e caricare file tra Amazon S3 e l'istanza database RDS. Puoi anche usare le stored procedure Amazon RDS per elencare ed eliminare i file nell'istanza RDS.

I file che scarichi e carichi su S3 sono archiviati nella cartella `D:\S3`. Questa è l'unica cartella che puoi usare per accedere ai file. Puoi organizzare i file in sottocartelle che vengono create automaticamente quando specifichi la cartella di destinazione al momento del download.

Alcune delle stored procedure richiedono la specifica di un Amazon Resource Name (ARN) al tuo file e al bucket S3. Il formato per l'ARN è `arn:aws:s3:::amzn-s3-demo-bucket/file_name`. Amazon S3 non richiede un numero di account o una AWS regione in. ARNs

Le attività di integrazione di S3 vengono eseguite in sequenza e condividono la stessa coda delle attività di backup e ripristino native. In questa coda possono essere presenti al massimo due attività in esecuzione in qualsiasi momento. Possono essere necessari fino a cinque minuti prima che l'attività inizi l'elaborazione.

## Download di file da un bucket Amazon S3 in un'istanza database SQL Server
<a name="Appendix.SQLServer.Options.S3-integration.using.download"></a>

Per scaricare file da un bucket S3 in un'istanza database RDS for SQL Server, usa la stored procedure Amazon RDS `msdb.dbo.rds_download_from_s3` con i seguenti parametri.


| Nome del parametro | Tipo di dati | Default | Campo obbligatorio | Descrizione | 
| --- | --- | --- | --- | --- | 
|  `@s3_arn_of_file`  |  NVARCHAR  |  –  |  Campo obbligatorio  |  L'ARN S3 del file da scaricare, ad esempio: `arn:aws:s3:::amzn-s3-demo-bucket/mydata.csv`  | 
|  `@rds_file_path`  |  NVARCHAR  |  –  |  Facoltativo  |  Il percorso del file per l'istanza RDS. Se non specificato, il percorso del file è `D:\S3\<filename in s3>`. RDS supporta percorsi assoluti e percorsi relativi. Per creare una sottocartella è necessario includerla nel percorso del file.  | 
|  `@overwrite_file`  |  INT  |  0  |  Facoltativo  | Sovrascrittura del file esistente:  0 = Non sovrascrivere 1 = Sovrascrivi | 

È possibile scaricare file senza estensione e file con le seguenti estensioni: .bcp, .csv, .dat, .fmt, .info, .lst, .tbl, .txt e .xml.

**Nota**  
I file con estensione .ispac sono supportati per il download quando SQL Server Integration Services è abilitato. Per ulteriori informazioni sull'abilitazione di SSIS, vedere [SQL Server Integration Services (SSIS)](Appendix.SQLServer.Options.SSIS.md).  
I file con le seguenti estensioni di file sono supportati per il download quando SQL Server Analysis Services è abilitato: .abf, .asdatabase, .configsettings, .deploymentoptions, .deploymenttargets e .xmla. Per ulteriori informazioni sull'abilitazione di SSAS, vedere [SQL Server Analysis Services (SSAS)](Appendix.SQLServer.Options.SSAS.md).

L'esempio seguente mostra la stored procedure per scaricare i file da S3. 

```
exec msdb.dbo.rds_download_from_s3
	    @s3_arn_of_file='arn:aws:s3:::amzn-s3-demo-bucket/bulk_data.csv',
	    @rds_file_path='D:\S3\seed_data\data.csv',
	    @overwrite_file=1;
```

L'operazione `rds_download_from_s3` di esempio crea una cartella denominata `seed_data` in `D:\S3\`, se non esiste già. Quindi, viene scaricato il file di origine `bulk_data.csv` da S3 in un nuovo file denominato `data.csv` nell'istanza database. Se il file esisteva in precedenza, viene sovrascritto perché il parametro `@overwrite_file` è impostato su `1`.

## Aggiornamenti di file da un'istanza database SQL Server in un bucket Amazon S3
<a name="Appendix.SQLServer.Options.S3-integration.using.upload"></a>

Per aggiornare i file da un'istanza database RDS for SQL Server in un bucket S3, usa la stored procedure Amazon RDS `msdb.dbo.rds_upload_to_s3` con i seguenti parametri.


| Nome del parametro | Tipo di dati | Default | Campo obbligatorio | Descrizione | 
| --- | --- | --- | --- | --- | 
|  `@s3_arn_of_file`  |  NVARCHAR  |  –  |  Campo obbligatorio  |  L'ARN S3 del file da creare in S3, ad esempio: `arn:aws:s3:::amzn-s3-demo-bucket/mydata.csv`  | 
|  `@rds_file_path`  |  NVARCHAR  |  –  |  Campo obbligatorio  | Il percorso del file da caricare in S3. Sono supportati percorsi assoluti e relativi. | 
|  `@overwrite_file`  |  INT  |  –  |  Facoltativo  |  Sovrascrittura del file esistente:  0 = Non sovrascrivere 1 = Sovrascrivi  | 

L'esempio seguente carica il file denominato `data.csv` dal percorso specificato in `D:\S3\seed_data\` nel file `new_data.csv` del bucket S3 specificato dall'ARN.

```
exec msdb.dbo.rds_upload_to_s3 
		@rds_file_path='D:\S3\seed_data\data.csv',
		@s3_arn_of_file='arn:aws:s3:::amzn-s3-demo-bucket/new_data.csv',
		@overwrite_file=1;
```

Se il file esisteva in precedenza in S3, viene sovrascritto perché il parametro @overwrite\$1file è impostato su `1`.

# Visualizzazione di file nell'istanza database RDS
<a name="Appendix.SQLServer.Options.S3-integration.using.listing-files"></a>

Per elencare i file disponibili nell'istanza database, si utilizza sia una stored procedure che una funzione. Innanzitutto, esegui la seguente stored procedure per raccogliere i dettagli dai file in `D:\S3\`. 

```
exec msdb.dbo.rds_gather_file_details;
```

La stored procedure restituisce l'ID dell'attività. Come altre attività, questa stored procedure viene eseguita in modo asincrono. Non appena lo stato dell'attività diventa `SUCCESS`, puoi usare l'ID attività nella funzione `rds_fn_list_file_details` per elencare i file e le directory esistenti in D:\$1S3\$1, come indicato di seguito.

```
SELECT * FROM msdb.dbo.rds_fn_list_file_details(TASK_ID);
```

La funzione `rds_fn_list_file_details` restituisce una tabella con le seguenti colonne:


| Parametro di output | Descrizione | 
| --- | --- | 
| filepath | Percorso assoluto del file (ad esempio, D:\$1S3\$1mydata.csv) | 
| size\$1in\$1bytes | Dimensione del file (in byte) | 
| last\$1modified\$1utc | Data e ora dell'ultima modifica in formato UTC | 
| is\$1directory | Opzione che indica se l'elemento è una directory (true/false) | 

# Eliminazione di file nell'istanza database RDS
<a name="Appendix.SQLServer.Options.S3-integration.using.deleting-files"></a>

Per eliminare i file disponibili nell'istanza DB, utilizza la stored procedure Amazon RDS `msdb.dbo.rds_delete_from_filesystem` con i seguenti parametri. 


| Nome del parametro | Tipo di dati | Default | Campo obbligatorio | Descrizione | 
| --- | --- | --- | --- | --- | 
|  `@rds_file_path`  |  NVARCHAR  |  –  |  Campo obbligatorio  | Il percorso del file da eliminare. Sono supportati percorsi assoluti e relativi.  | 
|  `@force_delete`  |  INT  | 0 |  Facoltativo  |  Per eliminare una directory, questo flag deve essere incluso e impostato su `1`. `1` = Elimina una directory Questo parametro viene ignorato se si elimina un file.  | 

Per eliminare una directory, `@rds_file_path` deve terminare con una barra (`\`) e `@force_delete` deve essere impostato su `1`.

L'esempio seguente elimina il file `D:\S3\delete_me.txt`.

```
exec msdb.dbo.rds_delete_from_filesystem
    @rds_file_path='D:\S3\delete_me.txt';
```

L'esempio seguente elimina la directory `D:\S3\example_folder\`.

```
exec msdb.dbo.rds_delete_from_filesystem
    @rds_file_path='D:\S3\example_folder\',
    @force_delete=1;
```

# Monitoraggio dello stato di un'attività di trasferimento di file
<a name="Appendix.SQLServer.Options.S3-integration.using.monitortasks"></a>

Per tenere traccia dello stato dell'attività di integrazione di S3, chiama la funzione `rds_fn_task_status` che accetta due parametri. Il primo parametro deve essere sempre `NULL` perché non si applica all'integrazione di S3. Il secondo parametro accetta un ID attività.

Per visualizzare l'elenco di tutte le attività, imposta il primo parametro su `NULL` e il secondo parametro su `0`, come indicato nell'esempio seguente.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,0);
```

Per ottenere un'attività specifica, imposta il primo parametro su `NULL` e il secondo parametro sull'ID attività, come indicato nell'esempio seguente.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,42);
```

La funzione `rds_fn_task_status` restituisce le seguenti informazioni.


|  Parametro di output  |  Descrizione  | 
| --- | --- | 
|  `task_id`  |  L'ID dell'attività.  | 
|  `task_type`  |  Per l'integrazione di S3, le attività possono avere i seguenti tipi: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/Appendix.SQLServer.Options.S3-integration.using.monitortasks.html)  | 
|  `database_name`  | Non applicabile alle attività di integrazione di S3. | 
|  `% complete`  |  L'avanzamento dell'attività espresso come percentuale.  | 
|  `duration(mins)`  |  La quantità di tempo dedicato all'attività, in minuti.  | 
|  `lifecycle`  |  Lo stato dell'attività. I possibili stati sono i seguenti: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/Appendix.SQLServer.Options.S3-integration.using.monitortasks.html)  | 
|  `task_info`  |  Ulteriori informazioni sull'attività. Se si verifica un errore durante l'elaborazione, questa colonna contiene informazioni sull'errore.   | 
|  `last_updated`  |  La data e l'ora dell'ultimo aggiornamento dello stato dell'attività.   | 
|  `created_at`  |  La data e l'ora di creazione dell'attività.  | 
|  `S3_object_arn`  |  L'ARN dell'oggetto S3 scaricato o caricato.  | 
|  `overwrite_S3_backup_file`  |  Non applicabile alle attività di integrazione di S3.  | 
|  `KMS_master_key_arn`  |  Non applicabile alle attività di integrazione di S3.  | 
|  `filepath`  |  Il percorso del file nell'istanza database RDS.  | 
|  `overwrite_file`  |  Opzione che indica se un file esistente viene sovrascritto.  | 
|  `task_metadata`  |  Non applicabile alle attività di integrazione di S3.  | 

# Annullamento di un'attività
<a name="Appendix.SQLServer.Options.S3-integration.canceltasks"></a>

Per annullare le attività di integrazione di S3, utilizzare la stored procedure `msdb.dbo.rds_cancel_task` con il parametro `task_id`. Le attività di eliminazione ed elenco in corso non possono essere annullate. L'esempio seguente mostra una richiesta per annullare un'attività. 

```
exec msdb.dbo.rds_cancel_task @task_id = 1234;
```

Per ottenere una panoramica di tutte le attività e dei relativi ID attività, utilizza la funzione `rds_fn_task_status` come descritto in [Monitoraggio dello stato di un'attività di trasferimento di file](Appendix.SQLServer.Options.S3-integration.using.monitortasks.md).

## Limitazioni Multi-AZ per l'integrazione S3
<a name="S3-MAZ"></a>

Nelle istanze Multi-AZ, i file nella cartella `D:\S3` vengono eliminati nella replica di standby dopo un failover. Un failover può essere pianificato, ad esempio, durante le modifiche dell'istanza database, come la modifica della classe di istanza o l'aggiornamento della versione del motore. Oppure un failover può essere non pianificato, durante un'interruzione dell'istanza primaria.

**Nota**  
Non è consigliabile utilizzare la cartella `D:\S3` per lo storage di file. La best practice consiste nel caricare i file creati in Amazon S3 per renderli durevoli e scaricare i file quando è necessario importare i dati.

Per determinare l'ora dell'ultimo failover, puoi utilizzare la stored procedure `msdb.dbo.rds_failover_time`. Per ulteriori informazioni, consulta [Individuazione dell’ora dell’ultimo failover per Amazon RDS per SQL Server](Appendix.SQLServer.CommonDBATasks.LastFailover.md).

**Example di nessun failover recente**  
Questo esempio mostra l'output quando il log degli errori non contiene alcun failover recente. Nessun failover si è verificato dal 29-04-2020 alle 23:59:00.01.  
Pertanto, tutti i file scaricati dopo tale ora che non sono stati eliminati utilizzando la stored procedure `rds_delete_from_filesystem` sono ancora accessibili sull'host corrente. Anche i file scaricati prima di tale ora potrebbero essere disponibili.  


| errorlog\$1available\$1from | recent\$1failover\$1time | 
| --- | --- | 
|  2020-04-29 23:59:00.0100000  |  null  | 

**Example di failover recente**  
Questo esempio mostra l'output quando il log degli errori contiene un failover. Il failover più recente è stato il 05-05-2020 alle 18:57:51.89.  
Tutti i file scaricati dopo quest'ora che non sono stati eliminati utilizzando la stored procedure `rds_delete_from_filesystem` sono ancora accessibili sull'host corrente.  


| errorlog\$1available\$1from | recent\$1failover\$1time | 
| --- | --- | 
|  2020-04-29 23:59:00.0100000  |  2020-05-05 18:57:51.8900000  | 

# Disabilitazione dell'integrazione di RDS for SQL Server con S3
<a name="Appendix.SQLServer.Options.S3-integration.disabling"></a>

Nella sezione seguente sono riportate le indicazioni per disabilitare l'integrazione di Amazon S3 con Amazon RDS for SQL Server. I file in `D:\S3\` non vengono eliminati quando si disabilita l'integrazione S3.

**Nota**  
Per rimuovere un ruolo IAM da un'istanza database, lo stato dell'istanza database deve essere `available`.

## Console
<a name="Appendix.SQLServer.Options.S3-integration.disabling.console"></a>

**Per dissociare il ruolo IAM dall'istanza database**

1. Accedi alla 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. Scegli il nome dell'istanza database RDS for SQL Server per visualizzarne i dettagli.

1. Nella sezione **Manage IAM roles (Gestisci ruoli IAM)** della scheda **Connectivity & security (Connettività e sicurezza)**, scegliere il ruolo IAM da rimuovere.

1. Scegliere **Delete (Elimina)**.

## AWS CLI
<a name="Appendix.SQLServer.Options.S3-integration.disabling.cli"></a>

**Per rimuovere il ruolo IAM dall'istanza database RDS for SQL Server**
+ Il seguente comando di AWS CLI rimuove il ruolo IAM da un'istanza database RDS for SQL Server denominata `mydbinstance`.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds remove-role-from-db-instance \
  	   --db-instance-identifier mydbinstance \
  	   --feature-name S3_INTEGRATION \
  	   --role-arn your-role-arn
  ```

  Per Windows:

  ```
  aws rds remove-role-from-db-instance ^
  	   --db-instance-identifier mydbinstance ^
  	   --feature-name S3_INTEGRATION ^
  	   --role-arn your-role-arn
  ```

  Sostituire `your-role-arn` con l'ARN del ruolo IAM appropriato per l'opzione `--feature-name`.