Пользователь не имеет права выполнять: execute-api:Вызов ресурса при попытке вызвать APIG из Лямбда

#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?