[Golang + Lambda + API Gateway]에서 S3 버킷을 만드는 API를 만들어 보았습니다.
7257 단어 람다APIGatewayaws-sdk5S3
전제 조건
2019년 12월 29일에 시도해 보았습니다.
Go 1.12.9
1. Golang 코드를 Lambda에서 실행
필요한 라이브러리 설치
$ go get -u github.com/aws/aws-lambda-go/lambda
$ go get -u github.com/aws/aws-sdk-go/...
지정된 버킷 이름으로 S3 버킷을 만드는 코드
만든 함수는 인수로 받은 버킷 이름으로 S3 버킷을 만들어 그 결과를 로그에 출력하는 것.
hello.gopackage main
import (
"log"
"github.com/aws/aws-lambda-go/lambda"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3"
)
type MyEvent struct {
BucketName string `json:"bucket_name"`
}
func hello(event MyEvent) {
// 流れ:認証情報→セッション→S3
creds := credentials.NewStaticCredentials("AWS_ACCESS_KEY", "AWS_SECRET_ACCESS_KEY", "") //第3引数はtoken
session, _ := session.NewSession(&aws.Config{
Credentials: creds,
Region: aws.String("ap-northeast-1")},
)
svc := s3.New(session)
resp, _ := svc.CreateBucket(&s3.CreateBucketInput{
Bucket: aws.String(event.BucketName),
})
log.Println(resp) //Lambdaテストの実行結果のログ出力や、CloudWatchのロググループで確認できる
}
func main() {
lambda.Start(hello)
}
빌드 (크로스 컴파일)하여 zip 파일로 만듭니다.
Lambda에서 실행하려면 일반적으로 go build하는 대신 Linux에서도 작동하도록 크로스 컴파일 설정을 추가해야합니다.
$ GOOS=linux GOARCH=amd64 go build -o hello
$ zip handler.zip ./hello
zip 파일을 Lambda에 업로드
$ go get -u github.com/aws/aws-lambda-go/lambda
$ go get -u github.com/aws/aws-sdk-go/...
package main
import (
"log"
"github.com/aws/aws-lambda-go/lambda"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3"
)
type MyEvent struct {
BucketName string `json:"bucket_name"`
}
func hello(event MyEvent) {
// 流れ:認証情報→セッション→S3
creds := credentials.NewStaticCredentials("AWS_ACCESS_KEY", "AWS_SECRET_ACCESS_KEY", "") //第3引数はtoken
session, _ := session.NewSession(&aws.Config{
Credentials: creds,
Region: aws.String("ap-northeast-1")},
)
svc := s3.New(session)
resp, _ := svc.CreateBucket(&s3.CreateBucketInput{
Bucket: aws.String(event.BucketName),
})
log.Println(resp) //Lambdaテストの実行結果のログ出力や、CloudWatchのロググループで確認できる
}
func main() {
lambda.Start(hello)
}
$ GOOS=linux GOARCH=amd64 go build -o hello
$ zip handler.zip ./hello
테스트(동작 확인)
{
"bucket_name": "test191229"
}
2. API Gateway에서 API 생성
#set($inputRoot = $input.path('$'))
{
"bucket_name" : "$input.params('bucket_name')"
}
※ 상기가, 작성한 hello 함수의 인수로서 들어온다
$input.params(x)
파라미터명 캐릭터 라인 x 가 지정되었을 경우에, 패스, 쿼리 캐릭터 라인, 또는 헤더치로부터 (이 순서로 검색되는) 메소드 리퀘스트 파라미터의 값을 돌려줍니다.
매핑 템플릿에서 사용할 수있는 변수 및 함수
htps : // / cs. 아 ws. 아마존. 이 m/그럼_jp/아피가테와y/ぁてst/로ゔぇぺぺ구이데/아피가테와 y-맘핑g-ㅜぁ테-레후페렌세. html #인프 tゔぁ리아bぇ-레후페렌세
8. 마지막으로, 액션 → API 배포
액세스할 URL
URL/stage/myresource?bucket_name = test191230
참고로 한 기사
AWS Lambda에서 Go를 사용할 수 있기 때문에 시도했습니다.
golang + Lambda + API Gateway에서 REST API를 만들어 보았습니다.
AWS SDK for Go S3 버킷 기본 작업
Reference
이 문제에 관하여([Golang + Lambda + API Gateway]에서 S3 버킷을 만드는 API를 만들어 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/masataka715/items/e14e31e5db878c70dded텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)