Open3

AWSを学ぶ

じんじん

https://www.udemy.com/course/ok-aws-ecs/?couponCode=AUTUMNMT102124

Elastic Container Serviceとは?

Amazon ECSと呼ばれるAWSにおける1つのサービスとはなにか?マネジメントコンソール上では以下のように書かれています。

Amazon Elastic Container Service (Amazon ECS) は、クラスター上のコンテナの実行、停止、および管理を容易にする、高度にスケーラブルで高速なコンテナ管理サービスです。

コンテナとは何か?

アプリケーションを動かすために、アプリケーションとそれに必要なソフトウェアをパッケージ化したもの。コンテナ単体では動かすことは難しいので、ホストマシンが絶対に必要となります。この時、ホストマシンにある環境には依存しないようになっている。

コンテナ開発のメリット

  • 開発環境の統一
  • スケーラビリティ
  • CI/CDとの相性がいい

スケーリングというキーワード

システム利用者の増減に応じて、システムの規模を拡大縮小できるようにする。

利用者がどんどん増えた時に、サーバーにリソースを増やす必要があれば、コンテナを複数にすることで対応できるようになる。ただし、これはホストマシンのリソースを増やすことにはなる。

これよりさらに増えた場合には、ホストマシンに相当する仮想マシンを増やすことができるようになる。

→ トラフィックに応じて、コンテナやホストマシンを増減できる

コンテナオーケストレーションとは?

コンテナオーケスとレータ: コンテナがたりてないからサーバーAにコンテナを2個追加して。のような命令をだす。

→ どのサーバーにコンテナをどれくらい配分するべきか、サーバーがどうなっているのか確認しながら監視・管理してくれるようなもの

すなわち?

ECSとは、コンテナの追加。削除、配置と言った面倒な作業を一括で行なってくれるオーケストレータの一種のこと。
→ECSのオーケストレーション機能のために、自分でわざわざサーバーを建てる必要がない。これらを全部AWS側でやってくれる。

ECSの基本構造

大枠順に、Cluster→Service→Task(Task定義を定めること)という順にいろいろある。

Task: コンテナをでデプロイするための最小単位となるため、Task定義(Taskを作成するための設計図)というTaskの設計図(コンテナ設定、リソース設定など)を作る必要がある。

Service: Taskの状態・個数を理想状態に維持する

  • Taskの維持管理
  • スケーリング(ALBなど)
  • 負荷分散
  • アップデートとでプリ

Clauster: Service, Taskを包含するもの。直接、Taskを格納することもできる。

ECSを支えるインフラストラクチャ

2つの選択肢がある

  • EC2ベースの実行環境: EC2のインスタンスを立ち上げて、そこにECSのタスクを実行させる。
    • 高い柔軟性(メリ)
    • コストの最適化(メリ)
    • OSなどの管理コストがかかる(デメ)
  • Fargetベースの実行環境
    • サーバーレスでOSなどの管理が不要(メリ)
    • シンプルで簡単に始めやすい(メリ)
    • 柔軟性が低い(デメ)

ECRとは?

コンテナイメージの格納、保存、管理、デプロイすることを可能にするもの。
コンテナイメージレジストリーの1種となる。

じんじん

実践: VPC

サブネット

  • publicとprivateを作成

    ルートテーブル
  • publicとprivateを作成

    インターネットゲーウェイ

上記3つのつなぎこみ

インターネットゲートウェイとルートテーブルのつなぎこみ(publicの10.0.0.0/24)

サブネットのpublicにpublic側のルートテーブルつなぎこみ

じんじん

awsのcopilotのサンプルをやってみる

Deploying a sample Amazon ECS application using the AWS Copilot CLI
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/copilot-deploy.html

まんま、上からやってみる。

事前準備

  • awsのCLIツールを入れる
Installing or updating to the latest version of the AWS CLI

https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html

If you have sudo permissions, you can install the AWS CLI for all users on the computer. We provide the steps in one easy to copy and paste group. See the descriptions of each line in the following steps.

$ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
$ sudo installer -pkg AWSCLIV2.pkg -target /

Guided installation instructions
Download the file using the curl command. The -o option specifies the file name that the downloaded package is written to. In this example, the file is written to AWSCLIV2.pkg in the current folder.

$ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"

Run the standard macOS installer program, specifying the downloaded .pkg file as the source. Use the -pkg parameter to specify the name of the package to install, and the -target / parameter for which drive to install the package to. The files are installed to /usr/local/aws-cli, and a symlink is automatically created in /usr/local/bin. You must include sudo on the command to grant write permissions to those folders.

$ sudo installer -pkg ./AWSCLIV2.pkg -target /

After installation is complete, debug logs are written to /var/log/install.log.

To verify that the shell can find and run the aws command in your $PATH, use the following commands.


$ which aws
/usr/local/bin/aws 
$ aws --version
aws-cli/2.17.20 Python/3.11.6 Darwin/23.3.0 botocore/2.4.5

If the aws command cannot be found, you might need to restart your terminal or follow the troubleshooting in Troubleshooting errors for the AWS CLI.

  • aws configureを実行、AWS Copilot CLIがアプリケーションとサービスの管理に使用するデフォルトプロファイルを設定
  • Dockerのインストール