【问题标题】:Switching IAM-user roles with Athena and boto3使用 Athena 和 boto3 切换 IAM 用户角色
【发布时间】:2019-05-06 23:02:05
【问题描述】:

我正在使用 boto3 编写一个 python 程序,它可以抓取主账户的所有查询并将它们推送到主账户的所有子账户。

从主实例获取查询 ID 已完成,但我无法将它们推送到子帐户。使用我的身份验证信息,AWS 默认连接到主账户,但我不知道如何让它连接到子账户。通常,AWS 服务通过切换角色来做到这一点,但 Athena 并没有为此提供内置方法。我可以手动创建不同的配置文件,但我不确定如何在代码执行过程中手动切换它们

这里是亚马逊的 STS 切换代码示例,它确实支持假设不同的角色https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-api.html

这是我的程序到目前为止的样子

#!/usr/bin/env python3
import boto3

dev = boto3.session.Session(profile_name='dev')
#Function for executing athena queries
client = dev.client('athena')
s3_input = 's3://dev/test/'
s3_output = 's3://dev/testOutput'
database = 'ex_athena_db'
table = 'test_data'

response = client.list_named_queries(
    MaxResults=50,
    WorkGroup='primary'
)
print response

所以我有“开发”配置文件,但我不确定如何区分此配置文件以向 AWS 表明我想访问其中一个子账户。它只是名称,还是我需要其他参数?我认为我不能(或不需要)为此生成单独的身份验证令牌

【问题讨论】:

    标签: python amazon-web-services api boto3 amazon-iam


    【解决方案1】:

    我通过使用新 ARN 为子帐户创建新用户配置文件解决了这个问题

    示例配置

    [default]
    region = us-east-1
    [profile ecr-dev]
    role_arn = arn:aws:iam::76532435:role/AccountRole
    source_profile = default
    

    示例代码

    #!/usr/bin/env python3
    import boto3
    
    dev = boto3.session.Session(profile_name='name', region_name="us-east-1")
    #Function for executing athena queries
    client = dev.client('athena')
    s3_input = 's3:/test/'
    s3_output = 's3:/test'
    database = 'ex_athena_db'
    
    response = client.list_named_queries(
        MaxResults=50,
        WorkGroup='primary'
    )
    print response
    

    【讨论】:

    猜你喜欢
    • 2017-12-24
    • 2018-06-26
    • 2017-07-27
    • 2023-04-03
    • 2016-11-01
    • 2020-05-26
    • 2018-10-26
    • 2022-12-01
    • 2018-02-22
    相关资源
    最近更新 更多