Amazon web services 如何在cloudfront请求中使用boto3 python 3.8提取承载令牌并在另一个查询中使用

Amazon web services 如何在cloudfront请求中使用boto3 python 3.8提取承载令牌并在另一个查询中使用,amazon-web-services,aws-lambda,aws-lambda-edge,Amazon Web Services,Aws Lambda,Aws Lambda Edge,如何在传入的cloudfront请求中提取承载令牌并在另一个get请求中使用它 curl -X GET \ https://domain/api/files/7d0ab8ef-9061-4458--de79a2c9e436 \ -H 'Authorization: Bearer eTA' \ -H 'Cache-Control: no-cache' \ -H 'Postman-Token: token' 在以下请求中使用承载令牌作为jwt in phython domain.

如何在传入的cloudfront请求中提取承载令牌并在另一个get请求中使用它

curl -X GET \
  https://domain/api/files/7d0ab8ef-9061-4458--de79a2c9e436 \
  -H 'Authorization: Bearer eTA' \
  -H 'Cache-Control: no-cache' \
  -H 'Postman-Token: token'
在以下请求中使用承载令牌作为jwt

 in phython domain.com/service/api/files/7d0ab8ef-9061-4458--de79a2c9e436
这给了我以下的回应:

我的lambda代码如下所示

import json

def lambda_handler(event, context):
    # TODO implement
    request = event['Records'][0]['cf']['request']
    print(request['headers'])
    print(response)

您可以将此添加为Lambda@Edge用于查看器请求事件的函数

Lambda@Edge将如下所示

import json
import requests

def lambda_handler(event, context):

    request = event['Records'][0]['cf']['request']
    print (request)
    print(request['headers'])
    print(request['origin']['s3']['domainName'])
    token = request['headers']['cookie'][0]['value'].partition("=")[2]
    print (token)
    print(type(request['uri']))
    cosumer_id = request['uri'].rpartition('/')[-1]
    print (cosumer_id)

    #Take the token and send it somewhere
    token_response = requests.get(url = 'https://url/api/files/'  + cosumer_id, headers = {'Authorization': 'Bearer ' + token}) 

    print (token_response.request)
    print (token_response)
    print (token_response.text)
    data = token_response.json() 
    objectKey = data["objectKey"]
    print (objectKey)


    return request
假设您使用的是请求库,那么您将能够像这样检索响应

object = token_response.objectKey

第二个请求是在什么时候发生的?在获取承载令牌之后,将立即出现第二个get请求,该请求将为我提供json responseOK,在它到达源端点之前?是的,在到达源端点之前,如果我只需单击test在lambda上运行,我如何测试该代码,它给了我一个错误,哪个错误?您将需要一个示例事件来测试它:我在问题中又添加了一件事,如何从第二个请求ObjectKeys中获取对象密钥我们还导入了请求模块,但仍然收到错误“errorMessage”:“无法导入模块‘lambda_函数’:没有名为‘requests’的模块”,从botocore.Vendor导入请求中获取
怎么样?
object = token_response.objectKey