AWS Lambda函数存在问题,这取决于DynamoDB和SQS是否正常运行。当我尝试运行lambda堆栈时,它们在尝试连接到SQS服务时会超时。 AWS Lambda函数位于VPC内,具有以下设置:
lambdas和mysql实例之间的流量没有问题(除非我将lambdas放在VPC之外,即使我打开所有端口也无法访问服务器)。假设lambdas的代码也是正确的,因为它在我试图在私有网中掩盖它之前工作。还相应地设置了lambda执行角色(或者在将它们移动到私有网之后是否需要进行调整?)。
添加dynamodb端点解决了数据库的问题,但是其他一些服务没有可用的VPC端点。根据一些答案,我发现了here,here,here以及公告/教程here和here,我很确定我遵循了所有建议的步骤
我会非常感激并且很高兴任何提示下一步检查,因为我目前不知道这里可能出现什么问题。
编辑:该功能似乎根本没有任何互联网访问,因为我检查的玩具示例也超时:
import urllib.request
def lambda_handler(event, context):
test = urllib.request.urlopen(url="http://www.google.de")
return test.status
答案 0 :(得分:2)
当然问题是再次坐在显示器前面。我没有将0.0.0.0/0(任何流量)路由到Internet网关,而是将0.0.0.0/16(来自具有0.0.x.x ip的计算机的流量)指定到门。由于没有具有此类IP的计算机,因此阻止任何流量进入VPC。
@John Rotenstein:Thx,虽然是关于lambdash的暗示。这似乎是一个非常有用的工具。答案 1 :(得分:1)
您的配置听起来不错。
您应该测试配置,看看您是否可以访问任何公共Internet站点,然后测试连接到AWS。
您可以编写尝试此类连接的Lambda函数,也可以使用lambdash来有效地为您提供在Lambda上运行的远程shell 。这样,您可以轻松地从命令行测试连接,例如curl
。