在 Amazon AppConfig中创建配置文件 - Amazon AppConfig
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Amazon AppConfig中创建配置文件

除其他外,配置文件包括一个 URI( Amazon AppConfig 允许在存储位置查找配置数据)和配置类型。 Amazon AppConfig 支持两种类型的配置文件:功能标志和自由格式配置。功能标志配置将数据存储在 Amazon AppConfig 托管配置存储中,URI 很简单hosted。自由格式配置可以将数据存储在 Amazon AppConfig 托管配置存储区、各种 Systems Manager 功能或与集成的 Amazon 服务中。 Amazon AppConfig有关更多信息,请参阅 在中创建自由表单配置文件 Amazon AppConfig

配置文件还可以包括可选的验证器,以确保您的配置数据在语法和语义上都是正确的。 Amazon AppConfig 开始部署时使用验证器执行检查。在对配置目标进行任何更改之前,如果检测到任何错误,部署将会停止。

注意

如果可能,我们建议将您的配置数据托管在 Amazon AppConfig 托管配置存储中,因为它提供了最多的功能和增强功能。

关于验证程序

创建配置文件时,最多可以指定两个验证程序。验证程序可确保您的配置数据在语法和语义上是正确的。如果您计划使用验证器,则必须在创建配置文件之前创建验证器。 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 验证响应中是否设置了 X-Amz-Function-Error Lambda 标头。如果函数抛出异常,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"; } }

Amazon AppConfig 在调用StartDeploymentValidateConfigurationActivity API 操作时,会调用您的验证 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 参数不需要验证方法,但我们建议您使用为新的或更新的 SSM 参数配置创建验证检查。 Amazon Lambda

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

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