我正在阅读有关如何编写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命令的概念。
我试图弄清楚如何将多个输入传递给我的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。
在我的项目中,我必须创建一个调用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]
这是什么意思?
提前谢谢了
我有一个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代码中创建一个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中设置呼叫?
提前致谢
我正在使用nodejs创建新的lambda函数。而且此lambda函数在没有aws-lambda的情况下也可以很好地工作。但是,当我需要'aws-sdk'软件包时,它将发生错误并停止运行。错误是他们不需要'aws-sdk'软件包。但是aws-sdk已经在node_module文件夹中。
我要你解决这个问题。非常感谢。
在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)
那么异常与上述相同,因此无法说出是什么导致条件评估为假。
有没有办法(甚至是骇人听闻的)从异常信息中获取更多详细信息?
我创建了一个.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
所以我最近加入了AWS Lambda并且自从昨天下午以来我一直在研究机器人,但现在突然间,这种情况正在发生.每当我去构建机器人或保存意图时,我只是不断收到消息'校验和值与名为'isRecyclableGarden'的资源不匹配.
isRecyclableGarden是我在我的代码中使用的意图之一.我不能分享代码作为它的工作代码,我对此很新.有关如何再次验证如何验证校验和的任何帮助都会有所帮助,因为我无法实际编辑或使用此代码进行操作!
我编写了一个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)
为什么它在本地工作而未部署?
谢谢 !