

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à.

# Scarica e carica oggetti con presigned URLs
<a name="using-presigned-url"></a>

Puoi utilizzare presigned URLs per concedere un accesso limitato nel tempo agli oggetti in Amazon S3 senza aggiornare la tua policy sui bucket. Un URL prefirmato può essere inserito in un browser o utilizzato da un programma per scaricare un oggetto. Le credenziali utilizzate dall'URL predefinito sono quelle del principale AWS Identity and Access Management (IAM) che ha generato l'URL.

Puoi anche usare presigned URLs per consentire a qualcuno di caricare un oggetto specifico nel tuo bucket Amazon S3. Ciò consente il caricamento senza richiedere a terzi di disporre di credenziali o autorizzazioni AWS di sicurezza. Se nel bucket esiste già un oggetto con la stessa chiave specificata nell'URL prefirmato, Amazon S3 sostituisce l'oggetto esistente con l'oggetto caricato.

È possibile utilizzare l'URL prefirmato più volte, fino alla data e all'ora di scadenza.

Quando crei un URL prefirmato, devi fornire le credenziali di sicurezza e specificare quanto segue: 
+ Un bucket Amazon S3
+ Una chiave oggetto (se il download di questo oggetto sarà nel tuo bucket Amazon S3, se lo stai caricando questo è il nome del file da caricare)
+ Un metodo HTTP (`GET` per scaricare oggetti, `PUT` per caricare, `HEAD` per leggere i metadati degli oggetti e così via)
+ Un intervallo di tempo di scadenza

Quando utilizzi presigned URLs per caricare oggetti, puoi verificare l'integrità degli oggetti utilizzando i checksum. Sebbene i presigned URLs creati con AWS Signature Version 2 supportino solo i MD5 checksum, i presigned URLs creati con AWS Signature Version 4 supportano algoritmi di checksum aggiuntivi tra cui,,, e. CRC-64/NVME CRC32 CRC32C SHA-1 SHA-256 Per utilizzare questi algoritmi di checksum aggiuntivi, assicurati di utilizzare la versione 4 di AWS Signature e includi l'intestazione di checksum appropriata nella richiesta di caricamento. Per ulteriori informazioni sull'integrità degli oggetti, consulta [Verifica dell'integrità degli oggetti in Amazon S3](checking-object-integrity.md).

**Topics**
+ [

## Chi può creare un URL prefirmato
](#who-presigned-url)
+ [

## Data di scadenza per le impostazioni predefinite URLs
](#PresignedUrl-Expiration)
+ [

## Limitazione delle funzionalità degli URL prefirmati
](#PresignedUrlUploadObject-LimitCapabilities)
+ [

## Domande frequenti per Presigned URLs
](#PresignedUrlFAQ)
+ [

# Condivisione di oggetti con presigned URLs
](ShareObjectPreSignedURL.md)
+ [

# Caricamento di oggetti con presigned URLs
](PresignedUrlUploadObject.md)

## Chi può creare un URL prefirmato
<a name="who-presigned-url"></a>

Qualsiasi utente che disponga di credenziali di sicurezza valide può creare un URL prefirmato. Tuttavia, per accedere a un oggetto, è necessario che l'URL prefirmato sia creato da un utente che dispone dell'autorizzazione a eseguire l'operazione su cui si basa l'URL prefirmato.

Le credenziali che puoi utilizzare per creare un URL prefirmato sono:
+ **Utente IAM**: valido fino a 7 giorni se utilizzi AWS la versione 4 di Signature.

  Per creare un URL prefirmato valido fino a 7 giorni, devi prima delegare le credenziali dell'utente IAM (la chiave di accesso e la chiave segreta) al metodo in uso per creare l’URL prefirmato.
+ **Credenziali di sicurezza temporanee**: non possono essere valide più a lungo delle credenziali stesse. Queste credenziali includono:
  + **Credenziali del ruolo IAM**: l’URL prefirmato scade alla scadenza della sessione del ruolo, anche se è specificato un tempo più lungo.
  + **Credenziali del ruolo IAM utilizzate dalle istanze Amazon EC2**: valide per la durata delle credenziali del ruolo (in genere 6 ore).
  + **AWS Security Token Service credenziali**: valido solo per la durata delle credenziali temporanee.

**Nota**  
Se hai creato un URL prefirmato utilizzando credenziali temporanee, l'URL scade insieme alle credenziali. In generale, un URL prefirmato scade quando la credenziale utilizzata per crearlo viene revocata, cancellata o disattivata. Ciò avviene anche se l'URL è stato creato con un orario di scadenza successivo. *Per la durata temporanea delle credenziali di sicurezza, consulta [Comparing AWS STS API operations](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#stsapi_comparison) nella IAM User Guide.*

## Data di scadenza per le impostazioni predefinite URLs
<a name="PresignedUrl-Expiration"></a>

Un URL prefirmato rimane valido per il periodo di tempo specificato al momento della generazione dell'URL. Se crei un URL prefirmato con la console di Amazon S3, il tempo di scadenza può essere impostato tra 1 minuto e 12 ore. Se si utilizza AWS CLI o AWS SDKs, il tempo di scadenza può essere impostato fino a 7 giorni.

Se si è creato un URL prefirmato utilizzando un token temporaneo, l'URL scade quando scade il token. In generale, un URL prefirmato scade quando la credenziale utilizzata per crearlo viene revocata, cancellata o disattivata. Ciò avviene anche se l'URL è stato creato con un orario di scadenza successivo. Per ulteriori informazioni su come le credenziali utilizzate influiscono sulla data di scadenza, consulta[Chi può creare un URL prefirmato](#who-presigned-url).

Simple Storage Service (Amazon S3) verifica la data e l'ora di scadenza in un URL firmato al momento della richiesta HTTP. Ad esempio, se un client inizia a scaricare un file di grandi dimensioni immediatamente prima dell'ora di scadenza, il download viene completato anche se l'ora di scadenza viene superata. Se la connessione TCP viene interrotta e il client prova a riavviare il download dopo la scadenza, il download non riesce.

## Limitazione delle funzionalità degli URL prefirmati
<a name="PresignedUrlUploadObject-LimitCapabilities"></a>

Le funzionalità dell'URL prefirmato sono limitate dalle autorizzazioni dell'utente che lo ha creato. In sostanza, i presigned URLs sono token portatori che garantiscono l'accesso a chi li possiede. Pertanto, consigliamo di proteggerli in modo appropriato. Di seguito sono riportati alcuni metodi che è possibile utilizzare per limitare l'uso del prefirmato. URLs 

**AWS Signature versione 4 (SigV4)**  
Per applicare un comportamento specifico quando le richieste dell'URL prefirmato vengono autenticate tramite AWS Signature Version 4 (SigV4), puoi utilizzare le chiavi di condizione nelle policy del bucket e nelle policy dei punti di accesso. Ad esempio, la policy di bucket seguente utilizza la condizione `s3:signatureAge` per negare qualsiasi richiesta di URL prefirmato da Amazon S3 sugli oggetti nel bucket *amzn-s3-demo-bucket* se la firma ha più di 10 minuti. Per utilizzare questo esempio, sostituisci *`user input placeholders`* con le informazioni appropriate.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Deny a presigned URL request if the signature is more than 10 min old",
            "Effect": "Deny",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "NumericGreaterThan": {
                    "s3:signatureAge": "600000"
                }
            }
        }
    ]
}
```

------

Per ulteriori informazioni sulla versione 4 di AWS Signature relativa alle chiavi di policy, consulta [AWS Signature Version 4 Authentication](https://docs.aws.amazon.com/AmazonS3/latest/API/bucket-policy-s3-sigv4-conditions.html) nel *riferimento all'API di Amazon Simple Storage Service*.

**Limitazioni per percorso di rete**  
Se desideri limitare l'uso dell'accesso predefinito URLs e di tutti gli accessi di Amazon S3 a determinati percorsi di rete, puoi AWS Identity and Access Management scrivere policy (IAM). Puoi impostare queste policy sul principale del servizio IAM che effettua la chiamata, sul bucket Amazon S3 o su entrambi. 

Una restrizione del percorso di rete sul principale IAM richiede all'utente di tali credenziali di effettuare le richieste dalla rete specificata. Una restrizione sul bucket o sul punto di accesso richiede che tutte le richieste a quella risorsa provengano dalla rete specificata. Queste restrizioni si applicano anche al di fuori dello scenario di URL prefirmato.

La chiave della condizione globale IAM utilizzata dipende dal tipo di endpoint. Se utilizzi l'endpoint pubblico per Amazon S3, utilizza `aws:SourceIp`. Se utilizzi un endpoint di cloud privato virtuale (VPC) per Amazon S3, usa `aws:SourceVpc` o `aws:SourceVpce`.

La seguente dichiarazione sulla politica IAM richiede che il principale acceda AWS solo dall'intervallo di rete specificato. Con questa istruzione della policy, tutti gli accessi devono avere origine da tale intervallo. Ciò include il caso di un utente che utilizza un URL prefirmato per Amazon S3. Per utilizzare questo esempio, sostituisci *`user input placeholders`* con le informazioni appropriate.

```
{
    "Sid": "NetworkRestrictionForIAMPrincipal",
    "Effect": "Deny",
    "Action": "*",
    "Resource": "*",
    "Condition": {
        "NotIpAddressIfExists": {"aws:SourceIp": "IP-address-range"},
        "BoolIfExists": {"aws:ViaAWSService": "false"}
    }
}
```

## Domande frequenti per Presigned URLs
<a name="PresignedUrlFAQ"></a>

**D: Perché i miei dati predefiniti URLs scadono prima dell'ora di scadenza configurata?**  
I prefirmati URLs rimangono validi solo finché le credenziali sottostanti sono valide. Un URL prefirmato scade all’ora di scadenza configurata o alla scadenza delle credenziali associate, a seconda di quale evento si verifica per primo. Per le attività o i container di Amazon Elastic Container Service, le credenziali di ruolo ruotano in genere ogni 1-6 ore. Quando si utilizza AWS Security Token Service (AWS STS) AssumeRole, l'URL predefinito scade al termine della sessione del ruolo, che per impostazione predefinita è di 1 ora. Per i profili di istanza Amazon EC2, le credenziali dei metadati ruotano periodicamente con un periodo di validità massimo di circa 6 ore.

**D: Perché ricevo l’errore 403 Forbidden quando accedo a un URL prefirmato?**  
Prima di generare un URL prefirmato, verifica di disporre delle autorizzazioni corrette. L’utente o il ruolo IAM che genera l’URL deve disporre delle autorizzazioni necessarie, ad esempio `s3:GetObject`, per l’operazione specifica. Inoltre, verifica che la policy di bucket di Amazon S3 non neghi esplicitamente l’accesso all’oggetto.

**D: Ricevo errori `SignatureDoesNotMatch`. Come è possibile risolvere il problema?**  
Se riscontri `SignatureDoesNotMatch` errori durante l'utilizzo di Amazon S3 presigned URLs, considera diverse cause comuni. Innanzitutto, assicurati che l’orologio di sistema sia sincronizzato con un server Network Time Protocol (NTP), poiché anche piccole variazioni di tempo possono invalidare le firme. Inoltre, tieni presente che alcuni proxy aziendali possono modificare le intestazioni o le stringhe di query, causando potenzialmente mancate corrispondenze tra le firme. Per risolvere i problemi, prova a eseguire un test senza il proxy. Infine, verifica che tutti i parametri della richiesta, inclusi il metodo HTTP, le intestazioni e la stringa di query, corrispondano esattamente tra la generazione e l’utilizzo dell’URL. La risoluzione di questi problemi può spesso risolvere gli errori `SignatureDoesNotMatch`.

**D: Ricevo errori `ExpiredToken`. Cosa devo fare?**  
Quando ricevi `ExpiredToken` errori durante l'utilizzo di presigned URLs, significa che AWS le credenziali utilizzate per generare l'URL non sono più valide. Per risolvere questo problema, aggiorna le AWS credenziali prima di generarne di nuove predefinite. URLs Per le applicazioni di lunga durata, è consigliabile implementare la logica di aggiornamento delle credenziali per mantenere l’accesso continuo. Se appropriato, è possibile utilizzare le credenziali di lunga durata o implementare meccanismi di aggiornamento dei token. Se utilizzi AWS Security Token Service (AWS STS) AssumeRole, verifica che la durata della sessione configurata soddisfi i requisiti del caso d'uso. Ricorda che i preassegnati URLs rimangono validi solo per la durata delle credenziali sottostanti, quindi è essenziale implementare una corretta gestione delle credenziali.

# Condivisione di oggetti con presigned URLs
<a name="ShareObjectPreSignedURL"></a>

Per impostazione predefinita, tutti gli oggetti di Amazon S3 sono privati, solo il proprietario dell'oggetto dispone dell'autorizzazione per accedere agli oggetti di Amazon S3. Tuttavia, il proprietario dell'oggetto può condividere oggetti con altri creando un URL prefirmato. Un URL prefirmato utilizza le credenziali di sicurezza per concedere un'autorizzazione limitata nel tempo per scaricare oggetti. L'URL può essere inserito in un browser o utilizzato da un programma per scaricare l'oggetto. Le credenziali utilizzate dall'URL predefinito sono quelle dell' AWS utente che ha generato l'URL.

Per informazioni generali sulle impostazioni predefinite, vedere. URLs [Scarica e carica oggetti con presigned URLs](using-presigned-url.md)

Puoi creare un URL predefinito per condividere un oggetto senza scrivere alcun codice utilizzando la console Amazon S3 AWS , Explorer for Visual Studio (Windows) o. AWS Toolkit for Visual Studio Code Puoi anche generare un URL predefinito a livello di codice utilizzando () o. AWS Command Line Interface AWS CLI AWS SDKs

## Utilizzo della console S3
<a name="generating-presigned-url"></a>

 Puoi utilizzare la console Amazon S3 per generare un URL predefinito per la condivisione di un oggetto fino a 5 TB seguendo questi passaggi. Nella console, il tempo massimo di scadenza per un URL prefirmato è di 12 ore dal momento della creazione.

**Generazione di un URL prefirmato utilizzando la console di Amazon S3**

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. Nel riquadro di navigazione sinistro, scegli **Bucket per uso generico**.

1. Nell’elenco **Bucket per uso generico** scegli il nome del bucket per uso generico contenente l’oggetto per cui desideri ottenere un URL prefirmato.

1. Nell'elenco **Objects (Oggetti)**, seleziona l'oggetto per cui desideri creare un URL prefirmato.

1. Nel menu **Operazioni oggetti**, scegli **Crea URL prefirmato**.

1. Specifica per quanto tempo desideri che l'URL prefirmato sia valido.

1. Scegli **Create presigned URL** (Crea URL prefirmato).

1. Quando viene visualizzata la conferma, l'URL viene automaticamente copiato negli appunti. Verrà visualizzato un pulsante per copiare l'URL preimpostato qualora fosse necessario copiarlo di nuovo.

## Usando il AWS CLI
<a name="ShareObjectPresignedCLI"></a>

Il seguente AWS CLI comando di esempio genera un URL predefinito per la condivisione di un oggetto da un bucket Amazon S3. Quando utilizzi il AWS CLI, il tempo di scadenza massimo per un URL predefinito è di 7 giorni dal momento della creazione. Per utilizzare questo esempio, sostituisci *`user input placeholders`* con le informazioni appropriate.

```
aws s3 presign s3://amzn-s3-demo-bucket/mydoc.txt --expires-in 604800
```

Il parametro `--expires-in` specifica il tempo di scadenza in secondi.



**Nota**  
Per tutti Regioni AWS quelli lanciati dopo il 20 marzo 2019 è necessario specificare l'`endpoint-url`e `Regione AWS` con la richiesta. Per un elenco degli endpoint e delle Regioni Amazon S3 disponibili, consulta [Regioni ed endpoint](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) in *Riferimenti generali AWS *.

```
aws s3 presign s3://amzn-s3-demo-bucket/mydoc.txt --expires-in 604800 --region af-south-1 --endpoint-url https://s3.af-south-1.amazonaws.com
```



Per ulteriori informazioni, consulta [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/presign.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/presign.html) nella *documentazione di riferimento dei comandi della AWS CLI *.

## Usando il AWS SDKs
<a name="ShareObjectPreSignedURLSDK"></a>

È possibile generare un URL predefinito a livello di codice utilizzando. AWS SDKs

------
#### [ Python ]

 Il seguente script Python genera un URL prefirmato `GET` per la condivisione di un oggetto.

1. Copia il contenuto dello script e salvalo come file «»*get-only-url.py*. Per utilizzare gli esempi seguenti, *user input placeholders* sostituiscili con le tue informazioni (come il nome del file). 

   ```
   import argparse
   import boto3
   from botocore.exceptions import ClientError
   
   def generate_presigned_url(s3_client, client_method, method_parameters, expires_in):
       """
       Generate a presigned Amazon S3 URL that can be used to perform an action.
       
       :param s3_client: A Boto3 Amazon S3 client.
       :param client_method: The name of the client method that the URL performs.
       :param method_parameters: The parameters of the specified client method.
       :param expires_in: The number of seconds the presigned URL is valid for.
       :return: The presigned URL.
       """
       try:
           url = s3_client.generate_presigned_url(
               ClientMethod=client_method,
               Params=method_parameters,
               ExpiresIn=expires_in
           )
       except ClientError:
           print(f"Couldn't get a presigned URL for client method '{client_method}'.")
           raise
       return url
   
   def main():
       parser = argparse.ArgumentParser()
       parser.add_argument("bucket", help="The name of the bucket.")
       parser.add_argument(
           "key", help="The key (path and filename) in the S3 bucket.",
       )
       args = parser.parse_args()
       
       # By default, this will use credentials from ~/.aws/credentials
       s3_client = boto3.client("s3")
       
       # The presigned URL is specified to expire in 1000 seconds
       url = generate_presigned_url(
           s3_client, 
           "get_object", 
           {"Bucket": args.bucket, "Key": args.key}, 
           1000
       )
       print(f"Generated GET presigned URL: {url}")
   
   if __name__ == "__main__":
       main()
   ```

1. Per generare un URL prefirmato `GET` per la condivisione di un file, esegui lo script seguente con il nome del bucket e il percorso dell’oggetto desiderato. 

    Il seguente comando utilizza valori di esempio. Sostituisci *user input placeholders* con le informazioni appropriate.

   ```
   python get-only-url.py amzn-s3-demo-bucket <object-path>
   ```

   Lo script produrrà un URL prefirmato `GET`:

   ```
   Generated GET presigned URL: https://amzn-s3-demo-bucket.s3.amazonaws.com/object.txt?AWS AccessKeyId=AKIAIOSFODNN7EXAMPLE&Signature=vjbyNxybdZaMmLa%2ByT372YEAiv4%3D&Expires=1741978496
   ```

1. È possibile scaricare il file utilizzando l’URL prefirmato generato con curl:

   ```
   curl -X GET "generated-presigned-url" -o "path/to/save/file" 
   ```

Per altri esempi di utilizzo di AWS SDKs per generare un URL predefinito per la condivisione di un oggetto, consulta [Creare un URL predefinito per Amazon S3 utilizzando](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_PresignedUrl_section.html) un SDK. AWS 

**Nota**  
Per tutti i Regioni AWS prodotti lanciati dopo il 20 marzo 2019 è necessario specificare l'`endpoint-url`e `Regione AWS` con la richiesta. Per un elenco degli endpoint e delle Regioni Amazon S3 disponibili, consulta [Regioni ed endpoint](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) in *Riferimenti generali AWS *.

**Nota**  
Quando si utilizza AWS SDKs, l'attributo Tagging deve essere un'intestazione e non un parametro di query. Tutti gli altri attributi possono essere passati come parametri per l'URL prefirmato. 

------

## Utilizzo di AWS Toolkit for Visual Studio (Windows)
<a name="ShareObjectPreSignedURLVSExplorer"></a>

**Nota**  
Al momento, non AWS Toolkit for Visual Studio supporta Visual Studio per Mac.

1. Installa AWS Toolkit for Visual Studio utilizzando le seguenti istruzioni, [Installazione e configurazione del Toolkit for Visual](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/setup.html) Studio nella Guida per *AWS Toolkit for Visual Studio l'utente*.

1. Effettuare la connessione AWS utilizzando i seguenti passaggi, [Connessione a AWS](https://docs.aws.amazon.com/AWSToolkitVS/latest/UserGuide/connect.html) nella *Guida per AWS Toolkit for Visual Studio l'utente*.

1. Nel pannello laterale sinistro di **AWS Explorer**, fai doppio clic sul bucket contenente l'oggetto.

1. Fai clic con il tasto destro del mouse sull'oggetto per cui desideri generare un URL prefirmato e seleziona **Crea URL prefirmato...**

1. Nella finestra a comparsa, imposta la data e l'ora di scadenza dell'URL prefirmato.

1. La **Chiave dell'oggetto** dovrebbe essere precompilata in base all'oggetto selezionato.

1. Scegli **GET** per specificare che questo URL prefirmato verrà utilizzato per scaricare un oggetto.

1. Scegli il pulsante **Genera**.

1. Per copiare l’URL negli appunti, scegliere **Copia**.

1. Per utilizzare l'URL generato, incolla l'URL in un qualsiasi browser.

## Usando AWS Toolkit for Visual Studio Code
<a name="ShareObjectPreSignedURLVSCode"></a>

Se utilizzi Visual Studio Code, puoi generare un URL prefirmato per condividere un oggetto senza scrivere codice tramite  AWS Toolkit for Visual Studio Code. Per ulteriori informazioni, consulta [AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/welcome.html) nella *Guida per l'utente di AWS Toolkit for Visual Studio Code *. 

Per istruzioni su come installare AWS Toolkit for Visual Studio Code, vedere [Installazione di AWS Toolkit for Visual Studio Code nella](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-toolkit.html) *Guida per l'AWS Toolkit for Visual Studio Code utente*.

1. Effettuare la connessione AWS utilizzando i seguenti passaggi, [Connessione a AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/connect.html) nella *Guida per AWS Toolkit for Visual Studio Code l'utente*.

1. Seleziona il AWS logo nel pannello di sinistra in Visual Studio Code.

1. In **EXPLORER**, seleziona **S3**.

1. Scegli un bucket e un file e apri il menu contestuale (tasto destro del mouse).

1. Scegli **Genera URL prefirmato**, quindi imposta l'ora di scadenza (in minuti).

1. Premi Invio e l'URL prefirmato verrà copiato negli appunti.

# Caricamento di oggetti con presigned URLs
<a name="PresignedUrlUploadObject"></a>



Puoi usare presigned URLs per consentire a qualcuno di caricare un oggetto nel tuo bucket Amazon S3. L'utilizzo di un URL predefinito consentirà il caricamento senza richiedere a terzi di disporre di credenziali o autorizzazioni di AWS sicurezza. Le funzionalità dell'URL prefirmato sono limitate dalle autorizzazioni dell'utente che lo ha creato. In altre parole, se si riceve un URL prefirmato per caricare un oggetto, è possibile caricarlo solo se il creatore dell'URL dispone delle autorizzazioni necessarie per caricare tale oggetto.

Quando carichi un oggetto nel bucket utilizzando l'URL, Amazon S3 crea l'oggetto in un bucket specifico. Se nel bucket esiste già un oggetto con la stessa chiave specificata nell'URL prefirmato, Amazon S3 sostituisce l'oggetto esistente con l'oggetto caricato. Dopo il caricamento, il proprietario del bucket sarà il proprietario dell'oggetto.

Per informazioni generali sulle impostazioni predefinite URLs, vedere. [Scarica e carica oggetti con presigned URLs](using-presigned-url.md)

Genera un URL prefirmato per un oggetto senza scrivere alcun codice mediante AWS Explorer per Visual Studio. È inoltre possibile generare un URL predefinito a livello di codice utilizzando. AWS SDKs

**Nota**  
Al momento, AWS Toolkit for Visual Studio non supporta Visual Studio per Mac.

## Utilizzo di AWS Toolkit for Visual Studio (Windows)
<a name="upload-object-presignedurl-vsexplorer"></a>

1. Installa AWS Toolkit for Visual Studio utilizzando le seguenti istruzioni, [Installazione e configurazione del Toolkit for Visual](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/setup.html) Studio nella Guida per *AWS Toolkit for Visual Studio l'utente*.

1. Effettuare la connessione AWS utilizzando i seguenti passaggi, [Connessione a AWS](https://docs.aws.amazon.com/AWSToolkitVS/latest/UserGuide/connect.html) nella *Guida per AWS Toolkit for Visual Studio l'utente*.

1. Nel pannello laterale sinistro di **AWS Explorer**, fai clic con il pulsante destro del mouse sul bucket in cui si desidera caricare un oggetto.

1. Scegli **Crea URL prefirmato...**

1. Nella finestra a comparsa, imposta la data e l'ora di scadenza dell'URL prefirmato.

1. Per **Chiave dell'oggetto**, imposta il nome del file da caricare. Il file che si sta caricando deve corrispondere esattamente a questo nome. Se nel bucket esiste già un oggetto con la stessa chiave dell'oggetto, Amazon S3 sostituirà l'oggetto esistente con quello appena caricato. 

1. **Scegli PUT** per specificare che questo URL prefirmato verrà utilizzato per caricare un oggetto.

1. Scegli il pulsante **Genera**.

1. Per copiare l’URL negli appunti, scegliere **Copia**.

1. Per utilizzare questo URL, puoi inviare una richiesta PUT con il comando `curl`. Includi il percorso completo del file e l'URL prefirmato stesso. 

   ```
   curl -X PUT -T "/path/to/file" "presigned URL"
   ```

## Utilizzo di AWS SDKs per generare un URL `PUT` predefinito per il caricamento di un file
<a name="presigned-urls-upload-sdk"></a>

 È possibile generare un URL prefirmato in grado di eseguire un’azione S3 per un periodo di tempo limitato. 

**Nota**  
Se si utilizza la AWS CLI o AWS SDKs, il tempo di scadenza per presigned URLs può essere impostato fino a 7 giorni. Per ulteriori informazioni, consulta [Data di scadenza per](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html#PresignedUrl-Expiration) i predefiniti. URLs

------
#### [ Python ]

 Il seguente script Python genera un URL prefirmato `PUT` per caricare un oggetto in un bucket per uso generico S3. 

1. Copia il contenuto dello script e salvalo come file «*put-only-url.py*». Per utilizzare gli esempi seguenti, *user input placeholders* sostituiscili con le tue informazioni (come il nome del file). 

   ```
   import argparse
   import boto3
   from botocore.exceptions import ClientError
   
   def generate_presigned_url(s3_client, client_method, method_parameters, expires_in):
       """
       Generate a presigned Amazon S3 URL that can be used to perform an action.
       
       :param s3_client: A Boto3 Amazon S3 client.
       :param client_method: The name of the client method that the URL performs.
       :param method_parameters: The parameters of the specified client method.
       :param expires_in: The number of seconds the presigned URL is valid for.
       :return: The presigned URL.
       """
       try:
           url = s3_client.generate_presigned_url(
               ClientMethod=client_method,
               Params=method_parameters,
               ExpiresIn=expires_in
           )
       except ClientError:
           print(f"Couldn't get a presigned URL for client method '{client_method}'.")
           raise
       return url
   
   def main():
       parser = argparse.ArgumentParser()
       parser.add_argument("bucket", help="The name of the bucket.")
       parser.add_argument(
           "key", help="The key (path and filename) in the S3 bucket.",
       )
       parser.add_argument(
           "--region", help="The AWS region where the bucket is located.", default="us-east-1"
       )
       parser.add_argument(
           "--content-type", help="The content type of the file to upload.", default="application/octet-stream"
       )
       args = parser.parse_args()
       
       # Create S3 client with explicit region configuration
       s3_client = boto3.client("s3", region_name=args.region)
       
       # Optionally set signature version if needed for older S3 regions
       # s3_client.meta.config.signature_version = 's3v4'
       
       # The presigned URL is specified to expire in 1000 seconds
       url = generate_presigned_url(
           s3_client, 
           "put_object", 
           {
               "Bucket": args.bucket, 
               "Key": args.key,
               "ContentType": args.content_type  # Specify content type
           }, 
           1000
       )
       print(f"Generated PUT presigned URL: {url}")
   
   if __name__ == "__main__":
       main()
   ```

1. Per generare un URL prefirmato `PUT` per il caricamento di un file, esegui lo script seguente con il nome del bucket e il percorso dell’oggetto desiderato. 

    Il seguente comando utilizza valori di esempio. Sostituisci *user input placeholders* con le informazioni appropriate.

   ```
   python put-only-url.py amzn-s3-demo-bucket <object-path> --region us-east-1 --content-type application/octet-stream
   ```

   Lo script produrrà un URL prefirmato `PUT`:

   ```
   Generated PUT presigned URL: https://amzn-s3-demo-bucket.s3.amazonaws.com/object.txt?AWS AccessKeyId=AKIAIOSFODNN7EXAMPLE&Signature=vjbyNxybdZaMmLa%2ByT372YEAiv4%3D&Expires=1741978496
   ```

1. È ora possibile caricare il file utilizzando l’URL prefirmato generato con curl. Assicurati di includere lo stesso tipo di contenuto utilizzato durante la generazione dell’URL:

   ```
   curl -X PUT -T "path/to/your/local/file" -H "Content-Type: application/octet-stream" "generated-presigned-url"
   ```

   Se hai specificato un tipo di contenuto diverso durante la generazione dell’URL, assicurati di utilizzare lo stesso tipo di contenuto nel comando curl.

Per altri esempi di utilizzo di AWS SDKs per generare un URL predefinito per il caricamento di un oggetto, consulta [Creare un URL predefinito per Amazon S3 utilizzando un SDK](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_PresignedUrl_section.html). AWS 

**Risoluzione degli errori SignatureDoesNotMatch**  
Se riscontri un `SignatureDoesNotMatch` errore durante l'utilizzo di presigned URLs, controlla quanto segue:  
Verifica che l’ora di sistema sia sincronizzata con un server di riferimento dell’ora affidabile
Assicurati di utilizzare l’URL esattamente come generato, senza alcuna modifica
Controlla se l’URL è scaduto e generane uno nuovo se necessario
Assicurati che il tipo di contenuto nella richiesta di caricamento corrisponda al tipo di contenuto specificato durante la generazione dell’URL
Verifica di utilizzare la Regione corretta per il bucket
Quando utilizzi curl, racchiudi l’URL tra virgolette per gestire correttamente i caratteri speciali

------