本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用参数层次结构
以平面列表的形式管理几十个或数百个参数十分耗时且容易出错。而且为任务确定正确参数也很难。这意味着,您可能意外地使用了错误的参数,或者您可能创建多个使用相同配置数据的参数。
您可以使用参数层次结构来帮助组织和管理参数。一个层次结构是一个参数名称,包括您使用正斜杠定义的路径。
参数层次结构示例
下列示例在名称中使用三个层次结构级别来标识以下内容:
/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 操作查询层次结构中的所有参数。例如,如果您从 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
限制对 Parameter Store API 操作的访问
使用 Amazon Identity and Access Management (IAM) 策略,您可以提供或限制用户对 Parameter Store API 操作和内容的访问权限。
在以下示例策略中,首先向用户授予对美国东部(俄亥俄)区域 (us-east-2) 中的 Amazon Web Services 账户 123456789012 的所有参数运行 PutParameter
API 操作的访问权限。但随后,限制用户更改现有参数的值,因为显式拒绝了 PutParameter
操作的 Overwrite
选项。换句话说,为其分配了此策略的用户可以创建参数,但不能对现有参数进行更改。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/*" }, { "Effect": "Deny", "Action": [ "ssm:PutParameter" ], "Condition": { "StringEquals": { "ssm:Overwrite": [ "true" ] } }, "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/*" } ] }
使用层次结构管理参数 (Amazon CLI)
此过程介绍了如何通过使用 Amazon CLI 来使用参数和参数层次结构。
使用层次结构管理参数
安装并配置 Amazon Command Line Interface (Amazon CLI)(如果尚未执行该操作)。
有关信息,请参阅安装或更新 Amazon CLI 的最新版本。
-
运行以下命令创建一个使用
allowedPattern
参数和String
参数类型的参数。本示例中的允许模式表示参数的值必须为 1 到 4 个数字。该命令返回参数的版本号。
-
执行以下命令尝试用新值覆盖您刚刚创建的参数。
系统会返回以下错误,因为新值不满足您在上一步骤中指定的允许模式的要求。
An error occurred (ParameterPatternMismatchException) when calling the PutParameter operation: Parameter value, cannot be validated against allowedPattern: \d{1,4}
-
运行以下命令,创建使用 Amazon 托管式密钥的
SecureString
参数。本示例中的允许模式表示用户可以指定任意字符,并且值必须在 8 到 20 个字符之间。 -
运行以下命令创建多个使用上一步骤中的层次结构的参数。
-
运行以下命令获取两个参数的值。
-
运行以下命令查询单个级别内的所有参数。
-
运行以下命令删除两个参数。