class aws_cdk.core.Arn(*args, **kwargs)

Bases: object

Static Methods

classmethod format(components, stack)

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:


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’.

Return type


classmethod parse(arn, sep_if_token=None, has_name=None)

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:


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.

  • arn (str) – The ARN to parse.

  • sep_if_token (Optional[str]) – The separator used to separate resource from resourceName.

  • has_name (Optional[bool]) – 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.

Return type



an ArnComponents object which allows access to the various components of the ARN.