假设角色并将临时AWS凭证写入〜/ .aws / credentials

时间:2017-07-01 11:28:37

标签: python amazon-web-services

  • 我在主帐户主要
  • 上使用MFA令牌
  • 我假设角色 roleX
  • 我的~/.aws/credentials拥有的访问密钥ID和密钥访问密钥
  • 我的~/.aws/configrole_arnmfa_serial角色 roleX 。它也有source_profile = main
  • 我认为这可能是适合Shell脚本的任务
  • 我不是一个熟练的Python程序员,但我想练习

我的目标是:

1)我的脚本会将aws_access_key_idaws_secret_access_key以及aws_session_token打印到~/.aws/credentials文件,自动更新在那里找到的 roleX 个人资料

示例:

~/.aws/config

[profile roleX]
mfa_serial = arn:aws:iam::123456789012:mfa/felipe
role_arn = arn:aws:iam::987654321098:role/roleX
source_profile = main

~/.aws/credentials

[main]
aws_access_key_id = key
aws_secret_access_key = secret

~/.aws/credentials

[main]
aws_access_key_id = key
aws_secret_access_key = secret

[roleX]
aws_access_key_id = key
aws_secret_access_key = secret
aws_session_token = temp

1 个答案:

答案 0 :(得分:0)

我能想到的一个快速方法:

aws_access_key_id = ""
aws_secret_access_key = ""
aws_access_key_id = ""
aws_secret_access_key = ""
aws_session_token = ""

with open('~/.aws/config','r') as file1:
    lines = file1.readlines()
    for line in lines:
         # if line.startswith('aws_access_key_id')
         # then remove the string and keep the end
         # ...

with open('~/.aws/credentials','r') as file1:
    lines = file1.readlines()
    for line in lines:
         # if line.startswith('aws_access_key_id')
         # then remove the string and keep the end
         # ...

with open('~/.aws/credentials', 'a') as file_out:
    file_out.write("[main]")
    file_out.write("aws_access_key_id = {}".format(aws_access_key_id))
    file_out.write("aws_secret_access_key = {}".format(aws_secret_access_key))
    file_out.write("")
    file_out.write("[roleX]")
    file_out.write("aws_access_key_id = {}".format(aws_access_key_id))
    file_out.write("aws_secret_access_key = {}".format(aws_secret_access_key))
    file_out.write("aws_session_token = {}".format(aws_session_token))
相关问题