标签: aws-lambda

AWS Lambda:如何将秘密存储到外部API?

我正在构建一个基于AWS Lambda的监控工具.给定一组指标,Lambdas应该能够使用Twilio API 发送SMS .为了能够使用API​​,Twilio提供帐户SID和身份验证令牌.

我应该如何以及在哪里存储这些秘密?

我目前正在考虑使用AWS KMS,但可能还有其他更好的解决方案.

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

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

在Java代码中访问AWS Lambda环境变量

AWS已引入环境变量以便在Lambda函数中进行访问.我找不到任何文档说明如何使用Java从Lambda函数访问环境变量.谁能帮我?

java amazon-web-services aws-lambda

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

来自AWS Lambda的MongoDB连接

我正在寻找使用连接到MongoDB数据库的AWS Lambda/API Gateway创建RESTful API.我已经读过与MongoDB的连接相对昂贵,因此最好的做法是在建立连接后保留连接以便重用,而不是为每个新查询建立新连接.

这对于普通应用程序来说非常简单,因为您可以在启动期间建立连接并在应用程序生命周期内重用它.但是,由于Lambda被设计为无国籍,因此保持这种联系似乎不太直接.

因此,我想知道什么是解决此数据库连接问题的最佳方法?我是否每次调用Lambda函数时都强制建立新连接,或者是否有办法池/缓存这些连接以获得更有效的查询?

谢谢.

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

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

Nodejs - 从另一个lambda函数中调用AWS.Lambda函数

我有以下函数用于从我的代码中调用Lambda函数.

但是,当我尝试在Lambda函数中使用它时,我收到以下错误:

AWS lambda undefined 0.27s 3 retries] invoke({ FunctionName: 'my-function-name',
  InvocationType: 'RequestResponse',
  LogType: 'Tail',
  Payload: <Buffer > })
Run Code Online (Sandbox Code Playgroud)

如何在Lambda函数中调用Lambda函数?

我的功能:

'use strict';

var AWS = require("aws-sdk");

var lambda = new AWS.Lambda({
    apiVersion: '2015-03-31',
    endpoint: 'https://lambda.' + process.env.DYNAMODB_REGION + '.amazonaws.com',
    logger: console
});

var lambdaHandler = {};

// @var payload - type:string
// @var functionName - type:string
lambdaHandler.invokeFunction = function (payload, functionName, callback) {

    var params = {
        FunctionName: functionName, /* required */
        InvocationType: "RequestResponse",
        LogType: "Tail",
        Payload: new Buffer(payload, …
Run Code Online (Sandbox Code Playgroud)

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

52
推荐指数
4
解决办法
5万
查看次数

通过API网关在aws Lambda中获取json主体

我目前正在使用NodeJS通过AWS Api Gateway在AWS lambda上构建机器人,我遇到了POST请求和JSON数据的问题.我的api使用'使用Lambda代理集成',甚至当我测试代理发送内容类型的Application/json和一些json在体内时,例如{"foo":"bar"}我无法访问该对象而不先解析它

例如

  var json = JSON.parse(event.body);
  console.log(json.foo);
Run Code Online (Sandbox Code Playgroud)

现在我知道通过JSON.parse运行它似乎并不是什么大不了的事,但我已经看到了许多其他例子,根本不是这种情况.请看这里https://github.com/pinzler/fb-messenger-bot-aws-lambda/blob/master/index.js

我是否需要向API网关添加任何内容才能正确处理?'post method request'部分中的'request body'步骤具有针对请求主体的内容类型application/json设置.

据我所知,上面例子的自述文件似乎没有使用代理集成,所以我不确定我应该在这里做什么

aws-lambda aws-api-gateway

52
推荐指数
3
解决办法
6万
查看次数

AccessDeniedException:用户无权执行:lambda:InvokeFunction

我正在尝试从节点调用lambda函数.

var aws = require('aws-sdk');
var lambda = new aws.Lambda({
    accessKeyId: 'id',
    secretAccessKey: 'key',
    region: 'us-west-2'
});

lambda.invoke({
    FunctionName: 'test1',
    Payload: JSON.stringify({
        key1: 'Arjun',
        key2: 'kom',
        key3: 'ath'
    })
}, function(err, data) {
    if (err) console.log(err, err.stack);
    else     console.log(data);
});
Run Code Online (Sandbox Code Playgroud)

密钥用于IAM用户.用户必须AWSLambdaExecuteAWSLambdaBasicExecutionRole附加政策.

我收到了一个权限错误: AccessDeniedException: User: arn:aws:iam::1221321312:user/cli is not authorized to perform: lambda:InvokeFunction on resource: arn:aws:lambda:us-west-2:1221321312:function:test1

我阅读了文档和几个博客,但我无法授权此用户调用lambda函数.如何让这个用户调用lambda?

谢谢.

amazon-web-services amazon-iam aws-lambda

50
推荐指数
4
解决办法
5万
查看次数

从zip文件在AWS中创建lambda函数

我正在尝试创建一个简单的lambda函数,我遇到了一个错误.

我的代码基本上是

console.log('Loading function');

exports.handler = function(event, context) {
    console.log('value1 =', event.key1);
    console.log('value2 =', event.key2);
    console.log('value3 =', event.key3);
    context.succeed(event.key1);  // Echo back the first key value
    // context.fail('Something went wrong');
}
Run Code Online (Sandbox Code Playgroud)

在helloworld.js文件中.我将其压缩并在创建lambda函数部分时将其作为zip文件上传,并且我不断收到此错误:

{
  "errorMessage": "Cannot find module 'index'",
  "errorType": "Error",
  "stackTrace": [
    "Function.Module._resolveFilename (module.js:338:15)",
    "Function.Module._load (module.js:280:25)",
    "Module.require (module.js:364:17)",
    "require (module.js:380:17)"
  ]
}
Run Code Online (Sandbox Code Playgroud)

有人有主意吗?

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

48
推荐指数
3
解决办法
3万
查看次数

无法在AWS Lambda上使用Requests-Module

我需要在python脚本中进行休息调用,每天运行一次.我无法使用AWS Lambdas将"requests"包打包到我的python-package中.我收到错误:"无法导入模块'lambda_function':没有名为lambda_function的模块"

我把它分解为hello_world预定义脚本.我可以把它打包成拉链并上传.一切正常.一旦我将"导入请求"放入文件中,我就会收到此错误.

这是我已经做过的事情:

  1. zip和项目文件夹(包括子文件夹)的权限设置为`chmod 777`.所以权限应该不是问题.
  2. 脚本本身位于根文件夹中.当您打开zip文件时,您可以直接看到它.
  3. 我使用`sudo pip install requests -t PATH_TO_ROOT_FOLDER'将请求包安装到项目的根文件夹中

一切的命名如下:

  • zip文件:lambda_function.zip
  • py-file:lambda_function.py
  • handler方法:lambda_handler(事件,上下文)
  • "webconfig:lambda_function.lambda_handler"中的处理程序定义

我想在最后运行的文件如下所示:

import requests
import json


def lambda_handler(event, context):
    url = 'xxx.elasticbeanstalk.com/users/login'
    headers = {"content-type": "application/json", "Authorization": "Basic Zxxxxxxxxx3NjxxZxxxxzcw==" }
    response = requests.put(url, headers=headers, verify=False)
    return 'hello lambda_handler'
Run Code Online (Sandbox Code Playgroud)

我很高兴能得到任何帮助.我已经在这个问题上使用了多个小时.

python amazon-web-services python-2.7 aws-lambda

48
推荐指数
7
解决办法
5万
查看次数

如何在AWS Lambda中等待异步操作?

我正在尝试在S3中处理上传的文件.由于getObject是异步主函数在处理完成之前结束,因此AWS在3-4秒内杀死lambda.

更糟糕的是,处理方法中还包含异步操作 - 它会进行http调用.

在高级别,我的代码看起来像:

exports.handler = function(event, context) {
    // Get the object from the event and show its content type
    var bucket = event.Records[0].s3.bucket.name;
    var key = event.Records[0].s3.object.key;
    var params = {
        Bucket: bucket,
        Key: key
    };
    s3.getObject(params, function(err, data) {
        if (err) {
             ...
        } else {
            processFile(data.Body.toString(), 0);
            console.log("ok");
        }
    });
    //need to wait here till processFile is done
};

processFile = function(content, start) {
  ... build url to call
  http.get(url, function(res) {  
    console.log("Got …
Run Code Online (Sandbox Code Playgroud)

node.js aws-lambda

46
推荐指数
6
解决办法
5万
查看次数

如何从Python访问AWS Lambda环境变量

使用AWS Lambda中的新环境变量支持,我通过webui为我的函数添加了一个env var.

我如何从Python访问它?我试过了:

import os

MY_ENV_VAR = os.environ['MY_ENV_VAR']
Run Code Online (Sandbox Code Playgroud)

但我的功能停止工作(如果我硬编码相关的值,MY_ENV_VAR它工作正常).

python aws-lambda

46
推荐指数
3
解决办法
5万
查看次数