vin*_*x86 6 amazon-ec2 amazon-web-services amazon-vpc aws-cli
启动新账户时,Amazon 会创建一个新的默认 VPC,其中包含 3 个子网、1 个安全组、1 个 ACL 和 1 个互联网网关。我想删除默认的 vpc 和与之关联的对象。我可以通过控制台来做到这一点,但我想通过 aws cli 来实现这一点,但我被卡住了。
当我尝试以下命令时:
aws ec2 delete-vpc --vpc-id $VpcId
Run Code Online (Sandbox Code Playgroud)
控制台返回 DependencyViolation 错误:
调用DeleteVpc操作时出现客户端错误(DependencyViolation):vpc 'vpc-13f53076'有依赖关系,无法删除。
所以我试图删除依赖项,但它并不适用于所有人!
对于互联网网关,我遇到了同样的错误:
调用 DeleteInternetGateway 操作时发生客户端错误 (DependencyViolation):internetGateway 'igw-d0f51bb5' 具有依赖关系,无法删除。
对于默认安全组。我收到以下错误:
调用DeleteSecurityGroup操作时出现客户端错误(CannotDelete):指定组:“sg-acca7bc”名称:“default”不能被用户删除
对于默认 ACL,我收到以下错误:
调用DeleteNetworkAcl操作时出现客户端错误(InvalidParameterValue):无法删除默认网络ACL acl-d3ba77b6
这是一个新账户,之前没有创建任何东西,除了亚马逊创建的默认 vpc。任何在正确方向上的帮助或指示将不胜感激。
Cod*_*Tao 10
我需要遍历并删除所有区域的所有默认 VPC,并为其编写了一个脚本。可能会节省别人一些时间。需要 aws cli 和 'jq'。
#/usr/bin/env bash
export REGIONS=$(aws ec2 describe-regions | jq -r ".Regions[].RegionName")
for region in $REGIONS; do
# list vpcs
echo $region
aws --region=$region ec2 describe-vpcs | jq ".Vpcs[]|{is_default: .IsDefault, cidr: .CidrBlock, id: .VpcId} | select(.is_default)"
done
read -p "Are you sure? " -n 1 -r
echo # (optional) move to a new line
if [[ $REPLY =~ ^[Yy]$ ]]
then
for region in $REGIONS ; do
echo "Killing $region"
# list vpcs
export IDs=$(aws --region=$region ec2 describe-vpcs | jq -r ".Vpcs[]|{is_default: .IsDefault, id: .VpcId} | select(.is_default) | .id")
for id in "$IDs" ; do
if [ -z "$id" ] ; then
continue
fi
# kill igws
for igw in `aws --region=$region ec2 describe-internet-gateways | jq -r ".InternetGateways[] | {id: .InternetGatewayId, vpc: .Attachments[0].VpcId} | select(.vpc == \"$id\") | .id"` ; do
echo "Killing igw $region $id $igw"
aws --region=$region ec2 detach-internet-gateway --internet-gateway-id=$igw --vpc-id=$id
aws --region=$region ec2 delete-internet-gateway --internet-gateway-id=$igw
done
# kill subnets
for sub in `aws --region=$region ec2 describe-subnets | jq -r ".Subnets[] | {id: .SubnetId, vpc: .VpcId} | select(.vpc == \"$id\") | .id"` ; do
echo "Killing subnet $region $id $sub"
aws --region=$region ec2 delete-subnet --subnet-id=$sub
done
echo "Killing vpc $region $id"
aws --region=$region ec2 delete-vpc --vpc-id=$id
done
done
fi
Run Code Online (Sandbox Code Playgroud)
尝试从AWS仪表板中删除,它可能会给出更详细的错误。
为什么要删除默认 VPC?
| 归档时间: |
|
| 查看次数: |
4996 次 |
| 最近记录: |