AWS SSM 放置参数验证异常

AWS SSM put parameter Validation Exception

执行以下命令时出现错误。但据我用谷歌搜索,我发现语法是正确的。

命令 1:

aws ssm put-parameter --name /Finance/Payroll/elixir3131 --value "P@sSwW)rd" --type SecureString

命令 2:

aws ssm put-parameter --name "/Finance/Payroll/elixir3131" --value "P@sSwW)rd" --type SecureString

对于我得到的两个命令:

An error occurred (ValidationException) when calling the PutParameter operation: Parameter name must be a fully qualified name.

AWS CLI Version : aws-cli/1.14.16 Python/2.7.9 Windows/7 botocore/1.8.20

我试过你的两个命令。 Windows 10 x64 Pro 没有问题。

AWS Systems Manager 最近发生了很大变化。我会升级您的 AWS CLI 版本并重试。您的版本发布于 Dec-22-2017。当前版本为 1.16.38 (10-19-2018)。

aws-cli/1.16.15 Python/3.6.1 Windows/10 botocore/1.12.5

Installing the AWS Command Line Interface

我在 Windows 10

上使用 Git-Bash 时遇到了同样的问题

解决此 'feature' 的一种方法是使用 --cli-input-json

例如

aws ssm put-parameter --cli-input-json '{"name": "/Finance/Payroll/elixir3131", "value": "P@sSwW)rd", "type": "SecureString"}'

这里似乎确实有一些关于此 feature/issue(以及上述解决方案)的讨论: https://github.com/aws/aws-cli/issues/2507

编辑: 这是正确的命令:

aws ssm put-parameter --cli-input-json '{\"Name\": \"/Finance/Payroll/elixir3131d\", \"Value\": \"P@sSwW)rd\", \"Type\": \"SecureString\"}'

None 命令 对我有用,但是

aws ssm put-parameter --cli-input-json '{"Name": "/Finance/Payroll/elixir3131", "Value": "P@sSwW)rd", "Type": "SecureString"}'

做了。

此命令与该答案中的第一个命令相同,但“名称”、“值”和“类型”大写。

我在使用 aws-sdk npm package:

时遇到了同样的错误

ValidationException: Parameter name must be a fully qualified name.

如果Name参数包含/,它也必须以/开头。

这是一个经过确认的工作打字稿示例(假设设置了 AWS_PROFILEAWS_REGION env 变量):

#!/usr/bin/env ts-node

import * as AWS from 'aws-sdk'

const secret = {
  Name: "/Finance/Payroll/elixir3131",
  Value: "P@sSwW)rd",
  Type: "SecureString"
}

const ssm = new AWS.SSM()

ssm.putParameter(secret, (err, data) => {
  if (err) {
    console.log(err, err.stack);
  } else {
    console.log(data);
  }
});

响应应如下所示:

{ Version: 1, Tier: 'Standard' }