クラウド勉強日記 (17 日目)

 

(今日の一日)

適当な独自ドメイン(example.com とする) を取得して HTTPS 通信を行う

Web ベージを作った。

具体的には ACMSSL 証明書(DV) を取得し、ELB に設定することで Client -

ELB 間の HTTPS 通信を可能にし、ELB - Server 間は HTTP 通信とした。

SSL 証明書の発行は無料で Route 53 で作成した DNS サーバに、指定された

CNAME レコードを設定することでドメイン検証による検証が行える。

Route 53 では Zone Apex である example.com と ELB を Alias レコードを使用して

CNAME ではなく A レコードとして対応づけることができた。

(これにより可変である ELB の IP アドレスをうまく対応付けることができる。)

また ELB のリスナー設定で HTTP アクセスを HTTPS にリダイレクト(301) する

ことができたので常時 HTTPS 通信にした。

実際に tshark を用いて TLSv1.2 での暗号化通信ができていることを確認。

また ELB のクロスゾーン負荷分散を有効にすることで Region 間のインスタンス

の負荷を均等にした。(遊びでやる分には全く恩恵はないけど。)

 

加えてせっかくなので www.example.com へのアクセスをリダイレクトして

example.com に統一するようにした。

Apache Web Server ならば .htaccess とかいうのを設定するのが簡単そうであるが

今回は AWS サービスを用いてリダイレクトを行った。

基本的には S3 の静的ウェブサイトホスティングを用いてリダイレクトを行うが、

S3 単体では SSL 証明書の設定ができないらしく S3 バケットを Origin Server

として AWS CloudFront をデプロイし, CloudFront に証明書の設定を行った。

ここで pitfall があり、CloudFront で利用できる ACM 証明書は Virginia Region

で発行されたものに限るらしく Client - CloudFront 間の HTTPS 通信には

Virginia Region で発行した ACM 証明書を用いた。

なんか Region ごとでサーバ証明書の Private Key を暗号化するための CMK が

異なるらしく Tokyo Region で発行した証明書をインポートしてもうまく行かない。

あと最初 Web ページにアクセスした際にバケット内のファイル一覧を表した

XML ファイルが謎に表示されたが静的ウェブサイトホスティングではデフォルトの

場合 CloudFront の Default Root Object 設定で index.html を明記する必要がある

みたいだった。

最後に S3 のバケットへの直接アクセスを禁止するために CloudFront でカスタム

ヘッダを付与することで S3 側でのアクセス制御を行った。

CloudFront に OAI(Original Access Identity) を設定することでも実現できるみたい。

 

他にも具体的に手を動かして色々と操作したり、座学での勉強を行ったりなど

ある程度時間を割いて学習することができた。

 

(感想)

GW の最終日は部屋の掃除や色々な事務作業に結構時間を取られてしまった。

明日からは RDS や DynamoDB などの AWS サービスを利用するために必須な

データベースまわりの知識を猛勉強ということで。

そのあとにデータベースまわりのサービスを実際に手を動かして使ってみる。

当初の 90 日間予定のうちの 1 / 3 となる 30 日までには俗に言う Solution Architect

Associate には余裕を持って合格できるレベルにまで理解を深める。

まずはそこまであと 2 週間頑張ろう。

 

クラウド勉強日記 (14 日目)

 

(今日の一日)

CloudWatch Alarm で EC2 インスタンスの CPU 稼働率が threshold を超えたら

自分のアドレスにメール送信みたいなことをした。

Chatbot と Amazon SNS を用いて slack にアラームを通知する機能を作った。

Youtube にあがってた BlackBelt の Gateway Load Balancer や EMR の説明動画

を視聴した。1.5 倍速で見たが結構分かりやすかった。

VPC エンドポイントを用いた 2 種類のプライベート通信の確立の仕方や

VPC ピアリング、 Amazon Transit Gateway についてより深く勉強した。

 

(感想)

AWS の主要な機能についてはだいたい分かってきたけど結局それぞれを使おう

と思うと MySQL, Memcached, Hadoop, WordPress あたりのアプリケーションの

知識がどうしても必要になってきてまだまだ大変。

とりあえずデータベースについては GW 明けにある程度気合い入れて勉強する

つもりなのでひとまず残り 3 日は DB 以外のサービスについて理解を深めるか。

 

クラウド勉強日記 (13 日目)

 

(今日の一日)

この 2 日で学んだことは具体的には

Amazon KMS を用いた S3 オブジェクトのクライアントサイド暗号化,

VPCDNS 機能(Amazon Provided DNS および Route 53),

SSH ポートフォワーディング、

Amazon RDS と Amazon Aurora それぞれの運用の仕組みやその違い

などなど。

また VPC Flow Logs で VPC 内のトラフィックをキャプチャして CloudWatch

でログを眺めて遊んだりした。

AWS と直接関係はないが公開鍵暗号とデジタル署名は似たような暗号化手法で

どちらも実現できることが多いけど本質は全く違う話だよねということを

確認した。

 

(感想)

GW 長いようで 5 日間しかないんだよね。

AWS の主要サービスの理解およびその実践をやりたいと思ってるんだけど

あと 4 日間で終わるかな?(たぶん終わらない)

いずれにせよこれまで通りサボらず毎日頑張りたいね。

 

クラウド勉強日記 (11 日目)

 

(今日の一日)

また 2 日分溜め込んでの日記。

毎日クラウド勉強はしているのだが日記を書くの面倒になって寝てしまう。

基本的にこの 2 日はハンズオンで操作するというよりは座学中心の学習。

ソリューションアーキテクトアソシエイトの本のデータベース(第 6 章)、

ストレージ(第 7 章)、プロビジョニング(第 11 章)、ネットワーク(第 2 章)

あたりの章を読んだ。

また今日は IAM について色々と知識の抜けを埋めた。

"IAM ロールの EC2 へのアタッチは厳密には間に Instance Profile を介すること"

"IAM ポリシーとして IAM action の permission を与える場合は circumvent

できないように慎重に行う必要があること"

"AssumeRole action の権限をユーザーに付与することでその action の resource

として指定された IAM ロールを引き受けられること(Switch Role)"

などなど。

 

(感想)

現状試験はほとんど気にせず AWS の主要サービスについて広くそしてだんだんと

深く理解していければいいかな。

GW は時間があるのでたくさん精進したい。

 

クラウド勉強日記 (9 日目)

 

(今日の一日)

昨日、今日と AWS のストレージサービスやデータベースサービスについて

ソリューションアーキテクトアソシエイトの本を読んで座学した。

やる予定だった HTTPS 接続とか CLI 操作とかの実践演習ができてないのは

ただの怠慢。

 

(感想)

土日の寝不足からかあんまり質の良い勉強ができず、業務後ぐうたら寝て

しまって反省です。

明日は祝日だし、また来週は GW なのでここで頑張って勉強してソリューション

アーキテクトアソシエイトレベルの内容は理解および実践したい。

 

クラウド勉強日記 (7 日目)

 

(今日の一日)

昨日はブログを書く時間がなかったので昨日分から。

昨日は VPC の設定をしたり、AWS の基本知識を復習などした。

またプライベートサブネット内の EC2 インスタンスに bastion server を

経由して ssh 接続し、 NAT ゲートウェイ経由で外部インターネットとの

疎通確認などした。

EC2 の Capacity Reservation とか Dedicated Instance とかで遊んだりもした。

 

今日は ALB と AutoScaling 機能を用いて Web サーバーへのアクセスの負荷分散

を行った。めんどくさいかなと思ったが ALB と AutoScaling の設定をしたあと

Target に設定したらなんかできた。

(AWS、雰囲気でできてしまうのでまずいという話が)

ネットワーク構成は簡単にできてしまうので Apache の設定とかの方が知識が

不足しており大変。

 

(ハマった点)

bastion server 経由で ssh 接続する際に OpenSSH の ssh-agent forwarding

を用いてアクセスしようとしたのだがなぜかうまく行かずかなり時間が溶けた。

Key Pair 生成で AWS が公開鍵 / 秘密鍵生成して秘密鍵をダウンロードとかいう

謎仕様がデフォルトだったせいでローカルのパソコンに秘密鍵しか保持

されていなかったのがおそらく原因っぽい。

ローカルで key-gen して公開鍵と秘密鍵のペアを管理し、公開鍵を AWS

登録するタイプの Key Pair 生成もできることが分かりそれをするとできた。

 

(感想)

VPC の設定をしているときに Route Table の設定とか AWS だとこんな

簡単にできるんですねとなった。

マネージドサービスの NAT Gateway を使えば簡単に NAT 機能を実現

できてまた AZ 内での冗長化もされているらしいのですごいなと(小並感)。

ただ現状インスタンスの作成 / 設定をほぼほぼ GUI でキーボードポチポチ

しながらやってるので結構操作が煩わしい。

 

(予定)

1. HTTPS 接続や DNS サービスの Route 53 など使いたいね。

2. GUI から操作するのが煩わしいので CLI からの操作を勉強したい。

3. VPCVPN 接続とかもやってみたいんだけど固定 IP アドレスの取得や

接続設定可能なルーターなどが必要なのでどうしようかなというところ。

4. データベースサービス(RDS, DynamoDB) は今の遊びが終わった後に。

 

クラウド勉強日記 (5 日目)

 

(今日の一日)

予定通り初日に買ったクラウドラクティショナーの本をまず一周分

読み終えて理解した。

CloudFront, Route53, RDS, DynamoDB などの基本仕様を理解した。

(これらの内容は前の章までに既に登場しており予め先読みしてたのですんなり)

 

まず明日、明後日は個々の AWS サービスを実際に手を動かしてたわむれたい。

初日に買ったもう一つの本(ソリューションアーキテクトアソシエイト) に

各サービスについてより詳しいことが書いてあるのでそれも参考にして

 

(感想)

1 つ目の本は薄く広い内容だったのでこれからは AWS 関連のブログを

読むなどしてより実用的な知識をインプットしたいね。