AWS Lambda 및 API 게이트웨이에 Go API 배포

10483 단어 apigatewayawsgolambda
본고에서 Go to AWS Lambda와 Amazon API Gateway로 인코딩된 API를 배치하는 과정을 설명하겠습니다. 만약 당신이 어떻게 하는지 알고 있다면 이 과정은 몇 분만 걸립니다.
우리는 API 게이트웨이를 통해 Lambda 함수를 배치하고 요청과 API 키를 검증하는 것이 얼마나 쉬운지 보게 될 것이다.
나는 네가 Go에 대해 기본적으로 알고 있고 AWS 계정이 있다고 가정한다.만약 AWS Lambda와 API Gateway에 대해 아무것도 모른다면 걱정하지 마라. 여기는 네가 알아야 할 모든 것을 설명할 것이다.Lambda와 API 게이트웨이에 대해 잘 알고 있다면 설명을 건너뛸 수 있습니다.

Go를 사용하여 Lambda 함수 만들기


아시다시피 AWS Lambda를 사용하면 "인프라를 설정하거나 관리하지 않은 상태에서 코드를 실행할 수 있습니다..zip 파일이나 용기 이미지로 코드를 작성하고 불러올 수 있습니다."
Lambda 함수를 만드는 것은 매우 간단합니다.그것을 업로드하려면 코드와 람다 함수가 필요합니다.우리는 코드부터 시작할 것이다.
가져오고 github.com/aws/aws-lambda-go/lambda 처리 프로그램을 만들어야 한다는 것을 알기만 하면 됩니다.이 함수가 어떤 매개 변수를 받아들일 수 있는지에 대해서는 이미 좋은 해석이 있기 때문에 중복할 가치가 없다.
https://docs.aws.amazon.com/lambda/latest/dg/golang-handler.html
팀 이름과 구성원 그룹만 가져오고 팀 이름과 구성원 수를 되돌려주는 아주 간단한 함수를 만듭니다.여기서 코드를 찾을 수 있습니다: https://github.com/antsanchez/go-lambda-apigateway-example
package main

import (
    "github.com/aws/aws-lambda-go/lambda"
)

type TeamRequest struct {
    Name    string   `json:"name"`
    Members []string `json:"members"`
}

type Response struct {
    Name         string `json:"name"`
    MembersCount int    `json:"members_count"`
}

func GetTeamAndMembers(req TeamRequest) (Response, error) {
    return Response{
        Name:         req.Name,
        MembersCount: len(req.Members),
    }, nil
}

func main() {
    lambda.Start(GetTeamAndMembers)
}
함수를 만든 후에는 코드를 컴파일하고 AWS Lambda에 업로드할 ZIP를 만들어야 합니다.
$ GOOS=linux go build main.go
% zip function.zip main
이제 AWS 컨트롤러로 이동해서 Lambda를 검색하고 Createanewfunction을 누르십시오.네가 좋아하는 이름을 선택하고 Go를 선택하고 나머지는 그대로 둔 다음create를 눌러라.

다음 화면에서 다음 화면 캡처와 같이 프로세서를 "main"으로 변경해야 합니다.

지금 ZIP 폴더를 업로드하면 당신의 기능을 사용할 수 있습니다!API 게이트웨이로 전환하기 전에 테스트해 보겠습니다.테스트 탭으로 이동하여 다음과 같이 요청을 작성합니다.

너는 반드시 이런 대답을 보아야 한다.
{
  "name": "Example Team",
  "members_count": 3,
}

Lambda 함수에 대한 API 게이트웨이 트리거 만들기


알겠습니다. Lambda 함수는 이미 존재하지만, 어떻게 접근하시겠습니까?이 예에서는 API 게이트웨이 트리거인 트리거를 생성해야 합니다.이렇게 하면 Lambda 함수를 호출할 수 있는 API 끝점이 만들어집니다.
클릭하여 트리거 추가:

그런 다음 API 게이트웨이, REST API를 API 유형, 열기를 보안 메커니즘으로 선택하고 추가를 클릭합니다.
우리의 화면은 지금 이렇게 해야 한다. 이것이 바로 우리의 API 단점이다.

API 게이트웨이를 사용하여 JSON 요청 확인


API 게이트웨이 덕분에 Lambda 함수에 도달하기 전에 검증할 수 있습니다.이렇게 하면, 우리는 이 함수를 잘못 요청하지 않고 실행함으로써 약간의 자금을 절약할 수 있다.
API 엔드포인트가 아닌 API 게이트웨이에 대한 링크를 클릭하여 게이트웨이 설정을 열면 다음과 같은 내용이 표시됩니다.

현재 모델과 '생성' 을 누르십시오.여기서 요청을 어떻게 완성해야 하는지를 설명하기 위해 JSON 모드를 추가할 수 있습니다.JSON 모드를 어떻게 정의하는지 깊이 있게 이해하고 이 강좌의 범위를 넘어설 수 있지만 여기서 더 많은 문서를 찾을 수 있습니다. http://json-schema.org/ 지금 당신이 알아야 할 것은 다음과 같은 요청 모드를 정의해야 한다는 것입니다.
{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "title": "Team",
    "description": "Team and members request",
    "type": "object",
    "properties": {
        "name": {
            "type": "string"
        },
        "members": {
            "type": "array",
            "items": {
                "type": "string"
            }
        }
    },
    "required": ["name", "members"]
}
보시다시피 두 필드namemembers로 대상을 정의합니다.첫 번째는string 형식이고, 두 번째는array 형식이며, 그 항목은string 형식입니다.요청이 이 모드를 따르지 않으면 Lambda 함수가 실행되지 않습니다.
JSON을 붙여넣고 이름을 삽입하고 Content-typeapplication/json로 설정합니다. 다음과 같습니다.

모델을 생성한 후 리소스로 이동하여 작업 및 생성 방법을 클릭합니다.POST나 GET 같은 HTTP 동사를 선택하십시오.만든 후 방금 만든 Lambda 함수를 선택하고 생성 방법을 선택합니다.이제 Method Request를 클릭하고 Validate body에서 Request Validator를 선택한 다음 우리가 방금 만든 모델Request Body을 선택하십시오. 화면 캡처와 같습니다.

이제 작업을 다시 클릭하고 API를 배치합니다.몇 초만 기다리세요. 지금 잘못된 요청을 하려고 하면 오류가 발생합니다.

Amazon API 게이트웨이에 API 키 추가


우리의 API는 실행되고 있으며 세계에 개방되고 있습니다.API 키가 포함된 요청만 수락함으로써 이 점을 제한하고자 할 수 있습니다.
그러나 우선 사용 계획을 세워야 한다.이렇게 하려면 "사용 계획"으로 돌아가서 창설을 클릭하고 이름과 제한과 할당액에 대한 옵션을 선택하십시오.

이제 API 키로 이동하여 API 키를 만들어 사용 계획에 지정할 수 있습니다.물론, 우리는 많은 다른 API 키와 사용 계획을 만들 수 있다. 물론, 우리는 AWS CLI 또는 SDK for Go를 사용하여 프로그래밍 방식으로 이 점을 실현할 수도 있다.
API 키를 작성하여 사용 계획에 할당한 후에는 요청에서 제목 x-api-key으로 API 키를 머리글로 전달하기만 하면 됩니다.
이것만;)

좋은 웹페이지 즐겨찾기