Objekte mit vorsignierten Objekten hochladen URLs - Amazon Simple Storage Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Objekte mit vorsignierten Objekten hochladen URLs

Sie können presigned verwenden, um jemandem URLs zu ermöglichen, ein Objekt in Ihren Amazon S3 S3-Bucket hochzuladen. Die Verwendung einer vorsignierten URL ermöglicht einen Upload, ohne dass eine andere Partei über AWS Sicherheitsanmeldedaten oder -berechtigungen verfügen muss. Eine vorsignierte URL ist durch die Berechtigungen des Benutzers eingeschränkt, der sie erstellt hat. Das bedeutet, dass Sie ein Objekt, für das Sie eine vorsignierte URL zum Hochladen eines Objekts erhalten haben, nur dann hochladen können, wenn der Ersteller der URL die erforderlichen Berechtigungen zum Hochladen dieses Objekts besitzt.

Wenn jemand das Objekt über die URL hochlädt, erstellt Amazon S3 das Objekt in dem angegebenen Bucket. Wenn im Bucket bereits ein Objekt mit demselben Schlüssel vorhanden ist, der in der vorsignierten URL angegeben wird, ersetzt Amazon S3 das vorhandene Objekt durch das hochgeladene Objekt. Nach dem Upload gehört das Objekt dem Bucket-Besitzer.

Allgemeine Informationen zu vorsignierten finden Sie URLs unter. Laden Sie Objekte mit vorsignierten Objekten herunter und laden Sie sie hoch URLs

Sie können mit AWS -Explorer für Visual Studio eine vorsignierte URL zum Hochladen eines Objekts erstellen, ohne einen Code schreiben zu müssen. Sie können eine vorsignierte URL auch programmgesteuert generieren, indem Sie den verwenden. AWS SDKs

Anmerkung

Derzeit unterstützt der Visual Studio für Mac AWS Toolkit for Visual Studio nicht.

  1. Installieren Sie das AWS Toolkit for Visual Studio mithilfe der folgenden Anweisungen unter Installation und Einrichtung des Toolkit for Visual Studio im AWS Toolkit for Visual Studio Benutzerhandbuch.

  2. Connect Sie AWS mithilfe der folgenden Schritte eine Verbindung zu her: Herstellen einer Verbindung zu AWS im AWS Toolkit for Visual Studio Benutzerhandbuch.

  3. Klicken Sie in der linken Seitenleiste mit der Bezeichnung AWS Explorer mit der rechten Maustaste auf den Bucket, in den Sie ein Objekt hochladen möchten.

  4. Wählen Sie Vorsignierte URL erstellen aus.

  5. Legen Sie im Pop-up-Fenster das Ablaufdatum und die Ablaufuhrzeit für Ihre vorsignierte URL fest.

  6. Geben Sie für Objektschlüssel den Namen der Datei ein, die hochgeladen werden soll. Die Datei, die Sie hochladen, muss genau diesem Namen entsprechen. Wenn ein Objekt mit dem gleichen Objektschlüssel bereits im Bucket vorhanden ist, ersetzt Amazon S3 das vorhandene Objekt durch das neu hochgeladene Objekt.

  7. Wählen Sie PUT, um anzugeben, dass diese vorsignierte URL zum Hochladen eines Objekts verwendet wird.

  8. Wählen Sie die Schaltfläche Generate (Generieren) aus.

  9. Wählen Sie zum Kopieren der URL in die Zwischenablage Copy (Kopieren) aus.

  10. Um diese URL zu verwenden, können Sie mit dem curl-Befehl eine PUT-Anfrage senden. Geben Sie den vollständigen Pfad zu Ihrer Datei sowie die vorab signierte URL selbst an.

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

Sie können eine vorsignierte URL generieren, die für eine begrenzte Zeit eine S3-Aktion ausführen kann.

Anmerkung

Wenn Sie die AWS CLI oder verwenden AWS SDKs, URLs kann die Ablaufzeit für Presigned auf bis zu 7 Tage festgelegt werden. Weitere Informationen finden Sie unter Ablaufzeit für URLs vorsignierte.

Python

Das folgende Python-Skript generiert eine PUT vorsignierte URL für das Hochladen eines Objekts in einen S3-Allzweck-Bucket.

  1. Kopieren Sie den Inhalt des Skripts und speichern Sie es als „put-only-url.py“ -Datei. Um die folgenden Beispiele zu verwenden, ersetzen Sie sie durch Ihre eigenen Informationen (z. B. Ihren Dateinamen). user input placeholders

    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()
  2. Um eine PUT vorsignierte URL für das Hochladen einer Datei zu generieren, führen Sie das folgende Skript mit Ihrem Bucket-Namen und dem gewünschten Objektpfad aus.

    Der folgende Befehl verwendet Beispielwerte. Ersetzen Sie user input placeholders durch Ihre Informationen.

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

    Das Skript gibt eine PUT vorsignierte URL aus:

    Generated PUT presigned URL: https://amzn-s3-demo-bucket.s3.amazonaws.com/object.txt?AWS AccessKeyId=AKIAIOSFODNN7EXAMPLE&Signature=vjbyNxybdZaMmLa%2ByT372YEAiv4%3D&Expires=1741978496
  3. Sie können die Datei jetzt mithilfe der generierten vorsignierten URL mit curl hochladen. Stellen Sie sicher, dass Sie denselben Inhaltstyp angeben, der bei der Generierung der URL verwendet wurde:

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

    Wenn Sie beim Generieren der URL einen anderen Inhaltstyp angegeben haben, stellen Sie sicher, dass Sie denselben Inhaltstyp im Befehl curl verwenden.

Weitere Beispiele für die Verwendung von AWS SDKs zum Generieren einer vorsignierten URL für das Hochladen eines Objekts finden Sie unter Erstellen einer vorsignierten URL für Amazon S3 mithilfe eines SDK. AWS

Behebung von Fehlern SignatureDoesNotMatch

Wenn Sie bei der Verwendung von presigned auf einen SignatureDoesNotMatch Fehler stoßen URLs, überprüfen Sie Folgendes:

  • Stellen Sie sicher, dass Ihre Systemzeit mit einem zuverlässigen Zeitserver synchronisiert ist

  • Stellen Sie sicher, dass Sie die URL genau so verwenden, wie sie generiert wurde, ohne Änderungen

  • Prüfen Sie, ob die URL abgelaufen ist, und generieren Sie bei Bedarf eine neue

  • Stellen Sie sicher, dass der Inhaltstyp in Ihrer Upload-Anfrage mit dem Inhaltstyp übereinstimmt, der bei der Generierung der URL angegeben wurde

  • Vergewissern Sie sich, dass Sie die richtige Region für den Bucket verwenden

  • Wenn Sie curl verwenden, setzen Sie die URL in Anführungszeichen, um Sonderzeichen korrekt zu behandeln