amazon-s3-uri
v1.0.0
Published
A URI wrapper that can parse out information about an S3 URI
Readme
AmazonS3URI
A URI wrapper that can parse out information about an S3 URI.
Adapted from the AWS Java SDK AmazonS3URI, with the following differences:
- There is no preprocessing on the given URI string — encode special characters yourself if needed
regionis nevernullfor a valid S3 URI; it defaults tous-east-1
Install
npm install amazon-s3-uriUsage
const AmazonS3URI = require("amazon-s3-uri");
const { region, bucket, key, isPathStyle, isDualStack, versionId } =
AmazonS3URI("https://bucket.s3.dualstack.us-east-1.amazonaws.com/key");
// region → 'us-east-1'
// bucket → 'bucket'
// key → 'key'
// isPathStyle → false
// isDualStack → true
// versionId → nullWorks both as a constructor and as a plain function call:
const a = new AmazonS3URI("s3://bucket/key"); // constructor
const b = AmazonS3URI("s3://bucket/key"); // functional — returns a new instanceThrows TypeError for non-string input and Error for URIs that cannot be parsed as S3 endpoints.
Parsed properties
| Property | Type | Description |
|---------------|------------------|-------------|
| bucket | string \| null | Bucket name, or null if not present |
| key | string \| null | Object key, or null if not present |
| region | string | AWS region; defaults to us-east-1 |
| isPathStyle | boolean | true when the bucket is in the path rather than the hostname |
| isDualStack | boolean | true when the URI uses an S3 dualstack endpoint |
| versionId | string \| null | Value of the versionId query parameter, or null |
| uri | object | Parsed URL components (protocol, host, pathname, search, query, href, …) |
Supported URI formats
s3://bucket/key
https://s3.amazonaws.com/bucket/key (path-style, global)
https://s3-eu-west-1.amazonaws.com/bucket/key (path-style, regional)
https://s3.us-east-1.amazonaws.com/bucket/key (path-style, regional)
https://s3.dualstack.us-east-1.amazonaws.com/bucket/key (path-style, dualstack)
https://bucket.s3.amazonaws.com/key (virtual-hosted, global)
https://bucket.s3-eu-west-1.amazonaws.com/key (virtual-hosted, regional)
https://bucket.s3.dualstack.us-east-1.amazonaws.com/key (virtual-hosted, dualstack)
https://bucket.vpce-xxx.s3.us-east-1.vpce.amazonaws.com/key (VPCE virtual-hosted)
https://vpce-xxx.s3.us-east-1.vpce.amazonaws.com/bucket/key (VPCE path-style)parseQueryString option
Pass true as the second argument to expose uri.query as a parsed object instead of a raw string:
const { uri, versionId } = AmazonS3URI(
"https://bucket.s3.amazonaws.com/key?versionId=abc123",
true
);
// uri.query → { versionId: 'abc123' }
// versionId → 'abc123'License
MIT
