在此之后,我将Lambda、RDS实例和DocumentDb集群附加到VPC。但是,从那时起,我就无法使用NodeJS AWS-SDK从我的lambda中与我的SQS队列进行对话。
我想补充的是,我已经阅读并实现了以下几点:AWS Lambda:无法从具有VPC访问的Lambda函数访问SQS队列,但是我仍然无法连接。
以下是我所拥有的:
λ:
代码
const {SQS} = require('aws-sdk');
// Constructor Init
const sqs = new SQS({
apiVersion: '2012-11-05',
endpoint: 'https://sqs.us-west-2.amazonaws.com', // not sure if this is 'invoking' the vpc endpoint or not
region: 'us-west-2'
});
// Send message
await sqs.sendMessage({
MessageBody: 'Test body',
QueueUrl: 'https://sqs.us-west-2.amazonaws.com/<rest of URI>',
MessageAttributes: {...someAttrs}
}).promise();
我还应该提到,为了避免整个问题,我开始使用SQS作为Lambda目的地。虽然这确实将消息注入到目标队列中,但它可能不会与我的用例相适应。如果需要,我可以进一步阐述这一点,因为它与实际问题并不完全相关。
**编辑8/31/20**
感谢所有的回复,这是一个很大的帮助,让我有了一个决心。我要对任何发现这篇文章的人说,首先要注意:
这是我希望在开始之前就能发现的东西,因为虽然它专门针对给lambdas提供internet访问,但它经历了将IG和Nats映射到子网的过程,这正是我错误配置VPC的地方。有了这个视频,我去重新创建了我的整个VPC,它是如此干净,更容易连接点。10/10推荐。
再次感谢!
AWS Lambda函数应该附加到VPC中的专用子网。
Amazon SQS位于Internet上,因此Lambda函数需要一种访问SQSendpoint的方法。
Amazon SQS的VPCendpoint可以在VPC和SQSendpoint之间提供直接链接,而不需要Internet访问。一旦创建,VPC将自动跨VPCendpoint发送SQS请求。这是一个很好的,简单的选择。
我在VPC中使用AWS Chalice托管了一个Lambda函数,因为我希望它访问一个无服务器的Aurora DB实例。现在,我还希望这个函数将send_message()转换为SQS。
早上好,你能帮我们解决下一个问题吗:我有一个API网关+Java Lambda处理程序。这个Lambda使用httpconnection获取一些Internet REST API。 当我们使用这个Lambda而不使用VPC时,它工作得很好。但当我们使用配置了internet访问的VPC时--有时Lambda会出现超时错误而失败。它在20%的请求中失败(80%的请求工作正常),下一个错误发生在日志中
在过去的几个小时里,我一直在调试、配置和命名它,我似乎不明白为什么会发生这种情况。 我正在尝试调用一个 lambda 函数,该函数只是从 ec2 中检索基本信息。当我在aws控制台中测试此lambda函数时,它似乎工作正常。但是,使用以下代码在另一个lambda中调用它; 它只是超时了。没有任何反应…两个Lambda都连接到VPC和所有子网 我认为是我的新VPC导致了这个问题。我的VPC包括: 1
甚至,API网关资源策略是这样写的: 和VPCendpoint策略进行完全访问。
我有一个连接到lambda的队列(fifo)。我想在lambda中向标准队列发送一条消息。但没有发送/接收任何消息。然而,如果我尝试从非SQS连接的lambda(通过AppSync)发送它,它会工作。 我查过: lambda有权发送SQS消息(您可以在那里看到) 由于我已成功地从另一个lambda(非SQS)向标准队列发送消息,因此正确配置了标准队列 SQS URL是否正确 控制台中不会显示任何错