UNPKG

@aws-cdk/core

Version:

AWS Cloud Development Kit Core Library

110 lines (109 loc) 4.71 kB
import { Stack } from './stack'; export interface ArnComponents { /** * The partition that the resource is in. For standard AWS regions, the * partition is aws. If you have resources in other partitions, the * partition is aws-partitionname. For example, the partition for resources * in the China (Beijing) region is aws-cn. * * @default The AWS partition the stack is deployed to. */ readonly partition?: string; /** * The service namespace that identifies the AWS product (for example, * 's3', 'iam', 'codepipline'). */ readonly service: string; /** * The region the resource resides in. Note that the ARNs for some resources * do not require a region, so this component might be omitted. * * @default The region the stack is deployed to. */ readonly region?: string; /** * The ID of the AWS account that owns the resource, without the hyphens. * For example, 123456789012. Note that the ARNs for some resources don't * require an account number, so this component might be omitted. * * @default The account the stack is deployed to. */ readonly account?: string; /** * Resource type (e.g. "table", "autoScalingGroup", "certificate"). * For some resource types, e.g. S3 buckets, this field defines the bucket name. */ readonly resource: string; /** * Separator between resource type and the resource. * * Can be either '/', ':' or an empty string. Will only be used if resourceName is defined. * @default '/' */ readonly sep?: string; /** * Resource name or path within the resource (i.e. S3 bucket object key) or * a wildcard such as ``"*"``. This is service-dependent. */ readonly resourceName?: string; } export declare class Arn { /** * Creates an ARN from components. * * If `partition`, `region` or `account` are not specified, the stack's * partition, region and account will be used. * * If any component is the empty string, an empty string will be inserted * into the generated ARN at the location that component corresponds to. * * The ARN will be formatted as follows: * * arn:{partition}:{service}:{region}:{account}:{resource}{sep}{resource-name} * * The required ARN pieces that are omitted will be taken from the stack that * the 'scope' is attached to. If all ARN pieces are supplied, the supplied scope * can be 'undefined'. */ static format(components: ArnComponents, stack: Stack): string; /** * Given an ARN, parses it and returns components. * * If the ARN is a concrete string, it will be parsed and validated. The * separator (`sep`) will be set to '/' if the 6th component includes a '/', * in which case, `resource` will be set to the value before the '/' and * `resourceName` will be the rest. In case there is no '/', `resource` will * be set to the 6th components and `resourceName` will be set to the rest * of the string. * * If the ARN includes tokens (or is a token), the ARN cannot be validated, * since we don't have the actual value yet at the time of this function * call. You will have to know the separator and the type of ARN. The * resulting `ArnComponents` object will contain tokens for the * subexpressions of the ARN, not string literals. In this case this * function cannot properly parse the complete final resourceName (path) out * of ARNs that use '/' to both separate the 'resource' from the * 'resourceName' AND to subdivide the resourceName further. For example, in * S3 ARNs: * * arn:aws:s3:::my_corporate_bucket/path/to/exampleobject.png * * After parsing the resourceName will not contain * 'path/to/exampleobject.png' but simply 'path'. This is a limitation * because there is no slicing functionality in CloudFormation templates. * * @param arn The ARN to parse * @param sepIfToken The separator used to separate resource from resourceName * @param hasName Whether there is a name component in the ARN at all. For * example, SNS Topics ARNs have the 'resource' component contain the topic * name, and no 'resourceName' component. * * @returns an ArnComponents object which allows access to the various * components of the ARN. * * @returns an ArnComponents object which allows access to the various * components of the ARN. */ static parse(arn: string, sepIfToken?: string, hasName?: boolean): ArnComponents; private constructor(); }