Wie erhalte ich den Standort / die URL des AWS S3-Objekts mit Pyhton 3.8?

Nov 23 2020

Ich lade eine Datei mit der AWS Lambda-Funktion (Python3.8) mit dem folgenden Code auf AWS S3 hoch.

   file_obj = open(filename, 'rb')

   s3_upload = s3.put_object( Bucket="aaa", Key="aaa.png", Body=file_obj)
   
   return {
   'statusCode': 200,
   'body': json.dumps("Executed Successfully")
   }

Ich möchte den Speicherort / die URL des S3-Objekts erhalten return. In verwenden Node.jswir den .locationParameter zum Abrufen der Objektposition / URL.

Irgendeine Idee, wie man das mit Python 3.8 macht?

Antworten

2 Marcin Nov 24 2020 at 05:40

Die URL von S3-Objekten hat ein bekanntes Format und folgt dem Zugriff auf den virtuell gehosteten Stil :

https://bucket-name.s3.Region.amazonaws.com/keyname

So können Sie die URL selbst erstellen:

bucket_name = 'aaa'
aws_region = boto3.session.Session().region_name
object_key = 'aaa.png'

s3_url = f"https://{bucket_name}.s3.{aws_region}.amazonaws.com/{object_key}"

return {
   'statusCode': 200,
   'body': json.dumps({'s3_url': s3_url})
}