AWS Lambda 无法从 VPC 内到达内部服务器

AWS Lambda cannot reach internal servers from within VPC

我有一个 lambda 正试图对 AWS 之外的本地服务器进行 REST 调用。我们有来自 VPC 的 lambda 运行,它与我们的本地资源有 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 超时。

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

我还没有实施最终的解决方案,但是我们应该能够从防火墙设置连接以进行 keep-alive ping,这样我们的连接就不会 time-out。我希望这对其他人有帮助。感谢您的反馈!