我有一个lambda,它正在尝试对AWS外部的本地服务器进行REST调用。我们有从VPC运行的lambda,该VPC与我们的本地资源建立了VPN连接。使用VPC从EC2成功运行了相同的rest调用,但是lambda请求挂起。安全组是开放的。有什么想法可以调试吗?
这是大部分的lambda
def lambda_handler(event, context):
config = configparser.ConfigParser()
config.read('config')
pattern = re.compile(".*"+config['DEFAULT']['my-pattern'])
logger.info(event['Records'])
sns_json = event['Records'][0]['Sns']
sns_message = json.loads(sns_json['Message'])
logger.info(sns_message['Records'][0]['s3'])
s3_object = sns_message['Records'][0]['s3']
new_file_name = s3_object['object']['key']
bucket = s3_object['bucket']['name']
if pattern.match(new_file_name):
new_json = {"text": "New file (" + new_file_name + ") added to the bucket. " + bucket,
"title": config['DEFAULT']['default_message_title']}
webhook_post = requests.get("http://some-ip:4500/")
logger.info("Webhook Post Status: " + str(webhook_post.status_code) + str(webhook_post))
logger.info("Skip teams webhook");
outgoing_message_dict = {
's3Bucket': bucket,
'somefile': new_file_name
}
return outgoing_message_dict
我没有从请求中收到任何错误,它只是挂起,直到我的lambda超时。
答案 0 :(得分:0)
我相信我找到了问题的根源。最终,我相信问题在于我们的本地防火墙。 VPN隧道并非一直处于活动状态。其他人提到需要从本地网络激活它。我创建了一个ec2实例并连接到它,从而激活了VPN。在不久之后运行lambda的过程中,我可以成功到达尝试连接的本地REST端点。
我还没有实现最终的解决方案,但是从防火墙中,我们应该能够将连接设置为保持活动ping,以便我们的连接不会超时。我希望这对其他人有帮助。谢谢您的反馈!