使用Boto3脚本承担IAM角色

时间:2020-05-04 19:51:16

标签: boto3

我收集了一个简单的boto3脚本,该脚本可以帮助IAM用户生成临时的安全令牌会话,并且工作正常。但是,用户仍然需要先创建三个环境变量,然后才能使用假定的角色,我尝试将这一步骤也添加到脚本中,以便使该过程完全自动化,但由于某些原因,该过程不起作用。 / p>

仅生成凭据并为用户打印出来的脚本如下:

import {filter, map} from 'rxjs/opreators';

  getArtists(): Observable<DocumentData> {
    return this.firestore.collection('/Users').get().pipe( // <- use pipe
       map(users => {
          // here some changes in users if we need.
          return users;
       }),
    ),
    filter(users => {
      returns true; // or false if we don't want to emit this value.
    }),
  }

现在,我添加到脚本中以创建环境变量的部分如下:

import boto3
import argparse
import os
import subprocess

class AssumeRole(object):
  def __init__(self,role,accesskey,secretkey):
    session = boto3.Session(aws_access_key_id=accesskey,
    aws_secret_access_key=secretkey,)
    sts_client = session.client('sts')
    response = sts_client.assume_role(RoleArn=role,RoleSessionName="filler1",)
    self.AK =  (response['Credentials']["AccessKeyId"])
    self.SK =  (response['Credentials']["SecretAccessKey"]) 
    self.ST = (response['Credentials']["SessionToken"])
    print (f"The access key is: ", self.AK)
    print (f"The secret key is: ", self.SK)
    print (f"The token key is: ", self.ST)
    return None

def parse_args():
  parser = argparse.ArgumentParser(description='ARN of role')
  parser.add_argument('--role', required=True)
  parser.add_argument('--accesskey', required=True)
  parser.add_argument('--secretkey', required=True)
  args = parser.parse_args()
  return args

def main():
  args = parse_args()
  Per1 = AssumeRole(args.role,args.accesskey,args.secretkey)


if __name__ == "__main__":
  main() 

如果直接将其添加到CLI中,那么我在第二种方法 def export()中添加的命令可以完美地工作,但是代码在这里不起作用?

有帮助吗?

谢谢

0 个答案:

没有答案