标签: aws-lambda

带有Lambda的AWS Cognito,用于自定义验证

通过将AWS Lambda与Cognito结合使用,我们可以使用以下代码自动验证电子邮件。

event.response.autoConfirmUser = true;
event.response.autoVerifyEmail = true;
Run Code Online (Sandbox Code Playgroud)

如何在此处进行自定义请求验证?

就像我要在认知注册时发送PROMO CODE一样,那么我可以有一个代码来验证此Promo Code,并在无效Promocode时拒绝注册请求。

aws-lambda aws-cognito

2
推荐指数
1
解决办法
1060
查看次数

API网关:JSON 5+ MB给出错误“ 413,请求时间过长”

我有超过5MB的样本json,

不使用Lambda集成时,请尝试发布请求

413 Request Too Long
Run Code Online (Sandbox Code Playgroud)

如果我使用lambda集成,它会给

502 Internal server error
Run Code Online (Sandbox Code Playgroud)

请求未达到我的lambda函数

在响应标题中,出现以下错误:

X-Cache: Error from cloudfront
Run Code Online (Sandbox Code Playgroud)

如果我使用模拟服务,它将正常工作并给出200响应。

根据Api文档,它最多支持10MB。

我想在请求中获取此json。

有什么办法吗?

json amazon-web-services aws-lambda aws-api-gateway

2
推荐指数
1
解决办法
2183
查看次数

带有Lambda的Amazon Step Function,从Kinesis获取触发器

所以我想在Amazon AWS中创建一个简单的管道.我想使用由流生成的数据执行步骤函数,该流触发状态机的第一个lambda

我想做的是跟随.

输入数据由AWS Kinesis流式传输

此Kinesis流用作执行和写入S3 Bucket的lambda1的触发器.

这将触发(使用步骤函数)lambda2,它将读取给定存储桶中的内容并将其写入另一个存储桶

现在我想使用Amazon Step Function实现状态机.我创建了一个非常简单的状态机

  {
  "Comment": "Linear step function test",
  "StartAt": "lambda1",
  "States": {
    "lambda1": {
      "Type": "Task",
      "Resource": "arn:....",
      "Next": "lambda2"
    },
    "lambda2": {
      "Type": "Task",
      "Resource": "arn:...",
       "End": true
        }  
    }
}
Run Code Online (Sandbox Code Playgroud)

我想要的是,Kinesis应该触发第一个Lambda,一旦执行了step函数就会执行lambda 2.这似乎不会发生.即使从流中触发我的Lambda 1并写入S3存储桶,步骤功能也不会执行任何操作.我可以选择手动启动新执行并传递JSON作为输入,但这不是我正在寻找的工作流程

amazon-s3 amazon-kinesis aws-lambda aws-step-functions

2
推荐指数
1
解决办法
2319
查看次数

为什么即使已经调用了API网关回调,我的Lambda函数也会超时?

我有一个AWS API Gateway方法,可以将请求代理到AWS Lambda.但是,日志中的以下内容在三秒后出现错误:

转换前的端点响应体:{"errorMessage":"2017-09-05T16:30:49.987Z 922186c0-9257-11e7-9db3-51921d5597a2任务在3.00秒后超时"}

因此,我继续检查我的Node 6.10 AWS Lambda函数,看看它为何超时.我在每个函数调用之前和之后都添加了日志语句.令人惊讶的是,它完成了它应该做的所有事情:称为API网关回调,然后在数据库之后运行查询.所有需要0.6秒,据我所知,没有其他代码可以运行.然而,它似乎继续运行三秒钟的剩余时间,然后超时.(我想,这是因为我要打开与数据库的连接.)

我在callback调用之前和之后放置的日志语句表明该调用在不到半秒的时间内执行.然而,该响应似乎没有进入API网关,而三秒后的错误确实如此.

可能是什么原因,我该如何调试呢?

amazon-web-services node.js aws-lambda aws-api-gateway

2
推荐指数
1
解决办法
2905
查看次数

用户帐户未收到AWS Cognito电子邮件验证链接

在用户池中创建用户时,将使用临时密码发送用户邀请消息,但不会发送电子邮件验证消息。
我正在创建一个非常简单的设置以尝试AWS Cognito服务。这是我在AWS cognito中所做的事情,我逐步创建了一个用户池,如下所示:
1)您想为用户池命名什么?
-> testpool

2)您如何创建用户池?
->逐步进行设置

3)您希望最终用户如何登录?
->电子邮件地址或电话号码-允许电子邮件地址

4)您需要什么密码强度?
->最小长度= 6

5)是否要允许用户注册自己?
->允许用户注册

6)如果不使用管理员创建的用户帐户,应该多快过期?
->要过期的天数7

7)是否要启用多重身份验证(MFA)?
->关闭

8)您是否需要验证电子邮件或电话号码?
->电子邮件

9)您必须提供一个角色,以允许Amazon Cognito发送SMS消息
-> testpool-SMS-角色

10)您是否要自定义电子邮件验证消息?
->验证类型链接
->电子邮件主题=您的验证链接
->电子邮件=请单击下面的链接来验证您的电子邮件地址。{##验证电子邮件##}

11)是否要自定义用户邀请消息?
-> SMS消息=您的用户名是{username},临时密码是-> {####}。
->电子邮件主题=您的临时密码
->电子邮件=您的用户名是{username},临时密码是{####}。

12)您要自定义您的电子邮件地址吗?
->否

13)是否要为此用户池添加标签?
->否

14)您想记住用户的设备吗?
->否

15)哪些应用程序客户端可以访问该用户池?
->无(将从通用设置用户和组中的创建用户选项模拟)

16)是否要使用触发器自定义工作流程?
->否

17)查看页面-此页面显示我选择的内容的摘要 创建池

现在,在创建池后,一般设置用户和组,然后单击创建用户 。创建用户弹出窗口显示:
用户名(必填):myEmailAddress
向该新用户发送邀请?:检查
临时密码:留空
电话号码:空(不需要)将
电话号码标记为已验证?取消选中
电子邮件:myEmailAddress将
电子邮件标记为已验证?取消选中
单击“创建用户”

。通过amazonses.com将邮件发送到我的帐户,格式为no-reply@verificationemail.com,
主题为:您的临时密码
,消息为:您的用户名是somemailid@gmail.com,临时密码是agsjyk。
没关系

但是在之前的邮件之前,我没有收到任何验证邮件链接。

amazon-web-services amazon-cognito aws-lambda

2
推荐指数
2
解决办法
4209
查看次数

Amazon Lex-无法识别插槽类型同义词值

我创建了自定义广告位以接收是或否的值。我为yes,y,yah创建了yes的同义词。但这在lex bot输入期间无法正确识别。我做错了吗?请帮忙。

amazon-web-services aws-lambda amazon-lex

2
推荐指数
1
解决办法
570
查看次数

如何在aws lambda机器上安装ffmpeg?

我正在尝试在使用ffmpeg的aws lambda上运行节点js脚本.为此,我需要在机器上安装ffmpeg.

我看过文档,但我找不到如何连接到运行lambda的机器.

ffmpeg amazon-web-services aws-lambda

2
推荐指数
4
解决办法
3292
查看次数

将列表发送到DynamoDB时,ParameterVailidation失败

我在AWS Lambda上有一个简单的Python函数,该函数只是将一些数据放入DynamoDB表中,据我所知,我遵循的是Bot3文档中put_item()函数的正确格式。我收到以下似乎无法调试的错误:

"errorMessage": 
"Parameter validation failed:\nInvalid type for parameter 
Item.GSRResults.L[0], value: 3.8, type: <class 'float'>, valid types: <class 'dict'>
\nInvalid type for parameter Item.GSRResults.L[1], value: 3.4, type: <class 'float'>, valid types: <class 'dict'>\... snip...
\nInvalid type for parameter Item.GSRResults.L[9], value: 3.3, type: <class 'float'>, valid types: <class 'dict'>",
  "errorType": "ParamValidationError",
  "stackTrace": [
    [
      "/var/task/index.py",
      39,
      "upload_test",
      "Item=item"
    ], 
Run Code Online (Sandbox Code Playgroud)

这是Python函数:

def upload_test(event, context):
    if event['httpMethod'] == 'POST':
        info = event['body']
        item = info['Item']
        return respond(None, dynamo.put_item(
            TableName="TestResults",
            Item=item))
Run Code Online (Sandbox Code Playgroud)

这是我发送的JSON:

{
  "body": …
Run Code Online (Sandbox Code Playgroud)

python json amazon-web-services amazon-dynamodb aws-lambda

2
推荐指数
1
解决办法
4007
查看次数

使用python中的AWS Lambda将Post请求发送到外部API

我想每小时向外部API(https://example.com/api/jobs/test)发送一个帖子请求.

我使用的Lambda函数如下:

Handler: index.lambda_handler
python: 3.6
Run Code Online (Sandbox Code Playgroud)

index.py

import requests
def lambda_handler(event, context):
  url="https://example.com/api/jobs/test"
  response = requests.post(url)
  print(response.text) #TEXT/HTML
  print(response.status_code, response.reason) #HTTP
Run Code Online (Sandbox Code Playgroud)

测试事件:

 {
 "url": "https://example.com/api/jobs/test"
}
Run Code Online (Sandbox Code Playgroud)

错误:

 START RequestId: 370eecb5-bfda-11e7-a2ed-373c1a03c17d Version: $LATEST
 Unable to import module 'index': No module named 'requests'

 END RequestId: 370eecb5-bfda-11e7-a2ed-373c1a03c17d
 REPORT RequestId: 370eecb5-bfda-11e7-a2ed-373c1a03c17d Duration: 0.65 ms   Billed Duration: 100 ms     Memory Size: 128 MB Max Memory Used: 21 MB  
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

python http-post aws-lambda

2
推荐指数
2
解决办法
1万
查看次数

在nginx上设置proxy_pass以对API网关进行API调用

问题:

我已经在API网关后面建立了一个Lambda函数,它可以很好地工作.我有一个托管网站,我只想要某个位置来访问API.

例

https://www.example.com/(从托管服务器提供html)

https://www.example.com/foobar(返回由Lambda生成并由AWS返回的JSON有效内容)

这是我的服务器块:

   location = /foobar {
            proxy_pass     https://someawsuri;
            proxy_redirect default;
    }

    location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            try_files $uri $uri/ =404;
    }
Run Code Online (Sandbox Code Playgroud)

我已经尝试过审阅文档并阅读多篇SO帖子,但我无法做到我想要的.我尝试过的所有东西都产生了错误502 Bad Gateway.

题:

如何配置nginx向API网关发出请求?

谢谢.

nginx aws-lambda aws-api-gateway

2
推荐指数
1
解决办法
1118
查看次数