2017-04-17 160 views
0

我想使用boto3創建AWS Cross賬戶角色。從控制檯創建角色。但無法使用boto3創建。我有兩個不同的AWS賬戶。我想要使​​用「承擔角色」訪問其他帳戶。爲此,我需要在帳戶1中創建權限,以便帳戶2可以訪問相同的權限。但是,我需要使用boto3 only.I使用該代碼來執行所有功能 -跨賬戶訪問使用boto3爲AWS賬戶創建角色

iam = boto3.client('iam',aws_access_key_id='XXXXX',aws_secret_access_key='YYYY') 
    role = iam.create_role(RoleName=<Role Name>,AssumeRolePolicyDocument='{"Version" : "2012-10-17","Statement": [{"Effect": "Allow","Principal":{"AWS":"arn:aws:iam::<Account ID to which permission is granted>:root"} ,"Action":["sts:AssumeRole" ]}]}') 
    policy = iam.create_policy(PolicyName=<Policy Name>, PolicyDocument='{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": "*","Resource": "*"}]}') 
    policy_arn = policy['Policy']['Arn'] 
    iam.attach_role_policy(PolicyArn=<Policy arn>,RoleName=<Name of the role to which policy need to be attached>) 

可以將此代碼更加優化,可能是較小的通話

+0

歡迎來到StackOverflow!要獲得有用的答案,您需要提供更多詳細信息。請編輯您的問題並添加更多信息,例如您嘗試過的內容(包括代碼示例)以及您遇到的具體問題。此外,您還不清楚「創建AWS跨賬戶角色」的含義 - 請詳細說明這一點嗎? –

回答

0

無需優化。代碼工作正常。

-1

爲了從假設帳戶A的作用賬戶B,這裏是程序。

賬戶A使用以下信任關係創建角色。

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Sid": "", 
     "Effect": "Allow", 
     "Principal": { 
     "AWS": "Root arn of the account B" 
     }, 
     "Action": "sts:AssumeRole" 
    } 
    ] 
} 

將上面的json保存在一個文件中。然後使用上面的信任關係編寫一個函數來創建一個角色。

import boto3 
role_name = "Name of the role" 
client = boto3.client('iam') 
client.create_role(RoleName=role_name, 
        AssumeRolePolicyDocument=trust_relationship()) 

def trust_relationship(self, role_name): 
    with open('json_file_name', 'r') as data_file: 
      trust_relationship = json.load(data_file) 
     return json.dumps(trust_relationship) 

現在,在B賬戶,創建具有以下JSON文件的作用,承擔賬戶A的作用

政策文件:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "", 
      "Effect": "Allow", 
      "Action": [ 
       "sts:AssumeRole", 
     "Any other required actions" 
      ], 
      "Resource": "*" 
     } 
    ] 
} 

現在使用該策略文件附加到賬戶B的角色,然後承擔賬戶A的角色。