首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Python3滤波输出

用Python3滤波输出
EN

Stack Overflow用户
提问于 2018-11-01 20:32:52
回答 1查看 30关注 0票数 0

我有一个脚本,它使用boto3循环我所有的AWS帐户,从我拥有的每个AWS帐户中获得一个CloudTrail跟踪列表。我遇到的问题是,这些跟踪是使用StackSets进行的,所以所有的名称都是动态的。因此,当我尝试按跟踪名进行筛选时,进入每个帐户并手动查找名称并不是可伸缩的,因为我拥有很多帐户。当我运行我的脚本时,我看到了我想要的路径名,但是我如何去过滤这个特定的路径名呢?下面是我的代码和输出。

CODE:

代码语言:javascript
复制
import boto3

def get_sts_token(**kwargs):
    role_arn = kwargs['RoleArn']
    region_name = kwargs['RegionName']
    sts = boto3.client(
        'sts',
    region_name=region_name,
    )
    token = sts.assume_role(
        RoleArn=role_arn,
        RoleSessionName='GetInstances',
        DurationSeconds=900,
    )
    return token["Credentials"]

def get_acct_nums():
    region_name = 'us-east-1'

    dynamo = boto3.client('dynamodb')
    dynamo_response = dynamo.scan(TableName='AllAccountNums')

    for item in dynamo_response['Items']:
        account = item['Accounts']['S']

        role_arn = "arn:aws:iam: 
    {}:role/ExecutionRole".format(account)
        tokens = get_sts_token(RoleArn=role_arn, RegionName=region_name)

        access_key = tokens['AccessKeyId']
        secret_key = tokens['SecretAccessKey']      
        session_token = tokens['SessionToken']

        ctrail = boto3.client('cloudtrail',
            aws_access_key_id=access_key,
            aws_secret_access_key=secret_key,
            aws_session_token=session_token)

        ctrail_response = ctrail.describe_trails()

        for trail in ctrail_response['trailList']:
            trail_name = trail['Name']

            print(trail_name)

get_acct_nums()

Output:

代码语言:javascript
复制
StackSet-trail-56ab8f59-F7VFM147fe3

cloud-trail-7327093746523

StackSet-trail-03353e-1HLJF22QI1Dw2

cloud-trail-5702290092543

等等

我只想要这一行输出:StackSet-trail-xxxx-yyyy (并不总是第一行)。

EN

Stack Overflow用户

回答已采纳

发布于 2018-11-01 20:35:46

这将只给出第一个元素的名称,而不是遍历所有元素。

代码语言:javascript
复制
ctrail_response['trailList'][0]['Name']

但是,如果只想使用StackSet-trail的第一行:

代码语言:javascript
复制
for trail in ctrail_response['trailList']:
    trail_name = trail['Name']
    if 'StackSet-trail' in trail_name:
        print(trail_name)
        break   # remove this if you want all StackSet-trail to appear
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53108953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档