Python 3.x 如何在python3.6的AWS Lambda中存储和访问microsoft office365帐户令牌

Python 3.x 如何在python3.6的AWS Lambda中存储和访问microsoft office365帐户令牌,python-3.x,aws-lambda,office365api,bearer-token,aws-lambda-layers,Python 3.x,Aws Lambda,Office365api,Bearer Token,Aws Lambda Layers,我已经压缩并上传了一个python库O365,用于访问AWS Lambda层中的MS outlook日历。我可以导入它,但问题是授权。当我在本地测试它时,使用filesystemtokenbackend生成承载令牌并将其存储在本地txt文件中 但当我使用层将其加载到AWS Lambda中时,它再次要求复制粘贴URL进程,该进程无法从层令牌文件中获取。 我尝试了FireSystemTokenBackend,但也未能成功配置。我在本地测试功能时使用了这个 我的问题是如何使用在本地生成的令牌文件存储和

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

但当我使用层将其加载到AWS Lambda中时,它再次要求复制粘贴URL进程,该进程无法从层令牌文件中获取。 我尝试了FireSystemTokenBackend,但也未能成功配置。我在本地测试功能时使用了这个


我的问题是如何使用在本地生成的令牌文件存储和验证我的帐户。因为在AWS lambda中,input()功能在运行时抛出错误如何将该令牌文件保存在aws lambda中,并在每次不进行身份验证的情况下使用它?

我也面临同样的问题。lambda文件系统是临时的,因此每次运行函数时都需要执行autenticate过程,o365库将请求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()

我尝试过你的方法,但似乎令牌需要正确编码。下面是使用这种方法时出现的错误。你找到避免这个问题的方法了吗{“errorMessage”:“'utf-8'编解码器无法解码第4位的字节0xf0:无效的继续字节”,“errorType”:“UnicodeDecodeError”…``嗨,RenauV,我没有收到那个错误。我只将令牌文件以纯文本形式上传到一个bucket,这就是为什么不需要对其进行解码。我在bucket本身上使用IAM角色设置了安全性。