当前位置: 首页 > news >正文

Python对接亚马逊电商平台SP-API的一些概念理解准备

除了第三方服务商,其实亚马逊卖家本身也可以通过和SP-API的对接,利用程序来自动化亚马逊店铺销售运营管理中很多环节的工作,简单的应用比如可以利用SP-API的对接,实现亚马逊卖家后台各类报表的定期自动下载以及数据分析整理工作。数据跟踪分析对于亚马逊电商运营者来说,是一个非常重要,但相当繁琐费时费力的工作。而如果能够利用程序实现其中大部分工作的自动化,则可以大大解放其中需要的时间精力,达到事半功倍的效果。

亚马逊电商平台API对外开放的应用程序编程接口名字叫Amazon SP-API(selling partner API),在这之前,叫Marketplace Web Services,即MWS. 亚马逊卖家后台有个“销售伙伴应用商店”,里面有亚马逊批准的第三方应用程序,它们即是第三方利用亚马逊平台开放的API创建的,旨在帮助卖家更高效管理和发展业务的应用程序。

不过要成功实现SP-API的程序对接调用,在最开始的设置阶段,对于没有没有专业的编程学习基础的人来说,还是挺有挑战性的。下面即是我在开始的设置阶段,尝试对一些概念的梳理和理解。

SP-API调用凭证

本文的主要概念都是围绕如何获得调用SP-API的必需凭证而进行。需要的凭证包括:
refresh_token
lwa_app_id
lwa_client_secret
aws_access_key
aws_secret_key
role_arn

其中前面三个是在卖家后台开发者中心相关操作后获得,后面三个是在亚马逊AWS云服务的后台相关操作获得。

在调用SP-APT时,有多种方式可以将以上凭证传递进程序,其中下面是通过一个dic数据类型,将凭证直接以代码参数的形式传递进程序代码的示例。

credentials=dict(refresh_token='<refresh_token>',lwa_app_id='<lwa_app_id>',lwa_client_secret='<lwa_client_secret>',aws_secret_key='<aws_secret_access_key>',aws_access_key='<aws_access_key_id>',role_arn='<role_arn>',)

先说说AWS IAM

因为SP-API是通过亚马逊AWS云服务的的身份和访问管理框架(IAM)来来调用SP-API的。简单描述就是在AWS后台新建特定的IAM User用户和IAM Role角色,并同时为IAM User和IAM User绑定由SP-API限定的特定权限(policy),即IAM User Policy和IAM User policy.

所以整个过程需要分别在亚马逊卖家后台以及亚马逊AWS云服务操作后台进行操作。如果将整个过程划分为七个主要步骤的话,其中第一步和第七步是在卖家后台进行,中间五步是在亚马逊aws后台操作。

第一步:创建开发人员资料

在亚马逊后台的第一步操作的主要目标是创建开发人员资料并开通开发者中心。这一步基本上没有什么难度,尤其是如果只是作为自己店铺使用的私人应用开发,按照步骤指引填写相关资料等待亚马逊审核通过就可以了。有一点稍注意的是在SP-API Rolees选择时,将除受限角色外的角色都可以选上。当开发人员资料审核通过,开发中心开通之后,第二步到第五步的操作将在AWS后台进行。

 

 

第二步准备好AWS帐号

如果我们还没有AWS帐号的话,需要提前注册一个免费帐号。

注册好帐号后,亚马逊aws操作后台登陆在以下链接 https://Aws.amazon.com/consol

 

第三步 新建IAM User

然后第二步的操作是在aws操作后台打开IAM后台并新建一个IAM user用户。IAM后台链接如下:https://console.aws.amazon.com/iam

IAM的全称是Identity and access management,代表身份和访问管理。在AWS中,比如有IAM user, IAM group, IAM role等几种不同的身份,AWS通过在不同Identity上绑定不同的policy来限定不同身份对应的权限。

在这一步中,我们将新建IAM user.我们选用的凭证类型是“access key - Programmic access”

需要注意的是,此时我们注册的IAM user是没有权限的,因为我们还没有在上面绑定policy. 所以会有下面的提示.

当IAM User新建成功后,提示页面会有“Access key ID”和“secret access key”的两项信息,并提供CSV下载链接选项,它们就是文章前面提到的调用SP-API的凭证的其中两个。即aws_access_keyaws_secret_key

 

第四步:给新建IAM User绑定policy

在建立好的IAM User后,我们将创建一个IAM policy来定义对SP-API的调用权限。

这一步是针对新建的“SellingPartner”这个IAM user进行policy的绑定。因为这是我们专门为调用SP-API而新建的user,它的policy也是和调用SP-API的要限相关。而这个权限是SP-API定义的,所以我们需要在此IAM user对应的policy选项下,将里面的jason文件替换成SP-API官方文档中定义的这部分policy.

 

 

第五步:新建IAM Role并绑定policy

SP-API的官方指导建议我们新建IAM Role,但是没有IAM Role也不是不能工作。IAM Role主要是用来验证对SP-API的调用(authenticate calls to SP-API)。IAM role与IAM user非常相似,因为它们都是具有权限策略(由policy来限定)的身份,决定该身份在AWS中可以做什么和不能做什么。不同的是,IAM role角色没有相关的凭证(密码或访问密钥),而是依靠一种临时安全凭证来访问AWS的方式。在新建IAM Role的过程中,会自动带到绑定policy的步骤,在这一步绑定前面IAM User新建的policy即可。这样IAM Role也获得调用SP-API的权限。

IAM ROLE

第六步:给IAM用户中添加AWS STS polity

AWS IAM设置的最后一步是向新建的IAM用户添加绑定AWS安全令牌服务,或STS策略。它在这里主要是一个AssumeRole policy,即允许IAM用户使用临时安全凭证来验证SP-API的请求。获得前面新建IAM Role的调用SP-API所需的权限。这些临时凭证由一个访问密钥ID、一个秘密访问密钥和一个安全令牌组成。

 

 

 

有关AWS ARN

ARN的全称是“Amazon Resource Names”,在AWS中它是一种文件命名惯例,用于识别亚马逊网络服务(AWS)公共云中的特定资源。ARN是AWS特有的,它帮助管理员在AWS产品和API调用中跟踪和使用AWS Items和policy。

通过它可以唯一地识别AWS资源。当我们需要在所有AWS中明确指定一个资源时,需要用到ARN,在我们前面新建IAM User,IAM Role以及分别绑定policy的时候,则IAM User,IAM Role和policy都对应一个ARN,在AWS后台可以查看项目对应的ARN信息. 在调用SP-API时,则需要提供IAM ARN信息,这时我们提供ARN ROLE的信息。所以这是调用SP-API在AWS端的第三个凭证role_arn

 

第七步:在卖家后台开发者中心新增client app

当在AWS端的设置完成之后,最后还要回到亚马逊卖家后台开发者中心进行一步设置操作,这一步主要是通过新增client app以及对app的授权来获得调用SP-API必需的LMA凭证信息,包括“client identifier”和“client secret”两项,LMA凭证相当于是登陆凭证。在点击“Authorize app”后,会生成一串很长的“Refresh Token”. 在这一步中,我们即可以获得调用SP-API的其它三个凭证,即refresh_tokenlwa_app_idlwa_client_secret,其中lwa_app_idlwa_client_secret对应的是LMA凭证信息的“client identifier”和“client secret”两项

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== 编辑

相关文章:

Python对接亚马逊电商平台SP-API的一些概念理解准备

❝ 除了第三方服务商&#xff0c;其实亚马逊卖家本身也可以通过和SP-API的对接&#xff0c;利用程序来自动化亚马逊店铺销售运营管理中很多环节的工作&#xff0c;简单的应用比如可以利用SP-API的对接&#xff0c;实现亚马逊卖家后台各类报表的定期自动下载以及数据分析整理工…...

[Halcon3D] 主流的3D光学视觉方案及原理

&#x1f4e2;博客主页&#xff1a;https://loewen.blog.csdn.net&#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;本文由 丶布布原创&#xff0c;首发于 CSDN&#xff0c;转载注明出处&#x1f649;&#x1f4e2;现…...

Go Web下gin框架使用(二)

〇、gin 路由 Gin是一个用于构建Web应用程序的Go语言框架&#xff0c;它具有简单、快速、灵活的特点。在Gin中&#xff0c;可以使用路由来定义URL和处理程序之间的映射关系。 r : gin.Default()// 访问 /index 这个路由// 获取信息r.GET("/index", func(c *gin.Con…...

算法笔记-线段树合并

线段树合并 前置知识&#xff1a;权值线段树、动态开点 将两棵线段树的信息合并成一棵线段树。 可以新建一颗线段树保存原来两颗线段树的信息&#xff0c;也可以将第二棵线段树维护的信息加到第一棵线段树上。 前者的空间复杂度较高&#xff0c;如果合并之前的线段树不会再用…...

Fiddler抓取IOS数据包实践教程

Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。 本章教程,主要介绍如何利用Fiddler抓取IOS数据包相关教程。 目录 一、打开Fiddler监听端口 二、配置网…...

Ansible基础4——变量、机密、事实

文章目录 一、变量二、机密2.1 创建加密文件2.2 查看加密文件2.3 编辑加密文件内容2.4 加密现有文件2.5 解密文件2.6 更改加密密码 三、事实3.1 收集展示事实3.2 展示某个结果3.3 新旧事实命令3.4 关闭事实3.5 魔法变量 一、变量 常设置的变量&#xff1a; 要创建的用户要安装的…...

React实现Vue的watch监听属性

在 Vue 中可以简单地使用 watch 来监听数据的变化&#xff0c;还能获取到改变前的旧值&#xff0c;而在 React 中是没有 watch 的。 React中比较复杂&#xff0c;但是我们如果想在 React 中实现一个类似 Vue 的 watch 监听属性&#xff0c;也不是没有办法。 在React类组件中实…...

axios、跨域与JSONP、防抖和节流

文章目录 一、axios1、什么是axios2、axios发起GET请求3、axios发起POST请求4、直接使用axios发起请求 二、跨域与JSONP1、了解同源策略和跨域2、JSONP&#xff08;1&#xff09;实现一个简单的JSONP&#xff08;2&#xff09;JSONP的缺点&#xff08;3&#xff09;jQuery中的J…...

macOS Ventura 13.5beta2 (22G5038d)发布

系统介绍 黑果魏叔 6 月 1 日消息&#xff0c;苹果今日向 Mac 电脑用户推送了 macOS 13.5 开发者预览版 Beta 2 更新&#xff08;内部版本号&#xff1a;22G5038d&#xff09;&#xff0c;本次更新距离上次发布隔了 12 天。 macOS Ventura 带来了台前调度、连续互通相机、Fac…...

jwt----介绍,原理

token&#xff1a;服务的生成的加密字符串&#xff0c;如果存在客户端浏览器上&#xff0c;就叫cookie -三部分&#xff1a;头&#xff0c;荷载&#xff0c;签名 -签发&#xff1a;登录成功&#xff0c;签发 -认证&#xff1a;认证类中认证 # jwt&…...

Three.js--》实现3d水晶小熊模型搭建

目录 项目搭建 初始化three.js基础代码 加载背景纹理 加载小熊模型 今天简单实现一个three.js的小Demo&#xff0c;加强自己对three知识的掌握与学习&#xff0c;只有在项目中才能灵活将所学知识运用起来&#xff0c;话不多说直接开始。 项目搭建 本案例还是借助框架书写…...

《阿里大数据之路》研读笔记(1)

首先先看到OLAP和OLTP的区别&#xff1a; OLTP(Online transaction processing):在线/联机事务处理。典型的OLTP类操作都比较简单&#xff0c;主要是对数据库中的数据进行增删改查&#xff0c;操作主体一般是产品的用户或者是操作人员。 OLAP(Online analytical processing):…...

Logback 日志框架详解

一、Logback 简介 Logback 是一个日志框架&#xff0c;旨在成为 log4j 的替代品。它由 Ceki Glc 创建并维护&#xff0c;是一款开源的日志框架&#xff0c;是 slf4j&#xff08;Simple Logging Facade for Java&#xff09;的实现。相比于 log4j&#xff0c;Logback 具有更高的…...

BIO、NIO、AIO 有什么区别?

BIO (Blocking I/O)&#xff1a; Block IO 同步阻塞式 IO &#xff0c;传统 IO&#xff0c;特点是模式简单、使用方便&#xff0c;并发处理能力低。 同步阻塞 I/O 模式&#xff0c;数据的读取写入必须阻塞在一个线程内等待其完成&#xff0c;在活动连接数不是特别高&#xff08…...

nginx和tomcat负载均衡、静态分离

tomcat重要目录 bin 存放启动和关闭Tomcat脚本conf存放Tomcat不同的配置文件doc存放Tomcat文档lib存放Tomcat运行需要的库文件logs存放Tomcat执行时的log文件src存放Tomcat的源代码webappsTomcat的主要Web发布目录work存放jsp编译后产生的class文件 nginx负载均衡原理 nginx实…...

用AI写出的高考作文!

今天是6月7日&#xff0c;又到了每一年高考的日子。小灰自己参加高考是在2004年&#xff0c;距离现在已经将近20年&#xff0c;现在回想起来&#xff0c;真的是恍如隔世。 今天高考语文的作文题是什么呢&#xff1f; 全国甲卷的题目是&#xff1a;人技术时间 人们因技术发展得以…...

chatgpt赋能python:Python屏幕输入介绍:了解命令行输入的基本知识

Python屏幕输入介绍&#xff1a;了解命令行输入的基本知识 Python是一种使用广泛的编程语言&#xff0c;用于编写各种类型的应用程序&#xff0c;包括图形用户界面应用程序和基于命令行的应用程序。对于基于命令行的应用程序来说&#xff0c;屏幕输入非常重要。本文将介绍Pyth…...

bert中文文本摘要代码(1)

bert中文文本摘要代码 写在最前面关于BERT使用transformers库进行微调 load_data.py自定义参数collate_fn函数BertDataset类主函数 tokenizer.py创建词汇表encode函数decode函数 写在最前面 熟悉bert&#xff0b;文本摘要的下游任务微调的代码&#xff0c;方便后续增加组件实现…...

为何溃坝事故频发,大坝安全如何保障?

随着水利水电工程的重要性日益突显&#xff0c;水库大坝安全越来越受到相关部门的重视。因为大坝的安全直接影响水利工程的功能与作用&#xff0c;因此对大坝安全的监测显得十分必要。大坝安全监测的作用是能够及时掌握大坝的运行状态&#xff0c;及时发现大坝的变形、渗漏等异…...

第十九章_手写Redis分布式锁

锁的种类 单机版同一个JVM虚拟机内synchronized或者Lock接口。 分布式多个不同JVM虚拟机&#xff0c;单机的线程锁机制不再起作用&#xff0c;资源类在不同的服务器之间共享了。 一个靠谱分布式锁需要具备的条件和刚需 独占性 &#xff1a;OnlyOne&#xff0c;任何时刻只能有且…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态

前言 在人工智能技术飞速发展的今天&#xff0c;深度学习与大模型技术已成为推动行业变革的核心驱动力&#xff0c;而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心&#xff0c;系统性地呈现了两部深度技术著作的精华&#xff1a;…...

Python网页自动化Selenium中文文档

1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API&#xff0c;让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API&#xff0c;你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...

【Linux】Linux安装并配置RabbitMQ

目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的&#xff0c;需要先安…...

怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)

+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...

leetcode73-矩阵置零

leetcode 73 思路 记录 0 元素的位置&#xff1a;遍历整个矩阵&#xff0c;找出所有值为 0 的元素&#xff0c;并将它们的坐标记录在数组zeroPosition中置零操作&#xff1a;遍历记录的所有 0 元素位置&#xff0c;将每个位置对应的行和列的所有元素置为 0 具体步骤 初始化…...