簡體   English   中英

從 S3 中刪除 object 時觸發 Lambda function

[英]Trigger Lambda function when object is deleted from S3

我有一個 SFTP 服務器和 Lambda function。 Lambda function 是在 object 被上傳到 S3 並且 ZA8CFDE6331BD59EB2AC96F8911C4B6 自動上傳到 SFTP 服務器時觸發的。 (我正在使用 pysftp)

是否可以創建一個 Lambda function ,一旦 object 從 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)
    TMP_FILE_NAME = '/tmp/' +FILE_NAME

    # Download the file/s from the event (extracted above) to the tmp location
    s3.download_file(BUCKET_NAME, KEY, TMP_FILE_NAME)

    with pysftp.Connection(host=myHostname, username=myUsername, password=myPassword, cnopts=cnopts) as sftp:
      with sftp.cd('data/uploads'):
        localFilePath = TMP_FILE_NAME
        sftp.remove(localFilePath)

您可以使用事件類型為s3:ObjectRemoved:*的 S3 事件並觸發 Lambda 函數。

https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-how-to-event-types-and-destinations.html

如果您想在 S3 上傳時使用相同的 function,您可以在event function get like eventName': 'ObjectCreated:Put eventName': 'ObjectRemoved:Delete

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM