标签: aws-lambda

如何将所有npm依赖项告诉lambda?

我正在阅读有关如何编写Node Restful App的教程

https://github.com/mjhea0/node-postgres-promises

我想将此应用程序作为lambda函数运行。我担心的是依赖管理。

如何将所有npm依赖项告诉lambda?

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var pug = require('pug');
var routes = require('./routes/index');
Run Code Online (Sandbox Code Playgroud)

在本教程中,它们确实做到了npm install,而aws毫无用处,我们没有像这样的cli命令的概念。

node.js aws-lambda

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

如何将输入传递给多个ARN(aws步进功能)?

我试图弄清楚如何将多个输入传递给我的ARN。但是,看来我做不到。

以下是我的机器规格

{
    "StartAt": "DemoStateFunction",
    "Version": "1.0",
    "States": {
        "DemoStateFunction": {
            "Type": "Task",
            "Resource": "ARN-Demo-Function",
            "InputPath": "$.demostate1",
            "Next": "DemoStateFunction2"
        },
        "DemoStateFunction2": {
            "Type": "Task",
            "Resource": "ARN-Demo-Function",
            "InputPath": "$.demostate2",
            "End": true         
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的意见

{
    "demostate1": {
        "data": "john",
    },
    "demostate2": {
        "data": "doe"
    }
}
Run Code Online (Sandbox Code Playgroud)

执行此任务时。它成功检索了我的demostate1数据,但是似乎无法像我在“ TaskStateEntered”步骤中看到的那样看到demostate2。

amazon-web-services aws-lambda aws-step-functions

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

Python从带有boto3错误的代码中调用我的AWS Lambda

在我的项目中,我必须创建一个调用lambda函数的py,以传递身体参数,我编写以下代码:

import boto3
import json
import base64

client = boto3.client(‘lambda’)
d = {'calID': '92dqiss5bg87etcqeeamlmob2g@group.calendar.google.com', 'datada': '2017-12-22T16:40:00+01:00', 'dataa': '2017-12-22T17:55:00+01:00', 'email': 'example@hotmail.com'}
s = json.dump(d)
s64 = base64.b64encode(s.encode('utf-8'))

response = client.invoke(
    FunctionName='arn:aws:lambda:eu-west-1:13737373737:function:test',
    InvocationType='RequestResponse',
    LogType='None',
    ClientContext='None',
    Payload=s64
)
Run Code Online (Sandbox Code Playgroud)

但是在响应运行时会生成此错误:

发生错误(InvalidRequestContentException)调用调用操作时:InvalidRequestContentException无法解析请求主体为JSON:无法识别的记号“eyJjYWxJRCI6ICI5MmRxaXNzNWJnODdldGNxZWVhbWxtb2IyZ0Bncm91cC5jYWxlbmRhci5nb29nbGUuY29tIiwgImRhdGFkYSI6ICIyMDE3LTEyLTIyVDE2OjQwOjAwKzAxOjAwIiwgImRhdGFhIjogIjIwMTctMTItMjJUMTc6NTU6MDArMDE6MDAiLCAiZW1haWwiOiAibHVjYV9ncmV6eml4eEBob3RtYWlsLmNvbSJ9”:期待在[来源(“真”,“假”或“空”):[B @ 4587098d;行:1,列:481]

这是什么意思?

提前谢谢了

python json amazon-web-services boto3 aws-lambda

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

授予AWS Lambda列出所有SNS主题的权限

我有一个cloudformation模板来创建lambda函数和SNS主题。lambda函数执行一些处理,然后将结果发布到SNS主题。

要获取SNS主题的ARN,我正在使用该boto3.client('sns').list_topics()函数,然后搜索在模板中设置的SNS主题名称。

但是调用list_topics()API会给我以下错误:

An error occurred (AuthorizationError) when calling the ListTopics operation: User: arn:aws:sts::136732452473:assumed-role/test/severless-btc-update-PriceUpdateFunction-B38KNZMCBGB is not authorized to perform: SNS:ListTopics on resource: arn:aws:sns:eu-west-1:136732452473:*

如何在Cloudformation模板YAML文件中向我的lambda资源添加ListTopics权限?

这是我的cloudformation.yaml文件:

AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Description: Bitcoin daily update


Parameters:
  PhoneNumber:
    Type: String
    Description: The phone number recipient of the update, in E.164 (e.g. +919876123456) format.
  UTCHour:
    Type: String
    Default: 3
    Description: The hour at which to send the update, in the UTC time zone.

Resources:
  PriceUpdateFunction:
    Type: AWS::Serverless::Function
    Properties: …
Run Code Online (Sandbox Code Playgroud)

python amazon-web-services amazon-sns boto3 aws-lambda

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

AWS lambda AccessDeniedException调用另一个lambda函数

在我的项目中,我在python代码中创建一个lambda函数,在一个方法中必须使用boto3调用另一个lambda函数.在我的主lambda中,我创建这样的客户端:

client = boto3.client('lambda')
Run Code Online (Sandbox Code Playgroud)

然后我以这种方式调用我的方法:

response = client.invoke(
            FunctionName='arn:aws:lambda:eu-west-1:1577:function:test',
            InvocationType='RequestResponse',
            LogType='None',
            Payload=json.dumps(d)
            )
Run Code Online (Sandbox Code Playgroud)

但是当我测试我的主lambda控制台时返回此错误:

调用Invoke操作时发生错误(AccessDeniedException):User

我尝试在我的环境变量中设置AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY,但是当我尝试保存时,返回此错误:

Lambda无法配置您的环境变量,因为您提供的环境变量包含当前不支持修改的保留键.此请求中使用的保留密钥:AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY

如何使用IAM用户在lambda中设置呼叫?

提前致谢

python amazon-web-services amazon-iam boto3 aws-lambda

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

使用NodeJS的AWS Lambda函数中的AWS-SDK加载错误

我正在使用nodejs创建新的lambda函数。而且此lambda函数在没有aws-lambda的情况下也可以很好地工作。但是,当我需要'aws-sdk'软件包时,它将发生错误并停止运行。错误是他们不需要'aws-sdk'软件包。但是aws-sdk已经在node_module文件夹中。

我要你解决这个问题。非常感谢。

amazon-web-services node.js aws-lambda

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

从AWS DynamoDB中的`ConditionalCheckFailedException`中获取更多详细信息?

在DynamoDB中,可以ConditionExpression在单个属性上设置如下:

ConditionExpression: 'attribute_exists(user_id)'
Run Code Online (Sandbox Code Playgroud)

如果此ConditionExpression是在更新中定义的,并且user_id不存在,则ConditionExpression的计算结果为false并返回异常:

message: 'The conditional request failed',
code: 'ConditionalCheckFailedException',
requestId: 'KPFMA7S5P110FCOMLPMKP15UDBVV4KQNSO6AEMVJF66Q9ASUAAJG',
statusCode: 400
Run Code Online (Sandbox Code Playgroud)

尽管只有一个条件可以评估所有情况,但所有条件都明确时,DynamoDB不会报告哪个条件失败:

ConditionExpression: 'attribute_exists(user_id) and iq = 85'
Run Code Online (Sandbox Code Playgroud)

那么异常与上述相同,因此无法说出是什么导致条件评估为假。

有没有办法(甚至是骇人听闻的)从异常信息中获取更多详细信息?

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

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

从Visual Studio Team Services部署到AWS Lambda,找不到Dotnet Lamba

我创建了一个.Net Core 2.0 Web API,并尝试使用Visual Studio Team Services和AWS Lambda .Net Tools进行部署,具体如下:https://aws.amazon.com/blogs/developer/working-with -lambda-functions-and-visual-studio-team-services /.

但是当任务在VSTS中运行时会抛出此错误:

找不到匹配命令"dotnet-lambda"的可执行文件

以下是任务的完整日志:

2018-01-27T02:55:21.9538582Z ##[section]Starting: Deploy to Lambda:  
2018-01-27T02:55:21.9749412Z ==============================================================================
2018-01-27T02:55:21.9749717Z Task         : AWS Lambda .NET Core Deployment
2018-01-27T02:55:21.9749955Z Description  : Build and deploy a Serverless .NET Core application or AWS Lambda function
2018-01-27T02:55:21.9750152Z Version      : 1.0.17
2018-01-27T02:55:21.9750334Z Author       : Amazon Web Services
2018-01-27T02:55:21.9750571Z Help         : Please refer to [AWS Lambda Developer Guide](https://docs.aws.amazon.com/lambda/latest/dg/) for more information on working with AWS Lambda.
2018-01-27T02:55:21.9750859Z ============================================================================== …
Run Code Online (Sandbox Code Playgroud)

aws-lambda azure-pipelines-build-task azure-pipelines asp.net-core-webapi asp.net-core-2.0

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

校验和值与名为'isRecyclableGarden'的资源不匹配

所以我最近加入了AWS Lambda并且自从昨天下午以来我一直在研究机器人,但现在突然间,这种情况正在发生.每当我去构建机器人或保存意图时,我只是不断收到消息'校验和值与名为'isRecyclableGarden'的资源不匹配.

isRecyclableGarden是我在我的代码中使用的意图之一.我不能分享代码作为它的工作代码,我对此很新.有关如何再次验证如何验证校验和的任何帮助都会有所帮助,因为我无法实际编辑或使用此代码进行操作!

图为我遇到的问题.

python checksum amazon-web-services aws-lambda

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

Lambda /预先签名的URL访问被拒绝

我编写了一个lambda函数,它返回S3 Buckets中文档的预签名URL.

代码非常简单:

            const url = s3.getSignedUrl('getObject', {
                Bucket: BUCKET_NAME,
                Key: myFile.Key,
                Expires: 20
            })

            const response = {
                statusCode: 200,
                headers: {
                    "Access-Control-Allow-Origin": "*"
                },
                body: JSON.stringify({
                    "url": url
                }),
            };
Run Code Online (Sandbox Code Playgroud)

有趣的是当我在本地调用此函数(使用无服务器框架)时,如下所示:

sls invoke local -f getEconomyFile -d '{ "queryStringParameters": { "key": "myfile.pdf" } }'
Run Code Online (Sandbox Code Playgroud)

它的工作原理!我有一个网址给我文件.

但是当我部署到AWS Lambda时,该函数返回一个URL,该URL总是在文件上显示"access denied":

<Error>
    <Code>AccessDenied</Code>
    <Message>Access Denied</Message>
    <RequestId>93778EA364B3506B</RequestId>
    <HostId>
        yqnPC0SeIVE3/Pl7/d+xHDJ78=
    </HostId>
</Error>
Run Code Online (Sandbox Code Playgroud)

为什么它在本地工作而未部署?

谢谢 !

amazon-web-services aws-lambda serverless-framework

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