英文:
ValidationException while executing bash
问题
Here i am trying to retrieve latest ami id for k8s worker node.
我在尝试检索最新的 K8s 工作节点 AMI ID。
i have written a bash script for the same, every time i run this script it return errors.
我编写了一个相同的 bash 脚本,每次运行它都会返回错误。
Please set VERSION=v1.23 before running script
请在运行脚本之前设置 VERSION=v1.23
note: when we run the command individually it works.
注意:当我们单独运行命令时,它是有效的。
#!/bin/bash
VERSION=$1
SOURCE_AMI_ID=$(aws ssm get-parameter --name /aws/service/eks/optimized-ami/${VERSION}/amazon-linux-2/recommended/image_id --region us-west-2 --query "Parameter.Value" --output text)
SOURCE_AMI_NAME=$(aws ec2 describe-images --image-ids ${SOURCE_AMI_ID} | jq -r '.Images[0].Name')
AMI_NAME=$(echo "${SOURCE_AMI_NAME}" | sed 's/amazon/kube-infra/g')
jq -n
--arg source_ami_id "${SOURCE_AMI_ID}"
--arg source_ami_name "${SOURCE_AMI_NAME}"
--arg cp_ami_name "${CP_AMI_NAME}"
'{source_ami_id: $source_ami_id, source_ami_name: $source_ami_name, ami_name: $ami_name}'
error:
An error occurred (ValidationException) when calling the GetParameter operation: Parameter name: can't be prefixed with "ssm" (case-insensitive). If formed as a path, it can consist of sub-paths divided by slash symbol; each sub-path can be formed as a mix of letters, numbers and the following 3 symbols .-_
错误:
调用 GetParameter 操作时发生错误(ValidationException):参数名称不能以 "ssm" 为前缀(不区分大小写)。如果形成为路径,则可以由斜杠符号分隔的子路径组成;每个子路径可以由字母、数字和以下 3 个符号 .-_ 的混合形成。
how i am running the above script
% ./build-versions.sh
我如何运行上述脚本:
% ./build-versions.sh
An error occurred (ValidationException) when calling the GetParameter operation: Parameter name: can't be prefixed with "ssm" (case-insensitive). If formed as a path, it can consist of sub-paths divided by slash symbol; each sub-path can be formed as a mix of letters, numbers and the following 3 symbols .-_
发生错误(ValidationException):调用 GetParameter 操作时发生错误:参数名称不能以 "ssm" 为前缀(不区分大小写)。如果形成为路径,则可以由斜杠符号分隔的子路径组成;每个子路径可以由字母、数字和以下 3 个符号 .-_ 的混合形成。
英文:
Here i am trying to retrieve latest ami id for k8s worker node.
i have written a bash script for the same, every time i run this script it return errors.
Please set VERSION=v1.23 before running script
note: when we run the command individually it works.
#!/bin/bash
VERSION=$1
SOURCE_AMI_ID=$(aws ssm get-parameter --name /aws/service/eks/optimized-ami/${VERSION}/amazon-linux-2/recommended/image_id --region us-west-2 --query "Parameter.Value" --output text)
SOURCE_AMI_NAME=$(aws ec2 describe-images --image-ids ${SOURCE_AMI_ID} | jq -r '.Images[0].Name')
AMI_NAME=$(echo "${SOURCE_AMI_NAME}" | sed 's/amazon/kube-infra/g')
jq -n \
--arg source_ami_id "${SOURCE_AMI_ID}" \
--arg source_ami_name "${SOURCE_AMI_NAME}" \
--arg cp_ami_name "${CP_AMI_NAME}" \
'{source_ami_id: $source_ami_id, source_ami_name: $source_ami_name, ami_name: $ami_name}'
error:
An error occurred (ValidationException) when calling the GetParameter operation: Parameter name: can't be prefixed with "ssm" (case-insensitive). If formed as a path, it can consist of sub-paths divided by slash symbol; each sub-path can be formed as a mix of letters, numbers and the following 3 symbols .-_
how i am running the above script
% ./build-versions.sh
An error occurred (ValidationException) when calling the GetParameter operation: Parameter name: can't be prefixed with "ssm" (case-insensitive). If formed as a path, it can consist of sub-paths divided by slash symbol; each sub-path can be formed as a mix of letters, numbers and the following 3 symbols .-_
答案1
得分: 0
请注意
```sh
aws ssm get-parameter \
--name /aws/service/eks/optimized-ami/v1.23/amazon-linux-2/recommended/image_id \
--region us-west-2
给我报错(ParameterNotFound)。我需要使用“1.23”而不是“v1.23”来获取有效的响应,即
aws ssm get-parameter \
--name /aws/service/eks/optimized-ami/1.23/amazon-linux-2/recommended/image_id \
--region us-west-2
下面我假设您还将使用“1.23”。
在这种情况下,在运行脚本之前设置VERSION=1.23
是没有用的。在您的脚本中,VERSION=$1
表示它将VERSION
设置为脚本的第一个参数。因此,您应该运行
./build-versions.sh 1.23
而不是
VERSION=1.23
./build-versions.sh
如果您真的想在脚本之外设置它,那么您需要使用export VERSION=1.23
进行设置,并删除VERSION=$1
行。
<details>
<summary>英文:</summary>
Note that
```sh
aws ssm get-parameter \
--name /aws/service/eks/optimized-ami/v1.23/amazon-linux-2/recommended/image_id \
--region us-west-2
Gives me error (ParameterNotFound). I need to use "1.23" instead of "v1.23" to get a valid response, namely
aws ssm get-parameter \
--name /aws/service/eks/optimized-ami/1.23/amazon-linux-2/recommended/image_id \
--region us-west-2
Below I assume you will also use "1.23".
Setting VERSION=1.23
before running the script is not useful in this case. In your script, VERSION=$1
, which means it sets VERSION
to the first argument of the script. Hence, you should run
./build-versions.sh 1.23
Instead of
VERSION=1.23
./build-versions.sh
If you really want to set it outside of your script, then you need to set it with export VERSION=1.23
, and remove the VERSION=$1
line.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论