标签: aws-lambda

NodeJ中的DynamoDB putitem - 对象数组

我正在尝试从AWS Lambda设置一个小的api到DynamoDB,我无法弄清楚是否以及如何将对象数组写入密钥.

我有一个像这样的对象

{
    "teamName": "Team Awesome",
    "members": [
        {
            "email": "person-1@example.com",
            "name": "Bob"
        },
        {
            "email": "person-2@example.com",
            "name": "Alice"
        }
    ]
} 
Run Code Online (Sandbox Code Playgroud)

成员数组给了我一些问题,在文档中它看起来可以考虑列表类型来完成,但是没有例子如何做到这一点,并且我没有办法尝试它.

那么可以用这种格式写一些东西吗?在这种情况下你怎么做呢?

示例代码 - 我该怎么做?

var AWS = require('aws-sdk');
var dynamodb = new AWS.DynamoDB();

exports.handler = function(event, context) {
    var tableName = "GDCCompetition";
    var datetime = new Date().getTime().toString();

    DynamoDB.putItem({
        "TableName": tableName,
        "Item": {
            "datetime": {
                "N": datetime
            },
            "teamName": {
                "S": event.teamName
            },
            "members": ???
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

node.js amazon-dynamodb aws-lambda

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

从节点应用程序调用amazon lambda函数

我将通过一个关于如何创建lambda函数的基本AWS:

http://docs.aws.amazon.com/lambda/latest/dg/walkthrough-s3-events-adminuser-create-test-function-create-function.html

在这个例子中,我们正在创建一个图像重新调整大小的服务,触发它的一种方法是监听一些图像被推送到S3存储桶然后执行lambda函数.

但我试图了解如何从我的nodejs应用程序调用此lambda函数,当用户将图像发送到我的节点服务器时,我通过REST API将此图像发送到aws lambda以重新调整大小,然后接收新的图像位置一个回应.

我能遵循什么样的例子吗?我对实际的调用部分更感兴趣,因为我已经启动并运行了我的lambda服务.

谢谢

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

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

如何在上传之前计算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
查看次数

无服务器框架:如何添加外部NPM包?

我的情况是我在向我的无服务器框架项目添加外部NPM包时遇到了一些麻烦(特定包是geopoint).

我去了无服务器项目的根文件夹并运行npm install geopoint --save.package.json已更新,dependencies": { "geopoint": "^1.0.1" }并创建了node_modules文件夹.

我的文件夹结构是这样的:
根项目文件夹
-functions
--geospatial
--- handler.js
-node_modules
--geopoint

在我的函数/ geospatial/handler.js中,我将geopoint模块声明为:

    var geopoint = require('geopoint');
    var geopoint = require('../../geopoint');
    var geopoint = require('../../../geopoint');
Run Code Online (Sandbox Code Playgroud)

lambda控制台返回错误:

    {
      "errorMessage": "Cannot find module '../../geopoint'",
      "errorType": "Error",
      "stackTrace": []
    }
Run Code Online (Sandbox Code Playgroud)

如何正确地将外部NPM模块添加到无服务器框架项目?

node.js aws-lambda serverless-framework

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

来自cyptography.hazmat.bindings._constant_time import lib的导入错误

所以我正在尝试创建一个aws lambda函数,登录实例并做一些事情.并且该脚本在lambda之外工作正常,但是当我使用与此https://aws.amazon.com/blogs/compute/scheduling-ssh-jobs-using-aws-lambda/相同的说明打包它时,它不会工作.它抛出了这个错误.

libffi-72499c49.so.6.0.4: cannot open shared object file: No such file or directory: ImportError
Traceback (most recent call last):
  File "/var/task/lambda_function.py", line 12, in lambda_handler
    key = paramiko.RSAKey.from_private_key(key)
  File "/var/task/paramiko/pkey.py", line 217, in from_private_key
    key = cls(file_obj=file_obj, password=password)
  File "/var/task/paramiko/rsakey.py", line 42, in __init__
    self._from_private_key(file_obj, password)
  File "/var/task/paramiko/rsakey.py", line 168, in _from_private_key
    self._decode_key(data)
  File "/var/task/paramiko/rsakey.py", line 173, in _decode_key
    data, password=None, backend=default_backend()
  File "/var/task/cryptography/hazmat/backends/__init__.py", line 35, in default_backend
    _default_backend = MultiBackend(_available_backends())
  File "/var/task/cryptography/hazmat/backends/__init__.py", line 22, in _available_backends
    "cryptography.backends" …
Run Code Online (Sandbox Code Playgroud)

python paramiko amazon-web-services aws-lambda

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

如何为无服务器-1.0.0框架定义/部署的API添加自定义域?

Serverless-1.0.0-rc.1支持部署可通过AWS API Gateway访问的API.

问题:我需要通过带有SSL证书的自定义域而不是随机分配的(URL https://qwertylgbtqert.execute-api....)来公开部署的API 吗?

可以从内部serverless.yml或无服务器框架完成吗?

这是我简单的服务serverless.yml定义:

service: my-service
provider:
  name: aws
  runtime: nodejs4.3

functions:
  generate:
    handler: handler.generate
    events:
      - http:
         method: get
         path: url
         cors: true
Run Code Online (Sandbox Code Playgroud)

有一个问题与此有关:答案在这里,但没有提供适用的答案.特别是如何从serverless.yml自身内部分配自定义域.

它认为是否有可能创建AWS :: Route53资源并利用它,但我不知道如何在无服务器中执行此操作.

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

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

如何从lambda获取环境变量(nodejs aws-sdk)

我们可以在aws-lambda中设置环境变量,例如通过AWS SAM:

Environment:
    Variables:
      TABLE_NAME: !Ref Table
Run Code Online (Sandbox Code Playgroud)

如何通过Node JS AWS-SDK从当前lambda获取此变量?

nodes amazon-web-services aws-lambda aws-sdk-nodejs

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

Fargate vs Lambda,何时使用哪个?

我对整个无服务器环境都很陌生,而且我正试图在使用Fargate和Lambda时解决这个问题.

我知道Fargate是ECS的无服务器子集,Lambda也是无服务器的,但是由事件驱动.但我希望能够以简单的方式向其他熟悉容器的人解释这两种范例,而不是那些使用AWS和无服务器的人.

目前,我们有几个物理服务器负责接收文本文件,解析它们,并用结果填充几个数据库表.根据我的理解,我认为这将是一个更适合Lambda的用例,因为解析文本文件的过程是由计划触发的,不会长时间运行,并且在不使用时会减少.

但是,如果我们要移植一个接收API调用的服务器,我们可能会想要使用Fargate,因为我们总是需要至少一个映像实例启动并运行.

就容器而言,如果容器的设计是这样设计的话,可以安全地说:

docker run <some_input>
Run Code Online (Sandbox Code Playgroud)

然后这是Lambda的工作.

但是,如果容器设计为执行以下操作:

docker run --expose 80
Run Code Online (Sandbox Code Playgroud)

然后这是Fargate的工作.

这是一个很好的比喻吗?

amazon-ecs aws-lambda serverless aws-fargate

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

为什么建议队列可见性超时为函数超时加批处理窗口的六倍?

来自https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html#events-sqs-queueconfig

将队列可见性超时设置为函数超时的 6 倍,加上以下值MaximumBatchingWindowInSeconds

为什么队列可见性超时不能等于函数超时?假设该函数的超时时间为 30 秒,队列可见性也是如此。该函数拾取消息并经过 30 秒,该消息尚未删除,现在对其他函数/消费者可见。那为什么一定要6次呢?最大批处理窗口在队列可见性超时中扮演什么角色?

amazon-sqs amazon-web-services aws-lambda

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

带有 python docker 容器的 AWS Lambda 的 InvalidEntrypoint

我已经使用 Lambda 构建了一个图像public.ecr.aws/lambda/python:3.8,但总是收到此错误。

尝试更改函数和文件名,但没有获得更多调试细节。

另外,我已在本地运行该函数并且入口点/cmd 可以工作。

START RequestId: cb4ba88c-c347-4e7d-b1ca-031a2e02fde4 Version: $LATEST
IMAGE   Launch error: fork/exec /lambda-entrypoint.sh: exec format error    Entrypoint: [/lambda-entrypoint.sh] Cmd: [index.lambda_handler] WorkingDir: [/var/task]IMAGE    Launch error: fork/exec /lambda-entrypoint.sh: exec format error    Entrypoint: [/lambda-entrypoint.sh] Cmd: [index.lambda_handler] WorkingDir: [/var/task]END RequestId: cb4ba88c-c347-4e7d-b1ca-031a2e02fde4
REPORT RequestId: cb4ba88c-c347-4e7d-b1ca-031a2e02fde4  Duration: 12.86 ms  Billed Duration: 13 ms  Memory Size: 128 MB Max Memory Used: 3 MB   
RequestId: cb4ba88c-c347-4e7d-b1ca-031a2e02fde4 Error: fork/exec /lambda-entrypoint.sh: exec format error
Runtime.InvalidEntrypoint
Run Code Online (Sandbox Code Playgroud)

python amazon-web-services docker aws-lambda

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