設定及取得資料

本頁面說明如何使用 Runtime Configurator 來設定、取得和更新變數。變數是 RuntimeConfig 資源中的鍵/值組合,每個鍵/值組合都包含您定義的資料。建立變數之後,您可以為變數設定監看程式等候程序

如要進一步瞭解變數及執行階段配置器服務,請參閱執行階段配置器基礎知識說明文件。

如要瞭解如何建立 RuntimeConfig 資源,請參閱建立和刪除 RuntimeConfig 資源一文。

事前準備

建立變數

變數是鍵/值組合。變數鍵可以是平面式或階層式。舉例來說,以下項目皆為有效鍵:

  • status
  • users/jane-smith/favorite-color
  • users/total

只有分葉節點可以含有值。在上述範例中,您無法指派值給:

  • users
  • users/jane-smith

因為這兩個鍵均包含其下方的其他鍵。

如要建立變數,請使用 Deployment Manager、Google Cloud CLI 或 API。

Deployment Manager

如要在 Deployment Manager 中建立變數,請指定變數類型:

runtimeconfig.v1beta1.variable

在變數的屬性中,提供變數的 namelocationvalue

- name: [NAME]
  type: runtimeconfig.v1beta1.variable
  properties:
    parent: $(ref.[CONFIG_NAME].name)
    variable: [VARIABLE_KEY]
    [value | text]: [VARIABLE_VALUE]

其中:

  • [NAME] 是變數的資源名稱 (由系統任意決定),並非變數本身的名稱。
  • [CONFIG_NAME] 是這項要求的 Config 資源。
  • [VARIABLE_KEY] 是變數的鍵。舉例來說,statususers/jane-smith/favorite_color 是有效鍵。變數鍵可以包含 /。數字、字母、破折號和斜線,名稱長度上限為 256 個字元。
  • [VARIABLE_VALUE] 是變數的值,視您要將值指定為明文字串或是採用 Based64 編碼的字串而定,請選擇 valuetext 屬性:
    • value:如果提供的值為採用 Base64 編碼的字串,請使用 value 屬性。
    • text:如果提供的值為明文字串,請使用 text 屬性。字串必須為有效的 UTF-8。

gcloud

如要透過 Google Cloud CLI 建立變數,請使用 runtime-config configs variables set 指令:

gcloud beta runtime-config configs variables set [VARIABLE_KEY] \
    [VARIABLE_VALUE] --config-name [CONFIG_NAME] [--is-text]

其中:

  • [VARIABLE_KEY] 是變數的鍵,舉例來說,statususers/jane-smith/favorite_color 是有效鍵。變數鍵可以包含 /。數字、字母、破折號和斜線,名稱長度上限為 256 個字元。
  • [VARIABLE_VALUE] 是變數的值。您可以將值指定為明文字串或是採用 Based64 編碼的字串。如要將值指定為明文,請提供 --is-text 旗標,否則 Google Cloud CLI 會採用 Based64 編碼方法來編碼值。

    gcloud beta runtime-config configs variables set [VARIABLE_KEY] \
          [VARIABLE_VALUE] --config-name [CONFIG_NAME] --is-text
    

    您也可以從檔案提供變數值,例如:

    cat [FILE_NAME] | gcloud beta runtime-config configs variables set [VARIABLE_KEY] --config-name [CONFIG_NAME]
    

    注意事項:您不須編碼這個值,因為 gcloud 會為您執行編碼作業。

  • [CONFIG_NAME] 是 RuntimeConfig 資源的名稱,您應在此資源中建立變數,例如:frontend-config

    例如:

    gcloud beta runtime-config configs variables set example-variable \
          my-test-value --config-name example-config
    

    gcloud CLI 會傳回類似下方的回應:

Created [https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_KEY]].

根據預設,系統將覆寫任何現有變數,且不顯示任何訊息。如要保留現有變數,請加入 --fail-if-present 旗標,這樣就會建立原本不存在的新變數。

同樣地,您也可提供 --fail-if-absent 旗標,讓沒有變數的要求失敗。

如需這個 gcloud 指令的完整參考資料,請參閱 runtime-config variables set 參考說明文件。

API

在 REST API 中,針對以下 URI 發出 POST 要求即可建立新變數:

https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables

其中 [PROJECT_ID] 是要求的專案 ID。此要求酬載包含 RuntimeConfig 資源的 URI,以及鍵的明文值或是採用 Based64 編碼的值:

{
   "name": "projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_KEY]"
   "[value | text]": "[VARIABLE_VALUE]" # Choose either 'value' or 'text' but not both
}

其中:

  • [PROJECT_ID] 是這項要求的專案 ID。
  • [CONFIG_NAME] 是設定的名稱。
  • [VARIABLE_KEY] 是變數的鍵,例如 statususers/jane-smith/favorite_color。變數鍵可以包含 /。數字、字母、破折號和斜線,名稱長度上限為 256 個字元。
  • [VARIABLE_VALUE] 是變數的值,視您要將值指定為明文字串或是採用 Based64 編碼的字串而定,請選擇 valuetext 屬性:

    • value:如果提供的值為採用 Base64 編碼的字串,請使用 value 屬性。
    • text:如果提供的值為明文字串,請使用 text 屬性。字串必須為有效的 UTF-8。

    如果成功,API 會傳回類似下方的回應:

    {
    "name": "projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_KEY]",
    "value": "dGVhbA==",
    "updateTime": "2016-04-11T21:49:00.773366134Z"
    }

    如要進一步瞭解此方法,請參閱 variables().create 說明文件。

更新變數

Deployment Manager

更新 Deployment Manager 變數的步驟如下:

  1. 按照建立變數一文所述來定義或更新變數屬性。

  2. 按照提出更新要求一文中的步驟操作。

gcloud

使用與建立變數一文中所述的相同程序來更新變數。

API

在 REST API 中,針對以下 URI 提出 PUT 要求即可更新變數:

https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_KEY]

其中:

  • [PROJECT_ID] 是這項要求的專案 ID。
  • [CONFIG_NAME] 是設定的名稱。
  • [VARIABLE_VALUE] 是變數的值,屬於採用 Base64 編碼的字串。

這個要求的酬載必須如下:

{
   "[value | text]": "[VARIABLE_VALUE]" # Choose either 'value' or 'text' but not both
}

在上面的指令中,[VARIABLE_VALUE] 是變數的值。視您要將值指定為明文字串或是採用 Based64 編碼的字串而定,請選擇 valuetext 屬性:

  • value:如果提供的值為採用 Base64 編碼的字串,請使用 value 屬性。
  • text:如果提供的值為明文字串,請使用 text 屬性。字串必須為有效的 UTF-8。

如果成功,API 會傳回類似下方的回應:

{
  "name": "projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_KEY]",
  "value": "dGVhbA==",
  "updateTime": "2016-04-11T21:46:11.591713370Z",
  "state": "UPDATED"
}

如要進一步瞭解此方法,請參閱 variables().create 說明文件。

取得變數的值

Deployment Manager

您可以使用以下其中一種方法取得變數的值:

gcloud

如要透過 Google Cloud CLI 建立變數,請使用 runtime-config configs variables get-value 指令:

gcloud beta runtime-config configs variables get-value [VARIABLE_KEY] --config-name [CONFIG_NAME]

其中:

  • [VARIABLE_KEY] 是變數的鍵,例如:statususers/jane-smith/favorite_color
  • [CONFIG_NAME] 是變數的 RuntimeConfig 資源名稱,例如:website

    gcloud CLI 會傳回類似下方的回應:

    example-value

您也可以使用 list 指令並加上 --values 旗標,取得您擁有 runtimeconfig.variables.get 權限的變數清單及變數的值。例如:

gcloud beta runtime-config configs variables list --config-name example-config --values

gcloud CLI 會傳回類似下方的清單:

NAME                         UPDATE_TIME                     VALUE
not-my-favorite-color/shade  2016-04-18T21:14:59.932428461Z  orange
not-my-favorite-food/group   2016-04-18T21:14:59.932428461Z  vegetables

清單會省略您沒有 get 權限的任何變數,包括您擁有 list 權限但沒有 get 權限的變數。

如需這個 gcloud 指令的完整參考資料,請參閱 runtime-config variables 參考說明文件。

API

在 REST API 中,針對以下 URI 提出 GET 要求即可取得變數的值:

https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_KEY]

其中:

  • [PROJECT_ID] 是這項要求的專案 ID。
  • [CONFIG_NAME] 是設定的名稱。
  • [VARIABLE_KEY] 是要求的名稱。

如果成功,API 會傳回採用 Base64 編碼的變數值:

{
  "name": "projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_KEY]",
  "value": "[VARIABLE_VALUE]",
  "updateTime": "2016-04-11T21:49:00.773366134Z"
}

您必須自行將值解碼以取得字串。如要進一步瞭解這個方法,請參閱 variables().get 說明文件。

如要取得您擁有 runtimeconfig.variables.get 權限的變數清單及變數的值,請使用 returnValues 方法。例如:

GET uri: https://runtimeconfig.googleapis.com/v1beta1/projects/myproject/configs/example-config/variables?returnValues=True

API 會傳回您擁有權限的所有變數:

{
  "variables": [
    {
      "name": "projects/compute-writers-project/configs/example-config/variables/not-my-favorite-color/shade",
      "updateTime": "2016-04-18T21:14:59.932428461Z",
      "value": "b3Jhbmdl"
    }
  ]
}

同樣地,您必須自行將值解碼以取得字串。

如要進一步瞭解這個方法,請參閱 variables().list 說明文件。

後續步驟