簡體   English   中英

使用Athena和boto3切換IAM用戶角色

[英]Switching IAM-user roles with Athena and boto3

我正在使用boto3編寫一個python程序,該程序可以捕獲主帳戶提出的所有查詢,並將其推送到所有主帳戶的子帳戶。

從主實例獲取查詢ID已經完成,但是我很難將它們推到子帳戶中。 默認情況下,使用我的身份驗證信息,AWS將連接到主帳戶,但是我無法弄清楚如何使其連接到子帳戶。 通常,AWS服務通過切換角色來做到這一點,但是Athena對此沒有內置的方法。 我可以手動創建不同的配置文件,但是不確定在代碼執行過程中如何手動切換它們

這是Amazon用於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指示我要訪問其中一個子帳戶。 只是名稱,還是我需要其他一些參數? 我認為我無法(或不需要)為此生成單獨的身份驗證令牌

我通過使用新的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM