我收集了一个简单的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()中添加的命令可以完美地工作,但是代码在这里不起作用?
有帮助吗?
谢谢