跳至內容

如何查明 CloudFront 發佈項目屬於哪個 AWS 帳戶?

2 分的閱讀內容
0

我想找出 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 的憑證。

  1. 在您所建立發佈項目的 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"
          ]
        }
      ]
    }
  2. 確認新發佈項目具有有效憑證。

  3. 執行 ListConflictingAliases 命令。在 YourDistributionId,輸入您在 AWS 帳戶中建立新發佈項目的 ID。在 YourCNAME,輸入與您要尋找的 CloudFront 發佈項目關聯的別名 (替代網域名稱)。

    aws cloudfront list-conflicting-aliases --distribution-id YourDistributiontID --alias YourCNAME
  4. 輸出會提供 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 中記錄自訂網域名稱的建立作業。

AWS 官方已更新 7 個月前