[PYTHON] Ausgabe der zeitlich begrenzten S3-URL mit boto3 (mit Bestätigung der Dateiexistenz)

Sie können eine zeitlich begrenzte URL mit "generate_presigned_url" angeben. Es besteht jedoch das Problem, dass Sie auch einen Schlüssel erstellen können, für den das Objekt nicht vorhanden ist. Daher habe ich versucht, eine zeitlich begrenzte URL auszugeben, nachdem ich überprüft habe, ob das Objekt tatsächlich mit get_object vorhanden ist.

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 )
	

Wenn Sie get_object für ein nicht vorhandenes Objekt ausführen, erhalten Sie einen "ClientError". Wenn das Objekt mit "try ~ außer" nicht vorhanden ist, wird der Prozess beendet, ohne generate_presigned_url auszuführen.

Recommended Posts

Ausgabe der zeitlich begrenzten S3-URL mit boto3 (mit Bestätigung der Dateiexistenz)
Generieren Sie eine mit S3 signierte URL mit boto
[Python] Zusammenfassung der S3-Dateivorgänge mit boto3
S3 Uploader mit Boto
S3-Betrieb mit Python Boto3
Verwenden Sie boto3, um zu S3 zu gelangen
Verwenden Sie boto, um die Datei von S3 herunterzuladen.
Überprüfen Sie die Existenz der Datei mit Python
Geben Sie eine signierte URL mit AWS SQS aus
Versuchen Sie die serverseitige Verschlüsselung von S3 mit boto3
[AWS] Verknüpfen Sie Lambda und S3 mit boto3
S3 serverseitige Verschlüsselung SSE mit Python boto3
[AWS S3] Bestätigung des Vorhandenseins von Ordnern in S3