【AWS更新情報】大阪リージョンがリリースされました
2021年3月2日に大阪リージョンが正式リリースされました。
AWS Asia Pacific (Osaka) Region Now Open to All, with Three AZs and More Services
- AZは3つ
- リージョンごとの提供サービス一覧 が、まだ更新されていないようでした。
ECSでコンテナを動かしてみる
前回、ECRにコンテナを登録してみました。
ECRにdockerイメージを登録してみる - xdeveloper
今回はECRに登録したコンテナをECSで動かしてみたいと思います。
ECSとは
Amazon Elastic Container Service (ECS) はDockerコンテナの起動、停止、デプロイ、スケーリング、設定を自動化できるフルマネージドなコンテナオーケストレーションサービスです。
これまでコンテナを実行するホストマシン環境は自分で準備する必要がありましたが、ECSを利用するとホストマシン環境を簡単に作成することができます。
またコンテナの起動、停止、デプロイやこれらの自動化もECSより実施することができます。ECSを利用することでコンテナの管理を高品質で効率よく行うことができます。
起動タイプ
コンテナが動作するホストによって起動タイプは「EC2」と「Fargate」があります。
「EC2」はホストマシンがEC2上に作成されます。ホストマシンを複数台作成し冗長化することも可能です。
「Fargate」はホストマシンの管理を完全にAWSに移譲するものです。そのためホストマシンにアクセスすることはできません。
AWSに任せてしまうことでホストマシンに対するセキュリティやリソース状況などの管理を行う必要がなくなります。
タスク/サービス/クラスター
ECSを利用する上で少なくとも知っておく必要がある3つの用語です。
タスク
コンテナの管理(1タスクに複数コンテナ可)
コンテナのリソース、環境変数なども設定サービス
複数のタスクより成り立つ。タスクの起動数の設定。
ELBやデプロイやオートスケールの方法の設定。
ECSでコンテナを起動させてみよう
実際にECSでコンテナを起動してみましょう。
今回は起動タイプをEC2、コンテナは前回作成したApacheのコンテナを利用します。
クラスターの作成
AWSマネジメントコンソールからECSを選択し、メニューのクラスターを選択、「クラスターの作成」ボタンをクリックします。
クラスターテンプレートの選択では「EC2 Linux + ネットワークイング」を選び、「次のステップ」をクリックします。
画面下の「作成」ボタンをクリックします。
タスクの作成
続いてタスクを作成します。
事前にECRでデプロイしたいリポジトリのURIをECRで確認しメモしておきます。
ECSのメニューの「タスク定義」を選択、「新しいタスク定義の作成」ボタンをクリックします。
起動タイプでは「EC2」を選択します。
- タスク定義名・・・適当な名前を入力
ネットワークモード・・・bridge
タスクメモリ・・・512
- タスクCPU・・・512
「コンテナの追加」をクリックします。
「追加」ボタンで「コンテナの追加」を閉じます。
画面下の「作成」ボタンをクリックします。
サービスの作成
サービスを作成します。
ECSのメニューの「クラスタ」を選択、先ほど作成したクラスタを選択します。
サービスタブの「作成」ボタンをクリック。
画面下の「次のステップ」をクリックします。
以降はデフォルトのまま作成します。
しばらく待つとコンテナインスタンスが2つ起動しているのが分かります。
コンテナインスタンスのリンクをクリックします。
コンテナインスタンスの詳細が分かります。
EC2インスタンスよりコンテナが実行されているEC2のインスタンスが分かります。
パブリックIPに記載されているIPアドレスにブラウザからアクセスしてみます。
コンテナ上で動作しているApacheの画面にアクセスできました。
AWS CodeCommitを利用する。
CodeCommitとは
Gitを使用したソース管理サービスになります。 CodeCommitを利用することでGitサーバの構築、管理が不要になります。 GitユーザーはIAMユーザー単位で管理することができます。
前提
- ここでは基本的なCodeCommitの使い方を記載しています。
- Gitの基本的な知識がある人向けです。
- GitはHTTPS認証の接続になります。
CodeCommitを利用するまでの流れ
CodeCommitでリポジトリを作成する
まずはCodeCommitでリポジトリを作成する手順になります。 サービスからCodeCommitを選択し、メニューのリポジトリを選択し、「リポジトリを作成」ボタンを押します。
次にリポジトリ名を入力して「作成ボタン」を押します。
リポジトリが作成できたことを確認します。
IAMでグループを作成する
リポジトリを作成したらCodeCommit用にグループを作成します。 サービスからIAMを選択し、メニューのグループから「新しいグループの作成」ボタンを押します。
グループ名を入力し、「次のステップ」ボタンを押します。
作成するグループにアタッチするポリシーを選択します。 今回は「 AWSCodeCommitFullAccess」を追加し、「次のステップ」ボタンを押します。
確認画面で「グループの作成」ボタンを押下します。
作成したグループが表示されていることを確認します。
IAMでユーザーを作成する
グループを作成したらCodeCommitを利用するユーザーを作成します。 メニューのユーザーから「ユーザーを追加」ボタンを押します。
ユーザー名を入力し、アクセスの種類は「プログラムによるアクセス」を選択し、「次のステップ:アクセス権限」ボタンを押します。
「ユーザーをグループに追加」から先ほど作成したCodeCommit用のグループを選択し、「次のステップ:タグ」ボタンを押します。
必要があればタグの情報を入力し、「次のステップ:確認」ボタンを押します。
内容を確認し、問題がなければ「ユーザーの作成」ボタンを押します。
ユーザーの作成が成功したらアクセスキーIDやシークレットアクセスキーを保存します。 アクセスキーIDやシークレットアクセスキーは他人に公開しないでください。 次は作成したユーザーを選択し、認証情報を変更します。
認証情報タブから「AWS CodeCommit の HTTPS Git 認証情報」の「認証情報を生成」ボタンを押します。
「証明書のダウンロード」ボタンを押して認証情報をダウンロードします。 認証情報は他人に公開しなくでください。
作成したリポジトリをpullする
サービスからCodeCommitを選択し、メニューのリポジトリを選択し、「URLのクローン」からHTTPSを選択しURLをコピーします。
ターミナルを起動し、コピーしたURLを使用してリポジトリをクローンします。 UsernameとPasswordはダウンロードした認証情報に記載されているものを使用します。 成功すると以下のようなメッセージが表示されます。
作成したリポジトリにpushする
クローンしたプロジェクトにサンプルのファイルを作成し、pushを行います。
AWSコンソールのサービスからCodeCommitを選択し、メニューのリポジトリを選択し、作成したプロジェクトを選択します。
先ほどpushしたファイルが追加されていることを確認します。
以上が基本的なCodeCommitの使い方になります。
ECRにdockerイメージを登録してみる
今回AWSのECRを利用してコンテナイメージを登録してみたいと思います。
ECRを利用することでコンテナイメージを皆と共有したり、デプロイしたりすることができます。
サンプルとしてApacheのコンテナを準備してやってみます。
ECRとは
Amazon Elastic Container Registry (ECR) はコンテナのイメージを保存・共有できるサービスです。Amazon Elastic Container Service (ECS)やAmazon Elastic Kubernetes Service (EKS)などと連携して保存したイメージからデプロイすることができます。
前提知識
- dockerの基本的な知識があること
実施した環境
実行手順
dockerコンテナを準備
まずはApacheのイメージを公式レジストリから取ってきます。
# docker pull httpd
docker imagesでイメージが追加されたのが分かります。
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE httpd latest 683a7aad17d3 3 weeks ago 138MB
docker runでコンテナを起動し、ブラウザからhttp://localhostにアクセスすると、It works!と表示されるはずです
docker run -rm -p 80:80 httpd
このイメージをECRに登録します。
ECRにリポジトリを作成
AWSマネジメントコンソールからECRの画面を開きます。
「リポジトリを作成」ボタンをクリックします。
可視性設定に「プライベート」を選択、リポジトリ名に「httpd」を入力します。
画面下部の「リポジトリを作成」ボタンをクリックします。
作成したリポジトリが一覧に追加されました。
リポジトリを選択し画面上部の「プッシュコマンドの表示」をクリックします。
このリポジトリにイメージを登録するためのコマンドが4つ表示されます。
4つのコマンドをメモしておきましょう。
リポジトリにプッシュ
メモした4つのコマンドを実行していきます。
1つ目のコマンドでAWSへのdockerクライアント認証を行います。
aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin xxx.ecr.ap-northeast-1.amazonaws.com
2つ目のコマンドでビルドします。今回はApacheのイメージをそのままECRに登録するので実施不要です。
docker build -t httpd .
3つ目のコマンドECRのhttpdリポジトリについてlatestというタグ付けを行います。
タグはv1, v2のようにバージョンとすると運用しやすくなります。
docker tag httpd:latest xxx.ecr.ap-northeast-1.amazonaws.com/httpd:latest
4つ目のコマンドで作成したタグをECRにプッシュします。
docker push xxx.ecr.ap-northeast-1.amazonaws.com/httpd:latest
ECRの画面を確認するとプッシュしたタグが追加されているのが分かります。
参考
新人に答えるAWSの基本(1)勉強方法
AWSの良い勉強方法は?
AWSを覚えるための良い教材は?
概要をつかむ為の教材。
入門書
★の数を頼りにamazon.co.jpで適当に探してみてください。 幸いな事に、最近は書籍が豊富です。2019年頃から爆発的に書籍が充実しましたね。
YouTube
YouTubeを活用してみましょう。AWSの公式チャンネルがあります。 例えばAWS再入門といった動画で感覚を掴みましょう。
- AWS公式Youtube
- AWS再入門
- VPC
- EC2
- S3
- ELB
- SQS
- DynamoDB
- CloudFormation
- API Gateway
- Cognito
- RDS
- Route 53 Hosted Zone
- Route 53 Resolver
- IAM
- AWS Config
公式サイトのスライドなど
AWSの代表的なサービスについて概要を掴みましょう。
操作を覚える為の教材。
公式のハンズオン資料
ハンズオン資料を見ながら体験してみましょう。
Udemy
Udemyという動画付きの学習サイトがあります。 AWSの操作画面を動画で表示しながら解説をしてくれるので、取り組みやすいのではないでしょうか? IT系のコースが豊富です。1教材あたり数万円の定価設定がされてますが、セールの時には数千円になる事もあります。
研修や資格の為の教材。
有料研修(Architecting on AWS)
Architecting on AWSを学ぶと基本を身に付けることができます。
無料のオンラインラーニング
トレーニングライブラリで無料の研修コースがあります。コースが沢山ある反面、どれが最低限必要なのかを判断するのが新人さんには難しいかもしれません。
なるべく会社からお金を出してもらって有料研修を受けるほうが良いと思います。
FAQ
サンプル問題
ソリューションアーキテクトアソシエイトのページにサンプル問題がありますので、解いてみましょう。
個々のサービスの概要を知る為の教材。
活用資料集
個々のサービスの概要を知るには活用資料集が有用です。
個々のサービスの仕様を把握する為の教材。
AWSのドキュメント
個々のサービスを知るには、AWSのドキュメントを参照するのが良いでしょう。
設計を知る為の教材。
Well-Architected Framework
Well-Architected Frameworkを見てみましょう。 AWSでインフラを構築する場合の考え方がわかります。
試験準備
その他