在 Bash 中使用 AWS CLI 命令有什么不同吗?
Is there something different about using AWS CLI commands in Bash?
我正在尝试编写脚本来标记 AWS VPC。
我已经使用 AWS CLI 命令对其进行了测试,我能够将多个 VPC 作为参数传递并且它有效。
但是当我在我的脚本中做同样的事情时,我得到了这个:
An error occurred (InvalidID) when calling the CreateTags operation:
The ID ' vpc-0e452e6bf5585eaeb vpc-0f4ead0bc0625f657' is not valid
这是成功运行的 AWS CLI 命令:
aws ec2 create-tags \
--resources vpc-0f4ead0bc0625f657 vpc-0e452e6bf5585eaeb \
--tags Key=lw:managed,Value=False \
Key=lw:managed:puppet,Value=False \
Key=lw:managed:monitoring,Value=False \
Key=lw:managed:os,Value=False \
Key=lw:managed:ssm,Value=False \
Key=lw:managed:backups,Value=False
但我的脚本中的相同命令会引发上述错误。
#!/bin/bash
labelVPC () {
aws ec2 create-tags \
--resources "$vpcs" \
--tags Key=lw:managed,Value=$managed \
Key=lw:managed:puppet,Value=$puppet \
Key=lw:managed:monitoring,Value=$monitored \
Key=lw:managed:os,Value=$os \
Key=lw:managed:ssm,Value=$ssm \
Key=lw:managed:backups,Value=$backups
exit
}
if [ $# -ne 2 ]
then
echo "You supplied wrong arguments"
echo "example : `basename [=12=] ` vpc1 vpc2 etc"
exit 1
fi
vpcs=
tagValues=
managed=$(printf "${tagValues}" | cut -d':' -f1)
puppet=$(printf "${tagValues}" | cut -d':' -f2)
monitored=$(printf "${tagValues}" | cut -d':' -f3)
os=$(printf "${tagValues}" | cut -d':' -f4)
ssm=$(printf "${tagValues}" | cut -d':' -f5)
backups=$(printf "${tagValues}" | cut -d':' -f6)
labelVPC
这就是我 运行 脚本的方式:
./vpc-tagging-v3.sh "vpc-0e452e6bf5585eaeb vpc-0f4ead0bc0625f657" True:False:True:True:True
您正在将单个参数传递给 `resources:
--resources "$vpcs"
删除引号
--resources $vpcs
我正在尝试编写脚本来标记 AWS VPC。
我已经使用 AWS CLI 命令对其进行了测试,我能够将多个 VPC 作为参数传递并且它有效。
但是当我在我的脚本中做同样的事情时,我得到了这个:
An error occurred (InvalidID) when calling the CreateTags operation: The ID ' vpc-0e452e6bf5585eaeb vpc-0f4ead0bc0625f657' is not valid
这是成功运行的 AWS CLI 命令:
aws ec2 create-tags \
--resources vpc-0f4ead0bc0625f657 vpc-0e452e6bf5585eaeb \
--tags Key=lw:managed,Value=False \
Key=lw:managed:puppet,Value=False \
Key=lw:managed:monitoring,Value=False \
Key=lw:managed:os,Value=False \
Key=lw:managed:ssm,Value=False \
Key=lw:managed:backups,Value=False
但我的脚本中的相同命令会引发上述错误。
#!/bin/bash
labelVPC () {
aws ec2 create-tags \
--resources "$vpcs" \
--tags Key=lw:managed,Value=$managed \
Key=lw:managed:puppet,Value=$puppet \
Key=lw:managed:monitoring,Value=$monitored \
Key=lw:managed:os,Value=$os \
Key=lw:managed:ssm,Value=$ssm \
Key=lw:managed:backups,Value=$backups
exit
}
if [ $# -ne 2 ]
then
echo "You supplied wrong arguments"
echo "example : `basename [=12=] ` vpc1 vpc2 etc"
exit 1
fi
vpcs=
tagValues=
managed=$(printf "${tagValues}" | cut -d':' -f1)
puppet=$(printf "${tagValues}" | cut -d':' -f2)
monitored=$(printf "${tagValues}" | cut -d':' -f3)
os=$(printf "${tagValues}" | cut -d':' -f4)
ssm=$(printf "${tagValues}" | cut -d':' -f5)
backups=$(printf "${tagValues}" | cut -d':' -f6)
labelVPC
这就是我 运行 脚本的方式:
./vpc-tagging-v3.sh "vpc-0e452e6bf5585eaeb vpc-0f4ead0bc0625f657" True:False:True:True:True
您正在将单个参数传递给 `resources:
--resources "$vpcs"
删除引号
--resources $vpcs