SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
toranoana@LT #27 × Serverless

虎の穴ラボ

奥谷 一陽

Deno を AWS Fargate で動かす 



Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
自己紹介

奥谷 一陽



所属:虎の穴ラボ株式会社

担当:とらコインSHOPなど新規事業系の開発

興味:Deno、JavaScript(TypeScript) 



おすすめコンテンツ:

  『じゃない方の彼女』

  『機界戦隊ゼンカイジャー』



Twitter:@okutann88

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
アジェンダ

- Deno を AWS Fargate で動かそう

- 注意事項



Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
Deno とは

- JavaScript のランタイム

- デフォルトで、TypeScriptを扱える

- Node.js の作者が開発に関わる

- Rustで実装

- シンプル、モダン、安全なランタイム



参考:https://deno.land/



Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
そもそも Deno には、

サーバレス な Deno Deploy があるじゃないか?





Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
そもそも Deno には、

サーバレス な Deno Deploy があるじゃないか?

=>そのとおりです。

  ただ、アプリの実行環境ではありますが、

  現在 DBや、キャッシュなどリソースを

  提供してくれません



Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
他にも PaaSあるが、専用のライブラリやCLIで

プラットフォームで拘束されたくないな。。 



Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
他にも PaaSあるが、専用のライブラリやCLIで

プラットフォームで拘束されたくないな。。

=> AWSでインフラを用意したい!



Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
というわけで、

ためしに Deno を AWS Fargate で動かそう

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
AWS Fargate とは

- AWS の提供するコンテナ向けサーバレスコンピューティン
グ

- 従量課金

- ウェブアプリ、APIやマイクロサービスなど

- 簡単にスケーリングできる



Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
AWS ECR

- AWS の提供するコンテナイメージレジストリ

AWS ECS

- AWSの提供するコンテナ実行環境

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
Deno を AWS Fargate で動かそう

とりあえずコンテナイメージの作成から















参考:https://github.com/denoland/deno_docker

# Dockerfile

FROM denoland/deno:1.15.3



EXPOSE 80



WORKDIR /app



ADD . .



RUN deno cache main.ts



CMD ["run", "--allow-net", "main.ts"]



コンテナ起動したら、 

アプリケーションが動くようになっていることが
必要

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
Deno を AWS Fargate で動かそう

ソースコード















シンプルに「Hello Deno!!」を返すだけです。

// main.ts

import { listenAndServe } from "https://deno.land/std@0.113.0/http/server.ts"
;



console.log("http://localhost:80/");

listenAndServe(":80", (req) => new Response("Hello Deno!!"));



確認時点でのソースです。 

最近推奨ライブラリが変更が有ったので注意! 

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
Deno を AWS Fargate で動かそう

後はデプロイ

- AWS ECR にコンテナイメージを登録

- AWS ECS にタスク、クラスター、サービスを作成



=>これで、AWS Fargate でDeno が動きます。

  が、毎回行うにはあまりに面倒で定形作業です。

  「自動化」したい!

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
Deno を AWS Fargate で動かそう

AWS Fargate x Github Actions でやる

- AWS ECR 認証

- AWS ECS のタスク・サービス更新 



これらは AWS が Github Actions Marketplace 用の

アクションを用意/公開してくれています。

https://github.com/aws-actions/amazon-ecr-login

https://github.com/aws-actions/amazon-ecs-deploy-task-definition

https://github.com/aws-actions/amazon-ecs-render-task-definition

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
Deno を AWS Fargate で動かそう

github リポジトリに yamlファイルを作成します。

.github/workflows/deploy.yml 

name: deno-app
on:
push:
tags:
- deploy-*
deploy-hogehoge のタグがpushされたら実行します。 

という設定です。

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
Deno を AWS Fargate で動かそう

jobs:
build-push:
runs-on: ubuntu-18.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v1
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ap-northeast-1
- name: Login to AWS ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1

ソースのチェックアウト 

IAMユーザーを認証 

ECR にログイン

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
Deno を AWS Fargate で動かそう

- name: Build, tag, and push image to Amazon ECR
id: build-image
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPOSITORY: ${{ secrets.AWS_ECR_REPO_NAME }}
run: |
IMAGE_TAG=$(echo ${{ github.ref }} | sed -e "s#refs/tags/##g")
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG"
コンテナをビルドしてpush 

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
Deno を AWS Fargate で動かそう

  - name: Fill in the new image ID in the Amazon ECS task definition
id: task-def
uses: aws-actions/amazon-ecs-render-task-definition@v1
with:
task-definition: task-definition.json
container-name: nginx-container
image: ${{ steps.build-image.outputs.image }}
- name: Deploy Amazon ECS task definition
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
with:
task-definition: ${{ steps.task-def.outputs.task-definition }}
service: cluster-for-fargate-service
cluster: cluster-for-fargate
wait-for-service-stability: true
タスク設定を 変更部分+テンプレートのJSONで作成 

タスク設定をクラスターに割り当て 

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
Deno を AWS Fargate で動かそう

これらを用意して pushすると、

数分待つとアプリケーションが更新が完了します。



Github Actions と組み合わせて

- テストを通さないとデプロイできなくする

- git tag を参照してデプロイ先を切り替える



なんてこともできます。

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
Deno を AWS Fargate で動かそう まとめ

「〇〇〇〇のサーバレスの動作環境といえば? 」

=>Denoを問わず、

  コンテナベースの実行環境なら制約を突破できる



「専用CLIがないと、デプロイが面倒なのでは?」

=>Github Actionsとの連携などで自動化すれば、

  入り口のハードルはやや高いが、かなり解消できる



Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
注意事項 - 実際にやってみて - 

- AWS Fargate が、

時間×スペックの従量課金なので、

気がつくと思った以上に、課金されていたりします。

- ECRの無料枠を超過すると課金発生します。



  料金関係は特に注意!

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
ありがとうございました


Mais conteúdo relacionado

Mais procurados

Node.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことNode.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことbitbank, Inc. Tokyo, Japan
 
Fantiaから学ぶgcp運用のノウハウ
Fantiaから学ぶgcp運用のノウハウFantiaから学ぶgcp運用のノウハウ
Fantiaから学ぶgcp運用のノウハウ虎の穴 開発室
 
What happens in Spring Cloud Netflix
What happens in Spring Cloud NetflixWhat happens in Spring Cloud Netflix
What happens in Spring Cloud Netflixapkiban
 
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例Naoya Kishimoto
 
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能Takuya Iwatsuka
 
Spring I/O 2017 報告 ThymeleafのWebFlux対応
Spring I/O 2017 報告 ThymeleafのWebFlux対応Spring I/O 2017 報告 ThymeleafのWebFlux対応
Spring I/O 2017 報告 ThymeleafのWebFlux対応Takuya Iwatsuka
 
Nutanix Meetup 22.01 Wataru Unno
Nutanix Meetup 22.01 Wataru UnnoNutanix Meetup 22.01 Wataru Unno
Nutanix Meetup 22.01 Wataru UnnoWataru Unno
 
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)NTT DATA Technology & Innovation
 
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現Yoshifumi Kawai
 
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢apkiban
 
Amazon Kinesis Streams デモ
Amazon Kinesis Streams デモAmazon Kinesis Streams デモ
Amazon Kinesis Streams デモrecotech
 
PhysXを使って 揺れものやってみた~UE版~
PhysXを使って 揺れものやってみた~UE版~PhysXを使って 揺れものやってみた~UE版~
PhysXを使って 揺れものやってみた~UE版~poko ponmaru
 
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用Takuya Iwatsuka
 
Multipeer connectivityを使った 動画のリアルタイム端末間共有
Multipeer connectivityを使った 動画のリアルタイム端末間共有Multipeer connectivityを使った 動画のリアルタイム端末間共有
Multipeer connectivityを使った 動画のリアルタイム端末間共有Imajin Kawabe
 

Mais procurados (20)

20210528 aws arm_ugokasitemita
20210528 aws arm_ugokasitemita20210528 aws arm_ugokasitemita
20210528 aws arm_ugokasitemita
 
Node.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことNode.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたこと
 
Fantiaから学ぶgcp運用のノウハウ
Fantiaから学ぶgcp運用のノウハウFantiaから学ぶgcp運用のノウハウ
Fantiaから学ぶgcp運用のノウハウ
 
What happens in Spring Cloud Netflix
What happens in Spring Cloud NetflixWhat happens in Spring Cloud Netflix
What happens in Spring Cloud Netflix
 
Ladder of cqrs+es
Ladder of cqrs+esLadder of cqrs+es
Ladder of cqrs+es
 
Scala on gae
Scala on gaeScala on gae
Scala on gae
 
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
 
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
 
Spring I/O 2017 報告 ThymeleafのWebFlux対応
Spring I/O 2017 報告 ThymeleafのWebFlux対応Spring I/O 2017 報告 ThymeleafのWebFlux対応
Spring I/O 2017 報告 ThymeleafのWebFlux対応
 
Capacitor
CapacitorCapacitor
Capacitor
 
Nutanix Meetup 22.01 Wataru Unno
Nutanix Meetup 22.01 Wataru UnnoNutanix Meetup 22.01 Wataru Unno
Nutanix Meetup 22.01 Wataru Unno
 
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
 
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
 
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
 
Amazon Kinesis Streams デモ
Amazon Kinesis Streams デモAmazon Kinesis Streams デモ
Amazon Kinesis Streams デモ
 
PhysXを使って 揺れものやってみた~UE版~
PhysXを使って 揺れものやってみた~UE版~PhysXを使って 揺れものやってみた~UE版~
PhysXを使って 揺れものやってみた~UE版~
 
Spring social の基礎
Spring social の基礎Spring social の基礎
Spring social の基礎
 
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
 
bicep 紹介
bicep 紹介bicep 紹介
bicep 紹介
 
Multipeer connectivityを使った 動画のリアルタイム端末間共有
Multipeer connectivityを使った 動画のリアルタイム端末間共有Multipeer connectivityを使った 動画のリアルタイム端末間共有
Multipeer connectivityを使った 動画のリアルタイム端末間共有
 

Semelhante a Deno を aws fargate で動かす

JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
JavaScript LT会 〜 React.js   Node.js歓迎 〜 Deno で やってみるweb開発JavaScript LT会 〜 React.js   Node.js歓迎 〜 Deno で やってみるweb開発
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発虎の穴 開発室
 
Wasm blazor and wasi 2
Wasm blazor and wasi 2Wasm blazor and wasi 2
Wasm blazor and wasi 2Takao Tetsuro
 
AWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターンAWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターンseiichi arai
 
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –虎の穴 開発室
 
Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013Yasuhiro Horiuchi
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますinfinite_loop
 
AWS App RunnerでASP.NET Core Webアプリケーションを動かしてみた
AWS App RunnerでASP.NET Core Webアプリケーションを動かしてみたAWS App RunnerでASP.NET Core Webアプリケーションを動かしてみた
AWS App RunnerでASP.NET Core Webアプリケーションを動かしてみたKen'ichirou Kimura
 
20201214 AWS Black Belt Online Seminar 2020 年 AWS re:Invent 速報 Part2
20201214 AWS Black Belt Online Seminar 2020 年 AWS re:Invent 速報 Part220201214 AWS Black Belt Online Seminar 2020 年 AWS re:Invent 速報 Part2
20201214 AWS Black Belt Online Seminar 2020 年 AWS re:Invent 速報 Part2Amazon Web Services Japan
 
マンガボックスのiOS10プッシュ通知導入事例
マンガボックスのiOS10プッシュ通知導入事例マンガボックスのiOS10プッシュ通知導入事例
マンガボックスのiOS10プッシュ通知導入事例Fukaya Akifumi
 
コンテナの基本 ~Docker実践~
コンテナの基本 ~Docker実践~コンテナの基本 ~Docker実践~
コンテナの基本 ~Docker実践~Ryosuke Uchiyama
 
サーバーワークス re:invent_2016~新サービス・アップデート紹介~
サーバーワークス re:invent_2016~新サービス・アップデート紹介~サーバーワークス re:invent_2016~新サービス・アップデート紹介~
サーバーワークス re:invent_2016~新サービス・アップデート紹介~Serverworks Co.,Ltd.
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略Hiroshi SHIBATA
 
Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021Hideki Saito
 
20180220 AWS Black Belt Online Seminar - Amazon Container Services
20180220 AWS Black Belt Online Seminar - Amazon Container Services20180220 AWS Black Belt Online Seminar - Amazon Container Services
20180220 AWS Black Belt Online Seminar - Amazon Container ServicesAmazon Web Services Japan
 
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...
20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...Amazon Web Services Japan
 

Semelhante a Deno を aws fargate で動かす (20)

JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
JavaScript LT会 〜 React.js   Node.js歓迎 〜 Deno で やってみるweb開発JavaScript LT会 〜 React.js   Node.js歓迎 〜 Deno で やってみるweb開発
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
 
クラウド入門(AWS編)
クラウド入門(AWS編)クラウド入門(AWS編)
クラウド入門(AWS編)
 
Wasm blazor and wasi 2
Wasm blazor and wasi 2Wasm blazor and wasi 2
Wasm blazor and wasi 2
 
AWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターンAWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターン
 
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
 
Ansible+Docker
Ansible+DockerAnsible+Docker
Ansible+Docker
 
Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
 
AWS App RunnerでASP.NET Core Webアプリケーションを動かしてみた
AWS App RunnerでASP.NET Core Webアプリケーションを動かしてみたAWS App RunnerでASP.NET Core Webアプリケーションを動かしてみた
AWS App RunnerでASP.NET Core Webアプリケーションを動かしてみた
 
AWS Proton を使ってみた
AWS Proton を使ってみたAWS Proton を使ってみた
AWS Proton を使ってみた
 
20201214 AWS Black Belt Online Seminar 2020 年 AWS re:Invent 速報 Part2
20201214 AWS Black Belt Online Seminar 2020 年 AWS re:Invent 速報 Part220201214 AWS Black Belt Online Seminar 2020 年 AWS re:Invent 速報 Part2
20201214 AWS Black Belt Online Seminar 2020 年 AWS re:Invent 速報 Part2
 
マンガボックスのiOS10プッシュ通知導入事例
マンガボックスのiOS10プッシュ通知導入事例マンガボックスのiOS10プッシュ通知導入事例
マンガボックスのiOS10プッシュ通知導入事例
 
コンテナの基本 ~Docker実践~
コンテナの基本 ~Docker実践~コンテナの基本 ~Docker実践~
コンテナの基本 ~Docker実践~
 
サーバーワークス re:invent_2016~新サービス・アップデート紹介~
サーバーワークス re:invent_2016~新サービス・アップデート紹介~サーバーワークス re:invent_2016~新サービス・アップデート紹介~
サーバーワークス re:invent_2016~新サービス・アップデート紹介~
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_cccSpring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
 
Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021
 
20180220 AWS Black Belt Online Seminar - Amazon Container Services
20180220 AWS Black Belt Online Seminar - Amazon Container Services20180220 AWS Black Belt Online Seminar - Amazon Container Services
20180220 AWS Black Belt Online Seminar - Amazon Container Services
 
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...
20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...
 
Real world rails
Real world railsReal world rails
Real world rails
 

Mais de 虎の穴 開発室

Railsのデバッグ どうやるかを改めて確認する
Railsのデバッグ どうやるかを改めて確認するRailsのデバッグ どうやるかを改めて確認する
Railsのデバッグ どうやるかを改めて確認する虎の穴 開発室
 
虎の穴ラボ エンジニア採用説明資料 .pdf
虎の穴ラボ エンジニア採用説明資料 .pdf虎の穴ラボ エンジニア採用説明資料 .pdf
虎の穴ラボ エンジニア採用説明資料 .pdf虎の穴 開発室
 
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdfDeno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf虎の穴 開発室
 
toranoana.deno #6 アジェンダ 採用説明
toranoana.deno #6 アジェンダ 採用説明toranoana.deno #6 アジェンダ 採用説明
toranoana.deno #6 アジェンダ 採用説明虎の穴 開発室
 
Deno 向け WEB 開発用のツールを作ったので 紹介します
Deno 向け WEB 開発用のツールを作ったので 紹介しますDeno 向け WEB 開発用のツールを作ったので 紹介します
Deno 向け WEB 開発用のツールを作ったので 紹介します虎の穴 開発室
 
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと虎の穴 開発室
 
通販開発部の西田さん「通販開発マネジメントの5ルール」
通販開発部の西田さん「通販開発マネジメントの5ルール」通販開発部の西田さん「通販開発マネジメントの5ルール」
通販開発部の西田さん「通販開発マネジメントの5ルール」虎の穴 開発室
 
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!虎の穴 開発室
 
セキュリティを強化しよう!CloudArmorの機能解説
セキュリティを強化しよう!CloudArmorの機能解説セキュリティを強化しよう!CloudArmorの機能解説
セキュリティを強化しよう!CloudArmorの機能解説虎の穴 開発室
 
いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!虎の穴 開発室
 
【Saitama.js】Denoのすすめ
【Saitama.js】Denoのすすめ【Saitama.js】Denoのすすめ
【Saitama.js】Denoのすすめ虎の穴 開発室
 
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について虎の穴 開発室
 
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜	【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜 虎の穴 開発室
 
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント 虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント 虎の穴 開発室
 
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る虎の穴 開発室
 
【20220120 toranoana.deno#4】denoでffiの続き
【20220120 toranoana.deno#4】denoでffiの続き【20220120 toranoana.deno#4】denoでffiの続き
【20220120 toranoana.deno#4】denoでffiの続き虎の穴 開発室
 
虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料 虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料 虎の穴 開発室
 
虎の穴ラボにおけるリモートワークの働き方
虎の穴ラボにおけるリモートワークの働き方虎の穴ラボにおけるリモートワークの働き方
虎の穴ラボにおけるリモートワークの働き方虎の穴 開発室
 

Mais de 虎の穴 開発室 (20)

FizzBuzzで学ぶJavaの進化
FizzBuzzで学ぶJavaの進化FizzBuzzで学ぶJavaの進化
FizzBuzzで学ぶJavaの進化
 
Railsのデバッグ どうやるかを改めて確認する
Railsのデバッグ どうやるかを改めて確認するRailsのデバッグ どうやるかを改めて確認する
Railsのデバッグ どうやるかを改めて確認する
 
虎の穴ラボ エンジニア採用説明資料 .pdf
虎の穴ラボ エンジニア採用説明資料 .pdf虎の穴ラボ エンジニア採用説明資料 .pdf
虎の穴ラボ エンジニア採用説明資料 .pdf
 
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdfDeno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
 
toranoana.deno #6 アジェンダ 採用説明
toranoana.deno #6 アジェンダ 採用説明toranoana.deno #6 アジェンダ 採用説明
toranoana.deno #6 アジェンダ 採用説明
 
Deno 向け WEB 開発用のツールを作ったので 紹介します
Deno 向け WEB 開発用のツールを作ったので 紹介しますDeno 向け WEB 開発用のツールを作ったので 紹介します
Deno 向け WEB 開発用のツールを作ったので 紹介します
 
GCPの画像認識APIの紹介
GCPの画像認識APIの紹介 GCPの画像認識APIの紹介
GCPの画像認識APIの紹介
 
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
 
通販開発部の西田さん「通販開発マネジメントの5ルール」
通販開発部の西田さん「通販開発マネジメントの5ルール」通販開発部の西田さん「通販開発マネジメントの5ルール」
通販開発部の西田さん「通販開発マネジメントの5ルール」
 
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
 
セキュリティを強化しよう!CloudArmorの機能解説
セキュリティを強化しよう!CloudArmorの機能解説セキュリティを強化しよう!CloudArmorの機能解説
セキュリティを強化しよう!CloudArmorの機能解説
 
いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!
 
【Saitama.js】Denoのすすめ
【Saitama.js】Denoのすすめ【Saitama.js】Denoのすすめ
【Saitama.js】Denoのすすめ
 
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
 
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜	【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
 
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント 虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
 
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
 
【20220120 toranoana.deno#4】denoでffiの続き
【20220120 toranoana.deno#4】denoでffiの続き【20220120 toranoana.deno#4】denoでffiの続き
【20220120 toranoana.deno#4】denoでffiの続き
 
虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料 虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料
 
虎の穴ラボにおけるリモートワークの働き方
虎の穴ラボにおけるリモートワークの働き方虎の穴ラボにおけるリモートワークの働き方
虎の穴ラボにおけるリモートワークの働き方
 

Último

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 

Último (8)

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 

Deno を aws fargate で動かす

  • 1. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. toranoana@LT #27 × Serverless
 虎の穴ラボ
 奥谷 一陽
 Deno を AWS Fargate で動かす 
 

  • 2. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. 自己紹介
 奥谷 一陽
 
 所属:虎の穴ラボ株式会社
 担当:とらコインSHOPなど新規事業系の開発
 興味:Deno、JavaScript(TypeScript) 
 
 おすすめコンテンツ:
   『じゃない方の彼女』
   『機界戦隊ゼンカイジャー』
 
 Twitter:@okutann88

  • 3. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. アジェンダ
 - Deno を AWS Fargate で動かそう
 - 注意事項
 

  • 4. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Deno とは
 - JavaScript のランタイム
 - デフォルトで、TypeScriptを扱える
 - Node.js の作者が開発に関わる
 - Rustで実装
 - シンプル、モダン、安全なランタイム
 
 参考:https://deno.land/
 

  • 5. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. そもそも Deno には、
 サーバレス な Deno Deploy があるじゃないか?
 
 

  • 6. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. そもそも Deno には、
 サーバレス な Deno Deploy があるじゃないか?
 =>そのとおりです。
   ただ、アプリの実行環境ではありますが、
   現在 DBや、キャッシュなどリソースを
   提供してくれません
 

  • 7. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. 他にも PaaSあるが、専用のライブラリやCLIで
 プラットフォームで拘束されたくないな。。 
 

  • 8. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. 他にも PaaSあるが、専用のライブラリやCLIで
 プラットフォームで拘束されたくないな。。
 => AWSでインフラを用意したい!
 

  • 9. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. というわけで、
 ためしに Deno を AWS Fargate で動かそう

  • 10. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. AWS Fargate とは
 - AWS の提供するコンテナ向けサーバレスコンピューティン グ
 - 従量課金
 - ウェブアプリ、APIやマイクロサービスなど
 - 簡単にスケーリングできる
 

  • 11. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. AWS ECR
 - AWS の提供するコンテナイメージレジストリ
 AWS ECS
 - AWSの提供するコンテナ実行環境

  • 12. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Deno を AWS Fargate で動かそう
 とりあえずコンテナイメージの作成から
 
 
 
 
 
 
 
 参考:https://github.com/denoland/deno_docker
 # Dockerfile
 FROM denoland/deno:1.15.3
 
 EXPOSE 80
 
 WORKDIR /app
 
 ADD . .
 
 RUN deno cache main.ts
 
 CMD ["run", "--allow-net", "main.ts"]
 
 コンテナ起動したら、 
 アプリケーションが動くようになっていることが 必要

  • 13. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Deno を AWS Fargate で動かそう
 ソースコード
 
 
 
 
 
 
 
 シンプルに「Hello Deno!!」を返すだけです。
 // main.ts
 import { listenAndServe } from "https://deno.land/std@0.113.0/http/server.ts" ;
 
 console.log("http://localhost:80/");
 listenAndServe(":80", (req) => new Response("Hello Deno!!"));
 
 確認時点でのソースです。 
 最近推奨ライブラリが変更が有ったので注意! 

  • 14. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Deno を AWS Fargate で動かそう
 後はデプロイ
 - AWS ECR にコンテナイメージを登録
 - AWS ECS にタスク、クラスター、サービスを作成
 
 =>これで、AWS Fargate でDeno が動きます。
   が、毎回行うにはあまりに面倒で定形作業です。
   「自動化」したい!

  • 15. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Deno を AWS Fargate で動かそう
 AWS Fargate x Github Actions でやる
 - AWS ECR 認証
 - AWS ECS のタスク・サービス更新 
 
 これらは AWS が Github Actions Marketplace 用の
 アクションを用意/公開してくれています。
 https://github.com/aws-actions/amazon-ecr-login
 https://github.com/aws-actions/amazon-ecs-deploy-task-definition
 https://github.com/aws-actions/amazon-ecs-render-task-definition

  • 16. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Deno を AWS Fargate で動かそう
 github リポジトリに yamlファイルを作成します。
 .github/workflows/deploy.yml 
 name: deno-app on: push: tags: - deploy-* deploy-hogehoge のタグがpushされたら実行します。 
 という設定です。

  • 17. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Deno を AWS Fargate で動かそう
 jobs: build-push: runs-on: ubuntu-18.04 timeout-minutes: 30 steps: - uses: actions/checkout@v1 - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: ap-northeast-1 - name: Login to AWS ECR id: login-ecr uses: aws-actions/amazon-ecr-login@v1
 ソースのチェックアウト 
 IAMユーザーを認証 
 ECR にログイン

  • 18. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Deno を AWS Fargate で動かそう
 - name: Build, tag, and push image to Amazon ECR id: build-image env: ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} ECR_REPOSITORY: ${{ secrets.AWS_ECR_REPO_NAME }} run: | IMAGE_TAG=$(echo ${{ github.ref }} | sed -e "s#refs/tags/##g") docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG . docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" コンテナをビルドしてpush 

  • 19. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Deno を AWS Fargate で動かそう
   - name: Fill in the new image ID in the Amazon ECS task definition id: task-def uses: aws-actions/amazon-ecs-render-task-definition@v1 with: task-definition: task-definition.json container-name: nginx-container image: ${{ steps.build-image.outputs.image }} - name: Deploy Amazon ECS task definition uses: aws-actions/amazon-ecs-deploy-task-definition@v1 with: task-definition: ${{ steps.task-def.outputs.task-definition }} service: cluster-for-fargate-service cluster: cluster-for-fargate wait-for-service-stability: true タスク設定を 変更部分+テンプレートのJSONで作成 
 タスク設定をクラスターに割り当て 

  • 20. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Deno を AWS Fargate で動かそう
 これらを用意して pushすると、
 数分待つとアプリケーションが更新が完了します。
 
 Github Actions と組み合わせて
 - テストを通さないとデプロイできなくする
 - git tag を参照してデプロイ先を切り替える
 
 なんてこともできます。

  • 21. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Deno を AWS Fargate で動かそう まとめ
 「〇〇〇〇のサーバレスの動作環境といえば? 」
 =>Denoを問わず、
   コンテナベースの実行環境なら制約を突破できる
 
 「専用CLIがないと、デプロイが面倒なのでは?」
 =>Github Actionsとの連携などで自動化すれば、
   入り口のハードルはやや高いが、かなり解消できる
 

  • 22. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. 注意事項 - 実際にやってみて - 
 - AWS Fargate が、
 時間×スペックの従量課金なので、
 気がつくと思った以上に、課金されていたりします。
 - ECRの無料枠を超過すると課金発生します。
 
   料金関係は特に注意!

  • 23. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. ありがとうございました