📖

AWS 初心者が Amazon Elastic Container Service 入門 を体験してみた

2023/12/11に公開

はじめに

私のチームでは オンプレのシステムを AWS 上にリフト & シフトしたものを 運用、開発しています。
その中で、Amazon Elastic Container Service(ECS) を使用していて、私自身が構築したわけではなく、自分がこれまであまり AWS に触れる機会がなかったため、
Amazon Elastic Container Service 入門 - コンテナイメージを作って動かしてみようを体験してみました。

https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-ECS-2022-reg-event.html?trk=aws_introduction_page

Cloud9 構築

最初に ECS での作業に便利な Cloud9 環境を構築します。
Cloud9 は Webベースの IDE であり、手軽に開発環境をセットアップできます。

  1. Cloud9を開く
  2. 環境を作成を選択 下記のように設定し作成(記載がない項目はデフォルト)
  • 名前: h4b-ecs (任意)
  • インスタンスタイプ: t3.small

コンテナイメージを作成

コンテナイメージはアプリケーションとその依存関係をパッケージ化するものです。
Cloud9 を使用して、Docker を使いながらコンテナイメージを作成する手順を詳細に解説します。

  1. Cloud9を開いて、開く を選択
  2. Dockerfile を生成
touch Dockerfile
  1. Dockerfile を編集
FROM ubuntu:18.04
​
# Install dependencies
RUN apt-get update && \
 apt-get -y install apache2
​
# Install apache and write hello world message
RUN echo 'Hello World!' > /var/www/html/index.html
​
# Configure apache
RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \
 echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \
 echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \ 
 echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \ 
 chmod 755 /root/run_apache.sh
​
EXPOSE 80
​
CMD /root/run_apache.sh

コンテナイメージを格納するリポジトリを作成

今回のハンズオンでは ECR にリポジトリにアップしたコンテナイメージを使用します。
このセクションでは、適切なリポジトリを作成し、イメージをアップロードする手順を紹介します。

  1. ECR を開く
  2. Repositories を選択
  3. リポジトリの作成 を選択
  • 可視性: private
  • リポジトリ名: h4b-ecr (任意)

コンテナイメージをアップロード

作成したコンテナイメージを作成したリポジトリにアップロードします。
ECS で利用するための準備が整います。

  1. Cloud9 を開きます
  2. docker イメージを作成
  • 実行例
docker build -t 077986094693.dkr.ecr.ap-northeast-3.amazonaws.com/h4b-ecr:0.0.1 .
  1. ECR にログイン
  • 書式
aws ecr get-login-password | docker login --username AWS --password-stdin 638182392525.dkr.ecr.ap-northeast-1.amazonaws.com
  • 実行例
Admin:~/environment $ aws ecr get-login-password | docker login --username AWS --password-stdin 638182392525.dkr.ecr.ap-northeast-1.amazonaws.com
WARNING! Your password will be stored unencrypted in /home/ec2-user/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
​
Login Succeeded
  1. ECR にコンテナイメージをアップロード
  • コマンド例
docker push 077986094693.dkr.ecr.ap-northeast-3.amazonaws.com/h4b-ecr:0.0.1
  1. ECR にアップロードされていることを確認

VPC の作成

ECS クラスターを構築するために、Amazon Virtual Private Cloud(VPC)を設定します。
VPC はネットワークリソースを効果的に管理するための重要な要素です。

  1. サービスで VPC を開く
  2. VPC を作成 下記のように設定し、VPC を作成 を選択 (下記に記載がない設定値はデフォルト)
  • 作成するリソース: VPC など
  • 名前タグの自動生成: h4b (任意)
  • プライベートサブネットの数: 0

セキュリティグループ の編集

セキュリティグループはネットワークトラフィックの制御に役立ちます。
ECS で使用するセキュリティグループの設定方法を解説します。

  1. サービスでVPCを開く
  2. VPC でフィルタリング作成した VPC を選択
  3. セキュリティグループを選択
  4. セキュリティグループの Security group ID を選択
  5. インバウンドのルールを編集 を選択
  6. ルールを追加を選択し、ルールを下記のように編集
  • タイプ: HTTP
  • ソース: Anywhere-IPv4
    -

ECS の作成

ECS クラスターを作成し、コンテナを実行するための準備を整えます。

  1. サービスでElastic Container Serviceを開く
  2. クラスターの作成を選択 下記のように設定し作成(記載がない項目はデフォルト)
  • 名前: h4b-ecs-cluster-test

タスク定義

ECS はタスク定義を使用してコンテナの設定を管理します。
タスク定義の作成方法に焦点を当てます。

  1. タスク定義を選択
  2. 新しいタスク定義の作成を押下し、新しいタスク定義の作成を選択
  3. 新しいタスク定義の作成 下記のように設定し作成(記載がない項目はデフォルト)
  • タスク定義の設定
    • タスク定義ファミリー: h4b-ecs-task-definition (任意)

       - コンテナの詳細
    • 名前: apache-helloworld (任意)
    • イメージURI : 077986094693.dkr.ecr.ap-northeast-3.amazonaws.com/h4b-ecr:0.0.1 (ECR にアップしたイメージ URL)

サービス作成

ECS サービスを作成し、コンテナをデプロイします。
コンテナのスケールアウトやアプリケーションの冗長性を確保します。

  1. 作成した クラスターを選択し、作成を選択

  2. 作成
  • デプロイ設定
    • ファミリー: h4b-ecs-task-definition (タスク定義で作成したタスク)
    • サービス名: h4b-ecs-service (任意)
  • 必要なタスク数: 2 (任意)
  • ネットワーキング
    • VPC: h4b-vpc
    • サブネット: 作成した VPC のサブネット (VPCを変更すると自動的に選択される)
    • セキュリティグループ: 既存のセキュリティグループを使用 (デフォルト)
      -
  • ロードバランシング
    • ロードバランサーの種類: Application Load Balancer
    • ロードバランサー名: h4b-ecs-alb
    • ターゲットグループ名: h4b-ecs-targetgroup
      -
  1. ブラウザからアクセス
  • h4b-ecs-serviceを選択
  • Configuration and networkingを選択
  • オープンアドレスを選択

まとめ

一部、AWS がコンソールをアップデートしているため、ハンズオン資材と画面が少し異なっていて混乱しましたが、ハンズオンの動画や資材がわかりやすく、手順通り進めていけば、ちゃんと作れました。

興味があるけど、ECR や ECS を作ったことがない方や、既に自分が所属しているチームでは利用しているけど、自分では構築したことがない方などは、勉強になるハンズオンだと思いました。
(私自身が後者の状態でしたので、非常に勉強になりました!)

レスキューナウテックブログ

Discussion