2016の11日目の記事です。さんの「趣味のプログラミングから職業としてのプログラミングへ」でした。windymelt.hatenablog.com今回はAWSサービスをいくつか触ってみた話について書きたいと思います。Instance監視Mackerelmackerel-agentAWSインテグレーションまとめやったこと軽く自己紹介すると私は去年の夏頃はてなに入社したエンジニアで、それ以前はWeb開発の経験はなく、AWSのサービスも触ったことがなかったです。そこで簡単なWebアプリケーションを開発してみて、AWS上にデプロイしてみるということをしました。Gatewayも使ってみました。監視はMackerelを利用しました。この際様々な概念があったのでこの記事で整理してみます。クラウド上のサーバインスタンスが欲しいときに便利そうですね。aws.amazon.com使い方に関してはこちらを見ながらやると出来ると思います。実際にインスタンスを起動してみましょう。AWSにログインするとこういう画面にきます。「サービス」タブからEC2を見つけて選択しましょう。EC2のダッシュボードに来ると中央にこういう良さそうなボタンがあるのでそれをクリックするとインスタンスを作るウィザードに遷移します。いう画面がでてくるのでわかりやすいですね。わからない概念がいろいろ増えてきました(VPC、サブネット、IAMロール、セキュリティグループ)デフォルトのままでもなんとかなったりしますが、それぞれ見ていきましょう。以下の記事に簡単な説明があります。aws.amazon.comVPC内の構成はユーザ次第という感じで、その中にサブネットを配置して、EC2インスタンスなどを起動するということができます。デフォルトのVPCがありますが、追加で作りたい場合はEC2インスタンスを作るときと同様に、今度は「サービス」から「VPC」を選択し、VPCダッシュボードに行きます。「VPCウィザードの開始」から作る、もしくはサイドバーの「VPC」を選択して「VPCの作成」を選ぶ方法があります。ウィザードを利用したほうがわかりやすそう。パブリック、プライベートサブネット?サブネットサブネットとは何かという感じですが、以下の記事を読むとVPCとの関係がわかりやすいです。docs.aws.amazon.comサブネットの作成VPCダッシュボードからサブネットを個別に作ることができます(先ほどのVPCウィザードで一緒に作ってしまっても良さそう)パブリックとプライベートの違いですが、上記サイトによると、サブネットのトラフィックがインターネットゲートウェイにルーティングされる場合、そのサブネットはパブリックサブネットと呼ばれます。インターネットゲートウェイ。コンポーネントでありなるほどですね。インターネットと通信する場合は必要そうですね。先ほどのVPCダッシュボードからインターネットゲートウェイを選び、作成はネームタグを決めるだけなので簡単にできます。ここでVPCにアタッチ・デタッチもできます。ルートテーブルネットワークトラフィックを指定するもののようですね。docs.aws.amazon.comつまりこのルートテーブルにてサブネットのトラフィックをインターネットゲートウェイに向ければパブリック・サブネットにできるという感じですね。ルートテーブルの作成ルートテーブルもVPCダッシュボード「ルートテーブル」の欄から作成できます。以下のような「ルート」タブがあるので、ルーティングを指定できます。IAMロールIAMロールに関しては以下に詳しくありますが、どのユーザがどのリソースにたいしてアクセス権限があるのかを制御するのに使うようですね。後ほどサーバ監視・管理サービスMackerelの話でもこちらのIAMロールが出てきます。docs.aws.amazon.comIAMロールの作成や管理はこちらからできます。https://console.aws.amazon.com/iam/セキュリティグループセキュリティグループですが、トラフィックを制御するという点ではルートテーブルやサブネットとごっちゃになりそうですが、サブネットレベルではなくインスタンスレベルで制御するようです。docs.aws.amazon.comサブネット内にインスタンスが複数個ある際にインスタンスごとに細かくトラフィックを制御したいときに便利そうですね。セキュリティグループの作成VPCダッシュボード...かと思いきやEC2ダッシュボードにあります。「インスタンスごと」の制御なので確かに、という感じですね。作成時こういう画面が出るので、インバウンド、アウトバウンドのトラフィックの制御ができます。アプリケーションがデータベースを利用している際は便利そうですね。6つのデータベースエンジンから選択することができるようです。aws.amazon.comRDSの作成EC2の作成の際と同様に、RDSダッシュボードに行き、インスタンスの起動を選択します。「今すぐ始める」を選択しても同じみたいです。私の場合はアプリケーションでMySQLを利用していたのでMySQLを選択しました。MySQLのエンジンのバージョンやストレージ、識別子など聞かれるので入力していきます。ネットワーク&セキュリティ欄にてVPC、サブネット、セキュリティグループなど聞かれます。これらはEC2の際にもみた概念ですね。自分の構成に合わせて選択していくと良さそうです。あとは作成ボタンを押せば完了。待てばDBインスタンスを利用できるようになります。本当にクリックだけで利用できるようになって便利です。Balancerです。名前の通りロードバランサーなので、サービスに対するリクエストを分散させたりできます。aws.amazon.comALBの作成EC2ダッシュボードに「ロードバランサー」という項目があるのでそこから作成できます。Balancerを選択。アベイラビリティゾーンという概念が登場します。ALBで二つ以上のゾーンを指定することによって、このリクエストは1a、これは1cなどのように振り分けることができるようです。ALBのセキュリティグループも指定できます。EC2やRDSの場合もそうですが、それぞれセキュリティグループを適当にデフォルトのものなどにしているとわからなくなってくるので、これはアプリケーションのあるEC2インスタンスのセキュリティグループ、これはDBインスタンスのセキュリティグループなどとわかりやすく名前などもつけておくと良いと感じました。ターゲットグループとヘルスチェックという概念が登場します。ターゲットグループALBでリクエストをルーティングする対象のEC2インスタンスなどが「ターゲット」なので、それらをまとめたものが「ターゲットグループ」という感じですね。docs.aws.amazon.comまた1つのALBにつきターゲットグループは複数指定することも可能のようです。先ほどALBを作成する際に一緒に作成することも可能ですし、ALBを作成したあとにEC2ダッシュボードの「ターゲットグループ」から新たに作成することができます(大体同じ画面にきます)。VPCなども適切に指定してあげましょう。ターゲットグループを作成した後、個別のターゲットをグループに入れていけば良いです。ヘルスチェック定期的にターゲットグループ内のターゲットに対してリクエストを送信し、正常かどうかを確認することがヘルスチェックとのことです。docs.aws.amazon.com自分のアプリケーションが一部のターゲットグループではうまく動作していない場合、そちらにリクエストがいくようになってると困りますよね、そういうことが起きないようにヘルスチェックをし、そちらにはリクエストをいかせないようにALBがやってくれるようです。CLBALBについて調べていると、ELBやCLBのような用語も登場すると思います。Balancer)、現在ではCLBとALBがどちらもELBの一種という位置付けになっているみたいです。ALBとCLBの具体的な違いについては以下にまとまってあります。以下の記事にも書いてありますが、これを利用すればインターネットからはアクセスできないようにしつつ、インスタンスからインターネットや他インスタンスにアクセスできるよう制御できて嬉しいです。Gatewayの作成こちらはVPCダッシュボードから作ります。IPを指定するだけで作れます。ここまでの概念がわかれば以下の画像もわかりやすいかと思います。Gatewayを利用しトラフィックを送信していることがわかります。ルートテーブルが正しく指定されていることも大事です。Instance以下の表がわかりやすいです。Gatewayの登場によりメンテナンスコストが減ったようです。docs.aws.amazon.com監視ここからはおまけみたいな感じですがとても大事だと思います。AWS上にアプリケーションをデプロイし、色々なサービスを利用したは良いけど、障害などが起きた際にどこが問題なのか知るにはどうすれば良いでしょうか。監視はしておきたいですね。Cloudwatchでグラフをみたりアラームを設定したりもできますが、今回はMackerelを利用してみました。MackerelMackerelははてなが運営するサーバ監視・管理サービスです。mackerel.ioちょうど昨日のMackerelアドベントカレンダーでもMackerelのサービスメトリック、監視設定、アラートについて触れましたので、そちらも参考にしてください。stefafafan.hatenablog.commackerel-agentMackerelの基本的な構成としてはエージェントをサーバにインストールし、メトリックを定期的にMackerel本体へプッシュしていくという感じです。エージェントのインストール方法に関してはMackerelにログインし、「新規ホストの登録」画面に行くとOSごとにインストール方法が記載されています。あとは設定ファイルにAPIキーを追記し、エージェントを起動させると勝手にグラフに様々なメトリックが描画されます。エージェントに関してはオープンソースです。github.comプラグインなども充実しています(自分のプラグインを作成して利用するのも可能)github.comAWSインテグレーションEC2インスタンスなどにエージェントをインストールしてメトリックを取得するのも便利ですが、今回のようにAWSのサービスを複数利用している場合はMackerelのAWSインテグレーションを利用するとより便利かと思います。mackerel.io連携の仕方としては推奨されている方法はIAMロールを指定するというものです。IAMロールを利用すると、権限を制限することができますので安心です(EC2の場合はAmazonEC2ReadOnlyAccessなど)。オーガニゼーション設定のAWSインテグレーションタブから設定できます。IAMロールやリージョンを選択し、メトリックを取得したいAWSサービスにチェックを入れると以下のように取得されるインスタンスの数が表示されるので実際に設定を作る前に確認できます。あとは数分待てば勝手にグラフができます。まとめAWSサービスは沢山あり、知らない用語や概念も多いですが、一度利用してみると他のサービスもすぐに使えるようになると思うので簡単なものから試すと良さそうと思いました。2016」でも新しいサービスが増えたのでそれらも触ってみたいですね。id:Songmuです。どんな話をするのでしょうか、楽しみですね。VMで個人用Mastodonインスタンスをシュッと立てた華金だし最近流行ってるしシュッと立ててみようとなり、立てた。はてなブログPro株式会社はてなでWebアプリケーションエンジニアやっています。Traceyさんが渋谷で撮ったMVが良いので見てくれMacのVSCodeのバックアップディレクトリにファイルを置いたらVSCode起動のたびに同じファイルが開かれて鬱陶しい月別アーカイブ検索はてなブログをはじめよう!stefafafanさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。