Je dois convertir un fichier .zip de S3 en fichier .gzip en utilisant boto3 python dans une fonction AWS lambda. Des suggestions sur la façon de faire cela?Utiliser la fonction AWS lambda pour convertir le fichier S3 de zip en gzip en utilisant boto3 python
Voici ce que j'ai jusqu'à présent:
import json
import boto3
import zipfile
import gzip
s3 = boto3.resource('s3')
def lambda_handler(event, context):
bucket = event['Records'][0]['s3']['bucket']['name']
key = event['Records'][0]['s3']['object']['key']
try:
s3Obj = s3.Object(bucket_name=bucket, key=key)
response = s3Obj.get()
data = response['Body'].read()
zipToGzip = gzip.open(data, 'wb')
zipToGzip.write(s3.upload_file(bucket, (s3 + '.gz')))
zipToGzip.close()
except Exception as e:
print(e)
print('Error getting object {} from bucket {}. Make sure they exist and your bucket is in the same region as this function.'.format(key, bucket))
raise e
Plus de détails et votre code actuel aiderait. Voulez-vous re-télécharger le fichier sur S3 gziped, ou juste faire quelque chose avec lui localement gzippé? Pourquoi est-ce que ça doit être une fonction lambda? Voulez-vous dire python lambda, ou AWS lambda? – Lee
Je veux dire AWS Lambda Fonction utilisant Python comme il est supporté maintenant. J'ai un fichier sur S3 qui est au format .zip, j'ai besoin de le changer au format .gzip. – Scotty
Super, merci pour la clarification. Que se passe-t-il avec le code actuel? Est-ce qu'il soulève une exception, ou ne fait pas ce que vous voulez ...? – Lee