如何从Lambda(从浏览器调用)连接到发电机?

时间:2019-05-24 18:20:47

标签: amazon-web-services aws-lambda amazon-dynamodb

我从浏览器调用了lambda函数。我知道这是有效的,因为响应是正确的。在我的lambda中,我想写入发电机表。在lambda控制台中测试lambda时,它可以工作。从浏览器调用lambda时,它会跳过对dynamo的编写,但会完成其余功能。

#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

1 个答案:

答案 0 :(得分:1)

您是否通过API网关调用Lambda?如果是这样,请检查您在API Gateway中访问的端点的Lambda集成,并查看Lambda函数的版本/别名是否经过硬编码。您可以通过在API网关方法的“集成请求”部分中查看“ Lambda函数”的值来找到它:

#include <sstream>
#include <string>
// ...
std::string save_into_string(Ciphertext const& ciphertext) {
    std::ostringstream s;
    ciphertext.save(s);
    return s.str();
}

在上面的示例中,这意味着您的API网关正在调用“ my_function” lambda的“ dev”版本。

然后在Lambda控制台中检查您在控制台中调用的版本/别名(具有最近DynamoDB更改的版本)是否与API网关正在调用的版本/别名匹配。

我花了一两天时间把头砸在键盘上,试图弄清楚为什么不执行我的更新才能意识到API网关指向的是我的功能的其他版本/旧版本。