カスタムコンテナイメージを使った AWS Fargate で Azure の BLOB Storage をチラ見してみた
お久しぶりです。
プライベートで Azure を使っている SRE チームの syoga です。
もうすぐ今年も終わりですね! という訳で、
今回は AWS Fargate を使ってみようと思います。
Fargate で何をしようかな
Fargate は AWS が提供する ECS でインスタンスを意識せず利用できる、フルマネージドなコンテナ実行環境です。 詳細は AWS の公式ページ等で要チェックください。
で! 何をしようかと思ったのですが、以前の 記事 で作成した LINE BOT で Azure の Blob Storage にアップロードした 画像ファイルを気軽に参照できるようにしたいという思いがありましたので、そんな仕組みのコンテナイメージを作って Fargate で利用してみます。
おさらい
LINE を通じてアップロードした画像を Cognitive Service が解析しますが、その際にアップロードされた画像は BLOB Storage に保存されます。
保存されている画像をチラ見するアプリケーションを作成し、Fargateで起動しておけば好きな時に確認できますね!!

システム構成は上記の通りで Azure と AWS を仲良く利用します。
Azure SDK for PHP を利用し BLOB Storage に保存してある画像の URL 一覧を 取得して表示する Web アプリケーションを作成しておきます。
上記のコンテナイメージを作成し Fargate で利用するのが今回の目的です。
早速 Fargate してみる…前に、ECR
ECR にリポジトリを作成し、ローカルで作成したコンテナイメージを Push しておきます。
早速タスクを作成する
タスクの作成を行います!
※ ECSにはクラスター、サービス、タスクという概念がありますが、今回は割愛します。

AWS コンソールから ECS のメニューを開いてタスク定義を作成します。

起動タイプは Fargate を選択します。

タスクとコンテナの定義の設定で必要な情報を入力していきます。

タスク実行の IAM とタスクサイズを選択します。

Fargate で利用するコンテナを選択するため「コンテナの追加」をポチります、その後上記の設定画面が表示されるので、利用するコンテナの情報を入力し、今回はこのままタスクを作成します。
早速クラスターを作成する
クラスターの作成を行います!

ECS のポータル画面から「クラスターの作成」をポチっとしてクラスターの作成を開始します。

クラスターテンプレートは 「AWS Fargate を使用」 を選択して「次のステップ」へ。

クラスター名と VPC の作成にチェックを入れて作成ボタンをポチります。
VPC、サブネットの作成インターネットゲートウェイのアタッチを自動でしてくれるので、楽ちんです。
早速サービスを作成する前に ロードバランサ
自動で作成された VPC に対してロードバランサを作成しておきます、今回は blog-ecs-alb という名称で ALB を作成しておきました。
早速サービスを作成する
作成したクラスターのリンクを押下し、サービスの作成を選択します。

起動タイプに Fargate を選択しサービス名は任意の名称とします。 先程作成したタスク、クラスターはここで設定します。

タスクの配置は AZ バランススプリットを選択して、「次のステップ」をポチ。

ネットワーク構成はクラスター作成時に自動で作成された VPC とサブネットを設定。


ELB の設定では先程作成した ALB を選択して、リスナーポート、ターゲットグループ等ネットワークの設定を行い「次のステップ」へ。

Auto Scaling は今回は行わないので、そのまま「次のステップ」へ
確認画面が表示されるので内容を確認し「作成」ボタンを押して完了です!
では試してみます
まずはいつも通り弊社フリー素材の Kotani 氏の写真を bot に送ります。

33歳だと…やはりPKB(パツキンボーイ)になったので若く見られているのでしょうか(個人の見解です)
ロードバランサの DNS 名でアクセスしてみます。

こんな感じでブラウザ上から、アップロードした画像が参照できるようになりました!
ボケボケだとしても!!!
設定も楽ちんですし、EC2インスタンスの事を考えずに運用できるので OPS の人にも優しいですね。
弊社でもどんどんプロジェクトに取り入れていきたいと考えております。
完