1
1

More than 3 years have passed since last update.

AWS ECR/ECS チュートリアルメモ

Last updated at Posted at 2021-05-01

AWS ECS チュートリアル

ECS の起動自体は下記のURLの通りで、マウスを何度かカチカチすれば、AWS で用意されているデフォルトコンテナが起動し、Webページを参照できるため、詳細は割愛。

オリジナルコンテナを使用する

作業流れ

  1. AWS CLI 利用ユーザの追加
  2. Docker実行環境で コンテナイメージを作成する
    AWS EC2 に Docker をインストールしても良いし、オンプレで Docker 環境を用意するでもOK。
  3. 作成したイメージを Amazon Elastic Container Registry(AWS ECR) に登録

    • この作業は GUI が用意されていないかもしれない。
    • aws-cli で Private / Public リポジトリを作り分ける方法がわからなかった。。。
  4. AWS ECR に登録したコンテナイメージから AWS ECS クラスタ作成

  5. AWS ECS の撤収

  6. AWS ECR の撤収

1. AWS CLI 利用ユーザの追加

AWS ECS 利用ユーザに付与するポリシーについては、Amazon Elastic Container Service アイデンティティベースのポリシーの例 に IAM 管理ポリシーの内容っぽい設定例が紹介されている。が、使い方よくわからない 設定が面倒そうなので、Amazon ECS でのセットアップ のところで、ルートユーザ的な権限を付与する方法が紹介されていたので、それで IAM 管理ポリシー問題を、一旦、回避。

2. Dcoker コンテナイメージの作成

  • Dockerfile の準備

    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 Work...orz' > /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
    
  • イメージ作成

  $ docker build -t hello-work .
  • 動作確認
  $ docker run -t -i -p 80:80 hello-work

確認が終わったら Ctrl+c でコンテナを停止します。

3. AWS ECR への登録

  1. awscli のインストール

    $ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && \
        unzip awscliv2.zip && \
        sudo ./aws/install
    $ echo 'complete -C aws_completer aws' >> $HOME/.bashrc
    

    $HOME/.barhrc のような感じで、aws_completer を設定しておくと、aws コマンドのサブコマンドで tab 補完が使えるようになります。

  2. awscli の初期設定

    $ aws configure
    AWS Access Key ID [None]: {アクセスキー(各自)}
    AWS Secret Access Key [None]: {シークレットアクセスキー(各自)}
    Default region name [None]: ap-northeast-1
    Default output format [None]: json
    

    AWSのアカウントが複数ある場合は、aws configure --profile userid で、ユーザIDごとに設定できます。

  3. AWS ECR リポジトリの準備

    1. AWS ECR リポジトリ作成

      $ aws ecr create-repository --repository-name hello-repository
      

      AWS CLI で作る ECRリポジトリはプライベートリポジトリっぽいです。Private/Public を切り替えるサブコマンドが見つからなかった。
      この辺は、リポジトリ作った後に Private/Public を確認したほうがいいかもです。

      リポジトリが作成されると、リポジトリの登録情報が表示されます。その中で、repositoryUri の情報を控えておきます。

    2. コンテナイメージのタグ付け

      3.1 で控えておいた repositoryUri で、コンテナイメージにタグ付けをします。

      $ docker tag hello-work <repositoryUri>
      
  4. AWS ECR にコンテナを登録

    $ aws ecr get-login-password | docker login --username AWS --password-stdin <aws_account_id.dkr.ecr.region.amazonaws.com>
    $ docker push <repositoryUri> 
    

    docker login で指定する URL は ドメイン のところだけで、リポジトリ名までは含めません。
    ドメインで認証して、ドメイン内のリポジトリを指定して push する、という感じです。

4. AWS ECS クラスタ作成

  • コンテナの定義
    • custom の 設定 ボタン押下
項目 設定値
コンテナ名 適当
イメージ repositoryUri:イメージタグ
メモリ 128 MB
TCPポート 80
詳細コンテナ設定 デフォルト(何も設定しない)のまま
  • サービスを定義する
    • ロードバランサーの種類
    • Application Load Balancer を選択

ロードバランサーに ALB を指定しないと プライベートIP、パブリックIP がセットされなかった。
カスタムコンテナの場合は ALB 無しの運用はできないのだろうか。。。

5. AWS ECS の撤収作業

  • AWS ECS
    • クラスター
    • 作成したクラスター名を選択
      • 作成したクラスターの詳細画面の クラスターの削除 ボタンを押下
      • delete me を入力して 削除 ボタン押下

CloudFormation の方から削除する方法もあるらしい。

6. AWS ECR の撤収作業

Amazon ECR イメージの試用を終了したら、レポジトリを削除し、イメージストレージに対して課金されないようにします。

$ aws ecr delete-repository --repository-name hello-repository --force

参考サイト

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1