Вот что я делаю - установите переменную env с помощью AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY - возьмите на себя роль чтения секрета из секретного менеджера - сбросьте ключ доступа к AWS переменным env и секретный ключ доступа со значениями, полученными из секретного менеджера - предположите другое роль с недавно установленными переменными env ОШИБКА не авторизована ...
Первый раз, когда я принимаю роль, она работает нормально, но во второй раз он использует того же пользователя, чтобы взять на себя роль, которая использовалась для чтения секретов из секретного менеджера
Прости мою нубность с python
import logging
import subprocess
import sts_role_assumer
import sts_secret_helper
os.environ["AWS_ACCESS_KEY_ID"] = "xxxxxxxxxx"
os.environ["AWS_SECRET_ACCESS_KEY"] = "xxxxxxxxxxxxxxxxxxxxxxxx"
logging.basicConfig(level=logging.INFO)
log = logging.getLogger()
class setAwsEnv:
@staticmethod
def assumingRoleandGetCred(role, profile, region, duration):
log.info("#### Calling sts role assumer to assume role for reading secrets from secret manager #####")
sts_role_assumer.cli(role, profile, region, duration)
@staticmethod
def getCredforawsCalls(secret_name, key, profile, region):
log.info("#### Calling sts role helper for reading cred from secret manager and storing in sh file #####")
secret = sts_secret_helper.get_secret(secret_name, key, profile, region)
return secret
cur_dir = os.path.dirname(__file__)
aws_file = os.path.join(cur_dir, 'secret_role_credentials.sh')
setAwsEnv.assumingRoleandGetCred('arn:aws:iam::12345678:role/read-secrets', 'default', 'eu-central-1', 1800)
access_key = setAwsEnv.getCredforawsCalls('executor-credentials', 'aws_access_key_id', 'default', 'eu-central-1')
secret_access_key = setAwsEnv.getCredforawsCalls('executor-credentials', 'aws_secret_access_key', 'default', 'eu-central-1')
cred_file = os.path.join(os.path.expanduser("~"), ".aws", "credentials")
os.remove(cred_file)
del os.environ["AWS_ACCESS_KEY_ID"]
del os.environ["AWS_SECRET_ACCESS_KEY"]
os.environ["AWS_ACCESS_KEY_ID"] = access_key
os.environ["AWS_SECRET_ACCESS_KEY"] = secret_access_key
setAwsEnv.assumingRoleandGetCred('arn:aws:iam::12345678:role/apply-permissions', 'default', 'eu-central-1', 1800)