Jak uzyskać lokalizację / adres URL obiektu AWS S3 za pomocą pyhton 3.8?

Nov 23 2020

Przesyłam plik do AWS S3 za pomocą funkcji AWS Lambda (Python3.8) z następującym kodem.

   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")
   }

Chcę uzyskać lokalizację / adres URL obiektu S3 w return. W Node.jsużywamy .locationparametru do pobrania lokalizacji / adresu URL obiektu.

Każdy pomysł, jak to zrobić za pomocą Pythona 3.8?

Odpowiedzi

2 Marcin Nov 24 2020 at 05:40

Adres URL obiektów S3 ma znany format i jest zgodny z dostępem w stylu wirtualnym :

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

W ten sposób możesz samodzielnie utworzyć adres URL:

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})
}