Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
处理 Parameter Store 中的参数层次结构
以平面列表的形式管理几十个或数百个参数十分耗时且容易出错。而且为任务确定正确参数也很难。这意味着,您可能意外地使用了错误的参数,或者您可能创建多个使用相同配置数据的参数。
您可以使用参数层次结构来帮助组织和管理参数。一个层次结构是一个参数名称,包括您使用正斜杠定义的路径。
通过示例了解参数层次结构
下列示例在名称中使用三个层次结构级别来标识以下内容:
/Environment/Type of computer/Application/Data
/Dev/DBServer/MySQL/db-string13
您可以创建具有最多 15 个级别的层次结构。我们建议您创建反映环境中现有层次结构的层次结构,如以下示例所示:
-
您的持续集成和持续交付环境(CI/CD 工作流)
/Dev/DBServer/MySQL/db-string
/Staging/DBServer/MySQL/db-string
/Prod/DBServer/MySQL/db-string
-
您的使用容器的应用程序
/MyApp/.NET/Libraries/my-password
-
您的业务组织
/Finance/Accountants/UserList
/Finance/Analysts/UserList
/HR/Employees/EU/UserList
参数层次结构规范了创建参数的方式,而且使得随时间的推移管理参数更为容易。参数层次结构还可帮助您为配置任务确定正确参数。这可帮助您避免使用相同的配置数据创建多个参数。
您可以创建一个层次结构,允许您在不同的环境中共享参数,如以下示例所示,这些示例在开发和暂存环境中使用密码。
/DevTest/MyApp/database/my-password
然后您可以为生产环境创建一个唯一密码,如以下示例所示:
/prod/MyApp/database/my-password
您无需指定参数层次结构。您可以在第一级创建参数。它们叫做根参数。考虑到向后兼容性,在发布层次结构之前在 Parameter Store 中创建的所有参数都是根参数。系统将以下两个参数视为根参数。
/parameter-name
parameter-name
查询层次结构中的参数
使用层次结构的另一个好处是,能够通过使用 GetParametersByPath API 操作查询层次结构中的所有参数。例如,如果您从 Amazon Command Line Interface (Amazon CLI) 运行以下命令,系统将返回 IIS 级别中的所有参数。
aws ssm get-parameters-by-path --path /Dev/Web/IIS
要查看层次结构中解密的 SecureString
参数,请指定路径和 --with-decryption
参数,如以下示例所示。
aws ssm get-parameters-by-path --path /Prod/ERP/SAP --with-decryption
通过 Amazon CLI 来使用层次结构管理参数
此过程介绍了如何通过使用 Amazon CLI 来使用参数和参数层次结构。
使用层次结构管理参数
安装并配置 Amazon Command Line Interface(Amazon CLI)(如果尚未执行该操作)。
有关更多信息,请参阅安装或更新 Amazon CLI 的最新版本。
-
运行以下命令创建一个使用 allowedPattern
参数和 String
参数类型的参数。本示例中的允许模式表示参数的值必须为 1 到 4 个数字。
- Linux & macOS
-
aws ssm put-parameter \
--name "/MyService/Test/MaxConnections" \
--value 100 --allowed-pattern "\d{1,4}" \
--type String
- Windows
-
aws ssm put-parameter ^
--name "/MyService/Test/MaxConnections" ^
--value 100 --allowed-pattern "\d{1,4}" ^
--type String
该命令返回参数的版本号。
-
执行以下命令尝试用新值覆盖您刚刚创建的参数。
- Linux & macOS
-
aws ssm put-parameter \
--name "/MyService/Test/MaxConnections" \
--value 10,000 \
--type String \
--overwrite
- Windows
-
aws ssm put-parameter ^
--name "/MyService/Test/MaxConnections" ^
--value 10,000 ^
--type String ^
--overwrite
系统会返回以下错误,因为新值不满足您在上一步骤中指定的允许模式的要求。
An error occurred (ParameterPatternMismatchException) when calling the PutParameter operation: Parameter value, cannot be validated against allowedPattern: \d{1,4}
-
运行以下命令,创建使用 Amazon 托管式密钥的 SecureString
参数。本示例中的允许模式表示用户可以指定任意字符,并且值必须在 8 到 20 个字符之间。
- Linux & macOS
-
aws ssm put-parameter \
--name "/MyService/Test/my-password
" \
--value "p#sW*rd33" \
--allowed-pattern ".{8,20}" \
--type SecureString
- Windows
-
aws ssm put-parameter ^
--name "/MyService/Test/my-password
" ^
--value "p#sW*rd33" ^
--allowed-pattern ".{8,20}" ^
--type SecureString
-
运行以下命令创建多个使用上一步骤中的层次结构的参数。
- Linux & macOS
-
aws ssm put-parameter \
--name "/MyService/Test/DBname" \
--value "SQLDevDb" \
--type String
aws ssm put-parameter \
--name "/MyService/Test/user" \
--value "SA" \
--type String
aws ssm put-parameter \
--name "/MyService/Test/userType" \
--value "SQLuser" \
--type String
- Windows
-
aws ssm put-parameter ^
--name "/MyService/Test/DBname" ^
--value "SQLDevDb" ^
--type String
aws ssm put-parameter ^
--name "/MyService/Test/user" ^
--value "SA" ^
--type String
aws ssm put-parameter ^
--name "/MyService/Test/userType" ^
--value "SQLuser" ^
--type String
-
运行以下命令获取两个参数的值。
- Linux & macOS
-
aws ssm get-parameters \
--names "/MyService/Test/user" "/MyService/Test/userType"
- Windows
-
aws ssm get-parameters ^
--names "/MyService/Test/user" "/MyService/Test/userType"
-
运行以下命令查询单个级别内的所有参数。
- Linux & macOS
-
aws ssm get-parameters-by-path \
--path "/MyService/Test"
- Windows
-
aws ssm get-parameters-by-path ^
--path "/MyService/Test"
-
运行以下命令删除两个参数。
- Linux & macOS
-
aws ssm delete-parameters \
--names "/IADRegion/Dev/user" "/IADRegion/Dev/userType"
- Windows
-
aws ssm delete-parameters ^
--names "/IADRegion/Dev/user" "/IADRegion/Dev/userType"