我想找出 Amazon CloudFront 發佈項目所屬的 AWS 帳戶。
簡短說明
若要查詢發佈項目所屬 AWS 帳戶的資訊,請使用 ListConflictingAliases 命令取得該 AWS 帳戶的資訊。
首先,建立新的 CloudFront 發佈項目,並將其與 SSL 憑證建立關聯。此 SSL 憑證必須涵蓋與目標 CloudFront 發佈項目關聯的網域,您要找出的正是該發佈項目所屬的 AWS 帳戶。
接著,執行 ListConflictingAliases 命令。使用新發佈項目的 ID,以及您要尋找的發佈項目所關聯的替代網域名稱。
注意: 若要使用此方法,發佈項目必須與替代網域名稱建立關聯。如果您要尋找的 CloudFront 發佈項目未與替代網域名稱建立關聯,請聯絡 AWS Support。
解決方法
建立 CloudFront 發佈項目
建立新的 CloudFront 發佈項目。建立發佈項目時,請執行以下操作:
- 連接一張 SSL 憑證,該憑證必須涵蓋與目標 CloudFront 發佈項目關聯的網域,您要找出的正是該發佈項目所屬的 AWS 帳戶。
- 請勿在 Alternate Domain Name (替代網域名稱) 中指定網域名稱。 在此欄位輸入值會導致「CNAME already exists」錯誤。
如果不想建立新的發佈項目,您可以使用自訂 SSL 憑證更新現有的 CloudFront 發佈項目。
執行 ListConflictingAliases 命令
注意: ListConflictingAliases 命令需要 GetDistribution 和 ListConflictingAliases 權限。若要驗證擁有權,您必須具備 YourDistributionID 的讀取權限。您也必須連接一張可保護衝突 CNAME 的憑證。
-
在您所建立發佈項目的 AWS Identity and Access Management (IAM) 政策中,新增以下資源層級權限。將這些權限授予發出 API 請求的 IAM 使用者或角色。在 DISTRIBUTION-ID,輸入您建立之新發佈項目的 ID。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CloudFrontCnameSwapCrossAcc",
"Effect": "Allow",
"Action": [
"cloudfront:GetDistribution",
"cloudfront:ListConflictingAliases"
],
"Resource": [
"arn:aws:cloudfront::123456789:distribution/DISTRIBUTION-ID"
]
}
]
}
-
確認新發佈項目具有有效憑證。
-
執行 ListConflictingAliases 命令。在 YourDistributionId,輸入您在 AWS 帳戶中建立新發佈項目的 ID。在 YourCNAME,輸入與您要尋找的 CloudFront 發佈項目關聯的別名 (替代網域名稱)。
aws cloudfront list-conflicting-aliases --distribution-id YourDistributiontID --alias YourCNAME
-
輸出會提供 CloudFront 發佈項目清單,以及與您在 ListConflictingAliases 命令中輸入的別名發生衝突的相關帳戶 ID。
--alias 參數中的網域名稱會與您要尋找的 CloudFront 發佈項目建立關聯。輸出也會列出與發佈項目 ID 關聯的 AWS 帳戶 ID。
例如:
aws cloudfront list-conflicting-aliases --distribution-id EABCDSXK9UXYZ --alias www.example.com
{
"ConflictingAliasesList": {
"MaxItems": 100,
"Quantity": 1,
"Items": [
{
"Alias": "www.example.com",
"DistributionId": "*******NOOCXYZ",
"AccountId": "******091234"
}
]
}
}
注意: 請使用 AWS 受管帳戶,管理您透過 API Gateway 中的邊緣最佳化 API 端點或 AWS Amplify 受管託管所建立的 CloudFront 發佈項目。在此情況下,輸出中的 AWS 帳戶 ID 與 AWS 受管帳戶相關。您為 API Gateway 中的邊緣最佳化 API 端點建立的 CloudFront 發佈項目,具有區域特定的 API Gateway 帳戶 ID。如需區域特定 API Gateway 帳戶 ID 的完整清單,請參閱在 CloudTrail 中記錄自訂網域名稱的建立作業。