MWSThrottling Ver1

Report 13 Downloads 160 Views
<参考資料>

1. スロットリングについて 2. スロットリングを考慮したシステム設計

1

1.Amazon MWS: スロットリングについて スロットリングとは何ですか?

リクエスト制限です。 Amazon MWSでは出品サービスのオペレーションを自動化するためのAPIを提供い たしております。このAPIを各出品者様に平等にご利⽤いただく観点から、リクエスト可能数を制限いたして おります。

どのような制限ですか?

Amazon MWSのAPIは複数のオペレーション(SubmitFeed, GetOrder など)で構成されています。そ のオペレーション単位にリクエスト上限が設けられております。 最大リクエスト回数

回復レート

そのオペレーションにおける最大リクエスト回数です。 リクエスト数が最⼤リクエスト数に達すると、リクエスト数が回復するまで 次のリクエストは⾏えません。 例: SubmitFeedの最大リクエスト数は 15回

リクエスト数の回復するまでの時間と回復するリクエスト数です。回復す ると回復した分のリクエストが可能となります。 例:SubmitFeedの回復レートは120秒ごとに1リクエスト

2

1.Amazon MWS: スロットリングについて 制限のイメージ 例として

最大リクエスト数: 10回、 回復レート: 1分に1回 のオペレーションがあったと仮定します

リクエスト回数

回 目

回 目

11

12



OK

:

:

:

残 OK 残 OK 残 OK 残 OK 残 OK残 OK残 OK残 OK残 OK残 ×スロットル 残 0

0

0

OK

:

:

:

:

:

:

:

:

:

10

9

8

7

6

5

4

3

2

1





















9

8

7

6

5

4

3

2

1

0







:

結果 リクエスト 残数

10 9 8 7 6 回目1 回目2 回目3 回目4 回目5 回 目 目 回 目 回 目 回 目 回

: 1

1分

0分

リクエスト残数 が0なのでス ロットリングが 発動

1回目のリクエストから1 分が経過したので、1回

分リクエスト可能残数が 0回→1回に回復

3

1.Amazon MWS: スロットリングについて 各オペレーションのスロットリング制限早⾒表

セクション

API

フィード フィード フィード フィード フィード フィード フルフィルメント納品・在庫・出荷 注文 注文 注文 注文 注文 注文 商品 商品 商品 商品

オペレーション SubmitFeed GetFeedSubmissionList GetFeedSubmissionListByNextToken GetFeedSubmissionCount CancelFeedSubmissions GetFeedSubmissionResult

各オペレーション共通 ListOrders ListOrdersByNextToken GetOrder ListOrderItems ListOrderItemsByNextToken GetServiceStatus ListMatchingProducts GetMatchingProduct GetMatchingProductForId GetCompetitivePricingForASIN

リクエスト回数

回 10回 30回 10回 10回 15回 30回 6回 6回 6回 30回 30回 2回 20回 20回 20回 20回 15

回復レート

秒ごとに1リクエスト 45秒ごとに1リクエスト 2秒ごとに1リクエスト 45秒ごとに1リクエスト 45秒ごとに1リクエスト 60秒ごとに1リクエスト 1秒ごとに2リクエスト 60秒ごとに1リクエスト 60秒ごとに1リクエスト 60秒ごとに1リクエスト 2秒ごとに1リクエスト 2秒ごとに1リクエスト 300秒ごとに1リクエスト 5秒ごとに1リクエスト 1秒ごとに2商品 1秒ごとに5商品 1秒ごとに10商品 120

4

1.Amazon MWS: スロットリングについて 各オペレーションのスロットリング制限早⾒表

セクション

API

商品 商品 商品 商品 商品 レコメンド レコメンド レコメンド レポート レポート レポート レポート レポート レポート レポート レポート レポート

オペレーション GetCompetitivePricingForSKU GetLowestOfferListingsForASIN GetCompetitivePricingForSKU GetMyPriceForASIN GetProductCategoriesForASIN GetLastUpdatedTimeForRecommendations ListRecommendations ListRecommendationsByNextToken RequestReport GetReportRequestList GetReportRequestListByNextToken GetReportRequestCount CancelReportRequests GetReportList GetReportListByNextToken GetReportCount GetReport

リクエスト回数

回 20回 20回 20回 20回 5回 5回 5回 15回 10回 30回 10回 10回 10回 30回 10回 15回 20

回復レート

秒ごとに10商品 1秒ごとに10商品 1秒ごとに10商品 1秒ごとに10商品 5秒ごとに1リクエスト 2秒ごとに1リクエスト 2秒ごとに1リクエスト 2秒ごとに1リクエスト 60秒ごとに1リクエスト 45秒ごとに1リクエスト 2秒ごとに1リクエスト 45秒ごとに1リクエスト 45秒ごとに1リクエスト 45秒ごとに1リクエスト 2秒ごとに1リクエスト 45秒ごとに1リクエスト 60秒ごとに1リクエスト 1

5

1.Amazon MWS: スロットリングについて 各オペレーションのスロットリング制限早⾒表 APIセクション レポート レポート レポート レポート レポート 出品者 出品者 サブスクリプション サブスクリプション サブスクリプション サブスクリプション サブスクリプション サブスクリプション サブスクリプション サブスクリプション サブスクリプション

オペレーション ManageReportSchedule GetReportScheduleList GetReportScheduleListByNextToken GetReportScheduleCount UpdateReportAcknowledgements ListMarketplaceParticipations ListMarketplaceParticipationsByNextToken RegisterDestination DeregisterDestination ListRegisteredDestinations SendTestNotificationToDestination CreateSubscription GetSubscription DeleteSubscription ListSubscriptions UpdateSubscription

リクエスト回数

回 10回 30回 10回 10回 15回 15回 25回 25回 25回 25回 25回 25回 25回 25回 25回 10

回復レート

秒ごとに1リクエスト 45秒ごとに1リクエスト 2秒ごとに1リクエスト 45秒ごとに1リクエスト 45秒ごとに1リクエスト 60秒ごとに1リクエスト 60秒ごとに1リクエスト 1秒ごとに2リクエスト 1秒ごとに2リクエスト 1秒ごとに2リクエスト 1秒ごとに2リクエスト 1秒ごとに2リクエスト 1秒ごとに2リクエスト 1秒ごとに2リクエスト 1秒ごとに2リクエスト 1秒ごとに2リクエスト 45

6

2. スロットリングを考慮したシステム設計 回復レートの時間分、リクエスト間隔をあける • リクエスト数が回復する時間分リクエスト間隔をあけることで、スロットリングは回避できます。例えば SubmitFeedの回復レートは120秒に1回ですので、少なくとも前回のリクエストから120秒間隔を開 ければ、スロットリングを回避することができます。回復レートを参照の上、スロットリングを回避できるリク エスト間隔を設定ください。 •

例えば注⽂APIで特定の注文の注文商品リストを取得するAPIのListOrderItemsの最大リクエスト 回数30回で、回復レートは2秒ごとに1リクエストです。このオペレーションでは1つの注文番号のみ指 定できるオペレーションです。よって一気に取得できる注文数は30注文までとなります。注文APIは、ま とまった注⽂を短時間で取得するには不向きです。可能な限りリクエストするタイミングを分散させるシス テム設計を検討ください。または、まとまった情報を使⽤する場合は注⽂レポートをご利⽤ください。

スロットリングが発動した際に一定期間経過後Retryするロジックを組み込む

回復レートで回復する間隔よりも短い間隔でリクエストを継続すると、リクエスト数が蓄積され、スロットリン グが発動する可能性が出てまいります。 その際にシステムが異常終了することを避けるため、処理をRetryする仕組みを構築してください。

7

2.スロットリングを考慮したシステム設計 リクエストを可能な限りまとめる

リクエスト数に上限設定があるため、リクエストに含める情報は可能な限りまとめるよう工夫してください。

例: SubmitFeedは商品フィードや在庫フィードといったフィード情報をアップロードし、フィード処理を⾏うた めのオペレーションです。1商品づつ送らず、複数商品分をまとめてフィードに含めて送信することで、リクエス ト数を削減することができます。 サブスクリプションAPIを利⽤する

サブスクリプションAPIはあらかじめ設定した購読情報にマッチした情報をAmazon MWS側からプッシュす るAPIです。情報を取得するたびにAmazon MWSに対するリクエストを⾏う必要が無いため、スロットル 制限にかかる心配がありません。現在サブスクリプションAPIではAnyOfferChanged(出品情報変動)、 FulfillmentOrderStatusNotification(FBAマルチチャネルサービスの出荷ステータス変動)の購読情 報に対応しております。 サブスクリプションAPIに関する詳細は以下のリンクをご参照ください

http://docs.developer.amazonservices.com/ja_JP/subscriptions/Subscriptions_Over view.html

8

2.スロットリングを考慮したシステム設計 セクショ オペレーション

API



①リクエストSubmit

①リクエスト Submit

②HTTPステータス コードチェック

③ Status= 200?

True

False

False

④ Status= 503? True

⑤回復レートの時 間分Wait

⑨レスポンス内容 自社システム取込

のリクエストをSubmitします

Amazon MWS

②HTTPス レスポンスからHTTPステータスコードを取得します。 テータス コードチェッ ク HTTPステータスコードの内容が200(正常終了)か否かを評 ③ Status=200? 価します。 Trueのとき⑨に遷移 Falseのとき④に遷移/さらにステータス内容を評価します ③の評価時にHTTPステータスコードの内容が200(正常終 ④ Status=503? 了)でなかった場合、さらに503(スロットル)か否かを評価し ます。 Trueの時⑤に遷移 Falseの時①に遷移/一時的なサーバエラーの可能性があ るためリクエストを再試行します。 ⑤回復レー ④の評価においてHTTPステータスコードが503(スロットル) トの時間分 の場合、一定時間Waitした後に再度①の処理を再試行し Wait ます。 ⑨レスポン HTTPステータスコードが200(正常終了)の場合はレスポン ス内容自社 スのBodyを取得し、自社システムへの連携を行います。 システム取 込 9