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。我希望这对其他人有帮助。感谢您的反馈!
我有一个 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。我希望这对其他人有帮助。感谢您的反馈!