在中建立組態設定描述檔 AWS AppConfig - AWS AppConfig

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在中建立組態設定描述檔 AWS AppConfig

配置描述檔包括可 AWS AppConfig 在其儲存位置中尋找組態資料的 URI 以及配置類型。 AWS AppConfig 支援兩種類型的組態設定檔:功能旗標和自由格式組態。功能標誌配置將數據存儲在 AWS AppConfig 託管配置存儲中,URI 很簡單hosted。自由格式組態可以將資料儲存在裝載的組態存放區、各種系統 AWS AppConfig 管理員功能,或與之整合的服務中儲存資料。 AWS AWS AppConfig如需詳細資訊,請參閱 在中建立任意格式組態設定檔 AWS AppConfig

組態設定檔也可以包含選用的驗證程式,以確保您的組態資料在語法和語義上都是正確的。 AWS AppConfig 當您啟動部署時,會使用驗證程式執行檢查。如果偵測到任何錯誤,部署會在對組態的目標進行任何變更之前停止。

注意

如果可能,我們建議您在託管的組態存放區中 AWS AppConfig 託管您的組態資料,因為它提供了最多的功能和增強功能。

關於驗證器

當您建立組態設定檔時,您可以選擇指定最多兩個驗證程式。驗證器可確保您的組態資料在語法和語義上是正確的。如果您打算使用驗證程式,您必須先建立驗證程式,然後再建立組態設定檔。 AWS AppConfig 支持以下類型的驗證器:

  • AWS Lambda 函數:支援功能旗標和自由格式組態。

  • JSON 結構描述:支援任意格式組態。 (根據 JSON 結構描述AWS AppConfig 自動驗證功能標誌。)

AWS Lambda 函數驗證器

Lambda 函數驗證器必須使用下列事件結構描述來設定。 AWS AppConfig 使用此結構描述來叫用 Lambda 函數。內容是一個 base64 編碼的字串,而 URI 是字串。

{ "applicationId": "The application ID of the configuration profile being validated", "configurationProfileId": "The ID of the configuration profile being validated", "configurationVersion": "The version of the configuration profile being validated", "content": "Base64EncodedByteString", "uri": "The configuration uri" }

AWS AppConfig 驗證 Lambda X-Amz-Function-Error 標頭是否已在回應中設定。如果函數拋出異常,Lambda 設置此報頭。如需有關的詳細資訊X-Amz-Function-Error,請參閱AWS Lambda 開發人員指南 AWS Lambda中的錯誤處理和自動重試

以下是成功驗證的 Lambda 回應程式碼的簡單範例。

import json def handler(event, context): #Add your validation logic here print("We passed!")

以下是驗證失敗的 Lambda 回應程式碼的簡單範例。

def handler(event, context): #Add your validation logic here raise Exception("Failure!")

這是另一個只有在組態參數為質數時才會驗證的例子。

function isPrime(value) { if (value < 2) { return false; } for (i = 2; i < value; i++) { if (value % i === 0) { return false; } } return true; } exports.handler = async function(event, context) { console.log('EVENT: ' + JSON.stringify(event, null, 2)); const input = parseInt(Buffer.from(event.content, 'base64').toString('ascii')); const prime = isPrime(input); console.log('RESULT: ' + input + (prime ? ' is' : ' is not') + ' prime'); if (!prime) { throw input + "is not prime"; } }

AWS AppConfig 呼叫StartDeploymentValidateConfigurationActivity API 作業時,會呼叫您的驗證 Lambda。您必須提供appconfig.amazonaws.com許可才能叫用 Lambda。如需詳細資訊,請參閱授與 AWS 服務的函數存取權限。 AWS AppConfig 將驗證 Lambda 執行時間限制為 15 秒,包括啟動延遲。

結構定義驗證器

如果您在 SSM 文件中建立組態,則必須指定或建立該組態的 JSON 結構描述。JSON 結構描述可定義每個應用程式組態設定的允許屬性。JSON 結構描述的功能就像一組規則,以確保新的或更新後的組態設定符合您應用程式所需的最佳實務。請見此處範例。

{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "$id$", "description": "BasicFeatureToggle-1", "type": "object", "additionalProperties": false, "patternProperties": { "[^\\s]+$": { "type": "boolean" } }, "minProperties": 1 }

當您從 SSM 文件建立組態時,系統會自動驗證組態是否符合結構描述需求。如果不符合, AWS AppConfig 會傳回驗證錯誤。

重要

請注意下列有關 JSON 結構描述驗證程式的重要資訊:

  • 儲存在 SSM 文件中的組態資料必須先對相關的 JSON 結構描述進行驗證,才能將組態新增至系統。SSM 參數不需要驗證方法,但建議您使用建立新的或更新的 SSM 參數組態的驗證檢查。 AWS Lambda

  • SSM 文件中的組態會使用文ApplicationConfiguration件類型。相應的 JSON 結構描述會使用ApplicationConfigurationSchema文件類型。

  • AWS AppConfig 支援內嵌結構描述的 JSON 結構描述 4.X 版本。如果您的應用程式設定需要不同版本的 JSON 結構描述,則您必須建立 Lambda 驗證程式。