我在 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/
我正在尝试使用 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
我在 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
我正在尝试编写一个触发许多小 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) 我正在尝试使用 aws-cli 在特定区域创建 lambda 函数。我不知道如何创建它。查看此文档,找不到任何与区域相关的参数。http://docs.aws.amazon.com/cli/latest/reference/lambda/create-function.html
谢谢。
我有一个用Scala编写的胶水作业(Spark作业),我想将参数传递给它。我使用lambda函数来触发作业。我应该如何访问传递给作业的参数?
这是正确的方法吗?
def main(sysArgs: Array[String]) {
/** This is input parameter */
val par = sysArgs(0)
}
Run Code Online (Sandbox Code Playgroud)
还是其他?
我假设我在承诺方面缺乏一些基本知识。我有一个在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发送。
我正在创建一个简单的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测试返回没有错误的空对象。
如何从列表中删除匹配的项目? <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]
但在我的情况下,元素的“值”始终不同,索引随机化。
我是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
aws-lambda ×10
node.js ×5
amazon-iam ×1
amazon-s3 ×1
apache-spark ×1
async-await ×1
aws-cli ×1
aws-glue ×1
boto3 ×1
javascript ×1
list ×1
promise ×1
python ×1
scala ×1