Apex를 사용하여 Go에서 lambda를 움직입니다.

4622 단어 5Apex람다AWS
최근 Go의 공부를 하고 있으므로, lambda도 Go로 움직일 수 있을까라고 생각해 보았다.

준비하는 것



Go
Apex 설치
AWS 계정
awscli

Apex란?




lambda의 빌드와 배포 등을 쉽게 관리하는 도구.
지원되는 언어는 Node.js, Java, Python, Go
공식적으로 지원하지 않는 Go를 사용할 수있는 것이 좋네요.

어떻게 하고 있는가 하면, Node.js로 Go의 바이너리를 실행하고 있는 것 같다.

설치



Mac 또는 Linux의 경우
% curl https://raw.githubusercontent.com/apex/apex/master/install.sh | sh
Windows는 직접 바이너리 설치

설치가 끝나면 Apex를 업그레이드합니다.
% apex upgrade

AWS API 키 설정


aws configure 에서 API 키를 설정합니다.
% aws configure

AWS Access Key ID [None]: アクセスキーID
AWS Secret Access Key [None]: アクセスキー
Default region name [None]: ap-northeast-1 //東京リージョン
Default output format [None]:ENTER

이번에 만든 계정용 IAM 정책



테스트용이므로 Apex용 정책을 적응했습니다.
이제 최소한으로 움직입니다.
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:Create*",
                "iam:Attach*",
                "lambda:*"
            ],
            "Resource": "*"
        }
    ]
}

프로젝트 만들기



적절한 디렉토리에 프로젝트 폴더를 만듭니다.
% mkdir apex-sample-go
% cd apex-sample-go

init



프로젝트의 병아리를 만듭니다.
% apex init


             _    ____  _______  __
            / \  |  _ \| ____\ \/ /
           / _ \ | |_) |  _|  \  /
          / ___ \|  __/| |___ /  \
         /_/   \_\_|   |_____/_/\_\



  Enter the name of your project. It should be machine-friendly, as this
  is used to prefix your functions in Lambda.

    Project name: apex-sample-golang //プロジェクト名の入力

  Enter an optional description of your project.

    Project description: apex-samle-golang is Hello world App by Golang //プロジェクトの説明

  [+] creating IAM apex-sample-golang_lambda_function role
  [+] creating IAM apex-sample-golang_lambda_logs policy
  [+] attaching policy to lambda_function role.
  [+] creating ./project.json
  [+] creating ./functions

  Setup complete, deploy those functions!

    $ apex deploy

lambda 만들기



공식적으로 Go 샘플가 있기 때문에 그것을 사경. functions/hello/main.go 에 저장하고 자동으로 생성된 functions/hello/index.js (node.js의 hello world)를 삭제합니다. 파일 구성은 다음과 같습니다.
apex-sample-go/
├── event.json (サンプルから)
├── functions/
│   └── hello/
│       └── main.go (サンプルから)
└── project.json

가능하면 apex deploy 합니다.
% apex deploy
   • creating function         function=hello
   • created alias current     function=hello version=1
   • function created          function=hello name=apex-samle-golang_hello version=1

실패하면 오류 메시지가 나오므로 안심
% apex deploy
   ⨯ Error: function hello: build hook: can't load package: package main:
main.go:1:1: expected 'package', found 'EOF'

lambda 실행


apex invoke 関数名 에서 lambda를 실행합니다.
% apex invoke hello < event.json
{"hello":"world"}
위와 같이 돌아오면 성공입니다.

관리 콘솔에서 확인



AWS 관리 콘솔에서 lambda를 열면



제대로 만들어진 것을 확인할 수 있었습니다.

덧붙여서 Code Size는 875.4KB 였습니다.apex-go 패키지를 사용하고 있기 때문에 다른 언어보다 큰 것일까.

마지막으로



샘플에서만 시도했지만 매우 쉽게 Go에서 lambda를 만들 수있었습니다.apex-go 는 그 밖에도
* CloudWatch Logs
* Cognito
* Kinesis
* Dynamo
* S3
* SNS
* SES

지원하는 것 같아서 여러가지 앱을 만들 수 있을 것 같습니다.
그렇지만 제일은 공식 대응해 주면 좋다고 생각합니다.

참고



Apex 공식 문서

좋은 웹페이지 즐겨찾기