When using AppSync custom domains (https://docs.aws.amazon.com/appsync/latest/devguide/custom-domain-name.html), the produced signature does not contain the region (cannot be inferred from URL) and so the auth fails.
I have tested a fix by inserting region: "ap-southeast-2", after line 34:
|
return { |
|
host, |
|
method: "POST", |
|
path, |
|
service: "appsync", |
|
headers: { |
|
"Content-Type": "application/json", |
|
}, |
|
body: JSON.stringify({ |
|
query: rawQuery, |
|
variables, |
|
}), |
|
}; |
Of note, the library does not report this error well. I have tested at fix by inserting the following in the the result.on("end", ... processing (line 21 below):
if (result.statusCode !== 200) {
// reject(new Error(`Error: Status Code ${result.statusCode}`));
console.log('STATUS CODE', result.statusCode);
console.log('STATUS RESPONSE', rawResponseBody);
}
|
result.on("end", () => { |
|
try { |
|
// JSON parse the response body |
|
const body = JSON.parse(rawResponseBody); |
|
|
|
// Reject if no data |
|
if (!body.data) { |
|
reject(Error(rawResponseBody)); |
|
} |
|
|
|
// Resolve with just that data |
|
resolve(body.data); |
|
} catch (e) { |
|
// Throw the full body if it isn't JSON (usually this is where a GraphQL server is responding with e.g. an |
|
// error page instead of a properly formatted GraphQL error.) |
|
reject(Error(rawResponseBody)); |
|
} |
|
}); |
I can submit a PR soon unless someone beats me to it.
When using AppSync custom domains (https://docs.aws.amazon.com/appsync/latest/devguide/custom-domain-name.html), the produced signature does not contain the region (cannot be inferred from URL) and so the auth fails.
I have tested a fix by inserting
region: "ap-southeast-2",after line 34:appsync-client/src/createRequestObject.ts
Lines 30 to 42 in aeedb2b
Of note, the library does not report this error well. I have tested at fix by inserting the following in the the
result.on("end", ...processing (line 21 below):appsync-client/src/httpsRequestPromisified.ts
Lines 20 to 37 in aeedb2b
I can submit a PR soon unless someone beats me to it.