使用boto3通过subnet_id查找route_table_id

时间:2016-06-20 23:58:55

标签: python amazon-ec2 boto3

我试图找出如何使用boto3基于subnet_id(在vpc中)找到route_table_id。 boto3(v1.3.1)中有api,ec2.RouteTableAssociation(id)。使用正确的route_table_association_id,尝试访问资源的属性route_table_id,它会给出异常,如下所示:

In [19]: rta.route_table_id
---------------------------------------------------------------------------
ResourceLoadException                     Traceback (most recent call last)
<ipython-input-19-a7f51e66ef03> in <module>()
----> 1 rta.route_table_id

/usr/local/lib/python2.7/site-packages/boto3/resources/factory.pyc in property_loader(self)
    341                 else:
    342                     raise ResourceLoadException(
--> 343                         '{0} has no load method'.format(self.__class__.__name__))
    344
    345             return self.meta.data.get(name)

ResourceLoadException: ec2.RouteTableAssociation has no load method

我正在寻找线索失败的原因。

詹姆斯

2 个答案:

答案 0 :(得分:3)

想办法这样做:

response = client.describe_route_tables(
    Filters=[
        {
            'Name': 'association.subnet-id',
            'Values': [
                source_subnet_id
            ]
        }
    ]
)


print(response['RouteTables'][0]['Associations'][0]['RouteTableId'])

答案 1 :(得分:0)

试试describe_route_tables

所有必填信息均在响应的JSON [&#39; RouteTables&#39;] [*] [&#34; Associations&#34;]