Émettre une URL limitée dans le temps S3 avec boto3 (avec confirmation de l'existence du fichier)

Vous pouvez émettre une URL limitée dans le temps avec generate_presigned_url, mais il y a un problème que vous pouvez également créer une clé pour laquelle l'objet n'existe pas. J'ai donc essayé d'émettre une URL limitée dans le temps après avoir vérifié si l'objet existe réellement avec get_object.

import boto3
import botocore
import logging
logger = logging.getLogger()

def create_presigned_url( bucket_name, key ):
	s3 = boto3.client('s3')
	try:
		s3.get_object(
			Bucket = bucket_name,
			Key = key
		)
		url = s3.generate_presigned_url(
			ClientMethod = 'get_object',
			Params = {
				Bucket = bucket_name,
				Key = key
			},
			ExpiresIn = 3600,
			HttpMethod = 'GET'
		)
		return url
	except botocore.exceptions.ClientError as e:
		logger.warning(e)
		return 'File ' + bucket_name + '/' + key + 'not found'
		

bucket_name = 'BUCKET_NAME'
key = 'S3_OBJECT_KEY'
create_presigned_url( bucket_name, key )
	

Si vous exécutez get_object sur un objet inexistant, vous obtiendrez une ClientError. Donc, si l'objet n'existe pas avec try ~ except qui l'utilise, le processus se termine sans exécuter generate_presigned_url.

Recommended Posts

Émettre une URL limitée dans le temps S3 avec boto3 (avec confirmation de l'existence du fichier)
Générer une URL signée S3 avec boto
[Python] Résumé des opérations sur les fichiers S3 avec boto3
Téléchargeur S3 avec boto
Opération S3 avec python boto3
Utilisez boto3 pour accéder à S3
Utilisez boto pour télécharger le fichier depuis S3.
Vérifier l'existence du fichier avec python
Émettre une URL signée avec AWS SQS
Essayez le chiffrement côté serveur de S3 à l'aide de boto3
[AWS] Associez Lambda et S3 à boto3
Chiffrement côté serveur S3 SSE avec Python boto3
[AWS S3] Confirmation de l'existence de dossiers sur S3