使用 Python 在 AWS Lambda 上出现前导斜杠问题的 FileNotFoundError

Tra*_*VOX 3 python amazon-s3 aws-lambda

我的开发环境是一台 Windows 机器。当尝试从本地 S3 下载文件时,它没有问题。但是,当我将函数加载到 Lambda 时,我收到一个FileNotFoundError错误,这是由 Lambda 要求文件键中的前导斜杠引起的。

这在本地有效,但在 Lambda 上无效...

s3 = boto3.resource('s3')
new_file_key = os.path.join('tmp', file_name)
s3.Bucket('bucketname').download_file(file_key, new_file_key)
Run Code Online (Sandbox Code Playgroud)

这适用于 Lambda,但不适用于本地...

s3 = boto3.resource('s3')
new_file_key = os.path.join('/tmp', file_name)
s3.Bucket('bucketname').download_file(file_key, new_file_key)
Run Code Online (Sandbox Code Playgroud)

处理这个问题的最简单方法是什么?

Nic*_*zer 5

听起来您希望将文件下载到

  • C:\tmp 在窗户上
  • /tmp 在你的 lambda 容器(linux)上

使用此 SO 答案作为参考,以下内容应以与平台无关的方式运行:

s3 = boto3.resource('s3')
new_file_key = os.path.abspath(os.path.join(os.sep, 'tmp', file_name))
s3.Bucket('bucketname').download_file(file_key, new_file_key)
Run Code Online (Sandbox Code Playgroud)