AWS Fargate事始め〜CloudWatch Logsにこんにちは

2018.04.02

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは、HOMELAND第7シーズンが始まって毎週待ち遠しい井手です。 入社して間もない頃、「社内システムの一部をFargateで代替できるか調査してみて」との天啓を得ました。 まずはお約束としてなるべく手順が少なく「CloudWatch Logsにこんにちはと表示させる」(今回要件的にマルチバイト文字がミソ)をやってみたのでご紹介したいと思います。

Fargateとは

Fargateとは一言で表すと「サーバーやクラスターの管理が不要なコンテナの実行」 = EC2不要でコンテナが実行出来るサービスです。 ※(参考)公式ページ ※個人的にはHerokuっぽいイメージのサービス。

注意点

やってみた

1. Dockerイメージの作成

say_helloディレクトリ配下に下記ファイルを用意します。 ・実行ファイルの用意

app.py

# -*- coding: utf-8 -*-
def say_hello():
    print("こんにちは")

if __name__ == "__main__":
    say_hello()

・Dockerfileの用意

Dockerfile

FROM python:2.7.14-slim

WORKDIR /app

ADD . /app

CMD ["python", "app.py"]

・Dockerイメージのビルド

 $ pwd
 /Users/xxxx/desktop/say_hello
 $ docker build -t say_hello .

2. ECR(Amazon Elastic Container Registry)へのDockerイメージの登録

AWSコンソール上でAmazon ECS>ECR と開き今すぐ始めるをクリック。

リポジトリ名を入力し、次のステップをクリック。

CLIでpushするコマンドが以下の通り表示されるので実行する。(今回の手順ではbuild部分は済ましているので飛ばす)

3. クラスター、サービス、タスク、コンテナの用意

ECRにDockerイメージの準備が出来たので、本題のFargateの準備をします。以下の画像が分かりやすいですが、ECSでのFargateでは以下のような構成になっており、クラスターやタスク等は個別に定義する事ができます。 ただ、今回の本題はログの吐き出しなのでここはGet Startedを利用してサクッと設定してしまいます。

AWSコンソール上でAmazon ECSを開きGet Startedをクリックし、コンテナ定義でcustomを選択し設定をクリック。

イメージにECRより作成したリポジトリのURIを入力し更新をクリック。

後は、初期値の設定を変更せず更新>次>次>次>作成 とボタンをクリックし進んで下さい。

4. CloudWatch Logsの確認

最後にCloudWatch Logsを確認します。

※設定後はタスクは起動し続けるのでクラスターの削除、またはサービスのタスク数を0にして下さい。

最後に

今回、Fargateを触ってみてその手軽さから今後広く使われていくサービスなのではと感じました。 東京リージョンでのサービス開始はまだですが、これからも積極的にFargateを利用して行きたいと思います。

参考とさせて頂いた記事

AWS Fargate Advent Calendar 2017