Apex를 사용하여 Go에서 lambda를 움직입니다.
준비하는 것
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 공식 문서
Reference
이 문제에 관하여(Apex를 사용하여 Go에서 lambda를 움직입니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/dora56/items/b3acb3f4e45e68dce6a8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)