隔离网络SageMaker处理作业中,Athena VPC端点查询凭证错误解决指引
隔离网络下SageMaker调用Athena的凭证与VPC端点配置方案
一、先搞定凭证错误
隔离网络里的SageMaker作业不需要手动配置access key,直接用IAM角色即可,你需要检查这两点:
- 给SageMaker处理作业的执行角色添加权限:至少要有Athena查询权限(比如
AmazonAthenaFullAccess,或更细粒度的权限),以及Athena结果存储S3桶的读写权限。 - 代码里的
session无需手动指定凭证:要么直接删掉boto3_session参数,wr会自动读取环境中的角色凭证;如果要自定义session,直接用默认链创建即可:
import boto3 session = boto3.Session() # 自动拉取角色凭证,无需手动填写密钥
二、配置Athena VPC端点访问
隔离网络无法走公网访问Athena,需通过VPC端点实现,分两步操作:
- 创建Athena接口类型VPC端点:在AWS控制台的VPC服务中,选择「创建端点」,服务类型选「接口」,搜索
com.amazonaws.<你的区域>.athena,关联SageMaker作业所在的VPC、子网,安全组要允许SageMaker子网发起的HTTPS(443)流量。 - 代码中指定VPC端点URL:AWS SDK for Pandas底层依赖boto3,只需给Athena客户端配置VPC端点URL即可(端点URL可在创建VPC端点后获取,格式类似
https://athena.<区域>.vpce.amazonaws.com/<端点ID>),修改后的代码示例:
import boto3 import awswrangler as wr # 创建绑定VPC端点的Athena客户端 athena_client = boto3.client( "athena", region_name="<你的区域>", endpoint_url="https://<你的Athena VPC端点完整URL>" ) # 将客户端绑定到wr会话 wr_session = wr.Session(clients={"athena": athena_client}) # 使用该会话执行查询 recent_data_df = wr_session.athena.read_sql_query( sql=recent_data_sql, database="default", ctas_approach=False, workgroup="wg" )
三、额外注意事项
- 必须创建S3网关类型VPC端点:Athena查询结果需要存储到S3,没有这个端点,SageMaker无法获取查询结果。
- 检查Workgroup
wg配置:确保该工作组允许VPC访问,且结果存储桶路径对SageMaker可见。 - 打通安全组规则:SageMaker的安全组需允许出站443流量到Athena VPC端点的安全组;Athena端点的安全组需允许入站443流量来自SageMaker的安全组。
内容的提问来源于stack exchange,提问作者dewdrops
相关产品推荐
相关产品推荐

