为了改善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) 我打开了高速缓存GET请求,但它也适用于POST,因为后期有它目前缓存POST一次和棍棒与它不管POST身体没有查询字符串.
有没有办法为POST方法关闭它或告诉缓存帖子正文有密钥缓存它?
我想要做的是为我的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
这是我的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) 我想使用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) 我正在努力使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安全组,可以从任何地方进行“所有流量”操作-我仍然遇到此问题。
有任何想法吗?
我有一个lambda函数访问在同一个VPC中的EC2实例上运行的Elasticsearch.不幸的是,即使我公开访问lambda,lambda也无法访问该端口.
lambda和EC2都分配给同一个VPC.lambda还分配给安全组,分配给EC2的SG明确地向其提供入站权限.Lambda函数还分配给具有以下托管策略的角色:
Lambda缺少一些权限吗?
谢谢!
我正在使用几个AWS lambda函数(以及相同的多个实例)来访问AWS中的对象.有关lambda线程安全性的任何信息?虽然写作顺序并不重要(在我的例子中),但读 - 修改 - 写的原子性是.有人遇到过正确/有意的解决方案?
我正在研究一些托管在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) 上传并运行我的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不包括这些文件,只包括我的课程.我怀疑这是相关的.真的吗?我是否需要为我正在使用的这些"外部"类找到亚马逊类替换?我糊涂了.
aws-lambda ×10
node.js ×3
amazon-ec2 ×1
amazon-vpc ×1
asynchronous ×1
callback ×1
csv ×1
java ×1
javascript ×1