Безсерверный шлюз API развертывания с лямбда-интеграцией - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь развернуть лямбда-функцию с интеграцией лямбда-шлюзов API.Моя спецификация API написана в openAPI 3 во внешнем файле yml.

Я бы хотел передать имя арм лямбды в спецификации API.

Мой serverless.yml:

service: my-test-service
provider:
  name: aws
  runtime: java8

functions:
  mylambda-test:
    handler: com.sample.MyHandler
    name: mylambda-test
    description: test lambda with api gateway
    package:
      artifact: myexample-1.0-SNAPSHOT-jar-with-dependencies.jar
          individually: true
resources:
  Resources:
    ApiGatewayRestApi:
      Type: AWS::ApiGateway::RestApi
      Properties:
        Name: test-api
        Body:
          ${file(api.yml)}

в api.yml:

openapi: "3.0.1"
info:
  title: "test-api"
  version: "0.0.1-oas3"

paths:
  /test:
     get:
       *
       *
       *
        x-amazon-apigateway-integration: 
          uri: {arn of mylambda-test}

1 Ответ

0 голосов
/ 20 февраля 2019

Как насчет использования endly e2e runner для развертывания и настройки вашего API gatweay

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

pipeline:
  setupFunction1:
    action: aws/lambda:deploy
    credentials: $awsCredentials
    functionname: $functionName1
    runtime:  go1.x
    handler: loginfo
    code:
      zipfile: $LoadBinary(${codeZip})
    rolename: lambda-loginfo-executor
    define:
      - policyname: s3-${functionName}-role
        policydocument: $Cat('${privilegePolicy}')
    attach:
      - policyarn: arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

  setupFunction2:
    action: aws/lambda:deploy
    credentials: $awsCredentials
    functionname: $functionName2
    runtime:  go1.x
    handler: loginfo
    code:
      zipfile: $LoadBinary(${codeZip})
    rolename: lambda-loginfo-executor
    define:
      - policyname: s3-${functionName}-role
        policydocument: $Cat('${privilegePolicy}')
    attach:
      - policyarn: arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

  setupAPI:
    action: aws/apigateway:setupRestAPI
    credentials: aws
    '@name': loginfoAPI
    resources:
      - path: /path1
        methods:
          - httpMethod: ANY
            functionname: $functionName1
      - path: /path2
          methods:
              - httpMethod: ANY
                functionname: $functionName2    
  sleepTimeMs: 15000
  post:
  endpointURL: ${setupAPI.EndpointURL}

Вот пример развертывания рабочий процесс

Вы также можете ознакомиться с реальными примерами имплементации e2e-тестирования с использованием лямбды, включая API Gateway

...