大家好,我正在尝试对我在AWS中创建的postgresql数据库执行查询。
我为Athena添加了一个数据源,我为postgresql创建了一个数据源,我创建了lambda函数。
在Lambda函数中我设置:
- 默认连接字符串
- spill_bucket和spill前缀(我为两者设置相同:'athena-spill')。在S3页面中,我看不到任何雅典娜溢出桶)
- 安全组—>我设置了我创建的安全组来访问db
- 子网——>我设置了一个数据库子网我部署了lambda函数,但我收到了一个错误,我不得不添加一个新的环境变量创建的连接字符串,但命名为'dbname_connection_string'。
添加这个新的env变量后,我能够在Athena中看到数据库,但是当我试图在这个数据库上执行任何查询时:
select * from tests_summary limit 10;
我在运行query后收到这个错误:
GENERIC_USER_ERROR: Encountered an exception[com.amazonaws.SdkClientException] from your LambdaFunction[arn:aws:lambda:eu-central-1:449809321626:function:data-production-athena-connector-nina-lambda] executed in context[retrieving meta-data] with message[Unable to execute HTTP request: Connect to s3.eu-central-1.amazonaws.com:443 [s3.eu-central-1.amazonaws.com/52.219.170.25] failed: connect timed out]
This query ran against the "public" database, unless qualified by the query. Please post the error message on our forum or contact customer support with Query Id: 3366bd80-143e-459c-a4da-5350b5ab4a77
是什么导致了这个问题?
非常感谢!
根本原因:
VPC没有internet连接问题,导致Lambda无法访问S3。
解决方案:
添加VPC网关端点(Selectcom.amazonaws.eu-central-1.s3)