使用 VPC 配置时的 AWS lambda 函数 ConnectionError
AWS lambda function ConnectionError when configured with VPC
我有一个 AWS lambda 函数来触发每日导入程序作业
我为此使用 "A starter AWS Lambda function.",而 lambda_handler 非常简单。
这是我正在做的伪代码:
try:
cron_job = CloudCron()
status = redis_get_importer_status(db_key, key)
if status != 'running':
cron_job.login()
redis_set_importer_status(db_key, key, 'running')
cron_job.start_importer()
except Exception:
exc_traceback = traceback.print_exc()
print(exc_traceback)
此函数每 15 分钟由 CloudWatch 事件触发一次。
lambda 函数无法 运行 lambda_handler 并抱怨没有 VPC 的执行策略。为解决此问题,我为此角色附加了 AWSLambdaVPCAccessExecutionRole 策略。虽然这个 运行 我的 lamda_handler,但还有其他问题。 python 请求模块在尝试登录站点时抛出 ConnectionError。
我将超时时间增加到 5 分钟,内存增加到 1GB,但仍然看到这个问题。
ConnectionError: HTTPSConnectionPool(host='test.site.com.au', port=443): Max retries exceeded with url: /auth/login (由 NewConnectionError(': Failed建立新连接:[Errno 110] 连接超时',))
我 运行 在我的 VPC 中使用相同的 lambda_handler 并且似乎可以无缝工作。
我终于删除了我的 lambda 函数中的 redis set status 和 get status 以及 lamba 中的 VPC 配置和 运行 lamda_handler ,这似乎没有任何问题。
我需要 VPC 配置来设置和从 redis 服务器获取密钥。
感谢任何帮助!
干杯!
将 Lambda 函数放入 VPC 后,它只能访问 VPC 内的资源。它无法连接到 test.site.com.au
,因为它解析为 VPC 外部的 public IP 地址。您有几个选项可以解决此问题:
- 将 NAT 网关添加到您的 VPC。这将为您的 Lambda 函数提供 Internet 访问。
- 如果您尝试访问的站点 运行 在您的 VPC 内的服务器上,请使用私有 IP 地址而不是 DNS 名称。或者,在您的 VPC 中设置 Route53 私有托管区域,将 DNS 名称解析为私有 IP 地址。
我有一个 AWS lambda 函数来触发每日导入程序作业
我为此使用 "A starter AWS Lambda function.",而 lambda_handler 非常简单。 这是我正在做的伪代码:
try:
cron_job = CloudCron()
status = redis_get_importer_status(db_key, key)
if status != 'running':
cron_job.login()
redis_set_importer_status(db_key, key, 'running')
cron_job.start_importer()
except Exception:
exc_traceback = traceback.print_exc()
print(exc_traceback)
此函数每 15 分钟由 CloudWatch 事件触发一次。
lambda 函数无法 运行 lambda_handler 并抱怨没有 VPC 的执行策略。为解决此问题,我为此角色附加了 AWSLambdaVPCAccessExecutionRole 策略。虽然这个 运行 我的 lamda_handler,但还有其他问题。 python 请求模块在尝试登录站点时抛出 ConnectionError。 我将超时时间增加到 5 分钟,内存增加到 1GB,但仍然看到这个问题。
ConnectionError: HTTPSConnectionPool(host='test.site.com.au', port=443): Max retries exceeded with url: /auth/login (由 NewConnectionError(': Failed建立新连接:[Errno 110] 连接超时',))
我 运行 在我的 VPC 中使用相同的 lambda_handler 并且似乎可以无缝工作。
我终于删除了我的 lambda 函数中的 redis set status 和 get status 以及 lamba 中的 VPC 配置和 运行 lamda_handler ,这似乎没有任何问题。
我需要 VPC 配置来设置和从 redis 服务器获取密钥。
感谢任何帮助!
干杯!
将 Lambda 函数放入 VPC 后,它只能访问 VPC 内的资源。它无法连接到 test.site.com.au
,因为它解析为 VPC 外部的 public IP 地址。您有几个选项可以解决此问题:
- 将 NAT 网关添加到您的 VPC。这将为您的 Lambda 函数提供 Internet 访问。
- 如果您尝试访问的站点 运行 在您的 VPC 内的服务器上,请使用私有 IP 地址而不是 DNS 名称。或者,在您的 VPC 中设置 Route53 私有托管区域,将 DNS 名称解析为私有 IP 地址。