私はawsラムダにgoogle's people apiを使用しようとしています。 APIはのOAuth2必要とするので、私はトークンローカルでのOAuth2をフェッチして、AWSのラムダに転送しようとした:awsラムダでGoogleの人々apiに
私はこの機能を備えた秘密を格納します。
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
その後、私はサーバーレスを使用して、AWSのラムダにpeople-api-secret.json
を転送しますフレームワーク。しかし、ラムダで秘密を読み込もうとすると、store.get()
はNone
を返します。ファイルは実際にAWSにあります(os.path.isfile(credential_path)
はTrue
を返します)。
これらの秘密を別のコンピュータ/ IPアドレスにコピーすることはできませんか?そうでない場合は、例えば、以下のような「本格的なやり方」をせずにこれを動作させる「最小限の方法」は何でしょうか? print(open(credential_path).read())
利回り[Errno 13] Permission denied: '/var/task/people-api-secret.json'
:それはシンプルだということが分かったhere
更新ラムダのエラーを「許可が拒否されました」。私はそれらの変数をファイルから読み込むのではなく、環境に入れるべきだと思いますか?
ラムダ機能を展開する前に、jsonファイルに適切な権限(chmod)を与えてください。このファイルを実行時にダウンロードする場合は、/ tmpディレクトリ: '/tmp/people-api-secret.json'に資格情報を保存してください。これは、ラムダコンテナにファイルを書き込むことができる唯一のディレクトリです。 –