編輯:我相信這個回溯源於某些與依賴關係的問題。使用pip升級軟件包不起作用,但我創建了一個新文件夾並從頭開始安裝,結果如下無法在boto3中創建s3資源/客戶端
我是Python新手,所以我正在努力調試我正在編寫的AWS Lambda。
我把它縮小到這行代碼s3_client = botoSession.resource('s3')
,這是一個長的回溯語法錯誤:無效語法。 botoSession變量僅用於憑證 - botoSession = boto3.session.Session(aws_access_token, aws_secret_access_token)
。
我也試過s3_client = boto3.client('s3')
,s3_client = boto3.resource('s3')
,s3_client = botoSession.resource('s3')
。
當我使用botoSession.client('ses', region)
我沒有問題發送電子郵件。
我發現Error: client = boto3.client('s3') | AWS Elastic Beanstalk Worker Environment似乎是一個類似的問題,但它似乎是相當古老的,我無法弄清楚解決方案是什麼。我嘗試將 import sys sys.path = [p for p in sys.path if not p.endswith('futures-3.0.3-py3.4.egg')]
添加到我的文件的頂部,但似乎沒有工作。
整個回溯如下:
Traceback (most recent call last):
File "smartsheetExporter.py", line 45, in <module>
s3_client = botoSession.resource('s3')
File "/Users/nihar/LocalDocs/PythonPractice/Smartsheet-Emailer-Lambda/boto3/session.py", line 389, in resource
aws_session_token=aws_session_token, config=config)
File "/Users/nihar/LocalDocs/PythonPractice/Smartsheet-Emailer-Lambda/boto3/session.py", line 263, in client
aws_session_token=aws_session_token, config=config)
File "/Users/nihar/LocalDocs/PythonPractice/Smartsheet-Emailer-Lambda/botocore/session.py", line 836, in create_client
client_config=config, api_version=api_version)
File "/Users/nihar/LocalDocs/PythonPractice/Smartsheet-Emailer-Lambda/botocore/client.py", line 65, in create_client
cls = self._create_client_class(service_name, service_model)
File "/Users/nihar/LocalDocs/PythonPractice/Smartsheet-Emailer-Lambda/botocore/client.py", line 90, in _create_client_class
base_classes=bases)
File "/Users/nihar/LocalDocs/PythonPractice/Smartsheet-Emailer-Lambda/botocore/hooks.py", line 227, in emit
return self._emit(event_name, kwargs)
File "/Users/nihar/LocalDocs/PythonPractice/Smartsheet-Emailer-Lambda/botocore/hooks.py", line 210, in _emit
response = handler(**kwargs)
File "/Users/nihar/LocalDocs/PythonPractice/Smartsheet-Emailer-Lambda/boto3/utils.py", line 61, in _handler
module = import_module(module)
File "/Users/nihar/LocalDocs/PythonPractice/Smartsheet-Emailer-Lambda/boto3/utils.py", line 52, in import_module
__import__(name)
File "/Users/nihar/LocalDocs/PythonPractice/Smartsheet-Emailer-Lambda/boto3/s3/inject.py", line 15, in <module>
from boto3.s3.transfer import create_transfer_manager
File "/Users/nihar/LocalDocs/PythonPractice/Smartsheet-Emailer-Lambda/boto3/s3/transfer.py", line 127, in <module>
from s3transfer.exceptions import RetriesExceededError as \
File "/Users/nihar/LocalDocs/PythonPractice/Smartsheet-Emailer-Lambda/s3transfer/__init__.py", line 134, in <module>
import concurrent.futures
File "/Users/nihar/LocalDocs/PythonPractice/Smartsheet-Emailer-Lambda/concurrent/futures/__init__.py", line 8, in <module>
from concurrent.futures._base import (FIRST_COMPLETED,
File "/Users/nihar/LocalDocs/PythonPractice/Smartsheet-Emailer-Lambda/concurrent/futures/_base.py", line 381
raise exception_type, self._exception, self._traceback
^
SyntaxError: invalid syntax
是否導致錯誤/異常的憑據?我明白,我不應該將這些憑證編入硬編碼,但是我正在嘗試將一個工作示例放在一起。我試過了你建議的代碼,但我仍然有相同/相似的回溯 –
當你不在EC2上運行時,你可以將這些憑證設置爲環境變量。這樣相同的代碼可以在任何環境下工作。 –