繁体   English   中英

在 boto3 中使用 RDS 标签/如何在 boto3 中获取 ARN

[英]Work with RDS Tags in boto3 / How to get ARN in boto3

我尝试使用 python 在 AWS 中标记各种对象。 AFAIK 某些服务无法使用 boto。 因此,我决定看看boto3。 我已经堆积在 RDS 上了。 根据文档,add_tags_to_resource 方法需要一个资源 ARN。 我看不到获得它的方法。

为了解决上述问题,我想到了自己创建 ARN。 毕竟这不是那么难 - RDS 标记文档 但还有一个问题。 在我的脚本中,我不能保证知道帐号,所以我想知道如何获取帐号以自己创建 ARN。

我想知道如何获得帐号

不幸的是,这并不容易找到。 但是你可以有一些技巧:

如果您有权访问某些 API 调用,则可以获取安全组或 AMI 并检查 OwnerId。

>>> import boto3
>>> client = boto3.client('ec2')
>>> client.describe_security_groups()['SecurityGroups'][0]['OwnerId']
'1234567890'

只有当您可以保证 SG 或 AMI 是由您要查找的帐户创建时,此技巧才有效。

或者

使用对 IAM 的 API 调用并解析您自己的角色或用户的 ARN

>>> client = boto3.client('iam')
>>> client.get_user()['User']['Arn'].split(':')[4]

将您的 boto3 升级到最新版本,它现在返回一个新属性DBInstanceArn

http://boto3.readthedocs.io/en/latest/reference/services/rds.html#RDS.Client.describe_db_instances

使用 boto3,您可以使用此代码获取 db arn....

from boto3 import client
REGION = "us-east-1"
INSTANCES = ["db-name-01"]

rds = client("rds", region_name=REGION)

if INSTANCES:
    for instance in INSTANCES:
        instance_counts = {}
        response = rds.describe_db_instances(DBInstanceIdentifier=instance)
        dbins = response['DBInstances']
        dbin = dbins[0]
        dbarn = dbin['DBInstanceArn']

你可以从

rds_dict = self.rds_client.describe_db_instances()

如果您遍历rds_dict您将获得一个名为DBInstanceArn的键

我为此使用 boto3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM