zcloudScript/saveEbs.sh
2025-11-24 15:03:47 +08:00

54 lines
1.4 KiB
Bash

#!/bin/bash
# 获取所有可用的 region
regions=$(aws ec2 describe-regions --query 'Regions[*].RegionName' --output text)
# regions=ap-south-1
for region in $regions; do
echo "=== Processing region: $region ==="
# 获取当前 region 的实例 ID 列表
instance_ids=$(aws ec2 describe-instances \
--region $region \
--query 'Reservations[*].Instances[*].InstanceId' \
--output text)
for instance_id in $instance_ids; do
echo "---- Instance: $instance_id ----"
# 获取该实例的全部 EBS block device mapping
devices=$(aws ec2 describe-instances \
--region $region \
--instance-ids $instance_id \
--query 'Reservations[0].Instances[0].BlockDeviceMappings[*].DeviceName' \
--output text)
for device in $devices; do
echo "Setting DeleteOnTermination=false for $instance_id ($device)"
# 创建临时 JSON 文件
tmpfile=$(mktemp)
cat > $tmpfile <<EOF
[
{
"DeviceName": "$device",
"Ebs": {
"DeleteOnTermination": false
}
}
]
EOF
# 修改属性
aws ec2 modify-instance-attribute \
--region $region \
--instance-id $instance_id \
--block-device-mappings file://$tmpfile
rm -f $tmpfile
done
done
done
echo "All instances processed."