我有一个AWS lambda函数来触发每日导入器作业
我使用的是“启动AWS Lambda函数”。为此,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 Policy。虽然这运行了我的lamda_handler,但还有其他问题。尝试登录站点时,python请求模块抛出了ConnectionError。 我将超时时间增加到5分钟,内存增加到1GB,仍然看到了这个问题。
ConnectionError:HTTPSConnectionPool(host ='test.site.com.au',port = 443):使用url:/ auth / login超出最大重试次数(由NewConnectionError引起(':无法建立新连接) :[Errno 110]连接超时',))
我在我的VPC中运行了相同的lambda_handler,似乎无缝地工作。
我最终删除了redis设置状态并获取了lambda函数中的状态和lamba中的VPC配置并再次运行了lamda_handler,这似乎没有任何问题。
我需要VPC配置来设置和从redis服务器获取密钥。
感谢任何帮助!
干杯!
答案 0 :(得分:2)
将Lambda函数放入VPC后,它只能访问VPC内的资源。它无法连接到test.site.com.au
,因为它会解析为VPC外部的公共IP地址。您有几个方法可以解决此问题: