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

如何使用AWS Ruby SDK 3列出AWS账户中的所有VPC?

使用AWS Ruby SDK列出所有VPC的正确方法

前提准备

  • 安装AWS SDK for Ruby v3:

    gem install aws-sdk-ec2
    

    或者在Gemfile中添加:

    gem 'aws-sdk-ec2'
    

    然后执行bundle install

  • 配置AWS凭证:可通过以下方式之一:

    • 设置环境变量AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY
    • 在~/.aws/credentials文件中配置凭证
    • 若在AWS EC2/EKS等资源上运行,直接使用IAM角色权限

核心代码实现

使用Aws::EC2::Client的describe_vpcs方法即可获取账户下的VPC列表,示例代码:

require 'aws-sdk-ec2'

# 初始化EC2客户端(若未指定区域,会使用默认配置或环境变量中的AWS_REGION)
ec2_client = Aws::EC2::Client.new(region: 'us-east-1')

# 调用describe_vpcs获取所有VPC
response = ec2_client.describe_vpcs

# 遍历并输出VPC信息
response.vpcs.each do |vpc|
  puts "VPC ID: #{vpc.vpc_id}"
  puts "CIDR块: #{vpc.cidr_block}"
  puts "状态: #{vpc.state}"
  puts "-------------------------"
end

跨区域获取所有VPC

如果需要获取账户下所有区域的VPC,可先获取所有可用区域,再逐个区域调用:

require 'aws-sdk-ec2'

# 先获取所有AWS区域
ec2_global = Aws::EC2::Client.new(region: 'us-east-1')
regions = ec2_global.describe_regions.regions.map(&:region_name)

regions.each do |region|
  puts "\n=== 区域: #{region} ==="
  ec2_client = Aws::EC2::Client.new(region: region)
  begin
    response = ec2_client.describe_vpcs
    if response.vpcs.empty?
      puts "该区域无VPC"
    else
      response.vpcs.each do |vpc|
        puts "VPC ID: #{vpc.vpc_id}, CIDR: #{vpc.cidr_block}"
      end
    end
  rescue Aws::EC2::Errors::AccessDenied
    puts "无该区域权限"
  end
end

关键说明

  • describe_vpcs支持过滤条件,比如按标签、CIDR块等筛选,示例:
    response = ec2_client.describe_vpcs(filters: [{ name: 'tag:Name', values: ['prod-vpc'] }])
    
  • 确保你的AWS凭证拥有ec2:DescribeVpcs权限,否则会返回权限错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:15:43