Ich versuche google's people api auf aws Lambda zu verwenden. Da die api erfordert oauth2 Ich versuchte, das oauth2 Token lokal zu holen und übertragen sie dann auf aws lambda:Oauth2 google Leute api auf aws Lambda
speichere ich die Geheimnisse mit dieser Funktion:
from oauth2client.file import Storage
from oauth2client import client, tools
def get_credentials():
credential_path = os.path.join(SCRIPT_DIR, 'people-api-secret.json')
store = Storage(credential_path)
credentials = store.get()
if not credentials or credentials.invalid:
flow = client.flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES)
flow.user_agent = APPLICATION_NAME
credentials = tools.run_flow(flow, store)
print('Storing credentials to ' + credential_path)
return credentials
Dann überweise ich people-api-secret.json
aws Lambda die serverless mit Rahmen. Aber wenn ich versuche, das Geheimnis auf Lambda zu laden, gibt store.get()
None
zurück. Die Datei ist wirklich auf AWS (os.path.isfile(credential_path)
gibt True
zurück).
Ist es nicht möglich, diese Geheimnisse auf einem anderen Computer/IP-Adresse zu kopieren? Wenn nicht: Was wäre der "minimale Weg", um dies zum Laufen zu bringen, ohne den "flüggen Weg" zu machen, der z.B. here
aktualisieren Fand heraus, dass es ein einfacher Fehler auf Lambda „Zugriff verweigert“: print(open(credential_path).read())
ergibt [Errno 13] Permission denied: '/var/task/people-api-secret.json'
. Ich denke diese Variablen sollten in die Umgebung gebracht werden, anstatt aus der Datei gelesen zu werden?
Stellen Sie sicher, dass Sie Ihrer json-Datei die richtige Berechtigung (chmod) erteilt haben, bevor Sie Ihre Lambda-Funktion bereitstellen. Wenn Sie diese Datei zur Laufzeit herunterladen, versuchen Sie, die Anmeldeinformationen im Verzeichnis/tmp dir: '/tmp/people-api-secret.json' zu speichern. Dies ist der einzige Befehl, mit dem Sie Dateien in einen Lambda-Container schreiben können. –