标签: aws-lambda

node js lambda 中的代码:从事件数据中获取 s3 键的最后修改日期

我在 lambda 中使用节点 js 代码。
创建 S3 对象时,函数传递事件数据

var record = event.Records[0];
var bucket = record.s3.bucket.name;
var key = record.s3.object.key;
Run Code Online (Sandbox Code Playgroud)

如何获取 s3 密钥的最后修改日期以创建文件夹并将密钥粘贴到其中。

如果上次修改日期是:Mon Feb 22 14:46:23 GMT+530 2016,

那么文件夹名称必须是: Bucketname/2016/02/22/

amazon-s3 node.js aws-lambda

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

当我尝试在 cloudsearch 上上传文档时,我无法处理此错误

我正在尝试使用 Aws lambda 函数对 cloudsearch 进行上传测试。当 dynamodb 更新被触发时,该函数应该将 dynamodb 表作为 JSON 文档上传到 cloudsearch,但我收到一个错误,我试图弄清楚它是什么意思以及如何摆脱。

目前,我正在处理配置测试事件

这是 lambda 函数:

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



exports.handler = function(event,context){
     var cloudsearchdomain = new aws.CloudSearchDomain({endpoint: 'doc-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.cloudsearch.amazonaws.com'});

    
    var documents = {id : event.Records[0].dynamodb.Keys.Id.N};
    documents.type = "add";
    documents.fields = {
        "message" : "Hello",
        "id" : "100",
        "name" : "name"
    }
    var params = {contentType: 'application/json', documents : JSON.stringify(documents) };
    console.log('uploading documents to cloudsearch domain', params);
    cloudsearchdomain.uploadDocuments(params, function(err, data) {
        if(err) {
            console.log('Error uploading documents to cloudsearch', err, err.stack); …
Run Code Online (Sandbox Code Playgroud)

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

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

AWS Cognito 和 API 网关身份验证

我在 API 网关(身份验证:AWS_IAM)下设置了一个 GET 方法,并且有一个带有开发人员身份的 Cognito 池。我在 get 方法后面有一个 lambda。

当我调用 Cognito 时,我会获得临时凭证并承担一个角色。我担任的角色具有在 API 网关上执行和访问所有内容的适当权限。

       ...
       {
            "Effect": "Allow",
            "Action": [
                "execute-api:Invoke"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "apigateway:GET"
            ],
            "Resource": [
                "*"
            ]
        }
        ...
Run Code Online (Sandbox Code Playgroud)

当我使用此设置调用 API 网关时,我收到 500,内部服务器错误。

如果我从策略中删除上述 API 网关权限,那么我会得到 403 error forbidden (User: arn:aws:sts::xxxxx:assumed-role/Cogn_Auth_Role/xxx is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:us-east-1:xxxx:xxx/xxx/GET/events

如果我去并将 附加AdminAccess到这个角色,那么一切正常。这里有什么交易?我错过了什么吗?

amazon-web-services amazon-iam amazon-cognito aws-lambda aws-api-gateway

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

使用 Amazon Lambda 分叉和加入

我正在尝试编写一个触发许多小 lambda 的 lambda 函数

exports.handler = (event, context, callback) => {
   var AWS = require('aws-sdk');

   let noOfPages = 20, currentPage = 1;
   var message = '';
   //let payloadArray = [];
   while(currentPage <= noOfPages){
        message = '{"first_page": '+ currentPage +', "last_page": '+ (currentPage) + ', "file_name" : "something.doc"' +'}';
        console.log(message);
        var params = {
            FunctionName: 'test',
            InvocationType: 'Event',
            LogType: 'Tail',
            Payload: message
        };
        var convLambda = new AWS.Lambda({
            accessKeyId: 'key',
            secretAccessKey: 'secret',
            region: 'us-west-2'
        });

        convLambda.invoke(params, function(err, data) {
            if …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services node.js aws-lambda

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

如何使用 cli 在 AWS 中提及 lambda 函数的区域

我正在尝试使用 aws-cli 在特定区域创建 lambda 函数。我不知道如何创建它。查看此文档,找不到任何与区域相关的参数。http://docs.aws.amazon.com/cli/latest/reference/lambda/create-function.html

谢谢。

amazon-web-services aws-cli aws-lambda

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

AWS Glue作业访问参数

我有一个用Scala编写的胶水作业(Spark作业),我想将参数传递给它。我使用lambda函数来触发作业。我应该如何访问传递给作业的参数?

这是正确的方法吗?

def main(sysArgs: Array[String]) {

    /** This is input parameter */
   val par = sysArgs(0)

}
Run Code Online (Sandbox Code Playgroud)

还是其他?

scala apache-spark aws-lambda aws-glue

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

AWS Lambda和承诺:未调用回调

我假设我在承诺方面缺乏一些基本知识。我有一个在AWS Lambda内的流程,该流程下载三个文件,然后生成通过电子邮件发送的输出。

module.exports.test = async (event) => {
   var p = download1();
   var c = download2();
   var h = download3();

   await Promise.all([p, c, h]).then(() => {
     ... bunch of logic manipulating the data
     customers.forEach(i => {
       buildFile().then(data => {
         sendEmail(data).then(response => {
            console.log('Email sent successfully');
         });
       });
     });
   }, errHandler);
};
Run Code Online (Sandbox Code Playgroud)

buildFile和sendEmail函数都返回Promise,但是我从没收到“电子邮件已成功发送”消息。它运行代码,但实际上在Lambda完成之前从未返回(至少我认为这是正在发生的事情)。

我的理解是Promise将完成回调,但是现在我想我需要做的事情与在原始Promise.all()中进行下载的方式类似。那是正确的方向吗?

该过程应获取文件,然后遍历客户以创建每个文件并通过SES发送。

javascript node.js promise async-await aws-lambda

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

如何解决AWS Lambda中的Runtime.HandlerNotFound错误

我正在创建一个简单的API,我想创建一个存储输入数据的函数,但是我始终遇到Runtime.HandlerNotFound错误。

我检查了环境名称(index.js)与处理程序(index.handler)匹配

const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({region: 'us-east-2', apiVersion: '2012-08-10'});

exports.fn = (event, context, callback) => {
    const params = {
        Item: {
            "UserId": {
                N: event.userId
            },
            "firstname": {
                S: event.firstname
            },
            "lastname": {
                S: event.lastname
            },
            "email": {
                S: event.email
            }
        },
        TableName: "contact-info"
    };
    dynamodb.putItem(params, function(err, data) {
        if (err) {
            console.log(err);
            callback(err);
        } else {
            console.log(data);
            callback(null, data);
        }
    });
};
Run Code Online (Sandbox Code Playgroud)

我期望AWS Lambda测试返回没有错误的空对象。

node.js aws-lambda

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

从列表Python中删除匹配的项目

如何从列表中删除匹配的项目? <class 'list'>

snapshot_tag = [{'Key': 'Disaster_Recovery', 'Value': 'Full'}, {'Key': 'Backup Initiator Rule', 'Value': 'Daily-6d-retention'}, {'Key': 'Name', 'Value': 'HOSTNAME'}, {'Key': 'aws:backup:source-resource', 'Value': '000AD618-2D20-CE4B-0000-0000B688C579'}, {'Key': 'Backup_Type', 'Value': 'CROSS-REGION'}]
Run Code Online (Sandbox Code Playgroud)

我需要删除一个元素:

{'Key': 'aws:backup:source-resource', 'Value': '000AD618-2D20-CE4B-0000-0000B688C579'}
Run Code Online (Sandbox Code Playgroud)

如果指定完整的元素名称,则可以将其删除:

snapshot_tag.remove({'Key': 'aws:backup:source-resource', 'Value': '000AD618-2D20-CE4B-0000-0000B688C579'})
Run Code Online (Sandbox Code Playgroud)

或指定特定的索引:

del snapshot_tag[3]

但在我的情况下,元素的“值”始终不同,索引随机化。

python list boto3 aws-lambda

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

为什么我从Postman得到此{“ message”:“内部服务器错误”}

我是AWS新手,{"message": "Internal server error"}在Postman中使用API​​ Gateway运行Lambda函数时遇到了麻烦。

我已经检查了CloudWatchLogs,日志中没有显示错误。但是邮递员返回了{"message": "Internal server error"}这个错误。

amazon-web-services amazon-cloudwatch aws-lambda aws-api-gateway amazon-cloudwatchlogs

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