JavaScript/TypeScriptでAWSのARNをパースして、サービス、リージョン、アカウントID、リソースIDなどを取得する方法をご紹介します。
ARNとは
ARNはAWS上のリソースを一意に識別するための識別子のことで、arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint
のような文字列で表されます。
単純そうに見えてそのフォーマットにはいくつかのバリエーションがあり、自前でパースしようとするのはバグの温床となりえます。
パッケージをインストール
ARNをパースするためのnpmパッケージはいくつかあるようですが、AWSが公式に提供している@aws-sdk/util-arn-parserを使うのがいいでしょう。
$ npm i @aws-sdk/util-arn-parser
ARNをパース
JavaScriptの場合:
const { parse } = require('@aws-sdk/util-arn-parser')
const arn = 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint'
const {
partition,
service,
region,
accountId,
resource
} = parse(arn)
console.log(partition) // aws
console.log(service) // s3
console.log(region) // us-west-2
console.log(accountId) // 123456789012
console.log(resource) // accesspoint:myendpoint
TypeScriptの場合:
import { parse } from '@aws-sdk/util-arn-parser'
const arn = 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint'
const {
partition,
service,
region,
accountId,
resource
} = parse(arn)
console.log(partition) // aws
console.log(service) // s3
console.log(region) // us-west-2
console.log(accountId) // 123456789012
console.log(resource) // accesspoint:myendpoint