EDIT: Ich glaube, diese Rückverfolgung stammt aus einer Art von Problem mit den Abhängigkeiten. Die Verwendung von pip, um die Pakete zu aktualisieren, hat nicht funktioniert, aber ich habe einen neuen Ordner erstellt und von Grund auf neu installiertKann nicht s3 Ressource/Client in Boto3
Ich bin ein Python-Anfänger, also kämpfe ich um ein AWS Lambda debuggen ich schreibe.
Ich habe es auf diese Codezeile s3_client = botoSession.resource('s3')
eingegrenzt, die eine lange Rückverfolgung mit Syntaxfehler gibt: ungültige Syntax. Die Variable botoSession ist nur für die Anmeldeinformationen - botoSession = boto3.session.Session(aws_access_token, aws_secret_access_token)
.
Ich habe auch versucht s3_client = boto3.client('s3')
, s3_client = boto3.resource('s3')
, s3_client = botoSession.resource('s3')
.
Wenn ich botoSession.client('ses', region)
verwendet habe, hatte ich keine Probleme beim Senden von E-Mails.
Ich fand Error: client = boto3.client('s3') | AWS Elastic Beanstalk Worker Environment, die ein ähnliches Problem schien, aber es schien ziemlich alt zu sein, und ich konnte nicht herausfinden, was die Lösung war. Ich habe versucht, import sys sys.path = [p for p in sys.path if not p.endswith('futures-3.0.3-py3.4.egg')]
an den Anfang meiner Datei hinzuzufügen, die nicht zu funktionieren schien.
Die gesamte Rückverfolgungs ist wie folgt:
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
Sind die Anmeldeinformationen für den Fehler/die Ausnahme verantwortlich? Ich verstehe, dass ich die Anmeldeinformationen nicht fest codieren sollte, aber ich habe versucht, nur ein funktionierendes Beispiel zu erstellen. Ich habe den Code ausprobiert, den Sie vorgeschlagen haben, aber ich habe immer noch den gleichen/ähnlichen Traceback. –
Wenn Sie nicht auf EC2 laufen, können Sie diese Anmeldeinformationen als Umgebungsvariablen festlegen. Auf diese Weise funktioniert der gleiche Code in jeder Umgebung. –