All Tools View Categories About Contact Privacy

ARN Builder

Assemble a valid AWS ARN field by field — for any service, including ones without a dedicated generator.

Runs entirely in your browser — nothing you enter is uploaded.

    

About ARN Builder

Most of the time you want an ARN for a specific, well-known AWS service, and a purpose-built form for that service is faster and safer — that is what the S3, Lambda, IAM, EC2, DynamoDB, SNS/SQS and KMS ARN generators elsewhere in this category do. ARN Builder is the generic form underneath all of them: six plain fields — partition, service, region, account id, resource type, and resource id, plus a choice of separator between the last two — that can assemble a syntactically correct ARN for literally any AWS service, including the many that do not have a dedicated generator here.

The reason a generic builder needs a "separator" choice at all is that AWS itself is not consistent about how a resource type attaches to a resource id. The majority of services join them with a slash — an IAM role is role/my-role, a DynamoDB table is table/Orders — but a meaningful minority use a colon instead, most notably a Lambda function with a version or alias suffix, where the shape is function:my-func:3. Get the separator wrong and the ARN looks almost right but is subtly broken; picking it explicitly here removes that guesswork. If a service's resource has no separate "type" at all — an S3 bucket, an SQS queue, an SNS topic — the resource type field is simply left blank, and the resource id alone becomes the resource segment, with no dangling separator.

Region and account are treated as genuinely optional, because for several core AWS services they really are. S3 bucket ARNs and IAM ARNs both omit the region field, and S3 additionally omits the account field, leaving the well-known double-colon in the middle of an ARN like arn:aws:s3:::my-bucket. Leaving those fields blank in the form produces exactly that shape rather than an error, since an empty region or account between two colons is not a mistake for those services — it is the correct format.

Once a field set is filled in enough to attempt a build — a service and a resource — the tool assembles the ARN and immediately runs it back through the same validator used across every tool in this category: the partition must be one of the three real AWS partitions, the account id must be empty or exactly twelve digits, the region (when present) must look like a genuine AWS region code, and the service field must be lowercase letters, digits, and hyphens only. Any of those checks failing produces a specific, named warning displayed alongside the built ARN rather than in place of it, so you can see exactly what looks unusual about the ARN you just built without losing the result.

This tool intentionally does not know anything about which AWS services actually exist, which resource types a given service supports, or what a valid resource id looks like for that service — it has no service-specific knowledge at all, by design, since that knowledge already lives in the seven dedicated per-service generators elsewhere in this category. What it is good for is everything those do not cover: a less common service, an unusual resource type, or simply understanding the mechanics of ARN assembly by building one field by field. Nothing you enter — including account IDs — is ever sent anywhere; the build and the validation both run locally in your browser.

Features

  • Six-field generic form — partition, service, region, account, resource type, resource id.
  • Separator choice — slash or colon — between resource type and id.
  • Blank region/account supported for services like S3 and IAM that genuinely omit them.
  • Automatic validation of the built ARN — partition, account digits, region shape, service format.
  • Specific build errors when service or resource is missing.
  • Live preview updates as you fill in fields.
  • Copy built ARN to clipboard.
  • Sample values and one-click clear.
  • 100% client-side — nothing is uploaded.

How to Use

  1. Fill in service (required) — e.g. ec2, secretsmanager.
  2. Fill in region and account if the service uses them (leave blank if not, e.g. for S3/IAM).
  3. Enter a resource type and resource id, or just a resource id if the service has no separate type.
  4. Pick the separator (slash or colon) if you entered a resource type.
  5. Click Build — the ARN and any validation warnings appear immediately.
  6. Copy the result, or adjust fields and rebuild.

Examples

Example 1 — Secrets Manager secret (no dedicated generator here). service secretsmanager, region us-east-1, account 123456789012, resource type secret, resource id prod/db-password-a1b2c3, separator slash → arn:aws:secretsmanager:us-east-1:123456789012:secret:prod/db-password-a1b2c3 (Secrets Manager actually uses a colon before "secret", illustrating why picking the right separator matters).

Example 2 — CloudWatch Logs log group. service logs, region us-east-1, account 123456789012, resource type log-group, resource id /aws/lambda/my-func, separator colon → arn:aws:logs:us-east-1:123456789012:log-group:/aws/lambda/my-func.

Example 3 — SSM Parameter. service ssm, region, account, resource type parameter, resource id /app/prod/db-url, separator slash.

Example 4 — missing service. Leaving service blank and clicking Build produces the specific error "service is required" instead of a malformed ARN.

Example 5 — bad account id. Account 987654 (6 digits) still builds the ARN, but the validation warning flags it as not being 12 digits.

Benefits

  • Covers services without a dedicated generator in this category.
  • Makes the type/id separator an explicit choice instead of a guess.
  • Correctly handles blank region/account for the services that need it.
  • Built-in validation catches obviously malformed results immediately.
  • One-click copy for scripts, docs, or policy statements.
  • Private — account IDs never leave your browser.

Frequently Asked Questions

How is this different from the per-service ARN generators (S3, Lambda, IAM, etc.)?
The per-service tools bake in each service's specific ARN shape (S3 has no region/account, Lambda's resource uses a colon before the version, IAM roles use a slash-separated path). This builder is the generic form underneath all of them — you supply every field yourself (partition, service, region, account, resource type, resource id, and the separator between type and id), so it can build an ARN for any AWS service, including ones without a dedicated generator here.
What is the "separator" field for?
AWS services split the resource type from the resource id two different ways: most use a slash (<code>role/my-role</code>), some use a colon (<code>function:my-func:3</code>). Pick whichever your target service uses; leaving resource type blank ignores the separator and uses the resource id alone (the shape S3 bucket-only and SQS/SNS ARNs use).
Can I leave region or account blank?
Yes. Several services genuinely omit one or both — S3 and IAM omit region, S3 also omits account. Leaving those fields blank produces the correct <code>::</code> in the output rather than an error.
Does it validate what I build?
Yes, automatically — after building, the same validator used across these tools checks the partition is one of <code>aws</code>/<code>aws-cn</code>/<code>aws-us-gov</code>, the account is empty or exactly 12 digits, the region (if given) looks like a real region code, and the service field is lowercase letters/digits/hyphens. Warnings are shown alongside the built ARN, not instead of it.
What happens if I leave service or resource id empty?
The build is blocked with a specific error — service and a resource (either a resource id, or resource type+id together) are the two fields <code>buildARN</code> genuinely requires; everything else can be blank.
Does it check the resource actually exists in my AWS account?
No. This is a pure string-assembly and format-check tool — it never calls AWS.
Can I copy the result?
Yes, a Copy button copies the built ARN string once it validates successfully (or with warnings shown).
Is any of this uploaded anywhere?
No — building and validating both run entirely in your browser.