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à.
Caricamento di oggetti con presigned URLs
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
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
Al momento, AWS Toolkit for Visual Studio non supporta Visual Studio per Mac.
-
Installa AWS Toolkit for Visual Studio utilizzando le seguenti istruzioni, Installazione e configurazione del Toolkit for Visual Studio nella Guida per AWS Toolkit for Visual Studio l'utente.
-
Effettuare la connessione AWS utilizzando i seguenti passaggi, Connessione a AWS nella Guida per AWS Toolkit for Visual Studio l'utente.
-
Nel pannello laterale sinistro di AWS Explorer, fai clic con il pulsante destro del mouse sul bucket in cui si desidera caricare un oggetto.
-
Scegli Crea URL prefirmato...
-
Nella finestra a comparsa, imposta la data e l'ora di scadenza dell'URL prefirmato.
-
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.
-
Scegli PUT per specificare che questo URL prefirmato verrà utilizzato per caricare un oggetto.
-
Scegli il pulsante Genera.
-
Per copiare l’URL negli appunti, scegliere Copia.
-
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
"
Puoi generare un URL predefinito in grado di eseguire un'azione S3 per un periodo di tempo limitato.
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 i predefiniti. URLs
- Python
-
Il seguente script Python genera un URL PUT
predefinito per caricare un oggetto in un bucket generico S3.
-
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()
-
Per generare un URL PUT
predefinito per il caricamento di un file, esegui lo script seguente con il nome del bucket e il percorso dell'oggetto desiderato.
Il comando seguente utilizza valori di esempio. Sostituire user input
placeholders
con le proprie informazioni.
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 PUT
predefinito:
Generated PUT presigned URL: https://amzn-s3-demo-bucket
.s3.amazonaws.com/object.txt
?AWS AccessKeyId=AKIAIOSFODNN7EXAMPLE
&Signature=vjbyNxybdZaMmLa%2ByT372YEAiv4%3D
&Expires=1741978496
-
Ora puoi 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. AWS
Risoluzione degli errori SignatureDoesNotMatch
Se riscontri un SignatureDoesNotMatch
errore durante l'utilizzo di presigned URLs, controlla quanto segue:
-
Verifica che l'ora del sistema sia sincronizzata con un server orario 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
-
Conferma di utilizzare la regione corretta per il bucket
-
Quando usi curl, racchiudi l'URL tra virgolette per gestire correttamente i caratteri speciali