从 S3 中删除对象时触发 Lambda 函数
Trigger Lambda function when object is deleted from S3
我有一个 SFTP 服务器和 Lambda 函数。当对象上传到 S3 时会触发 Lambda 函数,对象会自动通过 SFTP 上传到 SFTP 服务器。 (我正在使用 pysftp)
是否可以创建一个 Lambda 函数,一旦对象从 S3 中删除就会触发并自动从服务器中删除它?
import pysftp,os,boto3
cnopts = pysftp.CnOpts()
cnopts.hostkeys = None
myHostname = os.environ.get('SFTP_HOST')
myUsername = os.environ.get('SFTP_USER')
myPassword = os.environ.get('SFTP_PASS')
s3 = boto3.client("s3")
def lambda_handler(event, context):
# Get the records for the triggered event
FILEOBJ = event["Records"][0]
BUCKET_NAME = str(FILEOBJ['s3']['bucket']['name'])
KEY = str(FILEOBJ['s3']['object']['key'])
FILE_NAME = os.path.basename(KEY)
with pysftp.Connection(host=myHostname, username=myUsername, password=myPassword, cnopts=cnopts) as sftp:
with sftp.cd('data/uploads'):
remote_file = FILE_NAME
sftp.remove(remote_file)
您可以使用事件类型为 s3:ObjectRemoved:*
的 S3 事件并触发 Lambda 函数。
如果您想使用与 S3 上传相同的功能,您可以在 event
中找到并使用 Lambda 函数的信息,例如 eventName': 'ObjectCreated:Put
或 eventName': 'ObjectRemoved:Delete
。
我有一个 SFTP 服务器和 Lambda 函数。当对象上传到 S3 时会触发 Lambda 函数,对象会自动通过 SFTP 上传到 SFTP 服务器。 (我正在使用 pysftp)
是否可以创建一个 Lambda 函数,一旦对象从 S3 中删除就会触发并自动从服务器中删除它?
import pysftp,os,boto3
cnopts = pysftp.CnOpts()
cnopts.hostkeys = None
myHostname = os.environ.get('SFTP_HOST')
myUsername = os.environ.get('SFTP_USER')
myPassword = os.environ.get('SFTP_PASS')
s3 = boto3.client("s3")
def lambda_handler(event, context):
# Get the records for the triggered event
FILEOBJ = event["Records"][0]
BUCKET_NAME = str(FILEOBJ['s3']['bucket']['name'])
KEY = str(FILEOBJ['s3']['object']['key'])
FILE_NAME = os.path.basename(KEY)
with pysftp.Connection(host=myHostname, username=myUsername, password=myPassword, cnopts=cnopts) as sftp:
with sftp.cd('data/uploads'):
remote_file = FILE_NAME
sftp.remove(remote_file)
您可以使用事件类型为 s3:ObjectRemoved:*
的 S3 事件并触发 Lambda 函数。
如果您想使用与 S3 上传相同的功能,您可以在 event
中找到并使用 Lambda 函数的信息,例如 eventName': 'ObjectCreated:Put
或 eventName': 'ObjectRemoved:Delete
。