在Bash中使用AWS CLI命令有什么不同吗?

问题描述

我正在尝试编写一个脚本来标记AWS VPC。

我已经使用AWS CLI命令对其进行了测试,并且能够传递多个VPC作为参数,并且可以正常工作。

但是当我在脚本中执行相同操作时,我得到了:

调用CreateTags操作时发生错误(InvalidID): ID'vpc-0e452e6bf5585eaeb vpc-0f4ead0bc0625f657'无效

这是成功运行的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 $0 ` vpc1 vpc2 etc"
exit 1
fi

vpcs=$1
tagValues=$2
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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...