在 Apigee 环境中部署和管理归档

本页面适用于 ApigeeApigee Hybrid

查看 Apigee Edge 文档。

使用 Apigee in VS Code 开发和测试可编程 API 代理。然后,将 API 代理配置环境的归档部署到 Apigee Integration 测试和生产环境,如以下部分所述。

在 Apigee 环境中启用归档部署

您必须先在 Apigee 环境中启用归档部署,然后才能部署归档。

按照以下部分所述启用归档部署。

Apigee 界面

要在 Apigee 环境中启用归档部署,在创建 Apigee 环境时(不使用预配向导),请在“部署类型”下选择归档

新环境对话框。

Apigee API

要在使用 API 创建环境时启用归档部署,请在请求正文中将 deploymentType 设置为 ARCHIVE

例如:

curl "https://apigee.googleapis.com/v1/organizations/$ORG/environments" \
   -X POST \
   -H "Authorization: Bearer $TOKEN" \
   -H "Content-type: application/json" \
   -d
   '{
      "name": "integration-test",
      "description": "Integration test environment",
      "displayName" : "Integration test",
      "deploymentType" : "ARCHIVE"
   }'

按照获取 OAuth 2.0 访问令牌中的说明,将 $TOKEN 设置为您的 OAuth 2.0 访问令牌。如需了解此示例中使用的 curl 选项,请参阅使用 curl。如需了解所使用的环境变量,请参阅为 Apigee API 请求设置环境变量

以下提供了一个响应示例:

{
  "name": "organizations/$ORG/operations/11b1ad1c-2371-473d-bcd4-f621f8d98ef7",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
    "operationType": "INSERT",
    "targetResourceName": "organizations/$ORG/environments/integration-test",
    "state": "IN_PROGRESS"
  }
}

您可以查看操作的状态。例如:

curl https://apigee.googleapis.com/v1/organizations/$ORG/operations/11b1ad1c-2371-473d-bcd4-f621f8d98ef7 /
   -H "Authorization: Bearer $TOKEN"

以下提供了一个响应示例。请注意,操作的状态为 FINISHED,环境状态设置为 ACTIVE

{
  "name": "organizations/$ORG/operations/11b1ad1c-2371-473d-bcd4-f621f8d98ef7",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
    "operationType": "INSERT",
    "targetResourceName": "organizations/$ORG/environments/integration-test",
    "state": "FINISHED"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.apigee.v1.Environment",
    "name": "integration-test",
    "description": "Integration test environment",
    "createdAt": "1615553880084",
    "lastModifiedAt": "1615553881911",
    "displayName": "Integration test",
    "state": "ACTIVE",
    "deploymentType": "ARCHIVE"
  }
}

如需详细了解 API,请参阅创建环境 API

将归档部署到 Apigee 环境

要将归档部署到 Apigee 环境,请使用以下 gcloud 命令:

gcloud beta apigee archives deploy \
    --environment=$ENV \
    [--organization=$ORG] \
    [--source=$SOURCE] \
    [--labels $KEY=$VALUE[,$KEY2=$VALUE2,$KEY3=$VALUE3,...]]

您必须使用 --environment 标志指定要在其中部署归档的 Apigee 环境。该 Apigee 环境必须启用归档部署。 如需了解详情,请参阅 gcloud beta apigee 归档部署

默认情况下,归档的部署路径如下:

  • 部署到为 gcloud 配置的当前活动项目关联的组织。

    如需查看当前的 gcloud 配置,请运行 gcloud config list。 如需指定组织,请使用 --organization 标志。

  • 从当前工作目录部署。
    如果归档的 src/main/apigee 根目录不在当前工作目录,请使用 --source 标志指定归档的根目录。另请参阅了解 Apigee 工作区的结构

(可选)您可以使用 --labels 标志为一个归档部署添加最多 64 个自定义标签键值对。例如,您可能需要为归档添加版本号标签。当您列出归档部署时,这些标签会显示。键值对必须遵循以下准则:

  • 长度不超过 63 个字符
  • 大小不超过 128 个字节。
  • UTF-8 编码
  • 符合以下与 Perl 兼容的正则表达式 (PCRE): [\p{Ll}\p{Lo}][\p{Ll}\p{Lo}\p{N}_-]{0,62}

部署到 Apigee on Google Cloud, 时,gcloud 命令在后台执行以下步骤:

  1. 创建 src/main/apigee Apigee 工作区目录的 ZIP 文件。如需了解详情,请参阅了解 Apigee 工作区的结构
  2. 按如下所示将归档部署到 Apigee on Google Cloud:
    1. 使用 generateUploadUrl API 在与当前 Apigee 组织关联的项目中为 Google Cloud Storage 存储桶生成签名网址。
    2. 使用该签名网址将归档 ZIP 文件上传到 Cloud Storage 存储分区。
    3. 将 Cloud Storage 存储分区中当前暂存的归档文件部署到 Apigee on Google Cloud。 使用 Archive Deployments API

示例请求

以下示例在当前目录中创建 src/main/apigee 的 ZIP 归档文件,并将其部署到指定的 Apigee 环境:

gcloud beta apigee archives deploy --environment=$ENV

以下示例展示了如何指定不与为 gcloud 配置的当前活动项目关联的组织:

gcloud beta apigee archives deploy --environment=$ENV --organization=$ORG

以下示例在 myarchive 下创建 src/main/apigee 目录的 ZIP 归档文件,并将其部署到指定的 Apigee 环境:

gcloud beta apigee archives deploy --environment=$ENV --source=/myarchive

以下示例向归档部署添加 statusbuild_id 标签:

gcloud beta apigee archives deploy --environment=$ENV --labels=status=released,build=210315

示例响应

以下提供了一个响应示例:

Using Apigee organization 'myorg'
Waiting for operation [b64c2665-b5ac-43cc-9e2d-232e8895c2ed] to complete...done.

检查归档部署状态

要检查归档部署状态,请使用 gcloud alpha apigee operations 命令。

以下示例展示了修订版本 ID 为 439fa3f7-6aa4-42ad-8b12-3ca912c75d5c 的操作的归档部署状态是 IN_PROGRESS

gcloud alpha apigee operations describe b64c2665-b5ac-43cc-9e2d-232e8895c2ed

以下提供了一个响应示例。请注意,state 设置为 IN_PROGRESS

Using Apigee organization 'myorg'
done: true
metadata:
  '@type': type.googleapis.com/google.cloud.apigee.v1.OperationMetadata
  operationType: INSERT
  state: IN_PROGRESS
  targetResourceName: uri
name: organizations/myorg/operations/b64c2665-b5ac-43cc-9e2d-232e8895c2ed
organization: myorg
response:
  '@type': type.googleapis.com/google.cloud.apigee.v1.CanaryEvaluation
  control: 1-5-0-20210319-071117-ghq74
  endTime: '2021-03-20T06:15:44.329363950Z'
  metricLabels:
    env: test
    location: us-central1
  name: uri
  startTime: '2021-03-20T06:14:44.306534584Z'
  treatment: 1-5-0-20210319-190954-if0wk
  verdict: NONE
uuid: b64c2665-b5ac-43cc-9e2d-232e8895c2ed

操作完成后,state 会设置为 FINISHED

列出环境中的所有归档部署

按以下部分所述列出环境中的所有归档部署。

gcloud

要列出 Apigee on Google Cloud 中的所有归档部署,请使用以下 gcloud 命令:

gcloud beta apigee archives list --environment=$ENV

您必须使用 --environment 标志指定要查看其归档部署的 Apigee 环境。该 Apigee 环境必须正在查看归档部署的详细信息。 如需了解详情,请参阅 gcloud beta apigee 归档列表

以下提供了一个响应示例:

Using Apigee organization 'myorg'
ARCHIVE ID                        ENVIRONMENT   DEPLOYED AT           LABELS                         OPERATION STATUS
pzfbs8uidbdv224joz                myorg         2021-03-10 11:21:29   status=released,build=210315   Deployed
fb4r8log2gm63r3gtu                myorg         2021-03-05 13:40:30
vrytwbhso558oil53m                myorg         2021-03-03 21:20:53

Apigee API

要列出环境中的归档部署,请向以下 API 发出 GET 请求:https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/archiveDeployments

例如:

curl "https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/archiveDeployments" \
  -H "Authorization: Bearer $TOKEN"

按照获取 OAuth 2.0 访问令牌中的说明,将 $TOKEN 设置为您的 OAuth 2.0 访问令牌。如需了解此示例中使用的 curl 选项,请参阅使用 curl。如需了解所使用的环境变量,请参阅为 Apigee API 请求设置环境变量

以下提供了一个响应示例:

{
  "archiveDeployments": [
    {
      "name": "organizations/myorg/environments/integration-test/archiveDeployments/pzfbs8uidbdv224joz",
      "labels": {
        "status": "released",
        "build": "210315"
      },
      "createdAt": "1615821232451727",
      "updatedAt": "1615821232451727",
      "operation": "organizations/apigee-docs-c/operations/b64c2665-b5ac-43cc-9e2d-232e8895c2ed"
    },
    {
      "name": "organizations/myorg/environments/integration-test/archiveDeployments/fb4r8log2gm63r3gtu",
      "createdAt": "1615819281858447",
      "updatedAt": "1615819281858447",
      "operation": "organizations/apigee-docs-c/operations/71549b9c-4493-41b6-9838-c0ad5b1b3181"
    },
    {
      "name": "organizations/myorg/environments/integration-test/archiveDeployments/vrytwbhso558oil53m",
      "createdAt": "1615578337832207",
      "updatedAt": "1615578337832207",
      "operation": "organizations/apigee-docs-c/operations/a2eb50b5-f276-4de4-96a3-72fac3d4c05e"
    }
  ]
}

查看归档部署的详细信息

按照以下部分中的说明查看归档部署的详细信息。

gcloud

要查看 Apigee on Google Cloud 中的归档部署的详细信息,请使用以下 gcloud 命令:

gcloud beta apigee archives describe $ID --environment=$ENV

您必须指定以下各项:

  • 归档部署修订版本的 ID。
  • 使用 --environment 标志指定要查看其归档部署的 Apigee 环境。该 Apigee 环境必须启用归档部署

如需了解详情,请参阅 gcloud beta apigee 归档说明

例如:

gcloud apigee archives describe pzfbs8uidbdv224joz --environment=$ENV

以下提供了一个响应示例:

Using Apigee organization 'myorg'
createdAt: '1615578337832207'
labels:
  status: 'released'
  build: '210315'
name: organizations/myorg/environments/$ENV/archiveDeployments/pzfbs8uidbdv224joz
operation: organizations/myorg/operations/b64c2665-b5ac-43cc-9e2d-232e8895c2ed
operationStatus: Deployed
updatedAt: '1615821232451727'

Apigee API

要查看归档部署的详细信息,请向以下 API 发出 GET 请求:https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/archiveDeployments/$ID

您必须传递归档部署修订版本的 ID。如需查看某个 Apigee 环境的归档部署修订版本 ID 的列表,请参阅列出环境中的所有归档部署

例如:

curl "https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/archiveDeployments/pzfbs8uidbdv224joz" \
  -X GET \
  -H "Authorization: Bearer $TOKEN"

按照获取 OAuth 2.0 访问令牌中的说明,将 $TOKEN 设置为您的 OAuth 2.0 访问令牌。如需了解此示例中使用的 curl 选项,请参阅使用 curl。如需了解所使用的环境变量,请参阅为 Apigee API 请求设置环境变量

以下提供了一个响应示例:

{
  "name": "organizations/myorg/environments/integration-test/archiveDeployments/pzfbs8uidbdv224joz",
  "labels": {
     "status": "released",
     "build": "210315"
  },
  "createdAt": "1615578337832207",
  "updatedAt": "1615821232451727",
  "operation": "organizations/apigee-docs-c/operations/b64c2665-b5ac-43cc-9e2d-232e8895c2ed"
}

更新归档部署的标签

按照以下部分中的说明更新归档部署的标签。

gcloud

要更新 Apigee on Google Cloud 中的归档部署的标签,请使用以下 gcloud 命令:

gcloud beta apigee archives update [$ID] --environment=$ENV
  [--update-labels=$KEY=$VALUE[,$KEY2=$VALUE2...$KEYn=$VALUEn]],
  [--clear-labels | --remove-labels=$KEY[,$KEY2...$KEYn]]

您必须指定以下各项:

  • 归档部署修订版本的 ID
  • 使用 --environment 标志指定要查看其归档部署的 Apigee 环境。该 Apigee 环境必须启用归档部署
  • 以下一个或多个标志:
    标志 说明
    --clear-labels 移除所有标签。 如果还指定了 --update-labels,则首先应用 --clear-labels

    如果指定了 --remove-labels,则无法指定此标签。

    --remove-labels 移除指定的标签。如果还指定了 --update-labels,则首先应用它。

    如果指定了 --clear-labels,则无法指定此标签。

    --update-labels 更新标签。如果标签存在,则修改其值,否则创建新标签。如果与 --remove-labels--clear-labels 标志结合使用,则先移除一部分或所有标签,然后更新标签。

如需了解详情,请参阅 gcloud beta apigee 归档更新

例如:

gcloud apigee archives update pzfbs8uidbdv224joz --environment=$ENV \
  --clear-labels --update-labels=status=released,build=210315,tier=1

以下提供了一个响应示例:

Using Apigee organization `myorg`
createdAt: 2020-04-04T04:04:04.004Z
labels:
  status: released,
  build: 210315,
  tier: 1
name: organizations/apigee-docs-c/environments/dev/archiveDeployments/pzfbs8uidbdv224joz
operation: organizations/apigee-docs-c/operations/bf587121-8b5c-4897-9d8f-9b1ef0cb06ca
updatedAt: '1633450432067431'

Apigee API

要更新 Apigee on Google Cloud 中的归档部署的标签,请向以下 API 发出 PATCH 请求:https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/archiveDeployments/$ID

您必须传递归档部署修订版本的 ID。如需查看某个 Apigee 环境的归档部署修订版本 ID 的列表,请参阅列出环境中的所有归档部署

在请求正文中传递要添加到归档的所有标签。传递的标签会覆盖当前标签,因此您可以通过在请求正文中省略某些标签来移除这些标签,也可以通过传递空列表来移除所有标签。

例如:

curl "https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/archiveDeployments/$ID" \
  -X PATCH \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
    "labels": {
      "status" : "released",
      "build" : "210315"
    }
  }'

按照获取 OAuth 2.0 访问令牌中的说明,将 $TOKEN 设置为您的 OAuth 2.0 访问令牌。如需了解此示例中使用的 curl 选项,请参阅使用 curl。如需了解所使用的环境变量,请参阅为 Apigee API 请求设置环境变量

以下提供了一个响应示例:

{
  "name": "organizations/myorg/environments/integration-test/archiveDeployments/pzfbs8uidbdv224joz",
  "labels": {
     "status": "released",
     "build": "210315"
  },
  "createdAt": "1615578337832207",
  "updatedAt": "1615821232451727",
  "operation": "organizations/apigee-docs-c/operations/b64c2665-b5ac-43cc-9e2d-232e8895c2ed"
}

删除包含归档部署的 Apigee 环境

要删除包含归档部署 Apigee 环境,请执行以下操作:

  1. 在临时文件夹中创建以下目录结构,其中 $ENV 与要删除的环境名称匹配。例如:
    mkdir -p /$TEMP/archive/src/main/apigee/environments/$ENV
  2. deployments.json 文件添加到该目录。例如:
    touch /$TEMP/archive/src/main/apigee/environments/$ENV/deployments.json
  3. 更新 deployments.json 以添加一个空的 proxies 数组,如下所示。
    {
    "proxies" : []
    }
  4. 切换目录 (cd) 至 $TEMP/archive 文件夹。
    cd $TEMP/archive

    如果您

  5. 将归档部署到要删除的 Apigee 环境。
    gcloud beta apigee archives deploy --environment=$ENV
    
  6. 删除 Apigee 环境

删除归档部署修订版本

删除归档部署修订版本,如以下部分所述。

gcloud

如需删除 Apigee on Google Cloud 中的归档部署修订版本,请使用以下 gcloud 命令:

gcloud apigee archives delete $ID --environment=$ENV

您必须指定以下各项:

  • 您要删除的修订版本的 ID。
  • 使用 --environment 标志指定要查看其归档部署的 Apigee 环境。该 Apigee 环境必须启用归档部署

例如:

gcloud apigee archives delete fb4r8log2gm63r3gtu --environment=dev

以下提供了一个响应示例:

Archive deployment revision "fb4r8log2gm63r3gtu" deleted

Apigee API

如需删除 Apigee on Google Cloud 中的归档部署修订版本,请向以下 API 发出 DELETE 请求:https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/archiveDeployments/$ID

您必须传递要删除的归档部署修订版本的 ID。如需查看某个环境的归档部署修订版本 ID 的列表,请参阅列出环境中的所有归档部署

例如:

curl "https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/archiveDeployments/$ID" \
  -X DELETE \
  -H "Authorization: Bearer $TOKEN" \

按照获取 OAuth 2.0 访问令牌中的说明,将 $TOKEN 设置为您的 OAuth 2.0 访问令牌。如需了解此示例中使用的 curl 选项,请参阅使用 curl。如需了解所使用的环境变量,请参阅为 Apigee API 请求设置环境变量

以下提供了一个响应示例:

{}