亚马逊AWS官方博客

如何对接亚马逊电商Selling Partner API

概述

本系列文章旨在介绍如何使用亚马逊云科技系列服务来对接亚马逊电商新的Selling Partner API(SP-API)。第一篇文章主要介绍SP-API是什么,以及如何在亚马逊云科技账号中创建IAM角色以及对应策略的配置,还有对应SPAPI开发者账号的申请。第二篇开始使用SP-API 授权验证调用 marketplace。第三篇文章会介绍基于亚马逊云科技的Amazon Simple Queue Service (SQS)通过订阅的方式来对接SP-API中部分的Notifications API。第四篇文章会介绍如何配置 Amazon EventBridge 以处理SP-API中部分的Notifications API。第五篇使用 Step function Lambda 异步处理 report。

亚马逊 SP-API介绍

以前亚马逊电商平台为卖家提供Marketplace Web Service API(MWS API)以程序化的方式管理营运店铺,为了进一步提高数据安全性和易用性,2020年10月亚马逊电商正式推出一套全新的卖家服务API即SP-API。未来SP-API 将会取代MWS API原有的功能,也会持续迭代增加新的接口功能来帮助亚马逊卖家以及销售合作伙伴更高效的编程方式访问他们的商品信息、订单、付款、报告等数据。
原有的MWS接口比如Reports, Orders,Feeds, Products等都会映射到新的SP-API对应接口上,具体映射关系可以参考官方文档。另外SP-API也在权限、授权和接口数据格式上都做了一些改进:

  • SP-API引入亚马逊云科技的 Identity and Access Management (IAM) 做身份鉴权。
  • SP-API使用0做授权管理。卖家自身调用API和服务商请求API统一都需要IAM的参数信息以及LWA申请的相关信息,授权获得refresh_token再生成定时生命周期的access_token才能请求对应的接口
  • SP-API是REST-based 的方式调用接口,输入输出都是用 JSON 数据格式交互。
  • SP-API只需要在任一选择的区域和市场中注册一次开发者,创建的SP-API 应用程序可由来自任何区域或市场的销售合作伙伴授权。
  • SP-API 提供比 MWS 更精细的数据访问控制。开发者可以仅请求访问他们需要的数据,销售合作伙伴可以在 API 部分、操作或数据资源级别授予权限。最小权限原则不光可以避免数据滥用也可以降低合规审查时的复杂性。
  • SP-API 使用动态限额,可根据各种措施自动调整每个销售合作伙伴的速率限制。

另外SP-API 部分接口可通过Notification API进行消息订阅,可以减少请求的频次,待任务完成,即会接受到消息通知提醒。这种做法可以避免传统的通过轮询方式拉取数据影响thottling效率,并且只支持使用亚马逊云科技的消息队列服务SQS和事件总线EventBridge做订阅,本系列后续的文章也会有如何使用这两个服务通过订阅的方式来对接Notification API的教程。

发布新的亚马逊SP-API应用程序

超过四分之三的亚马逊卖家使用第三方软件来处理销售相关事宜,包括商品信息,自动定价,配送和分析。亚马逊卖家平台合作伙伴网络是一个提供亚马逊业务管理应用的一站式商店, 服务提供商在其上发布的应用在经过亚马逊批准后可以利用SPAPI与卖家相关数据无缝集成,为亚马逊卖家提供自动化,管理和发展业务。一个完整的 Amazon SPCN (Seller Central Partner Network)的应用发布流程如下。

本章节会先讲解亚马逊云科技账号中相关资源的创建,然后是 Developer Credentials 开发者部分的申请和应用发布。

步骤1.创建 AWS IAM 相关资源

在应用程序申请时需要填IAM ARN信息,所以需要提前注册或者使用已有的亚马逊云科技海外区域账号

创建一个IAM 用户

创建 IAM 用户以获取 AWS 密钥以验证对亚马逊 SP-API 的调用。我们建议专门为此创建一个新的 IAM 用户。使用 IAM 用户通过STS内联策略绑定后续创建的 IAM 角色。

  1. 登录 AWS 管理控制台并通过 aws.amazon.com/iam打开 IAM 控制台。
  2. 在左侧导航窗格中,单击用户,然后单击添加用户 按钮。输入新用户的用户名。

  1. 选择Programmatic access,然后单击Next: Permissions 按钮。
  2. 在 Set Permissions 页面上,接受默认值并单击 Next: Tags.
  3. 在 Add tags (optional) 页面上,根据需要添加可选标签,然后单击 Next: Review 按钮。
  4. 在 Review 页面上,忽略此用户没有权限警告,后续将会附加权限策略。

  1. 确认无误之后单击 创建用户 按钮。创建成功将显示新 IAM 用户的 AWS 访问密钥 ID。
  2. 单击显示以查看 AWS SercetKey。单击下载 .csv,然后将密钥文件保存到安全位置。

  • 重要提示: 这是查看或下载AWS 访问密钥的唯一机会,后续会使用该密钥对它来验证对 SP-API 的调用。将访问密钥保存在安全可靠的地方。 关闭该页面之后将无法再次访问 从控制台看到明文访问密钥。 丢失之后需要创建一个新 IAM 用户。
  1. 单击关闭。在用户名 列中记下用户 ARN。

有关更多信息,请参阅 官方文档中的创建 IAM 用户。

创建IAM 策略

此 IAM 策略定义了调用SP-API 的权限,后续将会附加到创建的IAM角色上。

  1. 在 IAM 控制台左侧导航窗格中,单击策略。单击创建策略 按钮。然后单击JSON 选项卡。

  1. 将以下代码粘贴到文本框中,替换现有代码,然后单击Review policy。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:*:*:*"
        }
     ]
}
  1. 在Review policy页面上,为您正在创建的策略输入Name和 Description(可选)。我们建议将您的 IAM 策略命名为“SellingPartnerAPI”。
  2. 查看策略Summary以查看您的策略授予的权限,然后单击 Create policy 按钮。新 IAM 策略出现在列表中。

有关更多信息,请参阅 AWS 文档中的 创建 IAM 策略

创建IAM 角色

  1. 在 IAM 控制台左侧导航窗格中,单击角色,然后单击创建角色 按钮。在创建角色页面,点击另一个AWS账户。
  2. 在 Account ID 框中,选择此账户,然后单击下一步:权限按钮。
  3. 在 Attach permissions policies 页面上的 Policy name 下,选择您在上一步创建的名为“SellingPartnerAPI”的策略。然后单击下一步:标签。

  • 提示: 可以通过关键字快速搜索。
  1. 在 Add tags (optional) 页面上,根据需要添加可选标签,然后单击 Next: Review 按钮。
  2. 最后输入角色名称,点击创建角色按钮。
  3. 创建完成之后回到首页点击 查看角色 ,或者在搜索框通过关键字找到对应角色,保存角色 ARN。后续在 注册应用程序 时会用到。

向创建的IAM 用户添加 AWS Security Token Service 策略

向 IAM 用户添加 AWS 安全令牌服务 (AWS STS)策略能够请求临时 AWS 访问密钥用于验证您对亚马逊 SP-API 的请求。这些凭证会在一段时间后过期,帮助控制对 AWS 资源的访问。

  1. 在IAM 控制台左侧导航窗格中,单击 Users,然后单击要向其添加 AWS STS 策略的用户。选择在第一步中创建的用户。

  1. 在权限 选项卡上,单击添加内联策略。

  1. 在创建策略页面,点击选择服务。通过关键字搜索STS,然后单击STS 服务。
  2. 单击操作旁边的箭头将其展开。选择所有操作。

  1. 单击Resources 旁边的箭头将其展开,然后单击Add ARN。在 Add ARN(s) 对话框中,在Specify ARN中输入 上一步 中的角色 ARN,单击添加,然后单击查看策略按钮。

  1. 在 Review policy 页面上,在 Name 框中输入您的策略的名称。查看您所做的选择。如果您准备好继续,请单击创建策略 按钮。回到用户页面会发现该用户已经被附近了STS内联策略。

步骤2.提交 Developer Profile 并创建应用

前提:需要拥有 Professional 亚马逊卖家账号才能注册亚马逊开发者账号

确认账号类别

  1. 登陆卖家中心在账号信息中查看您的账号类别

申请开发者身份

  1. 登陆卖家中心找到 Partner Network

  1. 在 Partner Network 下选择 Develop Apps 进入开发者中心

  1. 首次进入需要完善开发者身份信息,点击 Proceed to Developer Profile
  2. 在 Contact Information 下填写完整的开发者信息。

  1. 在 Data Access 中
    1. 选择 My organization builds and offers publicly available applications 如果您的应用将作为服务商给第三方卖家服务
    2. 选择 My organization participates in Amazon services, and I want to integrate to manage my own business only 如果您的应用将作为内部站点的应用进行使用

  1. 如果您之前是 MWS 开发者可以在第二条中填写您的账号信息,如果这是您第一次开发 SP-API 相关应用可以忽略本条目。

  1. 在 Uses Cases 中详述您的差异化使用场景,便于后台对您应用以及权限审核。

  1. 按照使用情况填写 Security 问题中的问题。并详述您的信息使用情况。

  1. 提交等待后台完成审核后即可进入下一步申请应用发布。

注册应用程序

  1. 登陆卖家中心在 Partner Network 下选择 Develop Apps 进入开发者中心Developer Console
  2. 点击+Add new app client创建应用

  1. 在 IAM ARN 中填写步骤1中创建的 AWS IAM Role 的 ARN,并选择您应用需要的相应的 Role 角色来创建。

我们建议使用 IAM 角色注册您的应用程序,如本工作流程所示,以帮助您更好地控制对 AWS 资源的访问。至此,我们已经完成了开发者的申请和应用的发布,后续文章会介绍SP-API权限相关以及 授权验证调用等流程。

本系列文章

创建 SP-API 第三方登录应用并完成 API Call

SP-API 中 Notifications API 结合 Amazon SQS 使用的详细教程

SP-API 中 Notifications API 结合 Amazon EventBridge 使用的详细教程

本篇作者

汪其香

AWS解决方案架构师,负责基于AWS云计算方案的架构咨询和设计实现,具有丰富的解决客户实际问题的经验,同时热衷于深度学习的研究与应用。

Aonan Guan

亚马逊 AWS 解决方案架构师,负责基于 AWS 云计算方案架构的咨询和设计,曾任算法工程师和部署平台全栈软件开发工程师。