Clasificación de objetos de AWS S3 con Lambda
Este artículo ayuda a mover objetos recién cargados a sus respectivos buckets (depositos) S3 con la ayuda de la función Lambda usando Python.
Paso 1:
Cree tres buckets (depositos) de la siguiente manera,
- Deposito común
- Deposito de jpg
- Deposito de mp3
Paso 2:
Cree la función Lambda con el siguiente código:
Código:
import boto3 import urllib.parse import jsons3 = boto3.resource('s3') s3_bucket=boto3.client('s3') def lambda_handler(event, context): source_bucket = event['Records'][0]['s3']['bucket']['name'] jpg_bucket = s3.Bucket('jpg-bucket--001') mp3_bucket = s3.Bucket('mp3-bucket--001')source_bucket = s3.Bucket(source_bucket)for objects in source_bucket.objects.all(): print(objects)if objects.key.endswith('.jpg'): print(f"{objects.key} to jpg bucket") copy_object = jpg_bucket.Object(objects.key) copy_object.copy({'Bucket': objects.bucket_name, 'Key': objects.key}) s3_bucket.delete_object(Bucket=objects.bucket_name, Key=objects.key) elif objects.key.endswith('.mp3'): print(f"{objects.key} to mp3 bucket")copy_object = mp3_bucket.Object(objects.key) copy_object.copy({'Bucket': objects.bucket_name, 'Key': objects.key}) s3_bucket.delete_object(Bucket=objects.bucket_name, Key=objects.key) return { 'statusCode': 200, 'body': json.dumps('Successfully moved jpg & mp3 files then deleted them from source bucket') }
Paso 3:
Agregue el disparador Lambda como depósito s3, luego seleccione el depósito común de las opciones
Etapa 4:
Con el rol básico de ejecución de lambda, esta función no podrá hacer su trabajo. Por lo tanto, agregue la política adecuada para que esta función funcione.
Ejemplo de política a continuación:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:*",
"s3-object-lambda:*",
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "*"
}
]
}
La política anterior tiene acceso total a S3 y acceso limitado a los registros de CloudWatch para todos los recursos de la cuenta, esto se proporcionó solo con el propósito de este tutorial.
Como práctica recomendada, siempre defina permisos para recursos específicos y limite los permisos tanto como sea posible.
Paso 5:
· Ahora agregue un archivo con la extensión .jpg al depósito común y verifique el depósito jpg, el archivo .jpg se copiará en ese depósito y el mismo archivo se eliminará del depósito de origen, que es el depósito común.
· Si repite lo mismo con el archivo de extensión .mp3, se copiará en el depósito de mp3 y se eliminará del depósito común.
Pantalla de resultados:
- Archivo subido en depósito común
- Archivo copiado en el depósito jpg
- Archivo copiado al depósito de mp3
- Archivo eliminado del depósito de origen
Con la función anterior, puede modificar el código de acuerdo con sus necesidades y convertirlo en una solución más eficiente para cumplir con sus sólidos objetivos organizacionales.