在 Apigee 環境中部署及管理封存檔案

本頁適用於 ApigeeApigee Hybrid

查看 Apigee Edge 說明文件。

在 VS Code 中使用 Apigee 開發及測試可程式化 API Proxy。接著,請將 API Proxy 設定環境的封存檔部署至 Apigee 整合測試和實際工作環境,如以下各節所述。

在 Apigee 環境中啟用封存檔案部署功能

您必須先在 Apigee 環境中啟用封存檔案部署功能,才能部署封存檔案。

按照下列各節的說明啟用封存檔案部署作業。

傳統版 Apigee UI

如要在 Apigee 環境中啟用封存檔案部署功能,請在建立 Apigee 環境 (不在佈建精靈外) 時,選取「Deployment type」(部署類型) 下方的「Archive」(封存檔案)。

「New Environment」對話方塊。

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"
   }'

其中 $TOKEN 會設為您的 OAuth 2.0 存取權憑證,如取得 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,請參閱 Create environments 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 archives deploy

根據預設,封存檔會部署至:

  • 與目前為 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}

在 Google Cloud 上部署至 Apigee 時,gcloud 指令會在幕後執行下列步驟:

  1. 建立 src/main/apigee Apigee 工作區目錄的 ZIP 檔案。詳情請參閱「瞭解 Apigee 工作區的結構」。
  2. 將封存檔部署至 Google Cloud 上的 Apigee,如下所示:
    1. 使用 generateUploadUrl API,為與目前 Apigee 組織相關聯的專案中 Google Cloud Storage 儲存桶產生已簽署網址。
    2. 使用已簽署的網址,將封存檔案的 ZIP 檔案上傳至 Cloud Storage 值區。
    3. 將目前在 Cloud Storage 值區中排程的封存檔,部署至 Google Cloud 上的 Apigee。使用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

以下範例會建立 myarchivesrc/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

如要列出 Google Cloud 上 Apigee 中的所有封存部署作業,請使用下列 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"

其中 $TOKEN 會設為您的 OAuth 2.0 存取權憑證,如取得 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

如要查看 Google Cloud 上 Apigee 中的封存部署作業詳細資料,請使用下列 gcloud 指令:

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

您必須指定下列項目:

詳情請參閱 gcloud beta apigee archives describe

例如:

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"

其中 $TOKEN 會設為您的 OAuth 2.0 存取權憑證,如取得 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

如要更新 Google Cloud 上 Apigee 封存部署作業的標籤,請使用下列 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,系統會優先套用 --update-labels

    如果已指定 --clear-labels,則無法指定這個選項。

    --update-labels 更新標籤。如果標籤已存在,系統會修改其值;否則會建立新標籤。搭配使用 --remove-labels--clear-labels 旗標,分別移除子集或所有標籤,再更新標籤。

詳情請參閱 gcloud beta apigee archives update

例如:

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

如要更新 Google Cloud 上 Apigee 封存部署作業的標籤,請向下列 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"
    }
  }'

其中 $TOKEN 會設為您的 OAuth 2.0 存取權憑證,如取得 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

如要刪除 Google Cloud 上 Apigee 中封存部署的修訂版本,請使用下列 gcloud 指令:

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

您必須指定下列項目:

例如:

gcloud apigee archives delete fb4r8log2gm63r3gtu --environment=dev

以下提供回應範例:

Archive deployment revision "fb4r8log2gm63r3gtu" deleted

Apigee API

如要刪除 Google Cloud 上 Apigee 中封存部署的修訂版本,請向下列 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" \

其中 $TOKEN 會設為您的 OAuth 2.0 存取權憑證,如取得 OAuth 2.0 存取權憑證一節所述。如要瞭解本範例中使用的 curl 選項,請參閱「使用 curl」。如要瞭解所使用的環境變數,請參閱「為 Apigee API 要求設定環境變數」。

以下提供回應範例:

{}