前回、SWFの概要を説明しましたが、きっと私の説明力不足により

よくわからなかったと思うので、今回からは実際にApexからSWFを触ってみて挙動を確認します。

 

ApexでSWFを動かすには例のごとくSDKは存在しないので、

直接REST APIをコールする必要があります。

 

ということで、今日はREST APIをApexからコールするところのベース(Signature生成)を説明します!

 

さて、AWS REST API恒例のSignature生成ですが、

SimpleDBのSignature Version2やDynamoDBのSignature Version4と異なり、

Signature Version3という署名認証方式で行われます。

 

Signature Version3は以下の形式で生成します。

 

Apexのサンプルは以下のとおり

 

SWFだとHTTPメソッドはPOST固定で

リソースパスも”/”固定、クエリパラメータはないので空白

ということでstring_to_signの生成は4行目からが動的な部分になります。

 

実際に生成したstring_to_signはこんな感じになります。

 

あとは生成したstring_to_signのdigest値からハッシュ値を計算してBase64エンコードするだけ。

アルゴリズムはSHA1 or SHA256で。

 

Signatureを生成したら、AWS認証用ヘッダに入れてコールアウト。

ちなみに、Host、X-Amz-Date、X-Amz-Targetヘッダは必須で

X-Amz-TargetはコールするAPIのメソッドを指定することになります。

Content-Typeもapplication/jsonとかじゃ通らないので、”application/x-amz-json-1.0″を指定。

HostはRESTのエンドポイントなのでリージョン毎の値を利用します。

 

あとは各メソッドに応じてX-Amz-TargetとHTTP Request Bodyを作っていくだけ!

 

ということで次回は実際にワークフローのスタート(StartWorkflowExecution)から

DeciderによるActivity Taskのスケジュール(ScheduleActivityTaskDecision)までをやってみます。