2017-09-07 15 views
0

アカウントにすべてのロールをリストすると、ポリシーを添付できます。私はboto3のドキュメントを読んでいますが、私はアカウントのロールのコレクションを返すメソッドを見ていません。AWS Botoすべてのロールを表示

これは可能ですか?

+0

関連するAPIがboto3 IAMの下にあるため、見つからない場合があります。また、一般的なAPIのアクセスキーにはIAMを扱う権利が与えられていません。これを行うには、IAMアクセス権を付与する必要があります。 http://boto3.readthedocs.io/en/latest/reference/services/iam.html – mootmoot

答えて

0

ここで私が思いついたのです。 CAPS値を実際の値に置き換えます。

は、アカウント内のすべてのロールにあなたの質問を1として

#!/usr/bin/env python 
# Author: Nick Skitch 

import boto3 
import json 


def main(): 

    boto3.setup_default_session(profile_name=PROFILE_NAME) 
    client = boto3.client('iam') 
    policy_document = get_policy_body(IAM_POLICY_JSON) 

    roles = get_roles(client) 

    for role in roles: 
     update_role(role,client,"required_tags",policy_document) 

def get_policy_body(data_file): 
    with open(data_file) as data_file: 
     data = data_file.read() 
    return data 

def update_role(role_name, client,iam_policy_name,policy_document): 
    response = client.put_role_policy(
    RoleName=role_name, 
    PolicyName=iam_policy_name, 
    PolicyDocument=policy_document 
    ) 

    print response 

def get_roles(client): 
    client = boto3.client('iam') 
    response = None 
    role_names = [] 
    marker = None 

    # By default, only 100 roles are returned at a time. 
    # 'Marker' is used for pagination. 
    while (response is None or response['IsTruncated']): 
     # Marker is only accepted if result was truncated. 
     if marker is None: 
      response = client.list_roles() 
     else: 
      response = client.list_roles(Marker=marker) 

     roles = response['Roles'] 
     for role in roles: 
      print(role['Arn']) 
      role_names.append(role['RoleName']) 

     if response['IsTruncated']: 
      marker = response['Marker'] 

    return role_names 



if __name__ == "__main__": 
    main() 
1

をインラインポリシーを付加 - あなたはロールにポリシーを付加する必要があります。 まず、アカウントからすべての役割を取得しています。 特定の役割にポリシーを添付するには、以下の2つのことが必要な場合があります。コードの下

  • 役割名
  • アーン

私はIAMの接続を行うと、アカウントからすべてのロールを取得していますyou-が助けることができます。 DictsとArrayの形式で出力されるので、arnまたは名前を抽出する必要があります。

import boto3 
client = boto3.client('iam',aws_access_key_id="XXXXX",aws_secret_access_key="YYYYY") 
roles = client.list_roles() 
Role_list = roles['Roles'] 
for key in Role_list: 
    print key['RoleName'] 
    print key['Arn'] 
関連する問題