了解验证程序 - Amazon AppConfig
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

了解验证程序

创建配置文件时,最多可以指定两个验证程序。验证程序可确保您的配置数据在语法和语义上是正确的。如果您计划使用验证程序,则必须在创建配置文件之前创建它。 Amazon AppConfig 支持以下类型的验证器:

  • Amazon Lambda 函数:支持功能标志和自由格式配置。

  • JSON 架构:支持自由格式配置。(Amazon AppConfig 根据 JSON 架构自动验证功能标志。)

Amazon Lambda 函数验证程序

Lambda 函数验证程序必须配置了以下事件架构。Amazon AppConfig 使用该架构调用 Lambda 函数。content 是 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" }

Amazon AppConfig 验证是否在响应中设置了 Lambda X-Amz-Function-Error 标头。如果函数抛出异常,Lambda 会设置该标头。有关 X-Amz-Function-Error 的详细信息,请参阅《Amazon Lambda 开发人员指南》中的 Amazon 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"; } }

在调用 StartDeploymentValidateConfigurationActivity API 操作时,Amazon AppConfig 会调用您的验证 Lambda。您必须提供 appconfig.amazonaws.com 权限才能调用 Lambda。有关更多信息,请参阅授予函数对 Amazon 服务的访问权限。Amazon AppConfig 将验证 Lambda 运行时间限制为 15 秒,包括启动延迟。

JSON 架构验证程序

如果在 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 文档创建配置时,系统会自动验证配置是否符合架构要求。如果不符合要求,Amazon AppConfig 将返回验证错误。

重要

请注意有关 JSON 架构验证程序的以下重要信息:

  • 在可以将配置添加到系统之前,SSM 文档中存储的配置数据必须对照关联的 JSON 架构进行验证。SSM 参数不需要验证方法,但我们建议您通过使用 Amazon Lambda 为新的或更新的 SSM 参数配置创建验证检查。

  • SSM 文档中的配置使用 ApplicationConfiguration 文档类型。相应的 JSON 架构使用 ApplicationConfigurationSchema 文档类型。

  • Amazon AppConfig 对于内联架构支持 JSON 架构版本 4.X。如果您的应用程序配置需要不同的 JSON 架构版本,则必须创建 Lambda 验证程序。