grafana / k6-jslib-aws

Javascript Library allowing to interact with AWS resources from k6 scripts
Apache License 2.0
18 stars 29 forks source link

Add support for downloading binary files using `S3Client.getObject` #113

Closed oleiade closed 1 month ago

oleiade commented 1 month ago

What

This Pull Request adds support for downloading binary S3 objects using the getObject operation to address #105 and supersede #107.

We wanted to get this done, and as the initial contributor did not appear to have the capacity to switch to the proposed design, we took the liberty to do it.

How

This PR adds an additionalHeaders parameter to S3Client.getObject. The operation additionally receives support for the Accept header. When the header is provided with the value application/octet-stream, the operation will treat the response as binary content and return an ArrayBuffer.

We decided to opt for the header approach, as it doesn't leak nor depend on k6 interfaces and adopts a standard HTTP behavior, indicating to the server the type of content we expect in return through the Accept header.

Example

// ...

export default async function () {
    await s3.getObject(testBucketName, testFileKey, {
        Accept: 'application/octet-stream',
    })

    // ...
}
oleiade commented 1 month ago

For your attention @KOConchobhair 🙇🏻