如何在python3.6的AWS Lambda中存储和访问Microsoft Office365帐户令牌

问题描述 投票:0回答:1

我已压缩并上传了一个Python库O365,用于访问AWS Lambda-Layer内部的MS Outlook日历。我可以导入它,但是问题是授权。当我在本地测试时,使用FileSytemTokenBackend生成了承载令牌并将其存储在本地txt文件中。

但是当我使用图层将其加载到AWS Lambda时,它再次要求复制粘贴URL流程,而该流程无法从图层令牌文件中获取。我已经尝试过FireSystemTokenBackend

,但这也无法成功配置。测试功能时,我已在本地使用此Token storage docs

我的问题是如何使用本地生成的令牌文件存储和验证我的帐户。因为在AWS lambda中,input()

功能在运行时引发错误。 我如何将该令牌文件保留在aws lambda中并在不进行身份验证的情况下使用它?

我已压缩并上传了一个Python库O365,用于访问AWS Lambda-Layer内部的MS Outlook日历。我可以导入它,但是问题是授权。当我在本地测试时......>

python-3.x aws-lambda office365api bearer-token aws-lambda-layers
1个回答
0
投票

我也遇到过同样的问题。 lambda文件系统是临时的,因此,每次运行该函数时,您都需要执行自动处理,而o365 lib将要求提供URL。因此,请尝试将令牌(o365_token.txt)保存在S3中,而不是将其保存在lambda文件系统中,并使用此令牌进行身份验证。希望这段代码对您有所帮助:

import boto3
bucket_name = 'bucket_name' 

# replace with your bucket name
filename_token = 'o365_token.txt' 

# replace with your AWS credentials
s3 = boto3.resource('s3',aws_access_key_id='xxxx', aws_secret_access_key='xxxx') 

# Read the token in S3 and save to /tmp directory in Lambda 
s3.Bucket(bucket_name).download_file(filename_token, f'/tmp/{filename_token}') 

# Read the token in /tmp directory
token_backend = FileSystemTokenBackend(token_path='/tmp', 
token_filename=filename_token)

# Your azure credentials
credentials = ('xxxx', 'xxxx')
account = Account(credentials,token_backend=token_backend)

# Then do the normal authentication process and include the refresh token command
if not account.is_authenticated:
    account.authenticate()
account.connection.refresh_token()
© www.soinside.com 2019 - 2024. All rights reserved.