Condivisione di oggetti mediante URL prefirmati - Amazon Simple Storage Service

Condivisione di oggetti mediante URL prefirmati

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 prefirmato sono quelle dell'utente AWS che ha generato l'URL.

Per ulteriori informazioni sugli URL prefirmati, consulta Download e caricamento di oggetti con URL predefiniti.

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

Puoi utilizzare la console Amazon S3 per generare un URL prefirmato per un oggetto seguendo questi fasi. 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 alla Console di gestione AWS e apri la console Amazon S3 all’indirizzo https://console.aws.amazon.com/s3/.

  2. Nel riquadro di navigazione sinistro, scegli Bucket per uso generico.

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

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

  5. Nel menu Operazioni oggetti, scegli Crea URL prefirmato.

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

  7. Scegli Create presigned URL (Crea URL prefirmato).

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

Il comando di esempio seguente AWS CLI genera un URL prefirmato per condividere un oggetto da un bucket Amazon S3. Con la AWS CLI, il tempo massimo di scadenza per un URL preimpostato è 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 lanciati dopo il 20 marzo 2019 è necessario specificare endpoint-url e Regione AWS con la richiesta. Per un elenco degli endpoint e delle Regioni Amazon S3 disponibili, consulta Regioni ed endpoint 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 presign nella documentazione di riferimento dei comandi della AWS CLI.

È possibile generare un URL prefirmato in modo programmatico utilizzando gli AWS SDK.

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 l’esempio seguente, sostituisci i segnaposto per l’input dell’utente con le informazioni appropriate, ad esempio il nome 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()
  2. 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 i segnaposto per l’input dell’utente 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?AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Signature=vjbyNxybdZaMmLa%2ByT372YEAiv4%3D&Expires=1741978496
  3. È 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 degli AWS SDK per generare un URL prefirmato per la condivisione di un oggetto, consulta Creazione di un URL prefirmato per Amazon S3 utilizzando un AWS SDK.

Nota

Per tutti Regioni AWS lanciati dopo il 20 marzo 2019 è necessario specificare endpoint-url e Regione AWS con la richiesta. Per un elenco degli endpoint e delle Regioni Amazon S3 disponibili, consulta Regioni ed endpoint in Riferimenti generali AWS.

Nota

Quando si utilizzano gli SDK AWS, 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.

Nota

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

  1. Installa AWS Toolkit for Visual Studio utilizzando le seguenti istruzioni, Installazione e configurazione del Toolkit per Visual Studio nella Guida all'utente AWS Toolkit for Visual Studio.

  2. Effettua la connessione a AWS utilizzando i seguenti passaggi, Connessione a AWS nella Guida per l'utente di AWS Toolkit for Visual Studio.

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

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

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

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

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

  8. Scegli il pulsante Genera.

  9. Per copiare l’URL negli appunti, scegliere Copia.

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

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 nella Guida per l'utente di AWS Toolkit for Visual Studio Code.

Per istruzioni su come installare AWS Toolkit for Visual Studio Code, consulta Installazione di AWS Toolkit for Visual Studio Code nella Guida utente di AWS Toolkit for Visual Studio Code.

  1. Effettua la connessione a AWS utilizzando i seguenti passaggi, Connessione a AWS Toolkit for Visual Studio Code nella Guida per l'utente di AWS Toolkit for Visual Studio Code.

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

  3. In EXPLORER, seleziona S3.

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

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

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