AWS Lambda Goで画像アップローダを作る
AWS Lambda Goで画像アップローダを作る:
AWS Serverless Uploader
https://aws-serverless-uploader.netlify.com/
CSSフレームワークはBulma。
API通信はAxiosを使用。
自分的にはAWS謹製という点に惹かれてSAM CLIを選定。
でプロジェクトの雛形をバッと作ってくれてすぐにデプロイできるのと、AWS上の構成をコード管理できる(=infrastructure as code)ので重宝した。
aws-sdk-goを使用。
素のaws-sdk-goだけの実装はダルいようなのでgregu/dynamoライブラリを使用。
次はAPIGateway+Lambda(Go)+Cognitoで認証処理を検証する予定。
AWS Serverless Uploader
https://aws-serverless-uploader.netlify.com/
フロントエンド
- React
- Netlify
CSSフレームワークはBulma。
API通信はAxiosを使用。
バックエンド
- AWS Lambda Go
- API Gateway
- S3
- DynamoDB
- SAM CLI
自分的にはAWS謹製という点に惹かれてSAM CLIを選定。
sam init --runtime go
GoでS3
aws-sdk-goを使用。package main import ( "bytes" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/s3" ) func s3Put(img []byte) error { svc := s3.New(session.New(), &aws.Config{ Region: aws.String("ap-northeast-1"), }) if _, err := svc.PutObject(&s3.PutObjectInput{ Bucket: aws.String("バケット名"), ACL: aws.String("private"), ServerSideEncryption: aws.String("AES256"), Key: aws.String("キー名"), Body: bytes.NewReader(img), }); err != nil { return err } return nil }
GoでDynamoDB
素のaws-sdk-goだけの実装はダルいようなのでgregu/dynamoライブラリを使用。package main import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/session" "github.com/guregu/dynamo" ) type Image struct { Name string `json:"name" dynamo:"Name"` URL string `json:"url" dynamo:"Url"` CreatedAt string `json:"createdAt" dynamo:"CreatedAt"` } // 書き込み func dynamoPut(data Image) error { db := dynamo.New(session.New(), &aws.Config{Region: aws.String("ap-northeast-1")}) if err := db.Table("テーブル名").Put(data).Run(); err != nil { return err } return nil } // 全件取得 func dynamoGetAll(data *[]Image) error { db := dynamo.New(session.New(), &aws.Config{Region: aws.String("ap-northeast-1")}) if err := db.Table("テーブル名").Scan().All(data); err != nil { return err } return nil }
コメント
コメントを投稿