REST リクエストのサンプル

このセクションでは、リクエストに署名を行うためのステップをご説明しています。以下の説明では、ダミーのAWSアクセスキー識別子を使用していますので、どなたでもこれをご使用いただけます。このアクセスキー識別子を使用して、以下のステップに従って署名を作成すると、例に表示された文字列と同じものをご自身で作成できることになります。ご自分のコードの動作確認をする場合などに、このサンプルをご利用いただけます。その他のリクエストについても、わかりやすい例をご紹介しています。

[ヒント]ヒント

もし、RESTリクエストに関する知識をあまりお持ちでない場合は、以下のサンプルコードを見始める前に、 REST リクエストの構造 をお読みになることをお勧めします。

具体例として、今回は広く利用されている ItemLookup のリクエストを使用します。

http://webservices.amazon.com/onca/xml?Service=AWSECommerceServic
e&AWSAccessKeyId=00000000000000000000&Operation=ItemLookup&ItemId
=0679722769&ResponseGroup=ItemAttributes,Offers,Images,Reviews&Ve
rsion=2009-01-06 

サンプルリクエストに署名を行うためのステップ

  1. タイムスタンプを挿入します。以下の例では、GMTを使用しています。2009-01-01T12:00:00Z

    http://webservices.amazon.com/onca/xml?Service=AWSECommerceServic
    e&AWSAccessKeyId=00000000000000000000&Operation=ItemLookup&ItemId
    =0679722769&ResponseGroup=ItemAttributes,Offers,Images,Reviews&Ve
    rsion=2009-01-06&Timestamp=2009-01-01T12:00:00Z
  2. リクエスト内のコンマ (,) およびコロン (;) をURLエンコードし、誤った処理が行われないようにします。RFC 3986 への変換に関する詳細な情報については、ご利用のプログラム言語のコードサンプルやドキュメントをご参照ください。

    http://webservices.amazon.com/onca/xml?Service=AWSECommerceServic
    e&AWSAccessKeyId=00000000000000000000&Operation=ItemLookup&ItemId
    =0679722769&ResponseGroup=ItemAttributes%2COffers%2CImages%2CRevi
    ews&Version=2009-01-06&Timestamp=2009-01-01T12%3A00%3A00Z
    [重要]重要

    どの文字についても、二重にエンコードされることのないようご注意ください。

  3. パラメータと値のペアをそれぞれ分割し、アンパサンド(&)を削除して、以下のような形状にします:

    Service=AWSECommerceService
    AWSAccessKeyId=00000000000000000000
    Operation=ItemLookup
    ItemId=0679722769
    ResponseGroup=ItemAttributes%2COffers%2CImages%2CReviews
    Version=2009-01-06
    Timestamp=2009-01-01T12%3A00%3A00Z
  4. パラメータと値のペアをバイト順(アルファベット順とは異なり、大文字のパラメータは小文字のパラメータの前に並ぶ形式です)に並べ替えます。

    AWSAccessKeyId=00000000000000000000
    ItemId=0679722769
    Operation=ItemLookup
    ResponseGroup=ItemAttributes%2COffers%2CImages%2CReviews
    Service=AWSECommerceService
    Timestamp=2009-01-01T12%3A00%3A00Z
    Version=2009-01-06
  5. 並べ替えが終わったら、パラメータと値のペアのリストを再度アンパサンド(&)でつなぎ直します。この段階で、AWSの署名対象となる正規化されたリクエストが作成されます。

    AWSAccessKeyId=00000000000000000000&ItemId=0679722769&Operation=I
    temLookup&ResponseGroup=ItemAttributes%2COffers%2CImages%2CReview
    s&Service=AWSECommerceService&Timestamp=2009-01-01T12%3A00%3A00Z&
    Version=2009-01-06
  6. 以下の3行(改行はそのまま使用してください)を正規化されたリクエストの前に追加します。

    GET
    webservices.amazon.com
    /onca/xml
  7. 署名対象のリクエスト文字列は以下の通りです:

    GET
    webservices.amazon.com
    /onca/xml
    AWSAccessKeyId=00000000000000000000&ItemId=0679722769&Operation=I
    temLookup&ResponseGroup=ItemAttributes%2COffers%2CImages%2CReview
    s&Service=AWSECommerceService&Timestamp=2009-01-01T12%3A00%3A00Z&
    Version=2009-01-06
  8. 上記のリクエスト文字列とダミーの秘密キーである、1234567890 を利用して、RFC2104準拠のHMAC-SHA256ハッシュアルゴリズムの計算を行います。このステップの詳細な情報については、ご利用のプログラミング言語のコードサンプルおよびドキュメントをご参照ください。

    Nace+U3Az4OhN7tISqgs1vdLBHBEijWcBeCqL5xN9xg=
  9. 署名に含まれているプラス (+) とイコール (=) をURLエンコードします。

    Nace%2BU3Az4OhN7tISqgs1vdLBHBEijWcBeCqL5xN9xg%3D
  10. リクエストにURLエンコードが完了した署名を追加すると、正しくフォーマットされた署名認証リクエストが完成します。

    http://webservices.amazon.com/onca/xml?AWSAccessKeyId=00000000000
    000000000&ItemId=0679722769&Operation=ItemLookup&ResponseGroup=It
    emAttributes%2COffers%2CImages%2CReviews&Service=AWSECommerceServ
    ice&Timestamp=2009-01-01T12%3A00%3A00Z&Version=2009-01-06&Signatu
    re=Nace%2BU3Az4OhN7tISqgs1vdLBHBEijWcBeCqL5xN9xg%3D

その他の署名認証リクエストの例

前のセクションでは、ItemLookup リクエストにおいて署名を含めるための詳細なプロセスについてご説明しました。このセクションでは、署名を作成する元として使用する、署名なしのリクエストのサンプル、および最終的な署名認証リクエストのサンプルをご紹介します。以下の例は、ご使用になるソフトウェアのテストケースとしても有効にご利用いただけます。以下の全てのサンプルは、サンプルリクエストに署名を行うためのステップ において使用した、ダミーのAWSアクセスキー識別子を使用しています。

ItemSearch のサンプル

以下の例は、ItemSearch における、署名なしのオリジナルリクエスト、署名対象のリクエスト文字列、および署名認証リクエストとなります。

署名なしのオリジナルリクエスト

http://ecs.amazonaws.co.uk/onca/xml?Service=AWSECommerceService&A
WSAccessKeyId=00000000000000000000&Operation=ItemSearch&Actor=Joh
nny%20Depp&ResponseGroup=ItemAttributes,Offers,Images,Reviews,Var
iations&Version=2009-01-01&SearchIndex=DVD&Sort=salesrank&Associa
teTag=mytag-20

署名対象のリクエスト文字列

GET
ecs.amazonaws.co.uk
/onca/xml
AWSAccessKeyId=00000000000000000000&Actor=Johnny%20Depp&Associate
Tag=mytag-20&Operation=ItemSearch&ResponseGroup=ItemAttributes%2C
Offers%2CImages%2CReviews%2CVariations&SearchIndex=DVD&Service=AW
SECommerceService&Sort=salesrank&Timestamp=2009-01-01T12%3A00%3A0
0Z&Version=2009-01-01

署名認証リクエスト

http://ecs.amazonaws.co.uk/onca/xml?AWSAccessKeyId=00000000000000
000000&Actor=Johnny%20Depp&AssociateTag=mytag-20&Operation=ItemSe
arch&ResponseGroup=ItemAttributes%2COffers%2CImages%2CReviews%2CV
ariations&SearchIndex=DVD&Service=AWSECommerceService&Signature=T
uM6E5L9u%2FuNqOX09ET03BXVmHLVFfJIna5cxXuHxiU%3D&Sort=salesrank&Ti
mestamp=2009-01-01T12%3A00%3A00Z&Version=2009-01-01

CartCreate のサンプル

以下の例は、CartCreate における、署名なしのオリジナルリクエスト、署名対象のリクエスト文字列、および署名認証リクエストとなります。

署名なしのオリジナルリクエスト

http://ecs.amazonaws.com/onca/xml?Service=AWSECommerceService&AWS
AccessKeyId=00000000000000000000&Operation=CartCreate&Version=200
9-01-01&Item.1.OfferListingId=j8ejq9wxDfSYWf2OCp6XQGDsVrWhl08GSQ9
m5j%2Be8MS449BN1XGUC3DfU5Zw4nt%2FFBt87cspLow1QXzfvZpvzg%3D%3D&Ite
m.1.Quantity=3&AssociateTag=mytag-20

署名対象のリクエスト文字列

GET
ecs.amazonaws.com
/onca/xml
AWSAccessKeyId=00000000000000000000&AssociateTag=mytag-20&Item.1.
OfferListingId=j8ejq9wxDfSYWf2OCp6XQGDsVrWhl08GSQ9m5j%2Be8MS449BN
1XGUC3DfU5Zw4nt%2FFBt87cspLow1QXzfvZpvzg%3D%3D&Item.1.Quantity=3&
Operation=CartCreate&Service=AWSECommerceService&Timestamp=2009-0
1-01T12%3A00%3A00Z&Version=2009-01-01

署名認証リクエスト

http://ecs.amazonaws.com/onca/xml?AWSAccessKeyId=0000000000000000
0000&AssociateTag=mytag-20&Item.1.OfferListingId=j8ejq9wxDfSYWf2O
Cp6XQGDsVrWhl08GSQ9m5j%2Be8MS449BN1XGUC3DfU5Zw4nt%2FFBt87cspLow1Q
XzfvZpvzg%3D%3D&Item.1.Quantity=3&Operation=CartCreate&Service=AW
SECommerceService&Signature=cF3UtjbJb1%2BxDh387C%2FEmS1BCtS%2FZ01
taykBCGemvUU%3D&Timestamp=2009-01-01T12%3A00%3A00Z&Version=2009-0
1-01

ListSearch のサンプル

以下の例は、 ListSearch における、署名なしのオリジナルリクエスト、署名対象のリクエスト文字列、および署名認証リクエストとなります。

署名なしのオリジナルリクエスト

http://ecs.amazonaws.jp/onca/xml?Service=AWSECommerceService&AWSA
ccessKeyId=00000000000000000000&Operation=ListSearch&Version=2009
-01-01&ListType=WishList&Name=wu&AssociateTag=mytag-20

署名対象のリクエスト文字列

GET
ecs.amazonaws.jp
/onca/xml
AWSAccessKeyId=00000000000000000000&AssociateTag=mytag-20&ListTyp
e=WishList&Name=wu&Operation=ListSearch&Service=AWSECommerceServi
ce&Timestamp=2009-01-01T12%3A00%3A00Z&Version=2009-01-01

署名認証リクエスト

http://ecs.amazonaws.jp/onca/xml?AWSAccessKeyId=00000000000000000
000&AssociateTag=mytag-20&ListType=WishList&Name=wu&Operation=Lis
tSearch&Service=AWSECommerceService&Signature=aMFgBNKPrz9PRR9Ato7
yanlaG%2FPkQsNxIWYbLD1V9Zc%3D&Timestamp=2009-01-01T12%3A00%3A00Z&
Version=2009-01-01

ListLookup のサンプル

以下の例は、 ListLookup における、署名なしのオリジナルリクエスト、署名対象のリクエスト文字列、および署名認証リクエストとなります。

署名なしのオリジナルリクエスト

http://ecs.amazonaws.com/onca/xml?Service=AWSECommerceService&AWS
AccessKeyId=00000000000000000000&Operation=ListLookup&Version=200
9-01-01&ListId=34AN6HPUN5AMX&AssociateTag=mytag-20&ListType=WishL
ist&ResponseGroup=ListItems,Offers,Images

署名対象のリクエスト文字列

GET
ecs.amazonaws.com
/onca/xml
AWSAccessKeyId=00000000000000000000&AssociateTag=mytag-20&ListId=
34AN6HPUN5AMX&ListType=WishList&Operation=ListLookup&ResponseGrou
p=ListItems%2COffers%2CImages&Service=AWSECommerceService&Timesta
mp=2009-01-01T12%3A00%3A00Z&Version=2009-01-01

署名認証リクエスト

http://ecs.amazonaws.com/onca/xml?AWSAccessKeyId=0000000000000000
0000&AssociateTag=mytag-20&ListId=34AN6HPUN5AMX&ListType=WishList
&Operation=ListLookup&ResponseGroup=ListItems%2COffers%2CImages&S
ervice=AWSECommerceService&Signature=H5u4W10g0vmyB1KA6hmkrea36AFv
SryL9SQfPejvWNs%3D&Timestamp=2009-01-01T12%3A00%3A00Z&Version=200
9-01-01

BrowseNodeLookup のサンプル

以下の例は、 BrowseNodeLookup における、署名なしのオリジナルリクエスト、署名対象のリクエスト文字列、および署名認証リクエストとなります。

署名なしのオリジナルリクエスト

http://ecs.amazonaws.com/onca/xml?Service=AWSECommerceService&AWS
AccessKeyId=00000000000000000000&Operation=BrowseNodeLookup&Versi
on=2009-01-01&BrowseNodeId=465600&AssociateTag=mytag-20&ResponseG
roup=BrowseNodeInfo,TopSellers,NewReleases,MostWishedFor,MostGift
ed

署名対象のリクエスト文字列

GET
ecs.amazonaws.com
/onca/xml
AWSAccessKeyId=00000000000000000000&AssociateTag=mytag-20&BrowseN
odeId=465600&Operation=BrowseNodeLookup&ResponseGroup=BrowseNodeI
nfo%2CTopSellers%2CNewReleases%2CMostWishedFor%2CMostGifted&Servi
ce=AWSECommerceService&Timestamp=2009-01-01T12%3A00%3A00Z&Version
=2009-01-01

署名認証リクエスト

http://ecs.amazonaws.com/onca/xml?AWSAccessKeyId=0000000000000000
0000&AssociateTag=mytag-20&BrowseNodeId=465600&Operation=BrowseNo
deLookup&ResponseGroup=BrowseNodeInfo%2CTopSellers%2CNewReleases%
2CMostWishedFor%2CMostGifted&Service=AWSECommerceService&Signatur
e=kEXxAIqhh6eBhLhrVMz2gt3ocMaH%2FOBVPbjvc9TG8ao%3D&Timestamp=2009
-01-01T12%3A00%3A00Z&Version=2009-01-01

SimilarityLookup のサンプル

以下の例は、 SimilarityLookupにおける、署名なしのオリジナルリクエスト、署名対象のリクエスト文字列、および署名認証リクエストとなります。

署名なしのオリジナルリクエスト

http://ecs.amazonaws.com/onca/xml?Service=AWSECommerceService&AWS
AccessKeyId=00000000000000000000&Operation=SimilarityLookup&ItemI
d=B0011ZK6PC,B000NK8EWI&Version=2009-01-01&AssociateTag=mytag-20&
ResponseGroup=Offers,ItemAttributes&SimilarityType=Intersection&C
ondition=New&Merchant=Amazon

署名対象のリクエスト文字列

GET
ecs.amazonaws.com
/onca/xml
AWSAccessKeyId=00000000000000000000&AssociateTag=mytag-20&Conditi
on=New&ItemId=B0011ZK6PC%2CB000NK8EWI&Merchant=Amazon&Operation=S
imilarityLookup&ResponseGroup=Offers%2CItemAttributes&Service=AWS
ECommerceService&SimilarityType=Intersection&Timestamp=2009-01-01
T12%3A00%3A00Z&Version=2009-01-01

署名認証リクエスト

http://ecs.amazonaws.com/onca/xml?AWSAccessKeyId=0000000000000000
0000&AssociateTag=mytag-20&Condition=New&ItemId=B0011ZK6PC%2CB000
NK8EWI&Merchant=Amazon&Operation=SimilarityLookup&ResponseGroup=O
ffers%2CItemAttributes&Service=AWSECommerceService&Signature=I2pb
qxuS%2FmZK6Apwz0oLBxJn2wDL5n4kFQhgYWgLM7I%3D&SimilarityType=Inter
section&Timestamp=2009-01-01T12%3A00%3A00Z&Version=2009-01-01