async function processAndSendChunkMessage()

in source/lambda/splitArchive/index.js [64:118]


async function processAndSendChunkMessage(glacierRetrievalStatus, key, numberOfChunks) {

    let queueUrl = await sqs.getQueueUrl({ QueueName: SQS_CHUNK }).promise();
    if (numberOfChunks > 1){
        console.log(`${key} : multiPart : ${numberOfChunks}`);

        let multiPartUpload = await s3
            .createMultipartUpload({
                Bucket: STAGING_BUCKET,
                Key: `${STAGING_BUCKET_PREFIX}/${key}`,
            })
            .promise();

        let i = 1;
        while (i < numberOfChunks) {
            // console.log("Submitting chunk: " + i);
            let startByte = (i - 1) * CHUNK_SIZE;
            let endByte = startByte + CHUNK_SIZE - 1;

            await sendChunkMessage(
                queueUrl.QueueUrl,
                glacierRetrievalStatus,
                multiPartUpload.UploadId,
                key,
                i,
                startByte,
                endByte
            );
            i++;
        }

        // console.log("Processing last chunk: " + i);
        let startByte = (i - 1) * CHUNK_SIZE;
        let endByte = glacierRetrievalStatus.ArchiveSizeInBytes - 1;

        await sendChunkMessage(
                queueUrl.QueueUrl,
                glacierRetrievalStatus,
                multiPartUpload.UploadId,
                key,
                i,
                startByte,
                endByte
        );
    } else {
        await sendChunkMessage(
            queueUrl.QueueUrl,
            glacierRetrievalStatus,
            null,
            key,
            null,
            null,
            null)
    }    
}