处理 Parameter Store 中的参数层次结构
以平面列表的形式管理几十个或数百个参数十分耗时且容易出错。而且为任务确定正确参数也很难。这意味着,您可能意外地使用了错误的参数,或者您可能创建多个使用相同配置数据的参数。
您可以使用参数层次结构来帮助组织和管理参数。一个层次结构是一个参数名称,包括您使用正斜杠定义的路径。
通过示例了解参数层次结构
下列示例在名称中使用三个层次结构级别来标识以下内容:
/Environment/Type of computer/Application/Data
/Dev/DBServer/MySQL/db-string13
您可以创建具有最多 15 个级别的层次结构。我们建议您创建反映环境中现有层次结构的层次结构,如以下示例所示:
参数层次结构规范了创建参数的方式,而且使得随时间的推移管理参数更为容易。参数层次结构还可帮助您为配置任务确定正确参数。这可帮助您避免使用相同的配置数据创建多个参数。
您可以创建一个层次结构,允许您在不同的环境中共享参数,如以下示例所示,这些示例在开发和暂存环境中使用密码。
/DevTest/MyApp/database/
my-password
然后您可以为生产环境创建一个唯一密码,如以下示例所示:
/prod/MyApp/database/
my-password
您无需指定参数层次结构。您可以在第一级创建参数。它们叫做根参数。考虑到向后兼容性,在发布层次结构之前在 Parameter Store 中创建的所有参数都是根参数。系统将以下两个参数视为根参数。
/parameter-name
parameter-name
查询层次结构中的参数
使用层次结构的另一个好处是,能够通过使用 GetParametersByPath API 操作查询层次结构中某个级别下的所有参数。例如,若从 AWS Command Line Interface(AWS CLI)运行以下命令,系统会返回 Oncall
级别下的所有参数:
aws ssm get-parameters-by-path --path /Dev/Web/Oncall
示例输出:
{ "Parameters": [ { "Name": "/Dev/Web/Oncall/Week1", "Type": "String", "Value": "John Doe", "Version": 1, "LastModifiedDate": "2024-11-22T07:18:53.510000-08:00", "ARN": "arn:aws:ssm:us-east-2:123456789012:parameter/Dev/Web/Oncall/Week1", "DataType": "text" }, { "Name": "/Dev/Web/Oncall/Week2", "Type": "String", "Value": "Mary Major", "Version": 1, "LastModifiedDate": "2024-11-22T07:21:25.325000-08:00", "ARN": "arn:aws:ssm:us-east-2:123456789012:parameter/Dev/Web/Oncall/Week2", "DataType": "text" } ] }
要查看层次结构中解密的 SecureString
参数,请指定路径和 --with-decryption
参数,如以下示例所示。
aws ssm get-parameters-by-path --path /Prod/ERP/SAP --with-decryption
通过 AWS CLI 来使用层次结构管理参数
此过程介绍了如何通过使用 AWS CLI 来使用参数和参数层次结构。
使用层次结构管理参数
安装并配置 AWS Command Line Interface(AWS CLI)(如果尚未执行该操作)。
有关更多信息,请参阅安装或更新 AWS CLI 的最新版本。
-
运行以下命令创建一个使用
allowedPattern
参数和String
参数类型的参数。本示例中的允许模式表示参数的值必须为 1 到 4 个数字。该命令返回参数的版本号。
-
执行以下命令尝试用新值覆盖您刚刚创建的参数。
系统会返回以下错误,因为新值不满足您在上一步骤中指定的允许模式的要求。
An error occurred (ParameterPatternMismatchException) when calling the PutParameter operation: Parameter value, cannot be validated against allowedPattern: \d{1,4}
-
运行以下命令,创建使用 AWS 托管式密钥的
SecureString
参数。本示例中的允许模式表示用户可以指定任意字符,并且值必须在 8 到 20 个字符之间。 -
运行以下命令创建多个使用上一步骤中的层次结构的参数。
-
运行以下命令获取两个参数的值。
-
运行以下命令查询单个级别下的所有参数。
-
运行以下命令删除两个参数。