Amazon web services 如何在cloudfront请求中使用boto3 python 3.8提取承载令牌并在另一个查询中使用
如何在传入的cloudfront请求中提取承载令牌并在另一个get请求中使用它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.
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