You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AWS CLI的aws ec2 create-tags为多资源同标签设不同值

问题

如果有一批EC2实例ID,要统一修改Name标签可以用这个命令:

aws ec2 create-tags --resources i-0ba60d097b9a4aebc i-051a64ccc686602e3 i-09c6265c16961a7a0 --tags Key=Name,Value=newname

这个命令会把三个实例的Name标签都改成newname。但如果想给每个实例分别设置newname1、newname2、newname3不同的值,直接多次使用--resources和--tags的语法是错误的:

aws ec2 create-tags --resources i-0ba60d097b9a4aebc --tags Key=Name,Value=newname1 --resources i-051a64ccc686602e3 --tags Key=Name,Value=newname2 --resources i-09c6265c16961a7a0 --tags Key=Name,Value=newname3

现在需要实现给每个实例单独设置不同Name标签,但不想为每个实例单独调用aws ec2 create-tags命令,该怎么做?

解决方案

方法1:使用--cli-input-json传入JSON配置

AWS CLI支持通过JSON格式一次性指定多个资源和对应的标签,可在单次命令中完成所有设置。

方式A:通过JSON文件传入

创建一个名为tags-config.json的文件,内容如下:

{
  "Resources": [
    "i-0ba60d097b9a4aebc",
    "i-051a64ccc686602e3",
    "i-09c6265c16961a7a0"
  ],
  "Tags": [
    {
      "Key": "Name",
      "Value": "newname1",
      "ResourceId": "i-0ba60d097b9a4aebc"
    },
    {
      "Key": "Name",
      "Value": "newname2",
      "ResourceId": "i-051a64ccc686602e3"
    },
    {
      "Key": "Name",
      "Value": "newname3",
      "ResourceId": "i-09c6265c16961a7a0"
    }
  ]
}

执行命令:

aws ec2 create-tags --cli-input-json file://tags-config.json

方式B:直接在命令行传入JSON字符串

适合实例数量较少的场景,直接把JSON内容写在命令里:

aws ec2 create-tags --cli-input-json '{
  "Resources": ["i-0ba60d097b9a4aebc", "i-051a64ccc686602e3", "i-09c6265c16961a7a0"],
  "Tags": [
    {"Key": "Name", "Value": "newname1", "ResourceId": "i-0ba60d097b9a4aebc"},
    {"Key": "Name", "Value": "newname2", "ResourceId": "i-051a64ccc686602e3"},
    {"Key": "Name", "Value": "newname3", "ResourceId": "i-09c6265c16961a7a0"}
  ]
}'

方法2:Shell循环拼接参数(单次命令执行)

在Bash环境下,可以通过循环拼接命令参数,再单次调用aws ec2 create-tags:

# 定义实例ID和对应名称的数组
INSTANCES=("i-0ba60d097b9a4aebc" "i-051a64ccc686602e3" "i-09c6265c16961a7a0")
NAMES=("newname1" "newname2" "newname3")

# 循环拼接参数
PARAMS=""
for index in "${!INSTANCES[@]}"; do
  PARAMS="$PARAMS --resources ${INSTANCES[$index]} --tags Key=Name,Value=${NAMES[$index]}"
done

# 执行命令
aws ec2 create-tags $PARAMS

注意:这种方法存在命令行参数长度限制,若实例数量较多,建议优先使用方法1的JSON配置方式。


内容的提问来源于stack exchange,提问作者sriganesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 04:50:44