in amplify/backend/function/S3Triggerb6cacc90/src/index.js [56:121]
async function insertImageWithSigning(event) {
const params = {
Bucket: event.Records[0].s3.bucket.name,
Key: event.Records[0].s3.object.key,
};
const s3Client = new S3();
const s3MetadataResponse = await s3Client.headObject(params).promise();
const req = new AWS.HttpRequest(appsyncUrl, region);
const item = {
input: {
image: params.Key,
username: s3MetadataResponse.Metadata.user,
description: "Image from s3 trigger lambda"
}
};
req.method = "POST";
req.path = "/graphql";
req.headers.host = endpoint;
req.headers["Content-Type"] = "application/json";
req.body = JSON.stringify({
query: print(createIngestedImage),
operationName: "CreateIngestedImage",
variables: item
});
if (apiKey) {
req.headers["x-api-key"] = apiKey;
} else {
const signer = new AWS.Signers.V4(req, "appsync", true);
var credentials = new AWS.EnvironmentCredentials('AWS');
signer.addAuthorization(credentials, AWS.util.date.getDate());
}
// const data = await axios({
// method: 'post',
// url: req.endpoint.href,
// data: req.body,
// headers: req.headers
// });
const data = await new Promise((resolve, reject) => {
const httpRequest = https.request({ ...req, host: endpoint }, (result) => {
let data = "";
result.on("data", (chunk) => {
data += chunk;
});
result.on("end", () => {
resolve(JSON.parse(data.toString()));
});
});
httpRequest.write(req.body);
httpRequest.end();
});
return {
statusCode: 200,
body: data
};
}