[英]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 函數。
如果您想在 S3 上傳時使用相同的 function,您可以在event
function get like eventName': 'ObjectCreated:Put
eventName': 'ObjectRemoved:Delete
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.