2.2.0
Deno module to create presigned URLs for AWS S3
Repository
Current version released
11 months ago
Dependencies
std
Deno module for creating presigned URLs to get and update objects in Amazon S3 (AWS Signature Version 4). Implemented and tested as per https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html.
Usage
import { getSignedUrl } from 'https://deno.land/x/aws_s3_presign/mod.ts'
const url = getSignedUrl({
accessKeyId: 'my-aws-access-key-id',
secretAccessKey: 'my-aws-secret-access-key',
bucket: 'example-bucket',
key: '/test.txt',
region: 'us-east-1',
})
Options
interface GetSignedUrlOptions {
bucket: string // required
key: string // required
accessKeyId: string // required
secretAccessKey: string // required
sessionToken?: string // AWS STS token
method?: 'GET' | 'PUT' // default 'GET'
region?: string // default 'us-east-1'
queryParams?: Record<string, string | number> // additional query parameters
expiresIn?: number // seconds, default 86400 (24 hours)
date?: Date // forced creation date, for testing
endpoint?: string // custom endpoint, default s3.amazonaws.com
protocol?: string // 'http' or 'https' for endpoint, default 'https'
usePathRequestStyle?: boolean // use s3.amazonaws.com/<bucket>/<key> request style
signatureKey?: string // optional pre-generated signature created with getSignatureKey()
}
Pre-generating signature keys
In instances where a large number of URLs is required it will be computationally
benefical to generate the required signature key and pass it to
getSignedUrl(...)
to avoid recalculation:
import { getSignatureKey, getSignedUrl } from 'https://deno.land/x/aws_s3_presign/mod.ts'
const date = new Date()
const signatureKey = getSignatureKey({
date,
region: 'us-east-1',
secretAccessKey: 'aws-secret-access-key',
})
const url = getSignedUrl({
signatureKey,
...
})
Testing
git clone https://github.com/dansalias/aws_s3_presign
cd ./aws_s3_presign
deno test