如何从篮子中获取最后一个文件名或文件 S3 随着活动 triggered lambda
我是一家在服务中的新手 AWS 我只有一周的经验,使用较短的架构工作,我的要求是在安装事件触发器后立即将新文件加载到特定桶中时,我的要求 Lambda 必须获取有关最后一个文件的详细信息,例如创建的名称,大小和日期。
源每次将此文件加载到新文件夹中并调用当前日期文件夹。
到目前为止,我可以破解如何创建我的功能 Lambda 并听触发事件。
这是我的代码。
在这里,我知道它将是今天的日期,所以我使用
, 得到确切的 KEY, 但文件名始终是不同的。 虽然我知道它将是一个带有后缀的文本文件 .txt, 我无法围绕如何从触发器获取最后一个下载的文件和其他详细信息的问题。
源每次将此文件加载到新文件夹中并调用当前日期文件夹。
到目前为止,我可以破解如何创建我的功能 Lambda 并听触发事件。
这是我的代码。
import boto3
import botocore
import datetime
import logging
def lambda_handler/event, context/:
logging.info/'Start function'/
s3 = boto3.resource/'s3'/
DATE = datetime.datetime.today//.strftime/'%Y-%m-%d'/
BUCKET_NAME = 'monkey-banana-dev'
KEY = '/banana/incoming/daily/{}'.format/DATE/
logging.info/'Getting file from {}'.format/KEY//
try:
s3.Bucket/BUCKET_NAME/.download_file/KEY, 'name_of_my_file'/
except botocore.exceptions.ClientError as e:
if e.response['Error']['Code'] == "404":
print/"The object does not exist."/
else:
raise
在这里,我知道它将是今天的日期,所以我使用
datetime
, 得到确切的 KEY, 但文件名始终是不同的。 虽然我知道它将是一个带有后缀的文本文件 .txt, 我无法围绕如何从触发器获取最后一个下载的文件和其他详细信息的问题。
没有找到相关结果
已邀请:
3 个回复
石油百科
赞同来自:
http://docs.aws.amazon.com/lam ... 3-put
, 它包含钥匙 "Records", 这是一个列表。
您可以过滤条目 eventName 'ObjectCreated:Put', 然后按键对列表进行排序 "eventTime", 获取有关事件的最新数据。
裸奔
赞同来自:
http://docs.aws.amazon.com/lam ... 3-put
您需要做的是使用该对象
活动
, 它传输到该功能。 这包含链接中列出的详细信息。 正如您在链接的示例中看到的,则需要访问
钥匙
. 它将包含一个完整路径,包括指定的日期,因为密钥是文件的完整路径。
要帮助调试它,请始终使用该功能将事件值打印到控制台
打印
在 Python.
小明明
赞同来自:
一个例子-
出口-
heavyjob/EMPMAST/20190524-165352044.csv
heavyjob/EMPMAST/20190529-153011532.csv
heavyjob/EMPMAST/LOAD00000001.csv
您可以使用文件的名称
在
或者