Skip to content

Latest commit

 

History

History
107 lines (76 loc) · 2.48 KB

README.md

File metadata and controls

107 lines (76 loc) · 2.48 KB

aws-arn

NPM version Build Status

Parser/utils for AWS ARN:s.

This module provides a simple AWS ARN parser.

Note: v2.0.0 rewritten in TypeScript

Installation

Node.JS:

npm install aws-arn

Then within the application do

import Arn from 'aws-arn';

API reference

https://henhal.github.io/aws-arn/

Usage

Parse an ARN string

NOTE: V1 always returned null if attempting to parse invalid ARNs. V2 however supports passing a second argument fail with the value true to instead throw an error. This avoids having to deal with the return type Arn | null, which simplifies TypeScript usage:

const arn = Arn.parse('aws:arn:s3:eu-west-1:123456789:bucket/path/object');
// arn is of type Arn | null

const arn = Arn.parse('aws:arn:s3:eu-west-1:123456789:bucket/path/object', false);
// arn is of type Arn | null

const arn = Arn.parse('aws:arn:s3:eu-west-1:123456789:bucket/path/object', true);
// arn is of type Arn, or the call threw an error
const arn = Arn.parse('aws:arn:s3:eu-west-1:123456789:bucket/path/object', true);

console.log(arn);

> Arn {
    scheme: 'aws',
    partition: 'arn',
    service: 's3',
    region: 'eu-west-1',
    accountId: '123456789',
    resourcePart: 'bucket/path/object' }

Since the resource part of ARNs may have several formats, Arn objects also supply a read-only resource property that returns a parsed representation of the resource part:

const arn = Arn.parse('aws:arn:s3:eu-west-1:123456789:bucket/path/object', true);
console.log(arn.resource);

> { type: 'bucket', id: 'path/object'}

const arn = Arn.parse('aws:arn:lambda:eu-west-1:123456789:Layer:my-layer:42', true);
console.log(arn.resource);

> { type: 'Layer', id: 'my-layer', qualifier: '42'}

Create ARN from components

const arn = new Arn({
  service: 'lambda',
  region: 'eu-west-1',
  accountId: '123456789',
  resourcePart: 'Layer:my-layer:42'
});

console.log(arn);

> Arn {
    scheme: 'aws',
    partition: 'arn',
    service: 'lambda',
    region: 'eu-west-1',
    accountId: '123456789',
    resourcePart: 'Layer:my-layer:42' }

Format ARN into string

const arn = Arn.parse('aws:arn:s3:eu-west-1:123456789:bucket/path/object', true);

console.log(arn.format());

> aws:arn:s3:eu-west-1:123456789:bucket/path/object