Мне нужно взять на себя роль кросс-аккаунта, чтобы получить доступ к домену ElasticSearch для входа в AWS.Вот что я сделал:
Сначала я создал роль кросс-аккаунта в ACCOUNT1.Имя роли - LoggerAccessToES , а отношение доверия выглядит примерно так:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
},
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::ACCOUNT1:root",
"arn:aws:iam::ACCOUNT2:root"
]
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}
Затем в ACCOUNT2 я создал функцию Lambda для принятия вышеуказанной роли с этим кодом:
sts_client = boto3.client('sts', region_name=Config.AWS_ES_REGION)
assumed_role_object=sts_client.assume_role(
RoleArn="arn:aws:iam::ACCOUNT1:role/LoggerAccessToES",
RoleSessionName="AssumeLoggerAccessToESSession1"
)
Когда я вызываю лямбду (в основном, лямбда привязана к теме SNS), я получаю ошибку:
botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the AssumeRole operation: Access denied
Я уже перепробовал все, что было предложено другими парнямив других вопросах, и я также погуглил проблему, но я не мог найти решение.Что я тут не так делаю?