как передать данные авторизации API Amazon из вызова ajax для вызова лямбда-функции - PullRequest
0 голосов
/ 19 июня 2020

Мой случай:

  1. Я использую CloudFormation для предоставления aws ресурсов (бессерверное состояние c веб-приложение).
  2. Я создаю шлюз amazon api и IAM пользователь только из шаблона CloudFormation (он содержит разрешения для вызова только шлюза api)
  3. Я использую AuthorizationType: AWS_IAM в методе шлюза api.
      IamUser:
        Type: 'AWS::IAM::User'
        Properties:
          Policies:
            - PolicyName: api-invoke-policy
              PolicyDocument:
                Version: '2012-10-17'
                Statement:
                  - Effect: Allow
                    Action:
                      - 'execute-api:Invoke'
                      - 'execute-api:ManageConnections'
                    Resource:
                      - 'arn:aws:execute-api:*:account-id:*'

чтобы вызвать этот метод api, мы должны передать ключ доступа и пароль Я хочу использовать этот URL-адрес api для вызова лямбда-функции из раздела ajax (во внешней части)

пример:


    alert("subjet area going to add to db");
        $.ajax({
            url: 'https://****.execute-api.us-east-1.amazonaws.com/test/*******',
            type: 'GET',
            data:{subjectAreaId: "$('#subjectAreaId').val()"
                },

            dataType:'json',
            contentType: 'application/json',
            crossDomain: true,
            success:function(response){
                alert("you are able to invoke lambda function using api url");
                },
            error: function (jqXHR, textStatus, errorThrown) {
                alert(jqXHR.responseText);
                alert("error ");
            }
            })

Мой вопрос

- как передать этот ключ доступа и пароль (которые собирается получить из пользовательской консоли iam) из вызова ajax для вызова лямбда.

пробовал: я могу вызвать этот URL-адрес из приложения почтальона (где я ввел эти ключ и пароль в разделе авторизации)

есть предложения?

спасибо!

1 Ответ

0 голосов
/ 19 июня 2020

Вместо того, чтобы создавать пользователя IAM и публично обмениваться данными, я бы предложил использовать следующее:

Если вы выполняете все взаимодействия через сайт stati c, вам следует взглянуть на использование Cognito Пользовательские пулы, которые обеспечивают бессерверную аутентификацию / авторизацию пользователей для вашего приложения.

У каждого пользователя может быть собственный когнитивный пользователь, или вы можете использовать неаутентифицированного пользователя. Для каждого из них будут сгенерированы краткосрочные учетные данные, вы можете узнать больше об этом здесь .

Вы можете добавить авторизатор Cognito в свой API-шлюз, который будет разрешать доступ только зарегистрированным пользователям когнитивных систем или использовать временные учетные данные и взаимодействовать с помощью JaveScript SDK .

...