Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JAWS-UG沖縄 AWS Fargateハンズオン / JAWS-UG Okinawa 20...

JAWS-UG沖縄 AWS Fargateハンズオン / JAWS-UG Okinawa 201810 AWS Fargate Hands-on

Koichiro Nishijima

October 06, 2018
Tweet

More Decks by Koichiro Nishijima

Other Decks in Technology

Transcript

  1. その1 :ローカルで動くWeb アプリ Web アプリ実⾏ $ node ./server.js Web ブラウザで

    http://localhost:3000 にアクセスしてみてください。 @k_nishijima 9
  2. その2 :コンテナで動くようにする 以下のような Docker le を作成 FROM node:alpine WORKDIR /tmp

    ADD package.json ./ ADD server.js ./ RUN npm install EXPOSE 3000 EXPOSE 3001 CMD ["node", "./server.js"] @k_nishijima 10
  3. その2 :コンテナで動くようにする ビルドして、、、 $ sudo docker build -t handson/server.js .

    起動(ローカルのポート3000 番とコンテナの3000 番を接続) $ sudo docker run -p 3000:3000 -d handson/server.js またまた、Web ブラウザで http://localhost:3000 にアクセスしてみて ください。 @k_nishijima 11
  4. その2 :コンテナで動くようにする 稼働中のコンテナの確認 $ sudo docker ps CONTAINER ID IMAGE

    COMMAND CREATED STAT 60857bcc1f00 handson/server.js "node ./server.js" About a minute ago Up A 停⽌ $ sudo docker kill 60857bcc1f00 @k_nishijima 12
  5. その3 :Fargate にデプロイ AWS 側の設定(ざっくり3 ステップ) 1. IAM の設定 ECR

    へのリポジトリへのpush 権限を作る ECS でのタスク実⾏権限を作る 2. ECR の設定 Registory の作成 イメージ作成とプッシュ @k_nishijima 14
  6. その3 :Fargate にデプロイ 3. ECS の設定 Task de nition の作成

    Cluster の作成 Service の作成 @k_nishijima 15
  7. ECR の設定 まずリポジトリを作成します。 Services からElastic Container Service を選んだら、画⾯左のリポジト リをクリックします。あ、 東京リージョン

    が選択されていることを忘 れずに確認! リポジトリ名は「jawsug/handson 」などと区別しやすいものを 作成したあとの説明のとおりに作業します、、、が、ハマると思いま すので以下詳しく書きます @k_nishijima 17
  8. ECR の設定 1. レジストリに対して Docker クライアントを認証するために使⽤する ログインコマンドを取得します。 は、以下のように--profile でプロファイル名を指定して実⾏してくだ さい。docker

    の設定にもよると思いますが、linux だとsudo 必要です。 sudo $(aws ecr get-login --no-include-email --region ap-northeast-1 --profile default_ @k_nishijima 18
  9. ECR の設定 5. 以下のコマンドを実⾏して、新しく作成した AWS リポジトリにこの イメージをプッシュします: 繰り返しになりますが、linux 環境の場合sudo が必要な場合がありま

    す。 $ sudo docker push 539559780906.dkr.ecr.ap-northeast-1.amazonaws.com/jawsug/handson:la push が終わったら「完了」をクリックしましょう。 画⾯にプッシュしたイメージが表⽰されるはずです! @k_nishijima 21
  10. ECS の設定:タスク定義 もちろんタスク定義はFargate で作成してください タスク定義名(何でも良いのですが)は「handson-task 」などとし ておいてください タスクロールは今回は「なし」で良いです タスクの実⾏IAM ロールは、先程IAM

    で作成した ecsTaskExecutionRole を選択します。 タスクサイズは、メモリもCPU も最⼩を選んでおいてください(勿 論⼤きければ⼤きいほどお⾦がかかります) @k_nishijima 24
  11. ECS の設定:サービスの設定 サービス名は適当に「handson-service 」などと設定 タスクの数は「1 」で 次に進んで、ネットワーク構成はVPC の構成次第、、、 パブリック IP

    の⾃動割り当てを「ENABLE 」にしておけば、すぐに アクセスできるパブリックIP を割り当ててくれる 「サービスの検出の統合の有効化」のチェックを 外して おく AutoScaling も利⽤しないように注意 最後に「サービスの作成」ですべてが作成される。 @k_nishijima 27
  12. おまけ:コードを修正してコンテナを更 新してみよう! build し直して、タグ付けして、push し直して、最後に update-service で更新できるはずです! $ docker build

    -t your-alias/sample-app . $ docker tag your-alias/sample-app:latest xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaw $ docker push xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/your-alias/sample $ aws ecs update-service --cluster sample-app-cluster --service corporate-sample @k_nishijima 31