首页 > 解决方案 > 删除对象事件触发时,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!')
   }

标签: python-3.xamazon-web-servicesamazon-s3aws-lambdabotocore

解决方案


推荐阅读