簡體   English   中英

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

[英]Is there something different about using AWS CLI commands in Bash?

我正在嘗試編寫一個腳本來標記 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM