【发布时间】:2020-02-06 02:49:47
【问题描述】:
我正在尝试使用 AWS Lambda 从 S3 检索具有特定前缀的文件列表。我将 Lambda 与boto3-1.9.244(最新版本)捆绑在一起。当我运行 Lambda 时,我收到一个关于 S3 资源分配的SyntaxError,尽管它可能与 Boto3 会话有关。
我使用的是Python 3.6,AWS Lambda 使用的是boto3-1.9.221 和botocore-1.12.221。当我在不捆绑最新版本的 boto3 的情况下运行代码时,它可以工作。我目前的解决方案是简单地将 boto3-1.9.221 与 lambda 代码而不是最新版本的 boto3 捆绑在一起。
import boto3
s3 = boto3.resource('s3')
我希望它创建一个 s3 资源,但我收到此错误:
invalid syntax (_base.py, line 414): SyntaxError
Traceback (most recent call last):
File "/var/task/lambda_function.py", line 20, in lambda_handler
s3 = boto3.resource('s3')
File "/var/task/boto3/__init__.py", line 100, in resource
return _get_default_session().resource(*args, **kwargs)
File "/var/task/boto3/session.py", line 389, in resource
aws_session_token=aws_session_token, config=config)
File "/var/task/boto3/session.py", line 263, in client
aws_session_token=aws_session_token, config=config)
File "/var/task/botocore/session.py", line 839, in create_client
client_config=config, api_version=api_version)
File "/var/task/botocore/client.py", line 80, in create_client
cls = self._create_client_class(service_name, service_model)
File "/var/task/botocore/client.py", line 110, in _create_client_class
base_classes=bases)
File "/var/task/botocore/hooks.py", line 356, in emit
return self._emitter.emit(aliased_event_name, **kwargs)
File "/var/task/botocore/hooks.py", line 228, in emit
return self._emit(event_name, kwargs)
File "/var/task/botocore/hooks.py", line 211, in _emit
response = handler(**kwargs)
File "/var/task/boto3/utils.py", line 61, in _handler
module = import_module(module)
File "/var/task/boto3/utils.py", line 52, in import_module
__import__(name)
File "/var/task/boto3/s3/inject.py", line 15, in <module>
from boto3.s3.transfer import create_transfer_manager
File "/var/task/boto3/s3/transfer.py", line 127, in <module>
from s3transfer.exceptions import RetriesExceededError as \
File "/var/task/s3transfer/__init__.py", line 134, in <module>
import concurrent.futures
File "/var/task/concurrent/futures/__init__.py", line 8, in <module>
from concurrent.futures._base import (FIRST_COMPLETED,
File "/var/task/concurrent/futures/_base.py", line 414
raise exception_type, self._exception, self._traceback
^
SyntaxError: invalid syntax
【问题讨论】:
-
是的,它应该可以工作。您能否向我们展示更多您的代码(最好是Minimal, Complete, and Verifiable example),以便我们尝试重现您的情况?
标签: amazon-web-services amazon-s3 aws-lambda python-3.6 boto3