バナー画像

AWS fargateについてまとめています。

AWS fargateは、サーバーレスでコンテナを実行できる環境

自分でコンテナの実行環境やクラスターを構築しなくても、「このコンテナを実行したい。実行環境はおまかせ」といった感覚で、利用できるサービスなんですね。

デメリットは、固定環境で実行しないため、パブリックIPの固定割当ができない点と、SSHやdocker execが使えない点です。

関連)AWS Fargate(サーバーやクラスターの管理が不要なコンテナの使用)| AWS

AWS Fargateは、Amazon Elastic Container Service (ECS) と Amazon Elastic Kubernetes Service (EKS)で動作する、コンテナ向けサーバーレスコンピューティングエンジン。Fargate 使用することで、コンテナを動作させるサーバやクラスタの構築作業をおこなうことなく、アプリケーションの開発に集中できます。Fargateはサーバーのプロビジョニングと管理が不要。アプリケーションごとにリソースを指定して、使用したぶんのみ料金を支払う従量課金制です。設計段階からのアプリケーション部分とインフラ部分を分離でき、強固なセキュリティを実現できます。

EC2インスタンス起動との違い

Fargateを使ったアプリケーション実行では、EC2インスタンスの起動が不要です。実行時に、AWSの管理でコンテナの実行環境を用意してくれるんですね。EC2のスケーリング時には、インスタンスのリソースも含めてうまくスケーリングさせる必要があり煩雑になりますし、バッファとして余裕を持っている分も含めてインスタンスの課金が必要です。

しかし、Fargateだと、必要な分だけ課金されるのでコストの節約になるんですね。

デメリットは、サーバレス実行型なので、アプリケーションの実行が終了すると実行環境自体が消滅してしまう点。そのため、常にサービスを起動しておくようなアプリケーションや、アプリケーション側で常にデータの更新が必要な場合は向きません。GPUサポートやWindowsコンテナの実行にはFargateは不向きとなります。

AWS Fargateの使い方

AWS Fargateは、ECSとEKSの両方で動作するコンテナ向けサーバレスコンピュータエンジン。AWSマネジメントコンソールから、AWS Fargateのトップページに移動します。

関連)AWS Fargate(サーバーやクラスターの管理が不要なコンテナの使用)| AWS

「AWS Fargateの使用を開始する」をクリックすると、Amazon Elastic Container Service(ECS)のページに遷移します。「今すぐ始める」をクリックします。

Fargateの使用には以下の設定が必要になります。

コンテナの定義では、あらかじめ用意されているプリセット(sample-app、nginx、tomcat-webserver)を選ぶか、customからユーザが設定を行います。

タスク定義では、タスク定義名とタスクサイズ(タスク目盛りとタスクCPU)を指定します。

サービス定義では、サービス名、必要なタスクの数、セキュリティグループを新規作成するか、ロードバランサーの種類を指定します。

クラスター設定では、クラスター名、VPC ID、サブネットの設定を行います。デフォルトではVPC IDもサブネットも新規作成する設定となっています。

指定した定義内容や設定内容が表示されるので「作成」をクリックすると、Fargateを使用したAmazon ECSが作成されます。

EC2インスタンスで実行されているアプリケーションをコンテナ化する例

EC2インスタンスで実行されているアプリをFargateが管理するコンテナで実行するには以下の手順が必要になります。

関連)AWS Fargate を使用してサーバーレスの Twitter リーダーを構築する | Amazon Web Services ブログ

準備作業として、AWS CLIコマンドとDockerコマンドを実行できる環境を設定する必要があります。EC2インスタンスを起動してDockerをインストールしましょう。Docker環境にAWS CLIをインストールするには、以下を参考にしてください。

【関連記事】
AWS CLIのインストール方法 AWSアクセスキーの登録と疎通確認

EC2オプションを使用する場合は、IAMロールを作成してインスタンスにアタッチする必要があります。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ssm:PutParameter",
                "firehose:*",
                "iam:CreateRole",
                "ecr:*",
                "iam:AttachRolePolicy",
                "ssm:GetParameter"
            ],
            "Resource": "*"
        }
    ]
}

 

実行環境をFargateに移すにあたり、アプリケーションの変更が必要です。もとのアプリSocialAnalyticsReaderでは、設定ファイルからTwitter API資格情報を読み取る仕様になっています。コンテナ上には可変する情報を保持できないため、設定ファイルの内容をAWS Systems Manager Parameter Storeのようなサービスに設定を保存するよう変更が必要なんですね。

もし、コンテナ上に設定ファイルを配置してしまうと、設定ファイルを変更するごとにコンテナの再構築が必要になってしまいます。

上記のサンプルでは、以下の行を変更して、AWS Node SDKを使ってAWS Systems Manager Parameterストアから設定をおこなうように設定変更しています。

var twitter_config = require('./twitter_reader_config.js');

以降、Dockerイメージの作成、ECRへのコンテナ登録、Fargateの設定をおこなってEC2インスタンスで実行していたアプリのコンテナ化をおこなうことができます。

AWS Fargateのまとめ

ポテパンダの一言メモ
  • AWS Fargateはサーバレスでコンテナを実行する環境
  • Fargateの使用は、Amazon Elastic Container Service(ECS)から設定をおこなう
  • EC2で動作するアプリをコンテナ化するには、設定ファイルなどを外部サービスに「外出し」する必要あり

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。