如何使用 aws java SDK 从子网 ID 获取 VPC id?
Posted
技术标签:
【中文标题】如何使用 aws java SDK 从子网 ID 获取 VPC id?【英文标题】:How to get the VPC id from subnet ID using aws java SDK? 【发布时间】:2017-12-03 10:57:07 【问题描述】:有一个现有的子网,比如子网 11223344。在我的代码中,我想知道它所属的 VPC。
我指的是java SDKhttp://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/ec2/model/Subnet.html
// I am not sure if this actually refres to a subnet that I want
Subnet subnet = new Subnet().withSubnetId("subnet-11223344");
String vpcId = subnet.getVpcId();
System.out.println("VPC id"+vpcId);
这将返回 null。
【问题讨论】:
我认为您需要使用这些“描述操作”docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/… 和 docs.aws.amazon.com/AWSEC2/latest/APIReference/… 如何为此创建子网(具有现有 Id )? 您需要创建您设置子网ID 的“DescribeSubnetRequest”对象。这是一个例子programcreek.com/java-api-examples/… 您的代码在内存中本地创建一个空的子网对象,然后修改该本地对象的子网 ID。调用 EC2 服务来检索您刚刚设置的 ID 的实际子网并没有在幕后发生什么魔法。由于 Subnet() 构造函数根本没有设置任何属性值,因此子网的所有其他属性(包括 vpcid)将为 null(或对于非对象类型为零)。 【参考方案1】:这是ProgramCreek提供的通用解决方案示例:
public List<Subnet> getSubnets(List<String> subnetIds, AmazonEC2 ec2Client)
DescribeSubnetsRequest request = new DescribeSubnetsRequest();
if (subnetIds != null && !subnetIds.isEmpty())
request = request.withSubnetIds(subnetIds);
DescribeSubnetsResult result = ec2Client.describeSubnets(request);
return result.getSubnets();
【讨论】:
以上是关于如何使用 aws java SDK 从子网 ID 获取 VPC id?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 IAM 角色通过 aws sdk (java) 从 ECS 容器调用 s3 存储桶
如何使用 AWS java SDK 使用 AWS 粘合作业生成自动脚本