amazon-web-services - API 网关调用我的 lambda 函数的旧版本
问题描述
我有一个从浏览器调用的 lambda 函数。我知道这是有效的,因为响应是正确的。在我的 lambda 中,我想写入一个发电机表,所以我更新了我的函数以包含这个逻辑。
当我在 lambda 控制台中测试我的函数时,它按预期工作。当从浏览器(通过 API 网关)调用 lambda 时,它不会执行我添加的任何新代码。
这是我的代码:
#set-up table connection
dynamodb = boto3.resource('dynamodb', region_name='us-east-1')
table = dynamodb.Table('XXXX')
tString = datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S")
#print("Received event: " +
# json.dumps(event, indent=2))
#recieve parameters
if 'userid' in event:
userid = event['userid']
else:
userid = 'nothing'
if 'token' in event:
token = event['token']
else:
token = 'nothing'
if 'appid' in event:
appid = event['appid']
else:
appid = 'connection'
response = table.put_item(
Item = {
'ID': userid,
'token': 'test2',
'appid': 'test2',
'authApp': 'test2',
'authUser': 'test2'
})
return userid
解决方案
您是否通过 API Gateway 调用您的 Lambda?如果是这样,请检查您在 API Gateway 中访问的端点的 Lambda 集成,并查看 Lambda 函数的版本/别名是否是硬编码的。您可以通过查看 API Gateway 方法的集成请求部分中的“Lambda 函数”的值来找到它:
Lambda Function: my_function:dev
在上面的示例中,这意味着您的 API 网关正在调用“my_function”lambda 的“dev”版本。
然后在 Lambda 控制台中检查您在控制台中调用的版本/别名(具有最近 DynamoDB 更改的版本/别名)是否与 API 网关正在调用的版本/别名匹配。
我花了一两天的时间把头撞在键盘上,试图弄清楚为什么我的更新没有被执行以意识到 API 网关指向的是我的函数的不同/旧版本。
推荐阅读
- java - 冰雹:#1-#200 循环
- metpy - 虹吸 NCSS 返回 nan 值
- r - Shiny中基于向量的动态输入
- c# - Microsoft.Office.Interop.Excel 14.0.0.0 与 MS Office 2019 的兼容性
- reactjs - 将外部数据传递给现有的 React 组件
- html - 通过 iframe 中的触摸禁用水平滚动
- java - jstat 和 jcmd 对元空间内存给出不同的答案
- python - 如何解决“azure.common.AzureHttpError: This request is not authorized to perform this operation.ErrorCode: AuthorizationFailure”
- python-3.x - 有什么方法可以从 docker 容器中获取 EC2 实例 ip?
- php - 如何使用 mysqli 从两个不同的表中创建一个搜索字段?