删除对象事件触发时,Lambda 不会将对象复制到另一个存储桶

问题描述

下面的 Lambda 与对象创建事件触发器一起工作得很好,但不会在删除对象事件时复制对象。打开版本控制(切换到带有标记删除而不是永久删除)不会改变它。 Lambda 角色附加了 arn:aws:iam::aws:policy/AmazonS3FullAccess 和 arn:aws:iam::aws:policy/AWSLambda_FullAccess 策略。 这个功能有什么问题?

import json
import boto3

# boto3 S3 initialization
s3_client = boto3.client("s3")


def lambda_handler(event,context):
   

   source_bucket_name = event['Records'][0]['s3']['bucket']['name']
   destination_bucket_name = source_bucket_name + '-glacier'

   print(f'copying from {source_bucket_name} to {destination_bucket_name}')
   print("Event :",event)

   # Filename of an object (with path)
   file_key_name = event['Records'][0]['s3']['object']['key']

   # copy Source Object
   copy_source_object = {'Bucket': source_bucket_name,'Key': file_key_name}

   # S3 copy object operation
   s3_client.copy_object(copySource=copy_source_object,Bucket=destination_bucket_name,Key=file_key_name,StorageClass='GLACIER')

   return {
       'statusCode': 200,'body': json.dumps('Hello from S3 events Lambda!')
   }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)