Slide 1

Slide 1 text

AWSでGoを使いたい! DesignOne Go #5 by Nayu T. S.

Slide 2

Slide 2 text

自己紹介 • 名前: Nayu T. S. • SNS:@tasotasoso • 仕事:AWS、上流とか • 最近の趣味: 自作 • Go歴:4ヶ月くらい ▽⾃作キーボード ▽⾃作めっちゃ⾼い中華料理

Slide 3

Slide 3 text

内容 ü AWSでGoを使う方法を調べた。 ü AWSでGoのDockerコンテナを実行して、別のサービスを操作してみた。

Slide 4

Slide 4 text

AWSでも使えます! https://aws.amazon.com/jp/serverless/patterns/serverless-pattern/ 引⽤:AWSの形で考えるサーバーレス設計から Go⾔語はGCP( Google Cloud Platform )のイメージが強いですが、AWSでも使えます! サーバーレスでAPIを提供 分散並列処理 ~ CPUトータル100時間を10分で終わらせるには ~ (´ω`) シェアはAWSが30%強(2019 1Q) 公式のドキュメントも豊富。

Slide 5

Slide 5 text

AWSでGoを使う方法 2. SDK ü Lambda(FaaS) …短めの処理(15分以内の実⾏などの制限) ü EC2(仮装OS) …サービス運⽤など 1. コンピュートサービス ü Go SDK …GoからAWSを操作する ü コンテナ系サービス …⻑めの処理、サービス運⽤ 今回はここをやってみた。 ü 処理量多めのバッチ処理がしたい ü 将来的にサービス運⽤などで使ってみたい

Slide 6

Slide 6 text

Fargate サーバーやクラスターの管理の必要なしにコンテナを実行するための、 Amazon ECS に対応したコンピューティングエンジン。 仕組み ※引⽤元 https://aws.amazon.com/jp/fargate/ ノード管理不要。 非常にシンプルで わかりやすい。 ü タスク…1回だけ/定期の実⾏ ü サービス…実⾏状態を維持

Slide 7

Slide 7 text

GoのDockerコンテナを動かしてみる 1. S3からファイルをダウンロードする。 2. なんにもしない。 3. S3にファイルをアップロードする。 ③Pull ②起動 ④ダウンロード ⑤アップロード ①Push ECR S3(ストレージ) バッチ処理用のイメージ: やったことのイメージ

Slide 8

Slide 8 text

バッチ処理用のコード

Slide 9

Slide 9 text

AWS側でやること 1. ECRにレポジトリ作成 2. 作ったイメージをタグ付け (docker tag イメージ名 ecrのURL/レポジトリ名) 3. ECRにコマンドラインからログイン (aws ecr get-login) 4. ECRにPush (docker push ecrのURL/レポジトリ名:latest) Push (2) Dockerイメージ・リソース量など指 定してタスク作成 (3)起動タイプ・クラスター・タスクの 数・ネットワークなど指定して実行 (1) クラスター(ネットワークなど実行環境)作成 DockerイメージをBuildしとく。 Pull 実行ログ ※実⾏時に渡す⽅法でも良い ECR これだけでGo言語のクラウド上でコンテナを実⾏できた。

Slide 10

Slide 10 text

まとめ • コンピュート系サービス・SDKでGo言語が使える。 • FargateでシンプルにGoのDockerコンテナの実行ができる。