====== AWS ====== Amazon アソシエイト Web サービス((Amazon アソシエイトの Web サービス (AWS) の名称は現在 Amazon Product Advertising API です。)) 書籍情報を取得する場合などによく利用されていますが、2009年8月15日以降は電子署名の認証が必要になりました。\\ perlなどによるsampleはよく落ちていますが、c#はあまり見つからないここに載せておきます。 ===== 生URLの生成 ===== http://ecs.amazonaws.co.jp/onca/xml?Service=AWSECommerceService &Version=2011-08-01 &Operation=ItemLookup &SearchIndex=Books &IdType=ISBN &ItemId=1234567890123 &AssociateTag=member-22 &ResponseGroup=Medium [color=red]//古いsampleでは省略されている場合が多いですが、AssociateTagは必須です。//[/color] ===== パラメータ部分を切り出す ===== Service=AWSECommerceService Version=2011-08-01 Operation=ItemLookup SearchIndex=Books IdType=ISBN ItemId=1234567890123 AssociateTag=member-22 ResponseGroup=Medium Timestamp=2011-09-03T06:37:08.000Z AWSAccessKeyId=AABBCCDDEEFFGGHH9900 [color=red]//TimestampとAWSAccessKeyIdも追加します//[/color] ===== パラメータ部分をソート ===== AWSAccessKeyId=AABBCCDDEEFFGGHH9900 AssociateTag=member-22 IdType=ISBN ItemId=1234567890123 Operation=ItemLookup ResponseGroup=Medium SearchIndex=Books Service=AWSECommerceService Timestamp=2011-09-03T06:37:08.000Z Version=2011-08-01 [color=red]//ソートするばあい、AWSAccessKeyIdは例外で最初に置きます//[/color] ===== 署名用文字列を生成 ===== GET ecs.amazon.co.jp /onca/xml AWSAccessKeyId=AABBCCDDEEFFGGHH9900&AssociateTag=member-22&IdType=ISBN&ItemId=1234567890123&Operation=ItemLookup&ResponseGroup=Medium&SearchIndex=Books&Service=AWSECommerceService&Timestamp=2011-09-03T06%3A37%3A08.000Z&Version=2011-08-01 [color=red]//生成時に、KeyとValueはRfc3986エスケープを行います//[/color]\\ [color=red]//AmazonにあるSampleだと「+」をそのままにしていますが、これもエスケープします//[/color] ===== 署名を生成 ===== 署名用文字列を認証用Key((AmazonでAWSAccessKeyIdと一緒に交付されているはずです))でSHA256_HMACを生成。\\ それをBASE64でエンコードしてRfc3986エスケープを行います。 D/u/VXzAusQ4AlIxSeqQlVtJ0kOwvyZiv7IIL4e6kVw= ↓ D%2Fu%2FVXzAusQ4AlIxSeqQlVtJ0kOwvyZiv7IIL4e6kVw%3D こんなのが生成されるはず ===== 署名付きURLを生成 ===== http://ecs.amazonaws.co.jp/onca/xml?AWSAccessKeyId=AABBCCDDEEFFGGHH9900&AssociateTag=member-22&IdType=ISBN&ItemId=1234567890123&Operation=ItemLookup&ResponseGroup=Medium&SearchIndex=Books&Service=AWSECommerceService&Timestamp=2011-09-03T06%3A37%3A08.000Z&Version=2011-08-01&Signature=D%2Fu%2FVXzAusQ4AlIxSeqQlVtJ0kOwvyZiv7IIL4e6kVw%3D 全部つなぎ合わせて完成です。 ===== データの取得 ===== こんな感じで取得できます。((実際にはもっと大量のデータですが、大幅に略しています)) ボブ バーガー 文庫 Bob Berger 笹野 洋子 9784062638029< 4062638029 講談社 1998-06 講談社 リスクを追いかけろ (講談社文庫) ===== エラー ===== 昨日、いきなりエラーをはき出した。 リモートサーバーエラー(400)不適切な要求です いろいろ調べたあげく……… 時計が狂ってた。orz