关于验证程序 - AWS AppConfig
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

关于验证程序

创建配置和配置文件时,最多可以指定两个验证程序。验证程序可确保您的配置数据在语法和语义上是正确的。您可以在 JSON 架构中或作为 AWS Lambda 函数创建验证程序。

重要

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

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 }

使用本主题中的过程创建配置时,AWS AppConfig 验证配置是否符合架构要求。如果不符合要求,Systems Manager 将返回验证错误。

注意

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

AWS Lambda 验证程序

Lambda 函数验证程序必须配置了以下事件架构。AWS AppConfig 使用该架构调用 Lambda 函数。content 是 base64 编码的字符串,而 URI 是字符串。

{ "content":Base64EncodedByteString, "uri":"The uri of the configuration" }

AWS AppConfig 验证是否已在响应中设置 Lambda X-Amz-Function-Error 标头。如果函数引发异常,则 Lambda 设置此标头。有关 X-Amz-Function-Error,参见 错误处理和自动重试 AWS LambdaAWS Lambda Developer Guide.

这里是一个成功验证的 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 服务的访问权限