Comment obtenir l'emplacement / l'URL de l'objet AWS S3 à l'aide de pyhton 3.8?

Nov 23 2020

Je télécharge un fichier sur AWS S3 à l'aide de la fonction AWS Lambda (Python3.8) avec le code suivant.

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

Je veux obtenir l'emplacement / l'url de l'objet S3 dans return. Dans Node.jsnous utilisons le .locationparamètre pour obtenir l'emplacement / l'url de l'objet.

Une idée comment faire cela en utilisant python 3.8?

Réponses

2 Marcin Nov 24 2020 at 05:40

L'url des objets S3 a un format connu et suit un accès de style hébergé virtuel :

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

Ainsi, vous pouvez construire vous-même l'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})
}