小编Han*_*k D的帖子

AWS Lambda函数可以调用另一个吗?

我有2个Lambda函数 - 一个产生报价,一个将报价转换为订单.我希望Order lambda函数调用Quote函数来重新生成引用,而不是仅从不受信任的客户端接收它.

我看到了我能想到的所有地方 - 但看不出我是如何进行链接或调用功能的......当然这存在!

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

280
推荐指数
10
解决办法
14万
查看次数

是否可以将Socket.io与AWS Lambda一起使用?

是否可以在AWS Lambda中构建一个函数来创建websocket并将数据发送到订阅的应用程序?

像这样的东西:

John在手机中打开了应用程序SuperPhotoApp,但决定使用桌面浏览器将照片上传到SuperPhotoApp服务(S3 Bucket),此事件执行Lambda函数,创建socket.io服务器并将更新推送给所有订阅者,他的手机打开了应用程序,以便应用程序自动更新新照片.

这可以通过推送通知或Amazon SNS完成,但是如果我需要实时行为,例如我需要更新角色位置的在线游戏.

如果Lambda无法做到这一点,是否有任何解决方案可以使用桌面浏览器更新我打开的应用程序?

亚马逊EC2是唯一的选择吗?我已经读过它有缩放问题,这就是为什么我在评论Lambda.

sockets amazon-web-services ios socket.io aws-lambda

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

在AWS Lambda中将DynamoDB数据格式化为普通JSON

我正在使用AWS Lambda扫描DynamoDB表中的数据.这是我得到的回报:

{
  "videos": [
    {
      "file": {
        "S": "file1.mp4"
      },
      "id": {
        "S": "1"
      },
      "canvas": {
        "S": "This is Canvas1"
      }
    },
    {
      "file": {
        "S": "main.mp4"
      },
      "id": {
        "S": "0"
      },
      "canvas": {
        "S": "this is a canvas"
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我的前端应用程序正在使用Ember Data Rest Adapter,它不接受此类响应.有什么方法可以获得正常的JSON格式吗?有一个NPM模块被调用dynamodb-marshaler来将DynamoDB数据转换为普通的JSON.如果可能的话,我正在寻找原生解决方案.

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

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

使用Java 8 Lambda表达式将String数组转换为Map

是否有更好的功能方式将"key:value"形式的字符串数组转换为Map使用Java 8 lambda语法?

Arrays.asList("a:1.0", "b:2.0", "c:3.0")
        .stream()
        .map(elem -> elem.split(":")
        .collect(Collectors.toMap(keyMapper?, valueMapper?));
Run Code Online (Sandbox Code Playgroud)

我现在的解决方案似乎没有真正的功能:

Map<String, Double> kvs = new HashMap<>();
Arrays.asList("a:1.0", "b:2.0", "c:3.0")
        .stream()
        .map(elem -> elem.split(":"))
        .forEach(elem -> kvs.put(elem[0], Double.parseDouble(elem[1])));
Run Code Online (Sandbox Code Playgroud)

java lambda functional-programming java-8 java-stream

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

如何在上传之前计算aws lambda部署包的CodeSha256

当你打电话时aws lambda get-function --function-name FunctionName,你会看到一把CodeSha256钥匙.不过,我不知道它是什么Sha256.它不匹配shasum -a 256 FunctionName.zip,FunctionName.zip我上传的包裹在哪里.

对于现有的lambda,我希望能够做的是从我即将上传的代码中生成sha256,该代码将与亚马逊重新提供的sha256相匹配get-function.任何帮助都表示赞赏,因为我无法在任何地方找到任何信息,除了亚马逊说它是"部署包的SHA256哈希"

amazon-web-services aws-lambda

19
推荐指数
3
解决办法
3283
查看次数

使用Amazon KMS加密值,使用DynamoDB和Lambda(NodeJS)存储/检索

我有一个Lambda(NodeJS)函数,可以将数据写入DynamoDB.其中一些数据需要加密.我正在使用KMS加密和存储进行加密.当我使用不同的Lambda函数从Dynamo检索并尝试解密时,我收到错误.如果我加密然后转换解密,我能够做到这一点,但如果我从数据库中读取加密值,它将无法解密.我的加密/存储代码如下:

console.log('Loading event');

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

var keyId = "arn:aws:kms:us-east-1:5423542542:key/xxxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxxx";
var tableName = "person";
var dynamoDBConfiguration = {
    "region": "us-west-2"
};
AWS.config.update(dynamoDBConfiguration);
var dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});
var kms = new AWS.KMS({region: 'us-east-1'});
var newId = "1234-56789-101112-13141516";
var item = {};

exports.handler = function (event, context) {
    console.log('ssn');
    //encrypt it
    var ssnParams = {
        KeyId: keyId,
        Plaintext: "123-45-6789"
    };
    kms.encrypt(ssnParams, function (err, data) {
        if (err) {
            console.log(err, err.stack);
        }
        else {
            console.log(' ssn encrypted');

            var enc_ssn = …
Run Code Online (Sandbox Code Playgroud)

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

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

使用Amazon SQS完成Lambda功能时通知浏览器客户端

在我的场景中,我正在尝试实现服务器较少的后端运行相当长时间的计算.此计算由Lambda管理,引用一些外部API.

在奥德请求这个我使用的亚马逊API网关有10秒的执行限制.然而Lambda运行大约100秒.

为了避免这种限制,我使用第二个Lambda函数执行这个耗时的计算并报告计算开始.

我看起来非常相似:

var AWS = require('aws-sdk');
var colors = require('colors');

var functionName = 'really-long'

var lambda = new AWS.Lambda({apiVersion: '2015-03-31'});

var params = {
  FunctionName: functionName, 
  InvocationType: 'Event'
};


lambda.invoke(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(functionName.green + " was successfully executed and returned:\n" + JSON.stringify(data, null, 2).gray);           // successful response
});

console.log("All done!".rainbow);
Run Code Online (Sandbox Code Playgroud)

此代码由AWS API Gateway独立于数千个客户端浏览器执行.

为了通知每个特定客户端他的Lambda函数执行成功完成,我计划使用AWS SQS(因为长轮询和一些其他有用的功能开箱即用).

所以我的问题是:

如何在客户端上确定队列中哪条消息属于此特定客户端?或者我应该遍历所有队列以通过每个客户端浏览器中的某个请求ID参数查找正确的消息?我想当1000个客户端同时等待他们的结果时,这种方法效率低下.


我知道我可以将结果写入DynamoDB,并通过一些自制的API定期轮询DB以获得结果.但有没有优雅的解决方案来通知基于浏览器的客户端基于某些Amazon PaaS解决方案完成执行耗时的Lambda功能?

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

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

Amazon S3预签名网址 - 手动无效或一次上传

我使用S3接受从用户到S3的直接上传.因此,我将使用预先签名的网址.

成功上传后,AWS Lambda将确保文件上传是图像,然后客户端将告诉我的服务器他已完成上传.

然后我的服务器将检查S3中是否存在该文件(如果Lambda检测到无效图像,则将其删除).如果是,那么应用逻辑的其余部分将遵循.

但是,这种机制存在漏洞.在告诉我的服务器他已经完成上传(并且最初传递有效文件)之后,用户可以使用相同的URL来上传恶意文件.

Lambda仍然会删除该文件,但现在我的服务器会认为文件存在而实际上并不存在.

有没有办法生成一次性上传预先签名的网址,或者是否有可能强制使生成但尚未过期的网址无效?

php file-upload amazon-s3 amazon-web-services aws-lambda

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

在AWS Lambda中创建RESTful服务

当我浏览AWS Lambda文档时,有关于基于AWS事件触发服务的参考.我没有看到有关Lambda托管服务的参考资料.

想了解是否可以使用AWS Lambda创建RESTful服务以供网站使用或不使用?

我可以使用NodeJ来开发服务.

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

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

AWS API网关:错误429请求太多

我正在尝试使用AWS API GatewayLambda创建后端系统. 在过去的几天里,我为新的API资源创建了一个PUT方法,其中API Key是一个简单的第一个安全步骤.PUT方法在AWS上调用Lambda函数. 然后我将这个API部署到"prod"阶段进行一些测试.

在最初几天,一切都按预期运行良好:我用postman创建了一个API调用,我收到了我期待的所有数据.但前两天,我开始收到始终429 "太多的请求"的响应.我也创建了一个新阶段,但没有任何改变:同样版本或更新版本的新阶段也总是会出现同样的错误.
该API不能达到任何限制,因为它们被称为每4或5次,而不是每个第二(上CloudWatch的选中).没有循环,它只是一次调用.我认为lambda方面没有错误,因为如果我在AWS API网关控制台中测试API,我就不会收到任何错误(并且lambda过去运行良好,没有来自该版本的新更改).该错误仅显示当我使用外部客户端测试我的api时(在我的情况下它是Postman).

任何人都可以帮助解决这个问题吗?

更新:我刚刚在同一资源上创建了一个POST方法,具有相同的参数和相同的lambda.这是工作.我想知道问题是否与PUT方法有关,或者如果在2天内我的POST方法也会受到同样问题的影响.

api put amazon-web-services aws-lambda

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