#amazon-web-services #aws-lambda #aws-api-gateway #amazon-iam
Вопрос:
Я пытаюсь подключить Лямбда-код в учетной записи Aws A к шлюзу API, размещенному в учетной записи B. Для этого в учетной записи B я создал роль IAM с политикой, которая выглядит следующим образом:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "execute-api:Invoke",
"Resource": [
"arn:aws:execute-api:us-west-2:*:*/*/*/GET/someApi/{ID}"
],
"Effect": "Allow"
}
]
}
Я добавил доверительные отношения в роли в учетную запись белого списка A и в следующей форме
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::accountA:root"
},
"Action": "sts:AssumeRole"
}
]
}
Теперь в учетной записи A, в роли выполнения Lambdas, я добавил политику, которая позволяет ей выполнять роль, созданную в учетной записи B, в следующей форме:
{
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::accountB:role/roleNameCreatedInAccountB",
"Effect": "Allow"
}
Тогда почему я пытаюсь вызвать API из Лямбды, я получаю следующую ошибку:
User: arn:aws:sts::accouuntB:assumed-role/roleNameCreatedInAccountB/SessionName is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:us-west-2:***********9:xxxx/beta/GET/someApi/12274e6b-e051-4073-b157-949893d8ae84 (Service: xxx; Status Code: 403; Error Code: AccessDeniedException; Request ID: 59e73e4f-eee4-485f-8975-b2e08eed90f5; Proxy: null)
Комментарии:
1. Какова роль выполнения API и как именно вы пытаетесь вызвать api?