使用 CloudFormation(实际上,使用 Python 的对流层)将 AWS Lambda 配置为由规则触发时遇到问题->触发器作为计划事件源。这已经花费了我几天时间,任何帮助将不胜感激。
这是相关的 CF JSON 片段 -
"DataloaderRetrier": {
"Properties": {
"Code": {
"S3Bucket": "mycompanylabs-config",
"S3Key": "v3/mycompany-component-loader-lambda-0.5.jar"
},
"FunctionName": "DataloaderRetriervitest27",
"Handler": "mycompany.ScheduledEventHandler::handleRequest",
"MemorySize": 320,
"Role": "arn:aws:iam::166662328783:role/kinesis-lambda-role",
"Runtime": "java8",
"VpcConfig": {
"SecurityGroupIds": [
"sg-2f1f6047"
],
"SubnetIds": [
"subnet-ec3c1435"
]
}
},
"Type": "AWS::Lambda::Function"
},
"DataloaderRetrierEventTriggerPermission": {
"Properties": {
"Action": "lambda:InvokeFunction",
"FunctionName": {
"Fn::GetAtt": [
"DataloaderRetrier",
"Arn"
]
},
"Principal": "events.amazonaws.com",
"SourceAccount": {
"Ref": "AWS::AccountId"
},
"SourceArn": {
"Fn::GetAtt": [
"DataloaderRetrierEventTriggerRule",
"Arn"
]
}
},
"Type": "AWS::Lambda::Permission" …Run Code Online (Sandbox Code Playgroud) amazon-web-services aws-cloudformation aws-lambda troposphere
我有一个由 S3 存储桶触发的 AWS Lambda 函数。Lambda 函数 ping VPC 内的 EC2 实例。VPC 没有 NAT。出于某种原因,Lambda 无法连接到 EC2,并且超时。我曾尝试将 lambda 保留在 VPC 中和 VPC 之外。我也尝试使用实例的公共和私有 IP,但似乎不起作用。关于我下一步可以做什么的任何建议。lambda函数的代码如下
from __future__ import print_function
import json
import boto3
import urllib2
print('Loading function')
s3 = boto3.client('s3')
def lambda_handler(event, context):
bucket = event['Records'][0]['s3']['bucket']['name']
url = urllib2.urlopen("http://ip-address/API/")
Run Code Online (Sandbox Code Playgroud) 使用 node.js 查询 dynamoDB 表。DynamoDB 表的键为 Timestamp,用整数表示。在这种情况下,我将 :timestampStart 保留为 1,将 timestampEnd 保留为 10 作为示例。
var params = {
TableName: "Table2",
KeyConditionExpression:"Timestamp = :ts BETWEEN :timestampStart AND :timestampEnd",
ExpressionAttributeValues: {
":ts":"Timestamp",
":timestampStart": 1,
":timestampEnd": 10
}
};
Run Code Online (Sandbox Code Playgroud)
:ts 不正确,我可以看到这一点。我想返回在timestampStart 和timestampEnd 之间使用Timestamp 值找到的任何行。
错误信息:
"errorMessage": "Invalid KeyConditionExpression: Syntax error; token: \"BETWEEN\", near: \":ts BETWEEN :timestampStart\"",
javascript amazon-web-services node.js amazon-dynamodb aws-lambda
我写了一个简单的 Alexa 技能。它使用“alexa-app”作为依赖。
var alexa = require('alexa-app');
当我保存并测试我的技能时,我得到以下响应
{
"errorMessage": "Cannot find module 'alexa-app'",
"errorType": "Error",
"stackTrace": [
"Function.Module._load (module.js:276:25)",
"Module.require (module.js:353:17)",
"require (internal/module.js:12:17)",
"Object.<anonymous> (/var/task/index.js:4:13)",
"Module._compile (module.js:409:26)",
"Object.Module._extensions..js (module.js:416:10)",
"Module.load (module.js:343:32)",
"Function.Module._load (module.js:300:12)",
"Module.require (module.js:353:17)"
]
}
Run Code Online (Sandbox Code Playgroud)
是否可以使用此“alexa-app”依赖项而不将其烘焙到 zip 文件中。为了加快开发速度,我更喜欢在在线 Lambda 代码编辑器中只使用一个文件。这可能吗?
我正在尝试在 AWS lambda 函数中使用 sox 将 FLAC 文件转换为 MP3,但我似乎无法构建支持 FLAC 的 sox 版本。
我找到了我一直在使用的这个很棒的解决方案,但它不支持 FLAC。
我在网上搜索了替代品,但似乎没有任何效果。我还读到,在某个阶段 FLAC 支持丢失了,但应该已修复。我仍在寻找答案,但任何帮助表示赞赏。
我正在尝试从 S3 存储桶 (.gzip) 获取文件并将其解压缩到另一个存储桶。如果不将文件保存在本地(我的 PC)上,我无法找到一种方法。有没有办法在 Lambda 上“保存”文件并直接在 S3 上解压缩?谢谢!
亚马逊简单电子邮件服务 (Amazon SES)
我有以下代码。如果我从 aws ec2 实例或我的工作站使用它,它会完美运行。但是,一旦我将它添加到我在 AWS VPC 内部处理的 lambda 函数中,我的 ses.sendEmail() 回调就永远不会被调用。我从未在 CloudWatch 日志中看到该函数的“sendEmail 函数错误”或“sendEmail 函数成功”console.log(),并且我的 lambda 函数在超时期限结束时超时。我不知道我还能做什么。
我已经查找了可能需要添加的任何 IAM 角色或策略,但找不到任何需要提及的内容或要添加的内容。
尝试将策略“AmazonSESFullAccess”添加到该函数的 IAM 角色。仍然超时。
let aws = require('aws-sdk')
, ses = new aws.SES({ apiVersion: '2010-12-01', region: 'us-west-2' })
;
sendEmail({
To : [ 'anEmail@someone.com' , 'anotherEmail@somewhereElse.com'],
From: 'ourSupportEmail@whereIWork.com',
Subject: 'Sending An Email Out',
Body: `<html> A Buch of HTML Here</html>`
}, function(err, result){
if(err){
console.error('SendEmail Error', err);
} else {
console.log('SendEmail Result', result);
}
});
function sendEmail(emailObj, cb){ …Run Code Online (Sandbox Code Playgroud) 我想为 Dynamo DB 设置标签,我们是否有一个 serverless.yml 配置,就像我们有它的功能一样
functions:
createUsers:
tags:
key: value
Run Code Online (Sandbox Code Playgroud) 如何使用 boto3 将触发器 s3 存储桶添加到 lambda 函数,然后我想将该 lambda 函数附加到使用编程方式(boto3)动态创建的 s3 存储桶
我有一个使用 S3 的静态 SPA 页面,因为它是 CloudFront 的源头。如果我访问 www.domain.com/page,我将获得bucket-directory/prod/page/预期的 CloudFront 路径前缀。
是否可以在 AWS Lambda 中捕获路径并将尾部斜杠附加到请求中,因此它变为 www.domain.com/page > [Lambda] > www.domain.com/page/
我一直在寻找并尝试以下资源,但收效甚微:http : //blog.rowanudell.com/redirects-in-serverless/
aws-lambda ×10
amazon-s3 ×3
node.js ×2
alexa ×1
amazon-ec2 ×1
amazon-iam ×1
aws-sdk ×1
flac ×1
gzip ×1
javascript ×1
lame ×1
python ×1
python-2.7 ×1
sox ×1
troposphere ×1
unzip ×1