第 3 步:创建配置文件和功能标志 - Amazon AppConfig
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

第 3 步:创建配置文件和功能标志

配置 是一组影响应用程序行为的设置。一个配置文件启用Amazon AppConfig以访问你的配置。配置文件包含以下信息:

  • 配置存储在哪里的 URI 位置。

  • 这些区域有:Amazon Identity and Access Management提供配置访问权限的 IAM) 角色。

  • 配置数据的验证程序。您可以使用 JSON 架构或 Amazon Lambda 函数验证配置文件。配置文件最多可以具有两个验证程序。

Amazon AppConfig支持以下类型的配置文件。

  • 功能标志:使用功能标志配置启用需要及时部署的新功能,例如产品发布或公告。

  • 自由格式:使用自由格式配置仔细引入对应用程序的更改。

示例配置

使用Amazon AppConfig,功能Amazon Systems Manager,以创建、管理以及快速部署应用程序配置。配置 是一组影响应用程序行为的设置。下面是一些示例。

功能标志配置

以下功能标志配置基于每个区域启用或禁用移动支付和默认付款。

JSON
{ "allow_mobile_payments": { "enabled": false }, "default_payments_per_region": { "enabled": true } }
YAML
--- allow_mobile_payments: enabled: false default_payments_per_region: enabled: true

操作配置

以下操作配置对应用程序处理请求的方式实施限制。

JSON
{ "throttle-limits": { "enabled": "true", "throttles": [ { "simultaneous_connections": 12 }, { "tps_maximum": 5000 } ], "limit-background-tasks": [ true ] } }
YAML
--- throttle-limits: enabled: 'true' throttles: - simultaneous_connections: 12 - tps_maximum: 5000 limit-background-tasks: - true

访问控制列表

以下访问控制列表配置指定哪些用户或组可以访问应用程序。

JSON
{ "allow-list": { "enabled": "true", "cohorts": [ { "internal_employees": true }, { "beta_group": false }, { "recent_new_customers": false }, { "user_name": "Jane_Doe" }, { "user_name": "John_Doe" } ] } }
YAML
--- allow-list: enabled: 'true' cohorts: - internal_employees: true - beta_group: false - recent_new_customers: false - user_name: Jane_Doe - user_name: Ashok_Kumar

关于配置文件 IAM 角色

您可以使用以下方式创建提供配置数据访问权限的 IAM 角色。Amazon AppConfig,如以下过程中所述。或者,您可以自行创建 IAM 角色并从列表中选择它。如果使用 Amazon AppConfig 创建角色,系统将根据所选的配置源类型创建角色并指定以下权限策略之一。

配置源是 SSM 文档

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetDocument" ], "Resource": [ "arn:aws:ssm:Amazon-Region:account-number:document/document-name" ] } ] }

配置源是参数存储

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameter" ], "Resource": [ "Arn:aws:ssm:Amazon-Region:account-number:parameter/parameter-name" ] } ] }

如果使用 Amazon AppConfig 创建角色,系统还会为角色创建以下信任关系。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "appconfig.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

关于存储在 Amazon S3 中的配置

您可以将配置存储在 Amazon Simple Storage Service (Amazon S3) 存储桶中。在创建配置文件时,将指定存储桶中单个 S3 对象的 URI。您还可以指定的 Amazon 资源名称 (ARN)Amazon Identity and Access Management(IAM) 角色赋予Amazon AppConfig获取对象的权限。在为 Amazon S3 对象创建配置文件之前,请注意以下限制。

限制 详细信息

Size

存储为 S3 对象的配置的最大大小可以为 1 MB。

Object encryption

配置文件只能以 SSE-S3 加密的对象为目标。

存储类

Amazon AppConfig 支持以下 S3 存储类别:STANDARDINTELLIGENT_TIERINGREDUCED_REDUNDANCYSTANDARD_IAONEZONE_IA。不支持以下类别:所有 S3 Glacier 类 (GLACIERDEEP_ARCHIVE)。

版本控制

Amazon AppConfig 要求 S3 对象使用版本控制。

配置存储为 Amazon S3 对象的配置的权限

在为存储为 S3 对象的配置创建配置文件时,您必须为 IAM 角色指定 ARN,该角色向提供Amazon AppConfig获取对象的权限。该角色必须包括以下权限。

对 S3 对象的访问权限

  • :S3GetObject

  • :S3GetObject版本

列出 S3 存储桶的权限

:S3ListAllMyBuckets

对用于存储对象的 S3 存储桶的访问权限

  • :S3GetBucket位置

  • :S3GetBucket版本控制

  • :S3ListBucket

  • :S3ListBucket版本

完成以下过程可创建一个角色,该角色使 Amazon AppConfig 能够获取存储在 S3 对象中的配置。

创建用于访问 S3 对象的 IAM 策略

使用以下过程创建启用的 IAM 策略。Amazon AppConfig以获取存储在 S3 对象中的配置。

创建用于访问 S3 对象的 IAM 策略

  1. 访问:https://console.aws.amazon.com/iam/,打开 IAM 控制台。

  2. 在导航窗格中,选择 Policies (策略),然后选择 Create policy (创建策略)

  3. 创建策略页面上,选择 JSON 选项卡。

  4. 使用有关 S3 存储桶和配置对象的信息更新以下示例策略。然后将策略粘贴到 JSON 选项卡上的文本字段中。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::my-bucket/my-configurations/my-configuration.json" }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetBucketVersioning", "s3:ListBucketVersions", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::my-bucket" ] }, { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" } ] }
  5. 选择 Review policy (审核策略)

  6. Review policy (查看策略) 页面上,在 Name (名称) 框中键入名称,然后键入描述。

  7. 选择 Create policy(创建策略)。系统将让您返回到 Roles (角色) 页面。

创建用于访问 S3 对象的 IAM 角色

使用以下过程创建启用的 IAM 角色。Amazon AppConfig以获取存储在 S3 对象中的配置。

创建用于访问 Amazon S3 对象的 IAM 角色

  1. 访问:https://console.aws.amazon.com/iam/,打开 IAM 控制台。

  2. 在导航窗格中,选择 Roles (角色),然后选择 Create role (创建角色)

  3. 在存储库的选择受信任实体的类型部分,选择。Amazon服务.

  4. 选择使用案例部分,下常见用例,选择EC2,然后选择。后续:Permissions (下一步:权限)

  5. Attach permissions policy (附加权限策略) 页面上的搜索框中,输入您在上一过程中创建的策略的名称。

  6. 选择该策略,然后选择。后续:标签

  7. Add tags (optional) (添加标签(可选)) 页面上,输入密钥和可选值,然后选择 Next: Review (下一步: 审核)

  8. Review (审核) 页面上,在 Role name (角色名称) 字段中键入名称,然后键入描述。

  9. 选择 Create role (创建角色)。系统将让您返回到 Roles (角色) 页面。

  10. 角色页面中,选择刚刚创建的角色以打开摘要页面。记下角色名称角色 ARN。在本主题的后面部分中创建配置文件时,您将指定角色 ARN。

创建信任关系

使用以下过程将您刚刚创建的角色配置为信任 Amazon AppConfig。

添加信任关系

  1. 在刚刚创建的角色的摘要页面上,选择信任关系选项卡,然后选择编辑信任关系

  2. 删除 "ec2.amazonaws.com" 并添加 "appconfig.amazonaws.com",如以下示例所示。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "appconfig.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  3. 选择 Update Trust Policy

关于验证程序

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

重要

在可以将配置添加到系统之前,SSM 文档中存储的配置数据必须对照关联的 JSON 架构进行验证。SSM 参数不需要验证方法,但我们建议您通过使用 Amazon 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 }

在您根据 SSM 文档创建配置时,系统将自动验证配置是否符合架构要求。如果不符合要求,Amazon AppConfig 将返回验证错误。

注意

请注意与 JSON 架构验证程序相关的以下信息:

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

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

Amazon Lambda 验证程序

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

{ "ApplicationId": "The application Id of the configuration profile being validated", "ConfigurationProfileId": "The configuration profile Id of the configuration profile being validated", "ConfigurationVersion": "The configuration version of the configuration profile being validated", "Content": "Base64EncodedByteString", "Uri": "The uri of the configuration" }

Amazon AppConfig验证 LambdaX-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"; } }

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

创建功能标志配置文件

您可以使用功能标志来启用或禁用应用程序中的功能,或使用标志属性配置应用程序功能的不同特征。Amazon AppConfig将功能标志配置存储在Amazon AppConfig托管配置存储采用功能标志格式,其中包含有关标志和标志属性的数据和元数据。有关的更多信息Amazon AppConfig托管配置存储,请参阅关于 Amazon AppConfig 托管配置存储部分。

重要

要检索功能标志配置数据,您的应用程序必须调用GetLatestConfigurationAPI。你无法通过调用来检索功能标志配置数据GetConfiguration. 有关更多信息,请参阅 。GetLatest配置中的Amazon AppConfigAPI 参考.

创建功能标志和功能标志配置文件(控制台)

使用以下过程可创建Amazon AppConfig功能标志配置文件和功能标志配置文件使用Amazon AppConfig控制台。

创建配置文件

  1. 打开Amazon Systems Manager控制台https://console.aws.amazon.com/systems-manager/appconfig/.

  2. 在存储库的应用程序选项卡,选择您在中创建的应用程序创建Amazon AppConfig配置然后选择配置配置文件和功能标志选项卡。

  3. 请选择创建

  4. 选择功能标志.

创建要素标志

  1. 在您创建的配置上,选择添加新标志.

  2. 提供标志名和(可选)说明. 这些区域有:标志键自动填充您提供的名称中的下划线来填充空格。如果想要不同的值或格式,可以编辑标志键。标志创建后,您可以编辑旗帜名称,但不能编辑标志键。

  3. 指定要素标志是否为Enabled (已启用)要么Disabled使用切换按钮。

  4. (可选)添加属性和属性约束转到功能标志。属性使您能够在标志中提供额外的值。您可以选择根据指定的约束来验证属性值。约束条件可确保任何意外的值不会部署到应用程序中。

    Amazon AppConfig功能标志支持以下类型的属性及其相应的约束。

    类型 Constraint 说明
    字符串 正则表达式

    字符串的正则表达式模式

    枚举

    字符串的可接受值列表

    数字 最低

    属性的最小数值

    最高

    属性的最大数值

    Boolean
    字符串数组 正则表达式 数组元素的正则表达式模式
    枚举 数组元素的可接受值列表
    数组 最低 数组元素的最小数值
    最高 数组元素的最大数值
    注意

    Select必需的值以指定是否需要属性值。

  5. 选择保存新版本.

继续执行步骤 4:创建部署策略。

创建功能标志和功能标志配置文件(命令行)

以下过程介绍如何使用Amazon Command Line Interface(在 Linux 或 Windows 上)或适用于 Windows 的工具PowerShell来创建Amazon AppConfig功能标志配置文件。如果您愿意,可以使用Amazon CloudShell以运行下面列出的命令。有关更多信息,请参阅 Amazon CloudShell 用户指南 什么是 Amazon CloudShell?

逐步创建功能标志配置

  1. 安装并配置 Amazon CLI 或 Amazon Tools for PowerShell(如果尚未执行该操作)。

    有关信息,请参阅安装或升级 Amazon 命令行工具

  2. 创建功能标志配置文件,指定其类型如同AWS.AppConfig.FeatureFlags. 配置文件必须使用hosted对于位置 URI。

    Linux
    aws appconfig create-configuration-profile \ --application-id The_application_ID \ --name A_name_for_the_configuration_profile \ --location-uri hosted \ --type AWS.AppConfig.FeatureFlags
    Windows
    aws appconfig create-configuration-profile ^ --application-id The_application_ID ^ --name A_name_for_the_configuration_profile ^ --location-uri hosted ^ --type AWS.AppConfig.FeatureFlags
    PowerShell
    New-APPCConfigurationProfile ` -Name A_name_for_the_configuration_profile ` -ApplicationId The_application_ID ` -LocationUri hosted ` -Type AWS.AppConfig.FeatureFlags
  3. 创建功能标志配置数据。您的数据必须采用 JSON 格式,并符合AWS.AppConfig.FeatureFlagsJSON 架构。有关架构的更多信息,请参阅Amazon 的类型参考。AppConfig.FeatureFlags.

  4. 使用CreateHostedConfigurationVersion用于将功能标志配置数据保存到的 APIAmazon AppConfig.

    Linux
    aws appconfig create-hosted-configuration-version \ --application-id The_application_ID \ --configuration-profile-id The_configuration_profile_id \ --content-type "application/json" \ --content file://path/to/feature_flag_configuration_data \ file_name_for_system_to_store_configuration_data
    Windows
    aws appconfig create-hosted-configuration-version ^ --application-id The_application_ID ^ --configuration-profile-id The_configuration_profile_id ^ --content-type "application/json" ^ --content file://path/to/feature_flag_configuration_data ^ file_name_for_system_to_store_configuration_data
    PowerShell
    New-APPCHostedConfigurationVersion ` -ApplicationId The_application_ID ` -ConfigurationProfileId The_configuration_profile_id ` -ContentType "application/json" ` -Content file://path/to/feature_flag_configuration_data ` file_name_for_system_to_store_configuration_data

    系统将返回类似于以下内容的信息。

    Linux
    {
       "ApplicationId"          : "The application ID",
       "ConfigurationProfileId" : "The configuration profile ID",
       "VersionNumber"          : "The configuration version number",
       "ContentType"            : "application/json"
    }
    Windows
    {
       "ApplicationId"          : "The application ID",
       "ConfigurationProfileId" : "The configuration profile ID",
       "VersionNumber"          : "The configuration version number",
       "ContentType"            : "application/json"
    }
    PowerShell
    ApplicationId          : The application ID
    ConfigurationProfileId : The configuration profile ID
    VersionNumber          : The configuration version number
    ContentType            : application/json

    这些区域有:service_returned_content_file包含配置数据,其中包括一些Amazon AppConfig生成元数据。

    注意

    创建托管配置版本时,Amazon AppConfig验证您的数据是否符合AWS.AppConfig.FeatureFlagsJSON 架构。Amazon AppConfig此外,还验证数据中的每个要素标志属性是否满足为这些属性定义的约束条件。

Amazon 的类型参考。AppConfig.FeatureFlags

使用AWS.AppConfig.FeatureFlagsJSON 模式作为创建功能标志配置数据的参考。

{ "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "$ref": "#/definitions/flagSetDefinition", "additionalProperties": false, "definitions": { "flagSetDefinition": { "type": "object", "properties": { "version": { "$ref": "#/definitions/flagSchemaVersions" }, "flags": { "$ref": "#/definitions/flagDefinitions" }, "values": { "$ref": "#/definitions/flagValues" } }, "required": ["version", "flags"], "additionalProperties": false }, "flagDefinitions": { "type": "object", "patternProperties": { "^[a-z][a-zA-Z\\d-_]{0,63}$": { "$ref": "#/definitions/flagDefinition" } }, "maxProperties": 100, "additionalProperties": false }, "flagDefinition": { "type": "object", "properties": { "name": { "$ref": "#/definitions/customerDefinedName" }, "description": { "$ref": "#/definitions/customerDefinedDescription" }, "_createdAt": { "type": "string" }, "_updatedAt": { "type": "string" }, "attributes": { "$ref": "#/definitions/attributeDefinitions" } }, "additionalProperties": false }, "attributeDefinitions": { "type": "object", "patternProperties": { "^[a-z][a-zA-Z\\d-_]{0,63}$": { "$ref": "#/definitions/attributeDefinition" } }, "maxProperties": 25, "additionalProperties": false }, "attributeDefinition": { "type": "object", "properties": { "description": { "$ref": "#/definitions/customerDefinedDescription" }, "constraints": { "oneOf": [ { "$ref": "#/definitions/numberConstraints" }, { "$ref": "#/definitions/stringConstraints" }, { "$ref": "#/definitions/arrayConstraints" }, { "$ref": "#/definitions/boolConstraints" } ] } }, "additionalProperties": false }, "flagValues": { "type": "object", "patternProperties": { "^[a-z][a-zA-Z\\d-_]{0,63}$": { "$ref": "#/definitions/flagValue" } }, "maxProperties": 100, "additionalProperties": false }, "flagValue": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "_createdAt": { "type": "string" }, "_updatedAt": { "type": "string" } }, "patternProperties": { "^[a-z][a-zA-Z\\d-_]{0,63}$": { "$ref": "#/definitions/attributeValue", "maxProperties": 25 } }, "required": ["enabled"], "additionalProperties": false }, "attributeValue": { "oneOf": [ { "type": "string", "maxLength": 1024 }, { "type": "number" }, { "type": "boolean" }, { "type": "array", "oneOf": [ { "items": { "type": "string", "maxLength": 1024 } }, { "items": { "type": "number" } } ] } ], "additionalProperties": false }, "stringConstraints": { "type": "object", "properties": { "type": { "type": "string", "enum": ["string"] }, "required": { "type": "boolean" }, "pattern": { "type": "string", "maxLength": 1024 }, "enum": { "type": "array", "type": "array", "maxLength": 100, "items": { "oneOf": [ { "type": "string", "maxLength": 1024 }, { "type": "integer" } ] } } }, "required": ["type"], "not": { "required": ["pattern", "enum"] }, "additionalProperties": false }, "numberConstraints": { "type": "object", "properties": { "type": { "type": "string", "enum": ["number"] }, "required": { "type": "boolean" }, "minimum": { "type": "integer" }, "maximum": { "type": "integer" } }, "required": ["type"], "additionalProperties": false }, "arrayConstraints": { "type": "object", "properties": { "type": { "type": "string", "enum": ["array"] }, "required": { "type": "boolean" }, "elements": { "$ref": "#/definitions/elementConstraints" } }, "required": ["type"], "additionalProperties": false }, "boolConstraints": { "type": "object", "properties": { "type": { "type": "string", "enum": ["boolean"] }, "required": { "type": "boolean" } }, "required": ["type"], "additionalProperties": false }, "elementConstraints": { "oneOf": [ { "$ref": "#/definitions/numberConstraints" }, { "$ref": "#/definitions/stringConstraints" } ] }, "customerDefinedName": { "type": "string", "pattern": "^[^\\n]{1,64}$" }, "customerDefinedDescription": { "type": "string", "maxLength": 1024 }, "flagSchemaVersions": { "type": "string", "enum": ["1"] } } }
重要

要检索功能标志配置数据,您的应用程序必须调用GetLatestConfigurationAPI。你无法通过调用来检索功能标志配置数据GetConfiguration. 有关更多信息,请参阅 。GetLatest配置中的Amazon AppConfigAPI 参考.

当你的应用程序调用GetLatest配置并接收新部署的配置,定义功能标志和属性的信息将被删除。简化的 JSON 包含与您指定的每个标志键匹配的密钥映射。简化的 JSON 还包含的映射值true要么false(对于 )enabled属性。如果标志设置enabledtrue,旗帜的任何属性也将出现。以下 JSON 架构描述了 JSON 输出的格式。

{ "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "patternProperties": { "^[a-z][a-zA-Z\\d-_]{0,63}$": { "$ref": "#/definitions/attributeValuesMap" } }, "maxProperties": 100, "additionalProperties": false, "definitions": { "attributeValuesMap": { "type": "object", "properties": { "enabled": { "type": "boolean" } }, "required": ["enabled"], "patternProperties": { "^[a-z][a-zA-Z\\d-_]{0,63}$": { "$ref": "#/definitions/attributeValue" } }, "maxProperties": 25, "additionalProperties": false }, "attributeValue": { "oneOf": [ { "type": "string","maxLength": 1024 }, { "type": "number" }, { "type": "boolean" }, { "type": "array", "oneOf": [ { "items": { "oneOf": [ { "type": "string", "maxLength": 1024 } ] } }, { "items": { "oneOf": [ { "type": "number" } ] } } ] } ], "additionalProperties": false } } }

创建自由格式配置文件

自由格式配置文件启用Amazon AppConfig以便从指定的源位置访问您的配置。您可以按以下格式和位置存储自由格式配置。

  • 中的 YAML、JSON 或文本文档Amazon AppConfig托管配置存储。

  • Amazon Simple Storage Service (Amazon S3) 存储桶中的对象。

  • Systems Manager 文档存储中的文档。

  • 支持的任何集成源操作Amazon CodePipeline.

对于存储在中的自由格式配置Amazon AppConfig托管配置存储或 SSM 文档,您可以在创建配置文件时使用 Systems Manager 控制台创建自由格式配置。本主题后面介绍了该过程。

对于存储在 SSM 参数或 S3 中的自由格式配置,您必须先创建参数或对象,然后将其添加到参数存储或 S3。创建参数或对象后,您可以使用本主题中的过程创建配置文件。有关在参数存储中创建参数的信息,请参阅创建 Systems Manager 参数中的Amazon Systems Manager用户指南.

关于配置存储配额和限制

Amazon AppConfig 支持的配置存储具有以下配额和限制。

Amazon AppConfig 托管配置存储 S3 Parameter Store 文档存储 Amazon CodePipeline

配置大小限制

1MB

1MB

由 Amazon AppConfig 而不是 S3 强制实施

4 KB(免费套餐)/8 KB(高级参数)

64 KB

1MB

强制实施者Amazon AppConfig,不是CodePipeline

资源存储限制

1GB

无限

10000 个参数(免费套餐)/100000 个参数(高级参数)

500 个文档

受每个应用程序配置文件数的限制(每个应用程序 100 个配置文件)

服务器端加密

SSE-S3

Amazon CloudFormation 支持

不用于创建或更新数据

验证创建或更新 API 操作

不支持

不支持

支持正则表达式

所有放置和更新 API 操作都需要 JSON 架构

不支持

定价

免费

请参阅Amazon S3 定价

请参阅Amazon Systems Manager定价

免费

请参阅Amazon CodePipeline定价

关于 Amazon AppConfig 托管配置存储

Amazon AppConfig 包括内部或托管配置存储。配置必须小于或等于 1 MB。与其他配置存储选项相比,Amazon AppConfig 托管配置存储提供了以下好处。

  • 您无需设置和配置其他服务,如 Amazon Simple Storage Service (Amazon S3) 或参数存储。

  • 您无需配置Amazon Identity and Access Management(IAM) 权限使用配置存储。

  • 您可以按 YAML、JSON 或文本文档格式存储配置。

  • 使用存储不产生任何费用。

  • 您可以创建配置并在创建配置文件时将其添加到存储。

创建自由格式配置和配置配置文件

本节介绍如何创建自由格式配置和配置文件。在开始之前,请注意以下信息。

  • 以下过程要求您指定 IAM 服务角色,以便Amazon AppConfig可以在您选择的配置存储中访问配置数据。如果您使用 Amazon AppConfig 托管配置存储,则不需要此角色。如果您选择 S3、参数存储或 Systems Manager 文档存储,则必须选择现有 IAM 角色,或选择让系统自动为您创建角色的选项。有关该角色的更多信息,请参阅 关于配置文件 IAM 角色

  • 如果要为 S3 中存储的配置创建配置文件,则必须配置权限。有关使用 S3 作为配置存储的权限和其他要求的更多信息,请参阅 关于存储在 Amazon S3 中的配置

  • 如果您要使用验证程序,请查看使用验证程序的详细信息和要求。有关更多信息,请参阅 关于验证程序

创建Amazon AppConfig自由格式配置文件(控制台)

使用以下过程可创建Amazon AppConfig使用自由格式配置文件和(可选)自由格式配置,使用Amazon Systems Manager控制台。

创建配置文件

  1. 打开Amazon Systems Manager控制台https://console.aws.amazon.com/systems-manager/appconfig/.

  2. 在存储库的应用程序选项卡,选择您在中创建的应用程序创建Amazon AppConfig配置然后选择配置配置文件和功能标志选项卡。

  3. 选择创建自由格式配置文件.

  4. 对于 Name (名称),请输入配置文件的名称。

  5. 对于 Description (描述),请输入有关配置文件的信息。

  6. Select configuration source (选择配置源) 页面上,选择一个选项。

    • 如果您选择了Amazon AppConfig托管配置,然后选择YAMLJSON,或者Text,然后在字段中输入您的配置。选择 Next (下一步),然后转到此过程中的步骤 10。

    • 如果您选择了Amazon S3 对象,然后输入对象 URI。请选择 Next (下一步)

    • 如果您选择了Amazon Systems Manager参数,然后从列表中选择参数的名称。请选择 Next (下一步)

    • 如果您选择了Amazon CodePipeline,然后选择下一步然后转到此过程中的步骤 10。

    • 如果选择此项Amazon Systems Manager文档,然后完成以下步骤。

    1. 文档源部分,选择保存的文档要么新文档.

    2. 如果选择保存的文档,然后从列表中选择 SSM 文档。如果选择 New document (新文档),则会显示 Details (详细信息)Content (内容) 部分。

    3. Details (详细信息) 部分中,输入新应用程序配置的名称。

    4. 对于 Application configuration schema (应用程序配置架构) 部分,使用列表选择 JSON 架构或选择 Create schema (创建架构)。如果选择创建架构,Systems Manager 打开创建架构页. 在 Content (内容) 部分中输入架构详细信息,然后选择 Create schema (创建架构)

      
                      输入的详细信息Amazon AppConfig配置
    5. 对于 Application configuration schema version (应用程序配置架构版本),从列表中选择版本,或选择 Update schema (更新架构) 以编辑架构并创建新版本。

    6. Content (内容) 部分中,选择 YAMLJSON,然后在字段中输入配置数据。

      
                      在中输入配置数据Amazon AppConfig配置文件
    7. 请选择 Next (下一步)

  7. 服务角色部分,选择。新的服务角色要拥有Amazon AppConfig创建提供对配置数据的访问权限的 IAM 角色。Amazon AppConfig自动填充Role name (角色名称)字段基于您之前输入的名称。或者,要选择 IAM 中已存在的角色,请选择现有服务角色. 使用 Role ARN (角色 ARN) 列表选择角色。

  8. Add validators (添加验证程序) 页面上,选择 JSON Schema (JSON 架构)Amazon Lambda。如果选择 JSON Schema (JSON 架构),请在字段中输入 JSON 架构。如果您选择 Amazon Lambda,请从列表中选择函数 Amazon 资源名称 (ARN) 和版本。

    重要

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

  9. Tags (标签) 部分中,输入一个键和可选的值。您最多可以为一个资源指定 50 个标签。

  10. 选择 Create configuration profile (创建配置文件)

重要

如果您创建了配置配置文件Amazon CodePipeline,然后在创建部署策略(如下一节所述)之后,您必须在CodePipeline那指定Amazon AppConfig作为部署提供商. 有关创建指定的管道的信息Amazon AppConfig作为部署提供商,请参阅教程:创建使用的管道Amazon AppConfig作为部署提供商中的Amazon CodePipeline用户指南.

继续执行第 4 步:创建部署策略

创建Amazon AppConfig自由格式配置文件(命令行)

以下过程介绍如何使用Amazon CLI(在 Linux 或 Windows 上)或Amazon Tools for PowerShell要创建Amazon AppConfig自由格式配置文件。如果您愿意,可以使用Amazon CloudShell以运行下面列出的命令。有关更多信息,请参阅 Amazon CloudShell 用户指南 什么是 Amazon CloudShell?

逐步创建配置文件

  1. 安装并配置 Amazon CLI 或 Amazon Tools for PowerShell(如果尚未执行该操作)。

    有关信息,请参阅安装或升级 Amazon 命令行工具

  2. 运行以下命令以创建自由格式配置文件。

    Linux
    aws appconfig create-configuration-profile \ --application-id The_application_ID \ --name A_name_for_the_configuration_profile \ --description A_description_of_the_configuration_profile \ --location-uri A_URI_to_locate_the_configuration or hosted \ --retrieval-role-arn The_ARN_of_the_IAM_role_with_permission_to_access_the_configuration_at_the_specified_LocationUri \ --tags User_defined_key_value_pair_metadata_of_the_configuration_profile \ --validators "Content=JSON_Schema_content_or_the_ARN_of_an_Amazon Lambda_function,Type=JSON_SCHEMA or LAMBDA"
    Windows
    aws appconfig create-configuration-profile ^ --application-id The_application_ID ^ --name A_name_for_the_configuration_profile ^ --description A_description_of_the_configuration_profile ^ --location-uri A_URI_to_locate_the_configuration or hosted ^ --retrieval-role-arn The_ARN_of_the_IAM_role_with_permission_to_access_the_configuration_at_the_specified_LocationUri ^ --tags User_defined_key_value_pair_metadata_of_the_configuration_profile ^ --validators "Content=JSON_Schema_content_or_the_ARN_of_an_Amazon Lambda_function,Type=JSON_SCHEMA or LAMBDA"
    PowerShell
    New-APPCConfigurationProfile ` -Name A_name_for_the_configuration_profile ` -ApplicationId The_application_ID ` -Description Description_of_the_configuration_profile ` -LocationUri A_URI_to_locate_the_configuration or hosted ` -RetrievalRoleArn The_ARN_of_the_IAM_role_with_permission_to_access_the_configuration_at_the_specified_LocationUri ` -Tag Hashtable_type_user_defined_key_value_pair_metadata_of_the_configuration_profile ` -Validators "Content=JSON_Schema_content_or_the_ARN_of_an_Amazon Lambda_function,Type=JSON_SCHEMA or LAMBDA"
注意

如果您在Amazon AppConfig托管配置存储区,您可以使用CreateHostedConfigurationVersionAPI 操作。查看Amazon CLI此 API 操作的详细信息和示例命令,请参阅create-hosted-configuration-版本中的Amazon CLI命令参考.