标签: aws-lambda

如何在Lambda中只包含一个来自aws-sdk的类

为了改善AWS Lambda中的冷启动延迟,我试图仅为每个Lambda函数包含必要的类.而不是包含整个SDK,我如何只包含SDK的DynamoDB部分?

// Current method:
var AWS = require('aws-sdk');
var dynamodb = new AWS.DynamoDB();

// Desired method:
var AWSdynamodb = require('aws-dynamodb-sdk');
Run Code Online (Sandbox Code Playgroud)

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

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

AWS API Gateway缓存POST数据

我打开了高速缓存GET请求,但它也适用于POST,因为后期有它目前缓存POST一次和棍棒与它不管POST身体没有查询字符串.

有没有办法为POST方法关闭它或告诉缓存帖子正文有密钥缓存它?

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

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

如何在AWS Lambda中验证Cognito访问令牌以允许Gateway API调用?

我想要做的是为我的Lambda函数设置API网关,在DynamoDB中保存一些(或者我想仅为登录用户使用的其他东西).但我不明白如何验证AccessToken以及如何从中获取用户.

我在AWS论坛上发现了这篇文章,我决定尝试方法1.

Cognito用户池+ API网关+ API网关自定义授权程序+ Cognito用户池访问令牌.

所以现在我已登录用户:

var authenticationData = {
  Username : 'username', // your username here
  Password : 'password', // your password here
};
var authenticationDetails = new AWSCognito.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData);

var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);
cognitoUser.authenticateUser(authenticationDetails, {
  onSuccess: function (result) {
    console.log('access token + ' + result.getAccessToken().getJwtToken());
....
Run Code Online (Sandbox Code Playgroud)

和他的accessToken.我还在API调用中设置了自定义API网关自定义授权程序.

现在我应该验证访问令牌并决定是允许还是拒绝方法调用.但我不明白该怎么做以及如何从令牌中检索用户?

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

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

aws-mock-sdk s3.getObject无效

这是我的lambda处理程序,我使用各种AWS服务.

exports.handler = function(event,context){
    var body = event;
    var isValidBody = validate.doValidation(body);

    var s3DetailsObj = {
        eTag: body.s3Details.eTag, 
        location: body.s3Details.location,
        key: body.s3Details.key,
        bucket: body.s3Details.bucket
    }
    var s3DeletionErrorObject = {
        status : "SERVER_ERROR",
        sourceUid : body.sourceUid,
        s3Details : s3DetailsObj
    };

    if(isValidBody.status){
        console.log("Request validation successfull");
        async.waterfall([
            function downloadFromS3(uploadToGlacier){
                //console.log('KEY ====== :',body.s3Details.key);
                var params = {
                        Bucket: 'imagebucketgsk',
                        Key: body.s3Details.key
                    };
                s3.getObject(params,function(error, response){
                    //console.log("Into S3 get object");
                    if(!error){
                        //console.log('Repsonse = ', response.Body);
                        uploadToGlacier(null,response);
                    }else{
                        //console.error("S3 get error : ", error);
                        context.succeed(s3DeletionErrorObject);
                    }
                }); …
Run Code Online (Sandbox Code Playgroud)

node.js aws-lambda

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

API Gateway + Lambda下载CSV文件

我想使用API​​ Gateway + Lambda做一个csv下载链接。但是存在一个问题,lambda总是返回JSON.stringify。有办法解决吗?

s-function.json

"responses": {
    "default": {
      "statusCode": "200",
      "responseParameters": {
        "method.response.header.Content-disposition": "'attachment; filename=testing.csv'"
      },
      "responseTemplates": {
        "text/csv": ""
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

handler.js

var json2csv = require('json2csv');
module.exports.handler = function(event, context, cb) {
   var fields = ['car', 'price', 'color'];
   var myCars = [
    {
      "car": "Audi",
      "price": 40000,
      "color": "blue"
    }, {
      "car": "BMW",
      "price": 35000,
      "color": "black"
    }, {
      "car": "Porsche",
      "price": 60000,
      "color": "green"
    }
   ]; 
    var csv = json2csv({ data: myCars, fields: fields });
    return …
Run Code Online (Sandbox Code Playgroud)

csv aws-lambda aws-api-gateway serverless-framework

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

从AWS Lambda发送https到AWS Elastic beantalk服务器

我正在努力使AWS lambda能够将HTTPS POST请求发送到AWS Elastic beantalk服务。弹性beantalk提供Web和Web服务,并且运行良好。lambda正在使用AWS elasticache进行一些计算(效果很好),然后决定是否将HTTPS POST发送到beantalk URL。

Lambda用编写node.js。POST尝试后大约2分钟,我收到以下超时消息:

[Error: connect ETIMEDOUT X.Y.Z.W:443] code: 'ETIMEDOUT', errno: 'ETIMEDOUT', syscall: 'connect', address: 'X.Y.Z.W', port: 443 
Run Code Online (Sandbox Code Playgroud)

我在弹性bean nginx访问日志中没有看到请求的指示。

因此,我的理解是安全组设置不正确。

我排除了使用弹性beantalk阻止此类连接的选项-lambda使用的URL具有外部域名,可以从任何浏览器使用该URL,并且可以正常工作。

因此,我得出的结论是,lambda安全性阻止了这种连接。因此-我完全打开了lambda安全组,可以从任何地方进行“所有流量”操作-我仍然遇到此问题。

有任何想法吗?

amazon-elastic-beanstalk aws-lambda aws-security-group

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

AWS Lambda无法访问同一VPC内的EC2端口

我有一个lambda函数访问在同一个VPC中的EC2实例上运行的Elasticsearch.不幸的是,即使我公开访问lambda,lambda也无法访问该端口.

lambda和EC2都分配给同一个VPC.lambda还分配给安全组,分配给EC2的SG明确地向其提供入站权限.Lambda函数还分配给具有以下托管策略的角色:

  • AWSLambdaExecute
  • AWSLambdaVPCAccessExecutionRole
  • CloudWatchLogsFullAccess

Lambda缺少一些权限吗?

谢谢!

amazon-ec2 amazon-vpc aws-lambda

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

aws lambdas之间的同步

我正在使用几个AWS lambda函数(以及相同的多个实例)来访问AWS中的对象.有关lambda线程安全性的任何信息?虽然写作顺序并不重要(在我的例子中),但读 - 修改 - 写的原子性是.有人遇到过正确/有意的解决方案?

synchronization amazon-web-services aws-lambda

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

如何从AWS Lambda node.js异步函数返回数据?

我正在研究一些托管在AWS Lambda服务上的脚本.我之所以选择Node.js,是因为我对JS没用,但我还没学过Python或Java.然而,它被证明是一场噩梦,因为我需要查询一个MySQL数据库而我无法弄清楚如何正确地从函数中获取结果.

所以基本上我有这样的东西(我已经削减了一些东西,但你应该得到这个想法),这就是我想要做的.我想能够查询MySQL数据库,当它有答案时,只需返回它,或者如果有错误则抛出.

var mysql = require("mysql");     //npm installed module "mysql"
var err = require("./errors.js"); //internally requires npm installed module "errors"

var main = function(event, context, callback){
  try{
    //Confidential
    var data = null;
    //Confidential
    try{
      data = databaseCommand("SELECT * FROM `<table>` WHERE <field> = <value>");
    }
    catch(e){
      if(e instanceof err.Database)
        //Return state that indicates "Internal server error".
      else
        throw e;
      return
    }
    //Do maths on data
    //Return "OK" and result
  }
  catch(e){
    //Return "Unkown error"
  }
};
var databaseCommand = …
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous callback node.js aws-lambda

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

AWS lambda JAVA:外部库的使用

上传并运行我的java .jar文件后,我收到警告和错误.警告是:

This function contains external libraries. Uploading a new file will override these libraries.
Run Code Online (Sandbox Code Playgroud)

而且错误是:

java.lang.NoClassDefFoundError: org/apache/http/client/methods/HttpUriRequest
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
Caused by: java.lang.ClassNotFoundException: org.apache.http.client.methods.HttpUriRequest
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)   
Run Code Online (Sandbox Code Playgroud)

我可以构建jar没问题,所有依赖都在我的pom中.我有一些我正在使用的库,比如org.json,它也会抛出相同的java.lang.NoClassDefFoundError错误.我确实导入了这些类.然而,我的jar不包括这些文件,只包括我的课程.我怀疑这是相关的.真的吗?我是否需要为我正在使用的这些"外部"类找到亚马逊类替换?我糊涂了.

java amazon-web-services aws-lambda

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