如何解决AWS S3 Object Lambda函数无效令牌错误?



我正在测试Python Amazon S3 Object Lambda函数,当执行时间超过60s时,它给出了无效令牌错误。附上样例代码和错误消息。

import boto3
import json
import struct
from botocore.session import Session
from botocore.config import Config
import time
def lambda_handler(event, context):
print('event', event)
object_get_context = event["getObjectContext"]
request_route = object_get_context["outputRoute"]
request_token = object_get_context["outputToken"]
s3_url = object_get_context["inputS3Url"]

s = Session()
s3 = s.create_client('s3', config=Config(connect_timeout=300, read_timeout=300, retries={'max_attempts': 1}))


print("start")
time.sleep(60)
print("sleep for 60s")

s3.write_get_object_response(
Body=b"123",
RequestRoute=request_route,
RequestToken=request_token)
return {'status_code': 200}

[ERROR] ClientError: An error occurred (ValidationError) when calling the WriteGetObjectResponse operation: Invalid token

当我将睡眠时间更改为50s时,它执行成功。我已经改变了客户端超时和lambda超时。我猜可能有一些其他的参数控制这个,但我不知道。

这是AWS S3对象Lambda(不是Lambda本身)的约束

S3 Object Lambda允许最多60秒的时间将完整的响应流式传输给其调用者

相关内容

  • 没有找到相关文章

最新更新