development:language:net:csharp:aws
AWS
Amazon アソシエイト Web サービス1)
書籍情報を取得する場合などによく利用されていますが、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
古いsampleでは省略されている場合が多いですが、AssociateTagは必須です。
パラメータ部分を切り出す
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
TimestampとAWSAccessKeyIdも追加します
パラメータ部分をソート
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
ソートするばあい、AWSAccessKeyIdは例外で最初に置きます
署名用文字列を生成
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
生成時に、KeyとValueはRfc3986エスケープを行います
AmazonにあるSampleだと「+」をそのままにしていますが、これもエスケープします
署名を生成
署名用文字列を認証用Key2)で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
全部つなぎ合わせて完成です。
データの取得
こんな感じで取得できます。3)
<ItemAttributes> <Author>ボブ バーガー</Author> <Binding>文庫</Binding> <Creator Role="原著">Bob Berger</Creator> <Creator Role="翻訳">笹野 洋子</Creator> <EAN>9784062638029</EAN>< <ISBN>4062638029</ISBN> <Manufacturer>講談社</Manufacturer> <PublicationDate>1998-06</PublicationDate> <Publisher>講談社</Publisher> <Title>リスクを追いかけろ (講談社文庫)</Title> </ItemAttributes>
エラー
昨日、いきなりエラーをはき出した。
リモートサーバーエラー(400)不適切な要求です
いろいろ調べたあげく………
時計が狂ってた。orz
development/language/net/csharp/aws.txt · 最終更新: by 127.0.0.1