通过命令行预配 API Hub

本页面适用于 ApigeeApigee Hybrid

本文档介绍了如何通过命令行预配 API Hub。如果您希望使用向导式界面预配 API Hub,请参阅在 Cloud 控制台中预配 API Hub

准备工作

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Make sure that you have the following role or roles on the project:

    • roles/serviceusage.serviceUsageAdmin
    • roles/cloudkms.admin
    • roles/apihub.provisioningAdmin
    • roles/resourcemanager.projectIamAdmin

    Check for the roles

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the project.
    3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

    4. For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.

    Grant the roles

    1. In the Google Cloud console, go to the IAM page.

      进入 IAM
    2. 选择项目。
    3. 点击 授予访问权限
    4. 新的主账号字段中,输入您的用户标识符。 这通常是 Google 账号的电子邮件地址。

    5. 选择角色列表中,选择一个角色。
    6. 如需授予其他角色,请点击 添加其他角色,然后添加其他各个角色。
    7. 点击 Save(保存)。

    步骤摘要

    预配步骤如下:

    1. 第 1 步:启用 API。您必须启用一组 Google Cloud API,才能运行 Apigee API Hub。
    2. 第 2 步:创建 Apigee API Hub 服务身份。借助服务身份,API Hub 实例可以调用执行其操作所需的 Google Cloud API。
    3. 第 3 步:配置加密。您可以选择是使用 Google-owned and Google-managed encryption key (GMEK) 还是客户管理的加密密钥 (CMEK) 方法对静态 API 数据进行加密和解密。请参阅 CMEK 与 Google 自有 and Google-owned and Google-managed encryption keys的比较
    4. 第 4 步:创建 API Hub 实例。最后,您必须注册宿主项目并创建 API Hub 实例。

    预配步骤

    确保您已满足准备工作中所述的前提条件。

    第 1 步:启用 API

    如需预配 API Hub,您必须在 Google Cloud 项目中启用以下 API:

    1. 通过执行以下 services enable 命令启用所需的 Google Cloud API:

      gcloud services enable apihub.googleapis.com \
          cloudkms.googleapis.com --project=YOUR_PROJECT_ID

      其中,YOUR_PROJECT_ID 是您在准备工作中创建的 Cloud 项目 ID。

    第 2 步:创建 Apigee API Hub 服务身份

    借助服务身份,API Hub 实例可以调用执行其操作所需的 Google Cloud API。

    1. 创建服务身份:

      gcloud beta services identity create --service=apihub.googleapis.com \
        --project=YOUR_PROJECT_ID

      其中 YOUR_PROJECT_ID 是您在准备工作中创建的 Cloud 项目 ID。

    2. 验证代理已成功创建。响应包含代理的名称,格式为:service-PROJECT_NUMBER@gcp-sa-apihub.iam.gserviceaccount.com。例如:

      Service identity created: service-1234567890@gcp-sa-apihub.iam.gserviceaccount.com

      请注意,您需要在后续步骤中使用此服务身份。

    第 3 步:配置加密

    在此步骤中,您将配置 API Hub 实例中数据加密的管理方式。您可以使用 Google-owned and Google-managed encryption key (GMEK),也可以创建自己的客户管理的加密密钥 (CMEK)。请参阅 CMEK 与 Google 自有 and Google-owned and Google-managed encryption keys的比较

    CMEK 步骤

    如果您想使用 CMEK 对数据进行加密,请按以下步骤操作:

    1. 创建运行时数据库加密密钥环和密钥。您可以根据需要使用现有的 CMEK 密钥和密钥环。请注意,密钥必须在您计划创建 API 中心实例的位置创建。

      1. 创建新的密钥环:

        密钥环的名称在您的组织中必须是唯一的。如果您创建第二个或后续区域,则名称不能与任何其他密钥环名称相同。

        gcloud kms keyrings create KEY_RING_NAME \
          --location KEY_RING_LOCATION --project YOUR_PROJECT_ID

        其中:

        • KEY_RING_NAME:要创建的密钥环的名称。
        • KEY_RING_LOCATION:密钥环的物理位置。此位置必须与您计划在后续步骤中为 API Hub 实例使用的区域相同。您必须使用以下某个受支持的位置:

          区域说明 区域名称
          艾奥瓦 us-central1
          北弗吉尼亚 us-east4
          俄勒冈 us-west1
          比利时 europe-west1
          伦敦 europe-west2
          新加坡 asia-southeast1
          孟买 asia-south1
          圣保罗 southamerica-east1
          悉尼 australia-southeast1

        • YOUR_PROJECT_ID:您在准备工作中创建的 Cloud 项目 ID。
      2. 创建加密密钥并将其添加到密钥环中:

        gcloud kms keys create KEY_NAME \
          --keyring KEY_RING_NAME \
          --location KEY_LOCATION \
          --purpose "encryption" \
          --project YOUR_PROJECT_ID

        其中:

        • KEY_NAME:您要创建的数据库密钥的名称。
        • KEY_RING_NAME:您刚刚创建的密钥环的名称。
        • KEY_LOCATION:密钥的物理位置。使用您创建密钥环时所用的同一位置。

      3. 获取密钥 ID:
        gcloud kms keys list \
          --location=KEY_LOCATION \
          --keyring=KEY_RING_NAME \
          --project=YOUR_PROJECT_ID

        密钥 ID 的语法如下所示(类似于文件路径)。保留此密钥 ID,因为您需要在后续步骤中使用它:

        projects/YOUR_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
      4. 向 Apigee Service Agent 授予访问权限以使用新的密钥:

        gcloud kms keys add-iam-policy-binding KEY_NAME \
          --location KEY_LOCATION \
          --keyring KEY_RING_NAME \
          --member serviceAccount:SERVICE_ACCOUNT \
          --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
          --project YOUR_PROJECT_ID

        其中:SERVICE_ACCOUNT 是您在第 2 步中创建的服务账号的 ID。该 ID 类似于 service-1234567890@gcp-sa-apihub.iam.gserviceaccount.com

        此命令将密钥绑定到 Apigee API Hub Service Agent。

        成功完成此请求后,gcloud 的响应将如下所示:

        Updated IAM policy for key [runtime].
        bindings:
        - members:
          - serviceAccount:service-1234567890@gcp-sa-apihub.iam.gserviceaccount.com
          role: roles/cloudkms.cryptoKeyEncrypterDecrypter
        etag: BwWqgEuCuwk=
        version: 1

        如果出现如下错误:

        INVALID_ARGUMENT: Role roles/cloudkms.cryptokms.cryptoKeyEncrypterDecrypter is not supported for this resource.

        请务必使用项目编号,而不是服务账号电子邮件地址中的项目名称。

    GMEK 步骤

    如果您想使用 GMEK 进行数据加密,请立即前往下一步:第 4 步:创建 API Hub 实例。 无需进行其他密钥配置。

    第 4 步:创建 API Hub 实例

    宿主项目是您将在其中预配 Apigee API Hub 的 Google Cloud 项目。您只能为每个宿主项目预配一个 API Hub 实例。

    1. 注册宿主项目:
      curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" -d '{
        "gcpProject": "projects/YOUR_PROJECT_ID"
        }' https://apihub.googleapis.com/v1/projects/YOUR_PROJECT_ID/locations/PROJECT_LOCATION/hostProjectRegistrations?host_project_registration_id=HOST_ID

      其中:

      • YOUR_PROJECT_ID:您在准备工作中创建的 Cloud 项目 ID。
      • PROJECT_LOCATION:您要托管 Apigee API Hub 实例的物理位置(区域)。您必须使用创建 CMEK 密钥和密钥环时所用的同一位置。支持的区域包括:

        区域说明 区域名称
        艾奥瓦 us-central1
        北弗吉尼亚 us-east4
        俄勒冈 us-west1
        比利时 europe-west1
        伦敦 europe-west2
        新加坡 asia-southeast1
        孟买 asia-south1
        圣保罗 southamerica-east1
        悉尼 australia-southeast1

      • HOST_ID:宿主项目的名称。
    2. 创建 API Hub 实例:

      使用 CMEK

      如果您使用 CMEK 对数据进行加密,请执行以下命令:

      curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" -H "X-Google-GFE-Can-Retry: yes" -d '{
        "config":{
          "cmekKeyName":"KEY_NAME",
          "vertexLocation":"VERTEX_LOCATION",
          "encryptionType":"CMEK"
          }
        }' https://apihub.googleapis.com/v1/projects/YOUR_PROJECT_ID/locations/PROJECT_LOCATION/apiHubInstances?api_hub_instance_id=INSTANCE_ID

      其中:

      • KEY_NAME(必需):CMEK 密钥的完全限定名称。此名称是在创建密钥时返回的。例如:projects/YOUR_PROJECT_ID/locations/HOST_LOCATION/hostProjectRegistrations/HOST_ID
      • VERTEX_LOCATION(可选):指定用于存储基于 Vertex AI 的搜索数据(与 API Hub 的语义搜索功能相关联的数据)的多区域位置。 您可以为此值使用 useu。如果您不想使用这两个多区域,可以通过省略此参数来停用语义搜索。
      • encryptionType(必需)您必须使用 CMEK
      • YOUR_PROJECT_ID 是您在准备工作中创建的 Cloud 项目 ID。
      • PROJECT_LOCATION:您必须使用注册宿主项目时所用的同一位置。
      • INSTANCE_ID:API Hub 实例的名称。 此值应为 4-40 个字符,有效字符为 /[a-z][A-Z][0-9]-_/

      使用 GMEK

      如果您使用 GMEK 进行数据加密,请执行以下命令:

      curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" -H "X-Google-GFE-Can-Retry: yes" -d '{
        "config":{
          "vertexLocation":"VERTEX_LOCATION",
          "encryptionType":"GMEK"
          }
        }' https://apihub.googleapis.com/v1/projects/YOUR_PROJECT_ID/locations/PROJECT_LOCATION/apiHubInstances?api_hub_instance_id=INSTANCE_ID

      其中:

      • VERTEX_LOCATION(可选):指定用于存储基于 Vertex AI 的搜索数据(与 API Hub 的语义搜索功能相关联的数据)的多区域位置。 您可以为此值使用 useu。如果您不想使用这两个多区域,可以通过省略此参数来停用语义搜索。
      • encryptionType 必须为 GMEK。如果您未提供加密类型,则默认使用 GMEK。
      • YOUR_PROJECT_ID 是您在准备工作中创建的 Cloud 项目 ID。
      • PROJECT_LOCATION:您必须使用注册宿主项目时所用的同一位置。
      • INSTANCE_ID:API Hub 实例的名称。 此值应为 4-40 个字符,有效字符为 /[a-z][A-Z][0-9]-_/
    3. 第 5 步(可选):创建运行时项目附件

      如果您在具有 Apigee 代理的项目中预配了 API Hub,请执行此可选步骤,以便在 API Hub 中自动注册代理。

      curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" -H "X-Google-GFE-Can-Retry: yes" \
        https://apihub.googleapis.com/v1/projects/YOUR_PROJECT_ID/locations/PROJECT_LOCATION/runtimeProjectAttachments?runtimeProjectAttachmentId=YOUR_PROJECT_ID

      其中:

      • YOUR_PROJECT_ID 是您在准备工作中创建的 Cloud 项目 ID。
      • PROJECT_LOCATION:您必须使用注册宿主项目时所用的同一位置。

      后续步骤

      现在您可以开始使用 API Hub: