标签: aws-lambda

是不推荐使用dynamoDB(Javascript sdk)的batchWriteItem吗?

我试图在dynamoDB中使用batchWriteItem来执行多个put请求.我使用v2.6.8AWS-SDK lambda函数内.它给了我一个奇怪的错误:batchWriteItem不是一个函数.说完了,把它搞定了!知道我错过了什么吗?

amazon-web-services aws-sdk aws-lambda

0
推荐指数
1
解决办法
932
查看次数

AWS Lambda RDS MySQL数据库连接InterfaceError

当我尝试连接到AWS RDS(MySQL)时,我收到的大部分时间都是InterfaceError.当我编辑Lambda代码并重新运行时,它将在第一次正常工作,但随后会出现相同的错误.

我的代码:

import sys
import logging
import pymysql
import json
import traceback
rds_host  = "*****.rds.amazonaws.com"
name = "*****"
password = "****"
db_name = "myDB"
logger = logging.getLogger()
logger.setLevel(logging.INFO)
try:
    conn = pymysql.connect(rds_host, user=name, passwd=password, db=db_name, connect_timeout=5)
except:
    logger.error("ERROR: Unexpected error: Could not connect to MySql instance.")
    sys.exit()
logger.info("SUCCESS: Connection to RDS mysql instance succeeded")
def handler(event, context):
    sub = event['sub']
    username = event['username']
    givenname = event['givenname']
    isAdmin = event['isAdmin']
    print (sub)
    print (username)
    print (givenname)
    print (isAdmin) …
Run Code Online (Sandbox Code Playgroud)

python mysql amazon-web-services amazon-rds aws-lambda

0
推荐指数
1
解决办法
1349
查看次数

错误:预期params.Item ['id'].N是一个字符串

这是交易:

我无法将数据添加到DynamoDB.JS文件在S3中,这是代码:

var date = new Date(),
    item = {
        'id': {N: date.getTime()},
        'user': {S: "Sam"}
    },
    params = {
        TableName: 'users',
        Item: item
    };
dynamodb.putItem(params,function(err,data){
    if (err) {
        console.log(err);
    } else {
        console.log("user added to DynamoDB");
    }
});
Run Code Online (Sandbox Code Playgroud)

这是来自DB的截图,这意味着id应该是一个数字,而不是字符串:

在此输入图像描述

我得到的错误:

错误:预期params.Item ['id'].N是一个字符串

at ParamValidator.fail (aws-sdk.js:96666)
at ParamValidator.validateType (aws-sdk.js:96827)
at ParamValidator.validateString (aws-sdk.js:96762)
at ParamValidator.validateScalar (aws-sdk.js:96742)
at ParamValidator.validateMember (aws-sdk.js:96709)
at ParamValidator.validateStructure (aws-sdk.js:96690)
at ParamValidator.validateMember (aws-sdk.js:96703)
at ParamValidator.validateMap (aws-sdk.js:96729)
at ParamValidator.validateMember (aws-sdk.js:96707)
at ParamValidator.validateStructure (aws-sdk.js:96690)
Run Code Online (Sandbox Code Playgroud)

lambda amazon-web-services aws-lambda

0
推荐指数
3
解决办法
3066
查看次数

AWS Lambda NodeJS HTTP请求,从API打印数据

下面的代码在Lambda中返回"得到响应:301".我在php,python和现在的Node中尝试过这段代码.将此链接粘贴到浏览器中会返回此图片中的JSON数据.如何获取打印出相同数据的代码?我需要最终将数据放入Mongo.我可以让php和python在本地打印数据但不能在Lambda中打印.

我认为它与这里显示的callback()有关,我正在尝试实现它.

在此输入图像描述

var http = require('http');
var url = 'http://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol=MSFT&interval=1min&apikey=demo';
exports.handler = function (event, context) {
http.get(url, function(res) {
  console.log("Got response: " + res.statusCode);

  res.on("data", function(chunk) {
    console.log("BODY: " + chunk);
  });
}).on('error', function(e) {
  console.log("Got error: " + e.message);
});
};
Run Code Online (Sandbox Code Playgroud)

我将代码更新为:

var http = require('http');
var url = 'http://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol=MSFT&interval=1min&apikey=demo';
exports.handler = function (event, context) {
http.get(url, function(res) {
        var data = '';
        res.on('data', (chunk) => { data += chunk; }); 
        res.on('end', () => { console.log("BODY: " …
Run Code Online (Sandbox Code Playgroud)

node.js aws-lambda

0
推荐指数
1
解决办法
1389
查看次数

我在python lambda处理程序中找不到回调参数

我正在研究aws lambda-lex,我发现用node.js编写了咖啡机器人示例代码。

// --------------- Main handler -----------------------
// --------------- in node.js -----------------------

// Route the incoming request based on intent.
// The JSON body of the request is provided in the event slot.

exports.handler = (event, context, callback) => {
    try {
        dispatch(event, (response) => callback(null, response));
    } catch (err) {
        callback(err);
    }
};
Run Code Online (Sandbox Code Playgroud)

我想使用回调参数,但在python中找不到

// --------------- Main handler -----------------------
// --------------- in python -----------------------

def lambda_handler(event, context):    
    dispatch(event)

# >>> this handler doesn't include callback <<<
Run Code Online (Sandbox Code Playgroud)

如果需要,将两者进行比较

python文档 vs …

python amazon-web-services node.js aws-lambda

0
推荐指数
1
解决办法
2066
查看次数

Boto扫描过滤器表达式:参数的类型无效

我正在尝试使用以下代码,但无法使其正常工作。即使我完全按照文档的说明进行操作,也会不断给我关于过滤器表达式类型错误的错误消息。我该怎么做才能解决此问题?

def EndpointDeleted(event):
    endpoint = event['Attributes']['EndpointArn']
    if('EndpointArn' in event['Attributes']):
        client = boto3.client('dynamodb')
        response = client.scan(
            TableName='sniffergps-mobilehub-812282467-Users',
            Select='ALL_ATTRIBUTES',
            FilterExpression=Attr('Endpoints').contains(endpoint)
        )
        return response
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误消息,说过滤器表达式是错误的类型。我有以下导入消息: import boto3 from boto3.dynamodb.conditions import Key from boto3.dynamodb.conditions import Attr

错误信息:

{
  "errorMessage": "Parameter validation failed:\nInvalid type for parameter FilterExpression, value: <boto3.dynamodb.conditions.Contains object at 0x7fdca25e0b38>, type: <class 'boto3.dynamodb.conditions.Contains'>, valid types: <class 'str'>",
  "errorType": "ParamValidationError",
  "stackTrace": [
    [
      "/var/task/lambda_function.py",
      13,
      "lambda_handler",
      "return EndpointDeleted(event)"
    ],
    [
      "/var/task/lambda_function.py",
      24,
      "EndpointDeleted",
      "FilterExpression=Attr('Endpoints').contains(endpoint)"
    ],
    [
      "/var/runtime/botocore/client.py",
      312,
      "_api_call",
      "return …
Run Code Online (Sandbox Code Playgroud)

amazon-dynamodb boto3 aws-lambda

0
推荐指数
1
解决办法
2629
查看次数

使用AWS lambda,ses,sqs,sns发送大量电子邮件

我需要每周发送大约200-300k的电子邮件,用于我们的每周时事通讯.这个数字预计会随着时间的推移而增加,这就是为什么我想让lambda为我们处理缩放的原因.

员工将有一个UI来触发这些电子邮件的发送.我最初的想法是将电子邮件地址列表添加到SNS主题并让lambda函数订阅它以触发实际发送电子邮件.我读过这可能会导致一些意想不到的行为,并不是最好的追踪错误.

我们目前的限制是每秒90封电子邮件.这与5分钟执行lambda函数的最大时间相结合,让我想知道如何拆分它.我是否需要将这些批量发送到SNS,以便可以均匀地旋转多个lambda容器来完成工作?我知道lambda可以扩展为诸如向S3添加文件之类的事件但是我如何明确地告诉lambda旋转多个来处理所有需要发送的电子邮件?这有更好的设计模式吗?

我的另一个想法是将电子邮件添加到SQS队列中,以便电子邮件可以保持不变,但需要做一些解决方法,以便与lambda很好地协作.

amazon-web-services amazon-ses aws-lambda

0
推荐指数
1
解决办法
1162
查看次数

AWS API Gateway自定义授权程序是否有用?

我希望为AWS Lambda/zappa使用一些"无服务器api服务器",它使用自定义API网关授权程序进行用户身份验证.在无服务器的AWS lambda服务中,使用自定义授权器而不是直接在代码控制器中检查已发布的JWT令牌是否具有相当大的安全性或成本优势?对我来说,检查代码可能更方便.

更新我去了pre请求钩子,但是有头级别的授权器,它更容易用于CORS,但我认为zappa不支持它.也可以通过swagger上传为Options设置模拟API,如果成功则会更新.

authentication authorization aws-lambda aws-api-gateway

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

在AWS Lambda中使用托管在两个不同区域的两个不同的AWS资源?

我想在一个lambda函数中使用托管在'us-west-2'区域中的"Dynamodb DocumentClient"和托管在'us-west-1'区域中的SES.我该怎么做?

amazon-web-services node.js amazon-dynamodb aws-sdk aws-lambda

0
推荐指数
1
解决办法
316
查看次数

AWS如何重新安排S3 lambda事件?

我有一个lambda,它在S3中创建一个对象时运行,在某些情况下我需要重新安排这个lambda,让我们说15分钟后.

当我的lambda第二次运行时,我需要有相同的事件参数,我不介意其他字段而不是桶和路径. event.Records[0].s3.bucket.name event.Records[0].s3.object.key.但很容易有相同的event

我的另一种方法是将这些数据保存在发电机中并使用另一个lambda,每隔15分钟从那里读取一次(糟糕).

但是重新安排我当前的函数并将相同的参数传递给它会更好.像这样的东西:

exports.handler = (event, context, callback) => {
   if(xyz)
      reschedule(15 * 1000 * 60, 'ThisLambdaName', event, context); 
}
Run Code Online (Sandbox Code Playgroud)

像setTimeout这样的东西,但没有AWS为我充电15分钟lol.

amazon-s3 amazon-web-services aws-lambda

0
推荐指数
1
解决办法
315
查看次数