处理 Parameter Store 中的参数版本 - AWS Systems Manager

处理 Parameter Store 中的参数版本

每次编辑参数的值时,Parameter Store(AWS Systems Manager 的一项功能)都会创建参数的新版本并保留以前的版本。在最初创建一个参数时,Parameter Store 为该参数分配版本 1。更改参数的值后,Parameter Store 会自动将版本号增加 1。您可以在参数的历史记录中查看所有版本的详细信息(包括值)。

您还可以指定要在 API 命令和 SSM 文档中使用的参数的版本;例如:ssm:MyParameter:3。您可以在 API 调用和 SSM 文档中指定参数名和特定版本号。如果不指定版本号,系统自动使用最新版本。如果您为不存在的版本指定编号,则系统将返回错误,而不会回退到该参数的最新或默认版本。

您可以使用参数版本查看一段时间内更改参数的次数。此外,参数版本提供了一层保护,以防止参数值被意外更改。

您最多可以为一个参数创建和维护 100 个版本。在创建了 100 个参数版本后,每次创建新版本时,都会从历史记录中删除参数的最旧版本,以便为新版本腾出空间。

此情况的一个例外是历史记录中已经有 100 个参数版本,并且参数标签被分配给参数的最旧版本。在这种情况下,不会从历史记录中删除该版本,创建新参数版本的请求将失败。此保护措施旨在防止分配有任务关键型标签的参数版本被删除。要继续创建新参数,请首先将标签从参数的最旧版本移至较新版本,以便在操作中使用。有关移动参数标签的信息,请参阅 使用控制台来移动参数标签使用 AWS CLI 来移动参数标签

以下过程介绍了如何编辑参数,并验证是否已创建新版本。您可以使用 get-parameterget-parameters 命令查看参数版本。有关使用这些命令的示例,请参阅《AWS Systems Manager API 参考》中的 GetParameterGetParameters

使用控制台创建参数的新版本

您可以使用 Systems Manager 控制台创建参数的新版本并查看参数的版本历史记录。

创建参数的新版本
  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 AWS Systems Manager 控制台。

  2. 在导航窗格中,选择 Parameter Store

  3. 选择之前创建的参数的名称。有关创建新参数的信息,请参阅 在 Systems Manager 中创建 Parameter Store 参数

  4. 选择编辑

  5. Value (值) 框中输入新的值,然后选择 Save changes (保存更改)

  6. 选择刚刚更新的参数的名称。在 Overview 选项卡上,验证版本号是否增加 1,并验证新值。

  7. 要查看参数的所有版本的历史记录,请选择 History (历史记录) 选项卡。

引用参数版本

可以使用以下格式,在命令、API 调用和 SSM 文档中引用特定的参数版本:ssm:parameter-name:version-number

在以下示例中,Amazon Elastic Compute Cloud (Amazon EC2) run-instances command 使用参数 golden-ami 的版本 3。

Linux & macOS
aws ec2 run-instances \ --image-id resolve:ssm:/golden-ami:3 \ --count 1 \ --instance-type t2.micro \ --key-name my-key-pair \ --security-groups my-security-group
Windows
aws ec2 run-instances ^ --image-id resolve:ssm:/golden-ami:3 ^ --count 1 ^ --instance-type t2.micro ^ --key-name my-key-pair ^ --security-groups my-security-group
注意

使用 resolve 和参数值仅适用于 --image-id 选项和包含 Amazon Machine Image (AMI) 作为其值的参数。有关更多信息,请参阅 在 Parameter Store 中为 Amazon Machine Image ID 使用本机参数支持

以下是有关在 SSM 文档中指定名为 MyRunCommandParameter 的参数的版本 2 的示例。

YAML
--- schemaVersion: '2.2' description: Run a shell script or specify the commands to run. parameters: commands: type: String description: "(Required) Specify a shell script or a command to run." displayType: textarea default: "{{ssm:MyRunCommandParameter:2}}" mainSteps: - action: aws:runShellScript name: RunScript inputs: runCommand: - "{{commands}}"
JSON
{ "schemaVersion": "2.2", "description": "Run a shell script or specify the commands to run.", "parameters": { "commands": { "type": "String", "description": "(Required) Specify a shell script or a command to run.", "displayType": "textarea", "default": "{{ssm:MyRunCommandParameter:2}}" } }, "mainSteps": [ { "action": "aws:runShellScript", "name": "RunScript", "inputs": { "runCommand": [ "{{commands}}" ] } } ] }