· 7 years ago · Dec 12, 2018, 12:14 AM
1function getSignatureKey(key, dateStamp, regionName, serviceName) {
2var kDate = HMAC_SHA256_MAC(dateStamp, "AWS4" + key);
3var kRegion = HMAC_SHA256_MAC(regionName, kDate);
4var kService = HMAC_SHA256_MAC(serviceName, kRegion);
5var kSigning = HMAC_SHA256_MAC("aws4_request", kService);
6return kSigning;
7}
8
9handlers.DynamoRequest = function (args, context) {
10 var method = "POST";
11 var service = "dynamodb";
12 var host = "dynamodb.us-east-2.amazonaws.com";
13var region = "us-east-2";
14var target = "DynamoDB_20120810.PutItem";
15var contentType = "application/json";
16var signedHeaders = "content-type;host;x-amz-date;x-amz-target";
17var algorithm = "AWS4-HMAC-SHA256";
18var accessKey = "keyInsertedHere";
19var secretKey = "keyInsertedHere";
20
21var date = new Date().toISOString();
22date = date.split("-").join("");
23date = date.split(":").join("");
24date = date.substring(0, 15);
25date = date + "Z";
26
27var body = {
28"TableName": "PlayerItems",
29"Key": {
30"PlayerID": {"S": "id1"}
31}
32};
33
34body = JSON.stringify(body);
35
36var canonicalHeaders = 'content-type:' + contentType + 'n' + 'host:' + host + 'n' + 'x-amz-date:' + date + 'n' + 'x-amz-target:' + target + 'n';
37
38var payloadHash = SHA256_hash(body);
39var canonicalRequest = method + "n" + "/" + "n" + "" + "n" + canonicalHeaders + "n" + signedHeaders + "n" + payloadHash;
40
41var credentialScope = date.substring(0, 8) + "/" + region + "/" + service + "/" + "aws4_request";
42var stringToSign = algorithm + "n" + date + "n" + credentialScope + "n" + SHA256_hash(canonicalRequest);
43var signingKey = getSignatureKey(secretKey, date.substring(0, 8), region, service);
44var signature = HMAC_SHA256_MAC(signingKey, stringToSign);
45var authHeader = algorithm + " " + "Credential=" + accessKey + "/" + credentialScope + ", " + "SignedHeaders=" + signedHeaders + ", " + "Signature=" + signature;
46
47var headers = {
48"Content-Type": contentType,
49"Host": host,
50"X-Amz-Target": target,
51"X-Amz-Date": date,
52"Authorization": authHeader
53};
54
55try{
56var response = http.request("https://" + host, method, body, contentType, headers, true);
57return { responseContent: response };
58}
59catch(e){
60return {error: e};
61}
62};