You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AWS证书ARN或域名查询关联的AWS资源ARN?

解决方案:查询与AWS证书或域名关联的资源ARN

一、通过ACM证书ARN查询关联资源

AWS CLI没有直接内置命令可列出ACM证书关联的资源,但可以通过脚本遍历常见关联服务(如Application Load Balancer、CloudFront、API Gateway),筛选出引用目标证书ARN的资源。

以下是bash脚本示例,输入证书ARN即可返回关联资源ARN:

#!/bin/bash

CERT_ARN="$1"

echo "查询与证书 $CERT_ARN 关联的资源:"

# 1. 查询Application Load Balancer(ELBv2)监听器
echo "--- Application Load Balancers ---"
aws elbv2 describe-listeners --query "Listeners[?Certificates[?CertificateArn=='$CERT_ARN']].ListenerArn" --output text

# 2. 查询CloudFront分发
echo "--- CloudFront Distributions ---"
aws cloudfront list-distributions --query "DistributionList.Items[?ViewerCertificate.AcmCertificateArn=='$CERT_ARN'].ARN" --output text

# 3. 查询API Gateway绑定的资源
echo "--- API Gateway REST APIs ---"
# 先获取绑定该证书的自定义域名
DOMAIN_NAMES=$(aws apigateway get-domain-names --query "items[?certificateArn=='$CERT_ARN'].domainName" --output text)
# 再查询每个域名对应的API ARN
for DOMAIN in $DOMAIN_NAMES; do
    aws apigateway get-base-path-mappings --domain-name "$DOMAIN" --query "items[].restApiId" --output text | xargs -I {} aws apigateway get-rest-api --rest-api-id {} --query "ARN" --output text
done

使用方式:将脚本保存为find-cert-associated-resources.sh,赋予执行权限后运行:

chmod +x find-cert-associated-resources.sh
./find-cert-associated-resources.sh "arn:aws:acm:us-east-1:123456789012:certificate/abcdef-1234-5678-90ab-cdef12345678"

二、直接通过域名查询关联资源

如果想跳过获取证书ARN的步骤,可以整合证书查询与资源关联逻辑,或直接遍历服务查找绑定目标域名的资源:

整合式脚本(域名→证书→关联资源)

以下脚本输入域名后,自动获取对应证书ARN,再查询所有关联资源:

#!/bin/bash

DOMAIN="$1"

# 获取域名对应的ACM证书ARN
CERT_ARN=$(aws acm list-certificates --query "CertificateSummaryList[?DomainName=='$DOMAIN'].CertificateArn" --output text)

if [ -z "$CERT_ARN" ]; then
    echo "未找到域名 $DOMAIN 对应的ACM证书"
    exit 1
fi

echo "域名 $DOMAIN 对应的证书ARN:$CERT_ARN"
echo "查询关联资源:"

# 查询ELBv2监听器
echo "--- Application Load Balancers ---"
aws elbv2 describe-listeners --query "Listeners[?Certificates[?CertificateArn=='$CERT_ARN']].ListenerArn" --output text

# 查询CloudFront分发
echo "--- CloudFront Distributions ---"
aws cloudfront list-distributions --query "DistributionList.Items[?ViewerCertificate.AcmCertificateArn=='$CERT_ARN'].ARN" --output text

# 查询API Gateway资源
echo "--- API Gateway REST APIs ---"
DOMAIN_NAMES=$(aws apigateway get-domain-names --query "items[?certificateArn=='$CERT_ARN'].domainName" --output text)
for DOMAIN in $DOMAIN_NAMES; do
    aws apigateway get-base-path-mappings --domain-name "$DOMAIN" --query "items[].restApiId" --output text | xargs -I {} aws apigateway get-rest-api --rest-api-id {} --query "ARN" --output text
done

# 额外:直接查找绑定该域名的CloudFront分发(不通过证书)
echo "--- 直接绑定域名的CloudFront Distributions ---"
aws cloudfront list-distributions --query "DistributionList.Items[?Origins.Items[?DomainName=='$DOMAIN']].ARN" --output text

使用方式:

chmod +x find-domain-resources.sh
./find-domain-resources.sh "example.com"

直接查询绑定域名的资源(不依赖证书)

对于未使用ACM证书的资源(如HTTP协议的ELB),可以直接通过域名筛选:

  • 查询绑定域名的ELBv2规则:
aws elbv2 describe-rules --query "Rules[?Conditions[?Field=='host-header' && Values[?contains(@, '$DOMAIN')]]].RuleArn" --output text
  • 查询绑定域名的API Gateway自定义域名:
aws apigateway get-domain-names --query "items[?domainName=='$DOMAIN'].domainName" --output text

内容的提问来源于stack exchange,提问作者kgcwc09

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 06:55:15