Tag: aws lambda

S3.getSignedUrl接受多个内容types

我正在使用react-s3-uploader节点包,它接受一个signingUrl来获得一个signedUrl来存储一个对象到S3中。 目前我已经configuration了一个lambda函数(带有一个API网关端点)来生成这个signedUrl。 经过一番修改之后,我得到了它的工作,但注意到我必须在我的lambda函数中定义content-type ,如下所示: var AWS = require('aws-sdk'); const S3 = new AWS.S3() AWS.config.update({ region: 'us-west-2' }) exports.handler = function(event, context) { console.log('context, ', context) console.log('event, ', event) var params = { Bucket: 'video-bucket', Key: 'videoname.mp4', Expires: 120, ACL: 'public-read', ContentType:'video/mp4' }; S3.getSignedUrl('putObject', params, function (err, url) { console.log('The URL is', url); context.done(null, {signedUrl: url}) […]

开发亚马逊Alexa的技能,我有插槽值(首字母缩略词)阅读为单词的麻烦

我正在build立一个亚马逊Alexa技能的电视指南,并有所有必要的部分工作(IE Lambda,DynamoDB和Alexa技能控制台),其中大部分频道将通过语音识别,在我的数据库中find,并返回。 这个问题的原因是我希望Alexa把我的声音input“赌注”,但每次我拼出赌注,她不认识的插槽。 如果我说“下注”,她会识别插槽,大写插槽(我的lambda函数的一部分),匹配我的数据库中的单词,并返回项目。 我宁愿拼出单词,而不只是说“赌”。 我如何确保当我拼出“赌注”时,Alexa将理解“赌注”而不是“赌注”?

AWS – Lambda无法访问ElasticTranscoder

我有一个由VPC中的以下服务组成的基础结构( 显然除了S3和代码转换器 ): EC2(networking服务器) RDS(数据库) Lambda函数与Node.js S3 弹性转码器 情况如下: 用户直接将video上传到S3存储桶 上传将触发lambda函数,该函数将在Elastic Transcoder中创build一个新作业(使用AWS开发工具包),并更新数据库中的资源行(RDS) 问题是,由于RDS不可公开访问,为了允许连接,Rambda需要与RDS在同一个VPC中。 这也会导致在lambda函数中泛因特网连接丢失,这意味着它不能访问Elastic Transcoder(因为从VPC的angular度来看,它是一个VPC的out-of- VPC)。 现在,我也遇到了与S3类似的问题,但通过在指向S3的VPC上添加一个端点来解决这个问题是相当容易的,但是,对于Elastic Transcoder(或其他任何服务,事实上)并没有这样的select。 我不想创build一个NAT网关,因为这样一个无聊的事情是非常昂贵的。 所以简单的问题是:我怎样才能解决Lambda可以同时与RDS和Elastic Transcoder进行通信? PS:lambdaangular色包含可以访问Elastic Transcoder的*Job

使用Node Lambda通过JDBC连接到AWS Athena时出错

我的目标 我正在尝试使用AWS的JDBC驱动程序来允许运行Node 6.10的Lambda函数连接到AWS Athena并创build一个数据库。 (我也希望能够创build和查询该数据库内的表)。 我所试过的 我已经尝试了下面的代码从一个类似的问题的答案: var JDBC = require('jdbc'); var jinst = require('jdbc/lib/jinst'); if (!jinst.isJvmCreated()) { jinst.addOption("-Xrs"); jinst.setupClasspath(['./AthenaJDBC41-*.jar']); } var config = { // Required url: 'jdbc:awsathena://athena.us-east-1.amazonaws.com:443', // Optional drivername: 'com.amazonaws.athena.jdbc.AthenaDriver', minpoolsize: 10, maxpoolsize: 100, properties: { s3_staging_dir: 's3://aws-athena-query-results-*/', log_path: '/logs/athenajdbc.log', user: 'access_key', password: 'secret_key' } }; var hsqldb = new JDBC(config); hsqldb.initialize(function(err) […]

Lambda函数失败,没有生成日志

我正在玩这个PDF到图像转换器 ,我克隆了回购,运行npm install ,改变了这一部分: var s3EventHandler = new S3EventHandler({ region: 'my-region', outputBucketName: 'my-bucket-name' s3: s3, resolution: 72 }); 将它重命名为exports.js,压缩了js,node_modules文件夹,package.json和event.json(我也尝试将这两个jsons移除)并将其上传到我的Lambda函数中。 s3触发器已经创build,到目前为止工作正常。 我有多个testing失败,因为它找不到asynchronous模块和tmp模块,我已经移动到顶层,它似乎修复它(但它并没有抱怨它的其他模块要求和不在最高一级)。 在testing中,它抱怨s3没有被定义,因为它没有很多的细节,我正在失去。 我认为这可能是我正在运行testing,所以s3触发器本身缺失。 当我上传PDF到存储桶中时,Lambda报告它运行但失败。 进入CloudWatch Logs说没有日志stream。 我已经检查了IAMangular色,并且拥有CreateLogStream和PutLogEvents权限(这是模板化的IAM策略)。 我怎样才能使我的日志工作find问题? 或者,我可以做些什么来解决s3未定义的问题,这是我唯一的线索atm? 这可能与顶层模块需求有关,但是由于只有一些模块需要处于最高层,所以看起来并不一致。

外部调用的Lambda函数超时

我有一个Lambda函数,我需要进行外部API调用。 我已经将Lambda函数添加到安全组,VPC和2个子网,并给出了以下文本: 当您启用VPC时,您的Lambdafunction将会失去默认的互联网访问权限。 如果您的function需要外部Internet访问,请确保您的安全组允许出站连接,并确保您的VPC具有NAT网关。 我进入VPC,创build一个NAT网关(我让AWS创build一个EIP),将其附加到我的lambda函数的一个子网上。 出于debugging目的,我的安全组出站function被设置为所有通信/所有目的地( 0.0.0.0/0 )。 另外我的这个VPC的networkingACL被设置为这个(有5个子网,包括那个有NAT网关的): 100 | ALL Traffic | ALL | ALL | 0.0.0.0/0 | ALLOW VPC上有相同的2个子网的路由表, 0.0.0.0/0路由设置为NAT网关的目标。 VPC上也有另外3个子网的路由表,其中0.0.0.0/0路由设置为定位到Internet网关。 两个路由表都有相同的local目标IP(VPC的IP)。 我得到的错误是: { Error: connect ETIMEDOUT xxxx:443 at Object.exports._errnoException (util.js:1018:11) at exports._exceptionWithHostPort (util.js:1041:20) at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1090:14) code: 'ETIMEDOUT', errno: 'ETIMEDOUT', syscall: 'connect', address: 'xxxx', port: 443 } 我正在运行的节点代码在我的桌面节点环境中工作,并且POST调用在postman中工作,所以我相当肯定这是我的AWSconfiguration的问题。 我一直在使用这种情况作为资源: […]

在另一个独立的lambda中获取AWS API网关主机名

我已经使用无服务器部署创build了一个API网关。 AWSdynamic地为网关创buildurl, https://xxxx.execute-api.us-west-2.amazonaws.com/test/hello 这里xxxx (即主机)正在dynamic生成。 请让我知道是否有任何方法来手动设置此主机(无需创build自定义域和所有这些漫长的过程)。 或者有什么办法来获得这个主机名在另一个独立的lambda使用代码。 我们不想在该lambda中编写硬编码主机名。 任何帮助提前感激。 谢谢。

在Lambda上查询到MySQL时,任务超时

我一直在用nodejs使用amazon Lex和Lambda。 我的问题是,当我尝试MySQL查询,lambda获得时间,并没有任何结果返回给Lex, 需要帮助。 这是我的代码 'use strict'; const lexResponse = require("../helper/responseBuilder"); const db = require('../config/db') function dialog (intentRequest, callback) { const source = intentRequest.invocationSource; const userId = intentRequest.userId; const sessionAttributes = intentRequest.sessionAttributes || {}; if (source === 'DialogCodeHook') { if (!companyRules) { getList(1, (results) => { console.log(results); callback(lexResponse.elicitSlot( sessionAttributes, intentRequest.currentIntent.name, intentRequest.currentIntent.slots, "Info", { contentType: 'PlainText', […]

AWS Lambda函数连接到Postgresql数据库

有谁知道如何通过AWS Lambda函数连接到PostgreSQL数据库。 我在网上search它,但我找不到任何关于它的东西。 如果你能告诉我如何去做,这将是伟大的。 如果你能发现我的代码(node.js)有什么问题,那将是非常好的,否则你能告诉我如何去做? exports.handler = (event, context, callback) => { "use strict" const pg = require('pg'); const connectionStr = "postgres://username:password@host:port/db_name"; var client = new pg.Client(connectionStr); client.connect(function(err){ if(err) { callback(err) } callback(null, 'Connection established'); }); context.callbackWaitsForEmptyEventLoop = false; }; 该代码将引发错误:无法find模块'pg' 我直接在AWS Lambda上写了它,如果这样做有什么不同,就不会上传任何东西。

Node.js http.get xml返回'转义'

我正在使用JavaScript(节点6.x)中的一个简单的AWS Lambda函数,它应该代理意大利新闻提供者的RSS。 这是函数的代码: var http = require("http") exports.handler = (event, context, callback) => { http.get("http://www.milanotoday.it/rss/", (response) => { response.setEncoding("utf8") let xml = "" response.on("data", (chunk) => { xml += chunk }) response.on("end", () => { callback(null, xml) }) }) } 它工作,或者至less它加载xmlvariables内的响应。 我不明白为什么string是这样的: "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<rss version=\"2.0\" xmlns:content=\"http://purl.org/rss/1.0/modules/content/\"… 这似乎是一种“逃脱”。 有人可以帮我吗? 先谢谢你…