【发布时间】:2018-02-01 18:14:03
【问题描述】:
我对 AWS 服务非常陌生,并且只有一周的无服务器架构经验,我的要求是在将新文件上传到特定存储桶时触发事件,一旦设置了事件触发器,我的 Lambda 应该得到最新文件的详细信息,例如名称、大小和创建日期。
源每次都将这个文件上传到一个新文件夹中,并用当前日期命名文件夹。
到目前为止,我能够破解如何创建我的 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 后缀的文本文件,但我无法解决如何从触发器中获取最新上传文件的名称和其他详细信息。
【问题讨论】:
-
您可以在此处找到来自事件的示例数据:docs.aws.amazon.com/lambda/latest/dg/…
-
@T4rk1n 觉得它没多大用处,我对 AWS 很陌生。
标签: python python-3.x amazon-web-services amazon-s3 aws-lambda