Using undocumented AWS console functionality to quickly access resources via ARN or resource type.


Recently I was browsing the AWS Config dashboard and noticed that the “Manage Resource” button on this page:

AWS Config Manage Resource Button

linked to an AWS console URL I hadn’t seen before:

https://us-east-1.console.aws.amazon.com/go/view?arn=arn%3Aaws%3Aaccess-analyzer%3Aus-east-1%3A123456789101%3Acertificate%2F123456789-1234-4567-abcd-abcdef123456789&source=config

This URL format (/go/view?arn=) is interesting because, presumably, it would allow passing in any AWS resource name, in full ARN format, to be taken directly to the console for that resource. Deep-linking into the AWS console has historically been somewhat challenging since each page has its own URL format for resources. For example:

  • S3 buckets are at /s3/buckets/bucket-name
  • ACM certificates are at /acm/home?region=us-east-1#/certificates/cert-id
  • CloudFront distributions are at /cloudfront/v4/home?region=us-east-1#/distributions/DISTRIBUTIONID

Being able to navigate directly to these resource pages solely using the AWS ARN for the given resource would be nice!

I got curious, and dug around to see what other formats this URL might accept and eventually found this minified JavaScript on the AWS Config console page:

!function(e, n, r) {
    if ("view" === e && t.RESOURCE_TYPE_REG_EXP.test(n) && !r)
        throw new i.UnsupportedActionError(e,n);
    if ("list" === e && !t.RESOURCE_TYPE_REG_EXP.test(n))
        throw new i.UnsupportedActionError(e,n)
}(l, e, null == n ? void 0 : n.resourceId);
var p = "https://".concat(d, "/go/").concat(l, "?").concat(function(e, n, r) {
    var i = new URLSearchParams;
    return t.RESOURCE_TYPE_REG_EXP.test(e) ? (i.append("resourceType", e),
    (null == r ? void 0 : r.resourceId) && "view" === n && i.append("resourceId", r.resourceId),
    (null == r ? void 0 : r.region) && i.append("region", r.region),
    (null == r ? void 0 : r.accountId) && i.append("accountId", r.accountId)) : i.append("arn", e),
    i.toString()
}(e, l, n))
    , f = function(e) {
    if (e)

This seems to suggest that the following URL paths are supported:

  • /go/view
  • /go/list

And that the following parameters are supported:

  • resourceType
  • resourceId
  • region
  • accountId
  • arn

So we can extrapolate examples like the following:

/go/list?resourceType=AWS::S3::Bucket
/go/view?resourceType=AWS::Lambda::Function&resourceId=my-func&region=us-east-1&accountId=123456789012
/go/list?resourceType=AWS::DynamoDB::Table&region=us-west-2
/go/view?arn=arn:aws:ec2:us-west-2:123456789012:instance/i-1234567890abcdef0

I posted about this on X, and it seemed to be news to most folks. Googling this URL path (console.aws.amazon.com/go/view) returns only 7 results at the time of this post, 2 of them my aforementioned X post, so this doesn’t seem to be a terribly well-known path.

One of my followers, David Wells, turned this into a script so you can run aws-open <arn> to instantly open the AWS console for a given ARN.

Hope this is helpful to some folks!


This post was published by wut.dev, a client-side AWS console alternative for viewing, managing, debugging, and documenting AWS resources, logs, security policies, and controls.