如何通过HTTP请求获取Amazon SageMaker Feature Store的特征值
SageMaker Feature Store 直接HTTP请求调用方案
完全可行。SageMaker Feature Store Runtime属于AWS标准公共API服务,所有语言SDK的get_record调用本质都是封装了符合AWS SigV4签名规范的HTTP请求,你可以直接手动构造HTTP请求调用,无需依赖Python SDK。
API 基础配置
- 请求方法:
GET - 服务端点:格式为
https://featurestore-runtime.sagemaker.<region>.amazonaws.com,替换<region>为你实际使用的AWS区域 - 请求路径:
/GetRecord - 必选查询参数:
FeatureGroupName:你的特征组名称,即示例中的client_behaviour_feature_group_nameRecordIdentifierValueAsString:要查询的记录ID,即示例中的customer_id的字符串值
- 可选查询参数:
FeatureNames,可指定只返回特定特征字段,多个字段用&FeatureNames=字段名的格式追加,不传则返回该记录的全量特征。
注意:所有AWS API请求都必须携带符合SigV4规范的签名头,你需要使用对应账号的AK/SK(或临时安全凭证)对请求进行签名,签名过程要包含服务名
sagemaker、对应区域、请求路径等信息,否则会返回403权限错误。
本地测试示例(curl)
你可以参考如下curl命令构造请求,替换其中的占位符即可直接测试:
curl "https://featurestore-runtime.sagemaker.<你的AWS区域>.amazonaws.com/GetRecord?FeatureGroupName=<你的特征组名称>&RecordIdentifierValueAsString=<要查询的customer_id>" \ --user "<AWS_ACCESS_KEY_ID>:<AWS_SECRET_ACCESS_KEY>" \ --aws-sigv4 "aws:amz:<你的AWS区域>:sagemaker"
如果使用临时安全凭证,额外添加请求头即可:
--header "x-amz-security-token: <你的临时凭证SessionToken>"
生产使用注意事项
- 调用凭证需要提前配置
sagemaker:GetRecord动作的授权,对应的资源要匹配你使用的特征组ARN - 生产环境不要硬编码AK/SK,建议通过运行环境的IAM角色获取临时凭证生成签名
- 直接HTTP请求的性能和SDK调用无差异,SDK底层也是走相同的HTTP请求逻辑,不会产生额外开销
内容的提问来源于stack exchange,提问作者Alvaro Leandro Cavalcante
相关产品推荐
相关产品推荐

