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
Derzeit unterstützt der Visual Studio für Mac AWS Toolkit for Visual Studio nicht.
-
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.
-
Connect Sie AWS mithilfe der folgenden Schritte eine Verbindung zu her: Herstellen einer Verbindung zu AWS im AWS Toolkit for Visual Studio Benutzerhandbuch.
-
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.
-
Wählen Sie Vorsignierte URL erstellen aus.
-
Legen Sie im Pop-up-Fenster das Ablaufdatum und die Ablaufuhrzeit für Ihre vorsignierte URL fest.
-
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.
-
Wählen Sie PUT, um anzugeben, dass diese vorsignierte URL zum Hochladen eines Objekts verwendet wird.
-
Wählen Sie die Schaltfläche Generate (Generieren) aus.
-
Wählen Sie zum Kopieren der URL in die Zwischenablage Copy (Kopieren) aus.
-
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 vordefinierte URL generieren, die für eine begrenzte Zeit eine S3-Aktion ausführen kann.
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 vordefinierte URL PUT für das Hochladen eines Objekts in einen S3-Allzweck-Bucket.
-
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()
-
Führen Sie das folgende Skript mit Ihrem Bucket-Namen und dem gewünschten Objektpfad aus, um eine URL mit dem Vorzeichen PUT zum Hochladen einer Datei zu generieren.
Im folgenden Beispiel wird der Befehl verwendet. 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
-
Sie können die Datei nun mit der generierten vordefinierten URL mit curl hochladen. Achten Sie darauf, dass Sie denselben Inhaltstyp verwenden, der auch bei der Erstellung der URL verwendet wurde:
curl -X PUT -T "path/to/your/local/file" -H "Content-Type: application/octet-stream" "generated-presigned-url"
Wenn Sie bei der Erstellung der URL einen anderen Inhaltstyp angegeben haben, müssen Sie diesen Inhaltstyp auch im curl-Befehl verwenden.
Weitere Beispiele für die AWS SDKs Generierung 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 irgendwelche Änderungen.
-
Prüfen Sie, ob die URL abgelaufen ist, und erstellen Sie bei Bedarf eine neue.
-
Stellen Sie sicher, dass der Inhaltstyp in Ihrer Upload-Anforderung mit dem Inhaltstyp übereinstimmt, der bei der Generierung der URL angegeben wurde.
-
Stellen Sie sicher, dass Sie die richtige Region für den Bucket verwenden
-
Wenn Sie curl verwenden, schließen Sie die URL in Anführungszeichen ein, um Sonderzeichen korrekt zu behandeln