AWS Lambda无法从VPC内部访问内部服务器

时间:2019-06-26 02:32:03

标签: amazon-web-services aws-lambda vpn vpc

我有一个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超时。

1 个答案:

答案 0 :(得分:0)

我相信我找到了问题的根源。最终,我相信问题在于我们的本地防火墙。 VPN隧道并非一直处于活动状态。其他人提到需要从本地网络激活它。我创建了一个ec2实例并连接到它,从而激活了VPN。在不久之后运行lambda的过程中,我可以成功到达尝试连接的本地REST端点。

我还没有实现最终的解决方案,但是从防火墙中,我们应该能够将连接设置为保持活动ping,以便我们的连接不会超时。我希望这对其他人有帮助。谢谢您的反馈!