使用域映射 API 映射域和自动配置 SSL 证书时,Gcloud App Engine“500 内部服务器错误”

问题描述 投票:0回答:1

我面临一个问题,无法通过 API 为我的 App Engine 项目创建域映射。每当我尝试映射自定义域并自动配置 SSL 证书时,都会遇到 500 错误,并显示消息“遇到内部错误。”

我正在使用 Python Flask 应用程序和

googleapiclient
库与 App Engine API 进行交互。我的应用程序的其余部分仍然运行良好。

这是我的代码片段:

def create_domain_mapping(domain_name):
    try:
        credentials = get_credentials()
        if not credentials:
            logging.error("Failed to retrieve credentials.")
            return None

        app_id = os.getenv('app_id')
        if not app_id:
            logging.error("App ID is not set.")
            return None

        service = build('appengine', 'v1', credentials=credentials)
        app_name = f"apps/{app_id}"
        domain_body = {
            "name": "apps/{app_id}/domainMapping/{domain_name}",
            "id": domain_name
            # "sslSettings": {
            #     "sslManagementType": "AUTOMATIC"
            #}
        }
   
        response = service.apps().domainMappings().create(appsId=app_name, body=domain_body).execute()
        logging.info(f"SUCCESS - Domain mapping response : {response}")
        return response
    
    except Exception as e:
        logging.error(f"Failed to provision SSL : {e}")
        return None

错误日志图片

对于这个问题,我已经采取了以下步骤来排查:

  • 验证服务帐户权限:确保服务帐户具有必要的 App Engine 管理员和项目查看者角色。

  • 检查App Engine日志:没有其他相关错误消息。

  • 已测试的网络连接: 已确认与 Google Cloud 服务的网络连接。

  • 检查配额: 已验证我没有超出任何 App Engine 配额。

  • 重写了 API 调用:尝试了 API 调用的不同变体来创建域映射。在下面的代码中,我什至注释掉了 SSL 配置只是为了测试域映射。

  • DNS 设置: 我已确保我尝试映射的域在 DNS 中也具有正确的 A/CNAME 记录,因此它指向我的应用程序

  • GCloud 中的手动映射:我已手动添加域以查看是否存在问题并且成功运行。

  • 其他错误:当 API 调用中包含 SSL 数据时,我还会收到错误:“信息:Compute Engine 元数据服务器对 Universe/universe_domain 的调用返回了 404,原因:找不到 404 页面”。我没有在我的应用程序中的任何地方显式调用此路径。

google-cloud-platform google-app-engine http-status-code-500 domain-mapping
1个回答
0
投票
  1. Google googleapiclient 库处于维护模式,他们建议您切换到云客户端库。对于域映射,这将是 appengine 管理库

  2. This 是示例代码模板的链接,用于使用 python 的 appengine-admin 库创建域映射。有效负载应该像this

© www.soinside.com 2019 - 2024. All rights reserved.