AWS SSM放置参数Validation Exception

vij*_*hmi 3 amazon-web-services aws-cli ssm

执行以下命令时出现错误。但是据我所知,语法是正确的。

指令1:

aws ssm put-parameter --name /Finance/Payroll/elixir3131 --value "P@sSwW)rd" --type SecureString
Run Code Online (Sandbox Code Playgroud)

指令2:

aws ssm put-parameter --name "/Finance/Payroll/elixir3131" --value "P@sSwW)rd" --type SecureString
Run Code Online (Sandbox Code Playgroud)

对于我得到的两个命令:

调用PutParameter操作时发生错误(ValidationException):参数名称必须是标准名称。

AWS CLI Version : aws-cli/1.14.16 Python/2.7.9 Windows/7 botocore/1.8.20
Run Code Online (Sandbox Code Playgroud)

Gab*_*oux 35

aws-sdk我使用npm 包遇到了同样的错误:

ValidationException:参数名称必须是完全限定名称。

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

这是一个已确认的工作打字稿示例(假设设置了AWS_PROFILE和env 变量):AWS_REGION

#!/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);
  }
});
Run Code Online (Sandbox Code Playgroud)

响应应如下所示:

{ Version: 1, Tier: 'Standard' }
Run Code Online (Sandbox Code Playgroud)


小智 7

我知道这已经被标记为已回答,但是 --cli-input-json 解决方案对我不起作用,因为我需要传递该值的文件名并将该文件的内容读出到参数中。对我来说,这个问题也出现在 Windows 上的 Git bash 中,问题是因为 Git bash 尝试查找以 / 开头的任何内容,并在其前面放置一个系统路径。我的解决方法是将名称字段用双引号引起来,并在第一个 / 之前放置一个空格,以便 Git Bash 会忽略它。看起来像这样

aws ssm put-parameter --name " /my/parameter/store/path/here" --value "somevalue" --type "SecureString"
Run Code Online (Sandbox Code Playgroud)


小智 6

我在Windows 10上使用Git-Bash遇到了相同的问题

解决此“功能”的一种方法是使用 --cli-input-json

例如

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

这里似乎确实对此功能/问题(以及上述解决方案)进行了一些讨论: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\"}'
Run Code Online (Sandbox Code Playgroud)