Нужно уточнить создание ресурса в шлюзе AWS API - PullRequest
0 голосов
/ 12 марта 2019

Я не мог понять, что на самом деле поможет ресурс при создании шлюза API для лямбда-функции (python) в AWS

Итак, пожалуйста, дайте мне знать, как я могу использовать ресурс в шлюзе API.

1 Ответ

1 голос
/ 13 марта 2019

API Gateway обрабатывает хостинг и токены безопасности (при желании).После того, как http-запрос достигнет API-шлюза, он должен быть перехвачен назначенной лямбдой.Я предполагаю, давая ваш комментарий, что вы уже имеете в виду лямбду.Таким образом, для шага Build Lambda вы можете изменить код в main, чтобы он стал вашим кодом.

Шаг 1: Build Lambda

Для развертывания вашей лямбды вам понадобитсядля создания службы Serverless Framework.

1) Сначала установите Serverless Framework

2) Перейдите в каталог, в котором вы хотите хранить файлы шлюза API и лямбда

3) В командной строке выполните:

serverless create --template aws-python
# if you don't want to use python simply change the template language

4) Создайте новый файл (в данном примере он называется lambdaGET.py) для развертывания внутри вашей лямбды

lambdaGET.py

import json





def lambda_handler(event, context):
    print("Received event: " + json.dumps(event, indent=2))


    event = json.loads(json.dumps(event))
    # I recommend you verify the data here although it is not critical


    '''
    After the lambda has obtained the results it needs to correctly 
    format them to be passed across the API Gateway
    '''

   response = {
                "isBase64Encoded": False,
                "statusCode": 200,
                "headers": {},
                "body": json.dumps(result)
        }



    return response

Шаг 2. Сборка Serverless.yml

На этом шаге необходимо создать файл без сервера для развертывания лямбда-интерфейса, API-шлюза и их соединения.

service: YourServiceName

provider:
  name: aws
  runtime: python2.7
  timeout: 30
  stage: ${opt:stage, 'dev'}
  region: ${opt:region, 'us-east-1'}
  profile: ${opt:profile, 'default'}
  apiName : ${self:service}-${self:provider.stage}
  environment:
    region: ${self:provider.region}
    stage: ${self:provider.stage}
  stackTags:
    Owner : YourName
    Project : YourProjectName
    Service : ${self:service}
    Team : YourTeamName
  stackPolicy: # This policy allows updates to all resources
    - Effect: Allow
      Principal: "*"
      Action: "Update:*"
      Resource: "*"

  iamRoleStatements:


functions:
  lambdaGET:
    handler: lambdaGET.main
    events:
      - http:
          method: GET
          path: /foobar
          resp: json

В разделе событий файла без сервера вы объявляете ресурсы шлюза API.

Шаг 3. Развертывание

1) Установка Командная строка AWS

3) Настройте AWS configure

4) СделайтеВаши каталоги настроены правильно: (lambdaGET.py и servless.yml должны находиться в одной папке)

```
-ServiceDirectory
 --- lambdaGET.py
 --- serverless.yml
```

5) Перейдите в папку ServiceDirectory и в командной строке выполните:

sls deploy

Шаг 4: Тест

Ваш API теперь можно вызывать с помощью браузеров или программ, таких как Postman

Базовый URL-адрес для всех конечных точек API ваших служб можно найти в консоли внутри API Gateway.> Служба (в вашем случае «YourServerName»)> Панель инструментов

enter image description here

Почти там ... Теперь, когда у вас есть базовый URL, вам нужно добавитьрасширение, которое мы поместили в нашу конечную точку: /foobar

Теперь вы можете поместить весь этот URL в Postman и получить вывод вашей лямбды.

:)

Я надеюсь, что этопомогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...