You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过CLI或工具调用Amazon SP-API?请求签名问题求助

SP-API命令行调用与签名问题解决方案

一、AWS与SP-API签名机制澄清

SP-API的请求签名基于AWS Signature Version 4,但和普通AWS原生服务的签名有核心差异:SP-API要求请求必须携带x-amz-access-token请求头(对应卖家授权令牌),而普通AWS服务不需要这个字段。只要抓住这个差异,就能正确适配签名逻辑。

二、能否用AWS CLI调用SP-API?

可以,但需要手动适配SP-API的特殊要求。AWS CLI默认面向AWS原生服务,不会自动添加x-amz-access-token,但可以通过其sigv4 sign命令生成符合要求的签名,再用curl执行请求。

实操示例:

# 定义核心变量
IAM_ACCESS_KEY="你的IAM用户AccessKey"
IAM_SECRET_KEY="你的IAM用户SecretKey"
SP_API_ACCESS_TOKEN="卖家授权后获取的AccessToken"
SP_API_ENDPOINT="https://sellingpartnerapi-na.amazon.com/orders/v0/orders"
AWS_REGION="us-east-1" # 对应SP-API区域,北美用us-east-1,欧盟用eu-west-1

# 用AWS CLI生成签名后的请求参数
aws sigv4 sign \
  --service execute-api \
  --region $AWS_REGION \
  --access-key $IAM_ACCESS_KEY \
  --secret-key $IAM_SECRET_KEY \
  --method GET \
  --uri "$SP_API_ENDPOINT" \
  --header "x-amz-access-token:$SP_API_ACCESS_TOKEN"

执行后会输出完整的签名请求头和URL,直接复制到curl即可发起调用。注意:SP-API基于AWS API Gateway构建,签名时必须指定--service execute-api。

三、amazon-sp-api工具的稳定性说明

这个是社区维护的SP-API命令行客户端,核心功能(订单、库存、报告等)稳定性尚可,已经有不少中小团队在使用,但要注意:

  • 非亚马逊官方工具,更新速度可能滞后于SP-API官方迭代,部分新发布的API可能未及时支持。
  • 边缘场景可能存在bug,建议先在测试环境完成全流程验证后再用于生产。
  • 对于简单的命令行调用需求,它比手动处理签名效率高很多,支持配置文件管理密钥和令牌,提供类CLI的命令结构。

四、独立签名工具推荐

如果不想依赖SDK或社区工具,以下几种方案可生成符合SP-API要求的签名:

  • AWS CLI sigv4 sign:官方工具,可靠性最高,只需手动补充x-amz-access-token头即可,如上述示例。
  • Python botocore库:亚马逊官方底层AWS工具库,可手动调用签名逻辑:
import botocore.auth
import botocore.awsrequest

# 构造SP-API请求
request = botocore.awsrequest.AWSRequest(
    method='GET',
    url='https://sellingpartnerapi-na.amazon.com/orders/v0/orders',
    headers={'x-amz-access-token': '你的SP-API AccessToken'}
)

# 生成SigV4签名
signer = botocore.auth.SigV4Auth(
    credentials=botocore.credentials.Credentials(
        access_key='你的IAM AccessKey',
        secret_key='你的IAM SecretKey'
    ),
    service_name='execute-api',
    region_name='us-east-1'
)
signer.add_auth(request)

# 获取签名后的请求头和URL
signed_headers = request.headers
signed_url = request.url
  • 自定义Shell脚本:参考AWS官方SigV4算法文档编写纯Shell签名脚本,但维护成本高,仅适合极简场景。

五、关键注意事项

  1. 令牌刷新:SP-API的access_token有效期仅1小时,需定期用refresh_token调用oauth2/token端点刷新,这个过程也可以用curl完成。
  2. IAM权限:确保你的IAM用户配置了SP-API对应权限策略(如sellingpartnerapi::orders:read),否则签名正确也会返回权限错误。
  3. 区域匹配:SP-API端点与AWS区域严格对应,必须使用正确的区域参数签名。

内容的提问来源于stack exchange,提问作者Hemant Tank

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 00:45:46