シューマイGo編での登壇資料です。 https://shuuu-mai.connpass.com/event/122861/
Go x AWSによるシンプルなサーバーレス実装Written by @yukpizMar 27, 2019#shuuumai #golang
View Slide
Who?
Who?Yuuki Zayasu(@yukpiz)リディッシュ株式会社 テックリード
Who?Yuuki Zayasu(@yukpiz)リディッシュ株式会社 テックリード#golang #aws
Who?Yuuki Zayasu(@yukpiz)リディッシュ株式会社 テックリード#golang #aws #engineers_lt(エンジニアの登壇を応援する会)
Who?Yuuki Zayasu(@yukpiz)リディッシュ株式会社 テックリード#golang #aws #engineers_lt(エンジニアの登壇を応援する会)釣りスノボ小型船舶操縦士1級
Who?Yuuki Zayasu(@yukpiz)リディッシュ株式会社 テックリード#golang #aws #engineers_lt(エンジニアの登壇を応援する会)釣りスノボ小型船舶操縦士1級第二種電気工事士生コン打設養鶏野菜栽培
Who?Please follow me!@yukpizhttps://labo.yukpiz.me
Go言語への入り口
Go言語への入り口Go言語触ったことありますか?
Go言語への入り口Go言語に興味を持っている、もしくは普段使っている皆さんに少しでも知らなかった事を知って欲しい
Go言語への入り口Go言語に興味を持っている、もしくは普段使っている皆さんに少しでも知らなかった事を知って欲しいAWSと簡単に組み合わせて様々な使い方ができる事を知ってほしい
Go言語への入り口Go言語に興味を持っている、もしくは普段使っている皆さんに少しでも知らなかった事を知って欲しいAWSと簡単に組み合わせて様々な使い方ができる事を知ってほしい是非、持ち帰って自分でGo言語を触ってみるキッカケにして欲しい
Go言語への入り口コマンドラインツールを作る(urfave/cli等)
Go言語への入り口コマンドラインツールを作る(urfave/cli等)A Tour of Goをやる(https://go-tour-jp.appspot.com/)
Go言語への入り口コマンドラインツールを作る(urfave/cli等)A Tour of Goをやる(https://go-tour-jp.appspot.com/)Webフレームワークを使ってWebサイトを作る(gin, echo等)
Go言語への入り口コマンドラインツールを作る(urfave/cli等)A Tour of Goをやる(https://go-tour-jp.appspot.com/)Webフレームワークを使ってWebサイトを作る(gin, echo等)AWSを組み合わせてサービスを作ってみる(New!)
Go言語への入り口コマンドラインツールを作る(urfave/cli等)A Tour of Goをやる(https://go-tour-jp.appspot.com/)Webフレームワークを使ってWebサイトを作る(gin, echo等)AWSを組み合わせてサービスを作ってみる(New!)DynamoDB, Lambda, SQS, API Gateway, ECS/EKS, EC2, etc...
Go言語への入り口AWS Lambda
Go言語への入り口機能を実装してクラウド上で実行可能(FaaS)
Go言語への入り口機能を実装してクラウド上で実行可能(FaaS)Go言語(1.x Runtime)が使える
Go言語への入り口機能を実装してクラウド上で実行可能(FaaS)Go言語(1.x Runtime)が使える様々なAWSの各種サービスと連携が可能
Go言語への入り口機能を実装してクラウド上で実行可能(FaaS)Go言語(1.x Runtime)が使える様々なAWSの各種サービスと連携が可能API Gateway AWS IoT Alexa Skills KitAlexa Smart Home Application Load Balancer CloudWatch EventsCloudWatch Logs CodeCommit Cognito Sync TriggerDynamoDB Kinesis S3SNS SQS
Go言語への入り口機能を実装してクラウド上で実行可能(FaaS)Go言語(1.x Runtime)が使える様々なAWSの各種サービスと連携が可能API Gateway AWS IoT Alexa Skills KitAlexa Smart Home Application Load Balancer CloudWatch EventsCloudWatch Logs CodeCommit Cognito Sync TriggerDynamoDB Kinesis S3SNS SQS + Invoke Lambda
活用事例
活用事例サービス内メッセージの一斉配信サービス
活用事例サービス内メッセージの一斉配信サービスレストランに関連するデータの収集サービス
活用事例サービス内メッセージの一斉配信サービスレストランに関連するデータの収集サービスSendGridを使ったメール配信サービス...etc
活用事例配信予定時刻に処理を開始
活用事例配信予定時刻に処理を開始SQSで一定速度でLambdaに排出
活用事例配信予定時刻に処理を開始SQSで一定速度でLambdaに排出配信処理を担うLambda
活用事例配信予定時刻に処理を開始SQSで一定速度でLambdaに排出配信処理を担うLambdaユーザーの端末へ
活用事例配信予定時刻に処理を開始SQSで一定速度でLambdaに排出配信処理を担うLambdaユーザーの端末へ処理に失敗した配信レコード
活用事例各種サービスの制限について
活用事例各種サービスの制限についてサービスごとに制限項目があるLambdaなら実行時間や同時実行数など他のサービスと連携させる場合、その考慮も必要
活用事例各種サービスの制限についてサービスごとに制限項目があるLambdaなら実行時間や同時実行数など他のサービスと連携させる場合、その考慮も必要詳細は各種サービスのドキュメントに記載がある以下はLambdaの制限事項ドキュメントhttps://docs.aws.amazon.com/ja_jp/lambda/latest/dg/limits.html
Go × Lambdaへの入り口
Go × Lambdaへの入り口デプロイツールの選定(Apex, Lamvery, Serverless Framework)
Go × Lambdaへの入り口デプロイツールの選定(Apex, Lamvery, Serverless Framework)実装したLambda関数をツールを使ってアップロードするLambdaはApex、それ以外のサービスはterraformに一元化
Go × Lambdaへの入り口デプロイツールの選定(Apex, Lamvery, Serverless Framework)実装したLambda関数をツールを使ってアップロードするLambdaはApex、それ以外のサービスはterraformに一元化関数の実装
Go × Lambdaへの入り口必要なのは2パッケージ
Go × Lambdaへの入り口必要なのは2パッケージLambda実行時に呼び出される関数
Go × Lambdaへの入り口必要なのは2パッケージLambda実行時に呼び出される関数発火元から受け取るイベント引数
Go × Lambdaへの入り口必要なのは2パッケージLambda実行時に呼び出される関数発火元から受け取るイベント引数処理結果を返すerrorインターフェース型
Go × Lambdaへの入り口デプロイツールの選定(Apex, Lamvery, Serverless Framework)実装したLambda関数をツールを使ってアップロードするLambdaはApex、それ以外のサービスはterraformに一元化関数の実装Handlerの引数で受け取れるイベントはgodocで確認できるhttps://godoc.org/github.com/aws/aws-lambda-go/events
Go × Lambdaへの入り口デプロイツールの選定(Apex, Lamvery, Serverless Framework)実装したLambda関数をツールを使ってアップロードするLambdaはApex、それ以外のサービスはterraformに一元化関数の実装Handlerの引数で受け取れるイベントはgodocで確認できるhttps://godoc.org/github.com/aws/aws-lambda-go/eventsAWSの各種サービスとの連携
Go × Lambdaへの入り口Lambdaの発火元
その他の用途
その他の用途BOTを作ってみよう!
その他の用途BOTを作ってみよう!Slack BOTやTwitter BOTで遊んでみるAPI Gatewayと連携して、Webhook駆動のBOTCloudWatchと連携して、定期実行するBOT
その他の用途BOTを作ってみよう!Slack BOTやTwitter BOTで遊んでみるAPI Gatewayと連携して、Webhook駆動のBOTCloudwatchと連携して、定期実行するBOT
最後に
最後にGo言語入門の選択肢にAWS Lambdaを!連携できるサービスを組み合わせて、簡単に作ろう
最後にGo言語入門の選択肢にAWS Lambdaを!連携できるサービスを組み合わせて、簡単に作ろう仕事じゃなくても、まずはプライベートの簡単なツールから!こういうのも作れそうとか面白いアイデア、是非教えてください
Written by @yukpizMar 27, 2019#shuuumai #golangSlides PolicyThe Go gopher was designed by Renée French.#f3f3f3#434343 #da6272