6

私は現在 Google Apps スクリプトを使用しており、AWS CloudWatch への HTTP リクエストを書き込んで署名しようとしています。

署名キーの作成方法に関するAmazon API ドキュメント(こちら) では、疑似を使用して、HMAC アルゴリズムがバイナリ形式を返すことを説明しています。

HMAC(key, data) represents an HMAC-SHA256 function 
that returns output in binary format.

Google Apps スクリプトは、そのようなハッシュを行う方法を提供します。

Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_256,
                                            data,
                                            key);

ただし、戻り値の型は常にバイト配列です。

Byte[]

Byte[] を AWS が必要とするバイナリデータに変換するにはどうすればよいですか? または、ハッシュを計算するために Google Apps Script で使用できるバニラ JavaScript 関数はありますか?

ありがとう

4

2 に答える 2

1

必要なバイト配列からバイナリ データへの変換は簡単です。

kDate = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_256,
             '20130618', 'AWS4' + kSecret);
kDate = Utilities.newBlob(kDate).getDataAsString();
kRegion = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_256, 
             'eu-west-1', kDate);

ただし、バグトラッカーでこの未解決の問題を調べる必要があります。変換に問題がある可能性があります。

おそらく、 String.fromCharCode() ループを作成して、負の数値を避けることができます。

kDateB = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_256,
             '20130618', 'AWS4' + kSecret);
kDate = '';
for (var i=0; i<kDateB.length; i++)
  kDate += String.fromCharCode(kDateB[i]<0?256+kDateB[i]:0+kDateB[i]);
kRegion = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_256, 
             'eu-west-1', kDate);
于 2013-06-18T07:46:45.910 に答える