プログラマでありたい

おっさんになっても、プログラマでありつづけたい

2021年4月の目標

4月も既に4日目ですが、3月の振り返りと4月の目標です。

2021年3月の目標と達成度

3月の目標と達成度は下記のとおりです。

AWS 認定 Alexaスキルの取得(12冠達成)
⇒ ◯ Alexaスキルも合格して、無事12冠に成れました。

f:id:dkfj:20210403233208p:plain

序章を完成させる 残1件と追加1件

⇒ △ 1件完成。1件残

執筆再開 2年間寝かしている奴をちゃんとやる

⇒ × 4月こそ 

技術ブログを4本書く

⇒ × 1本だけ。NRIネットコムの技術&デザインブログに書きました

tech.nri-net.com


1日1万歩

⇒ × アベレージで6,847歩。外に全く出ない日が問題。朝か晩に必ず散歩する習慣をつける

500ツイート、50万インプレッション、フォロワー100名増
⇒ △ 355ツイート、38万インプレッション、フォロワー84人増
    単純計算だけど、500ツイートしていたら、たぶん達成できていた。息を吐くようにツイートせねば

ということで、全般的にダメダメです。が、2月に比べて状況は良くなりつつあります。忙しさのピークを抜けつつあります。4月からは心機一転がんばるぞ

2021年4月の目標と達成度

  • AWS 認定 Alexaスキルの取得(12冠達成)
  • 序章を完成させる 残1件と追加1件
  • 執筆再開 2年間寝かしている奴を技術書博向けに
  • 技術ブログを4本書く
  • 1日1万歩
  • 500ツイート、50万インプレッション、フォロワー100名増
  • 睡眠時間 アベレージで7時間

2021年3月の目標

2021年1月の目標をたてたものの、振り返ることなく2月を消失してしまいました。反省の上で、3月の目標をたてます。

目標と達成状況

2021年1月の目標と達成状況
  • AWS 認定 高度なネットワーキング – 専門知識の取得 ⇒ ○ 2/8に取得したので良しとする。
  • 序章を完成させる ⇒ △ 2本中1本完成。終わらせないと
  • 新規書籍の目次完了。メンバーが執筆レディの状態にする ⇒ ○ 完成させたものの動いていないなぁ
  • 技術ブログを4本書く ⇒ ○ DirectConnect シリーズを5本書いたから合格
  • 毎日1万歩歩く。1月は31万歩 ⇒ ☓ 170,745歩。外に出ると1万歩歩くが、全く家に出ない日が多い。
  • 仕事始める時に、1日分のToDoリストを作る ⇒ ○ 実践中
  • 本を5冊読む ⇒ ? 何読んだのかの記録もないや
2021年2月の目標と達成状況

そもそも目標をたてていない

2月は、歩行数が123,429歩と壊滅的。平日の仕事後の散歩が全然できなかったのが朱印。

1,2月の振り返り

1月の状況としては悪くないが、2月がダメダメなので反省。仕事とプライベートの両方が忙しかったので、余力作ること方法を検討中。

2021年3月の目標

  • AWS 認定 Alexaスキルの取得(12冠達成)
  • 序章を完成させる 残1件と追加1件
  • 執筆再開 2年間寝かしている奴をちゃんとやる
  • 技術ブログを4本書く
  • 1日1万歩
  • 500ツイート、50万インプレッション、フォロワー100名増

JAWS-UG 初心者支部でIAMの「あ」の話をしました

 こんにちは。仕事でAWSの構築し、プライベートでAWSの研究と技術書の執筆をし、Amazonで本を売っているAmazon依存症の佐々木(@dkfj)です。

 なんかIAMの話をしてリクエストがあったので、IAMの「あ」というタイトルで、IAMの基本的な部分について話す機会を頂きました。運営の方々、ありがとうございます。

jawsug-bgnr.connpass.com

発表内容

10分のLTなので、後半の細かい話はすっ飛ばして、下記の3点を中心に説明しています。

  • 認証認可とは
  • IAMの動き
  • IAMユーザーとIAMロール

speakerdeck.com

LT大会について

 今回のテーマは、LT大会ということで10分・5分が沢山でした。最近、勉強会自体もあまり参加できずだったのですが、参加するといろいろな刺激があっていいですね。特に初心者支部は、初めての人に積極的に登壇を勧めているようです。登壇に慣れている人でもリモート登壇は難易度高いのですが、そこを運営の人も参加者の人も温かくサポートしていて、いい雰囲気のイベントでした。会社の後輩とかにも発表して欲しいなぁと思いました。
 他の方の登壇内容については、AWSのマルチアカウント運用に関する発表も多く、最近の自分の関心軸と一致しました。どこも試行錯誤していて、その生の声が聞けるのはありがたい限りです。
 他の登壇者含めてのまとめは既に山下さんがしているので、こちらのブログを参照してください

www.yamamanx.com

 Togetterでイベントの様子も解ります。いいね!!

togetter.com

感想

 ということで、半年ぶりくらいの勉強会の参加&登壇でした。去年目標にしていた、全国のいろいろな支部に参加してみるというのを、今年こそはチャレンジしてみたいと思います。また、輪読会みたいな少人数でディスカッションできるのにも積極的に参加してみたいので、もし佐々木が書いた本をテーマに開催する場合は、ぜひお声がけください。可能な限り参加します

AWS認定資格試験テキスト AWS認定ソリューションアーキテクト - アソシエイト 改訂第2版が販売開始します

 AWS認定ソリューションアーキテクト アソシエイトの試験対策本であるAWS認定資格試験テキストの改訂版を執筆し2021年1月21日に販売開始することになりました。執筆作業が大幅に遅れ、旧版が長らく在庫切れ状態、新版が出てこないという状態でした非常にご迷惑をお掛けしました。

改訂の方針

 今回の改訂の方針としては、基本的には第一版をベースにしています。試験範囲の差分については目次レベルで加筆、機能が更新されたものについては修正しています。汚い字で恐縮ですが、目次レベルで確認の上で本文の情報を一つ一つ確認していくという形をとっています。外出時の隙間時間での作業が多かったので、傍目にはめっちゃ熱心に勉強している人に見えたかもしれません。

f:id:dkfj:20210120012059j:plain

 Amazonのレビューを見ていると、試験問題について簡単過ぎるというコメントが多かったです。個人的には練習問題なので認定試験特有の枝葉の情報を除いて、AWSの機能の部分を問うていたつもりです。なので、難易度は関係ないかなぁと思っております。一方で、コメントに対応する形で、少し難易度を高めた問題も増やしています。きっと満足いただけると信じています

2色刷りに変更

 これは著者の努力の反映ではないのですが、今回は 2色刷りに変更しています。読み比べてみると、見やすくていいなぁと思います。やっぱり視覚に訴えるのも大事ですね!!

https://m.media-amazon.com/images/S/aplus-media/vc/50d8d51c-1820-4138-a405-a490d949763e.__CR0,0,970,600_PT0_SX970_V1___.png

その他の改修ポイント

改定前のAWS認定試験との分野の違いを解説

 今回、SAAの試験はSAA-C02というコードになっています。実はこれ試験の分野が一部修正されていて、オペレーションに関する部分が分野として消えています。それがどのような変化になっているかの解説もしています。SAA-C01で合格した人で、そろそろ試験の更新という人も出てくると思います。そういった人へのガイドにもなるように心がけております

コラムの充実

 編集上の都合で空白になる部分が出てきます。そういった所については、今回コラムを掲載しています。AWS認定試験に関する今後の方向性の考察や或いはポエミーな内容までいろいろ書いています。息抜きになっていいと思うので、是非読んでみてください。

まとめ

 改訂版の紹介ってしにくいなぁと思いながら書きました。イマイチ筆が乗らなかったので、別途AWS認定ソリューションアーキテクト アソシエイトの勉強の仕方というテーマで書いてみようと思います。前回の出版から2年も経たずに改訂が必要という著者泣かせな部分がありますが、試験をどんどん進化させていくというAWSの姿勢は素晴らしいと思います。この本が、AWSの世界に入っていく際の道標の一つになることを願っています。

目次

以下、目次です。目次としては、結果的に大きく変わっていないかも

第1章 AWS認定資格
1-1 AWS認定試験の概要
1-2 学習教材
1-3 学習の進め方
1-4 何に重きをおいて学習すべきか

第2章 グローバルインフラストラクチャとネットワーク
2-1 リージョンとアベイラビリティゾーン
2-2 VPC

第3章 ネットワーキングとコンテンツ配信
3-1 CloudFront
3-2 Route 53

第4章 コンピューティングサービス
4-1 AWSにおけるコンピューティングサービス
4-2 EC2
4-3 ELB
4-4 ECS
4-5 Lambda

第5章 運用支援サービス
5-1 AWSにおける運用支援サービス
5-2 CloudWatch
5-3 CloudTrail

第6章 ストレージサービス
6-1 AWSのストレージサービス
6-2 EBS
6-3 EFS
6-4 S3
6-5 S3 Glacier
6-6 Storage Gateway
6-7 FSx

第7章 データベースサービス
7-1 AWSのデータベースサービス
7-2 RDS
7-3 Redshift
7-4 DynamoDB
7-5 ElastiCache
7-6 その他のデータベース

第8章 セキュリティとアイデンティティ
8-1 セキュリティとアイデンティティ
8-2 KMSとCloudHSM
8-3 AWS Certificate Manager

第9章 アプリケーションサービス
9-1 AWSのアプリケーションサービス
9-2 SQS
9-3 SWFとStep Functions
9-4 SNSとSES

第10章 開発者ツール
10-1 AWSにおける継続的なアプリケーション開発の支援サービス
10-2 CodeCommit
10-3 CodeBuild
10-4 CodeDeploy
10-5 CodePipeline

第11章 プロビジョニングサービス
11-1 AWSにおけるプロビジョニングサービス
11-2 Elastic Beanstalk
11-3 OpsWorks
11-4 CloudFormation

第12章 分析サービス
12-1 EMR
12-2 ETLツール
12-3 その他の分析サービス

第13章 AWSのアーキテクチャ設計
13-1 AWSにおけるアーキテクチャ設計
13-2 回復性の高いアーキテクチャ
13-3 パフォーマンスに優れたアーキテクチャ
13-4 セキュアなアプリケーションおよびアーキテクチャ
13-5 コスト最適化アーキテクチャ
13-6 オペレーショナルエクセレンスを備えたアーキテクチャ

第14章 問題の解き方と模擬試験
14-1 問題の解き方
14-2 模擬試験
14-3 模擬試験の解答

AWS認定 高度なネットワーキング(アドバンストネットワーク)専門知識に合格しました

 AWS認定資格12冠(コンプリート)に向けて、個人的な最大の関門であったAWS認定 高度なネットワーキング(アドバンストネットワーク)専門知識に合格しました!!得意じゃない分野だったので、嬉しいです!!ということで、受験体験記を残しておきます。試験内容についての言及は、NDAで禁止されているのでどういった勉強したかを中心です。

合格までの道のり

 実はアドバンストネットワークは、一度落ちています。2019年12月の年末に、準備不足のまま受験して見事に玉砕しています。その後、リベンジしようと思いつつコロナ禍の影響や、何となく面倒くさくなったまま1年以上経ってしまっていました。夏くらいに一度申し込んだものの、急な用事で受けられず延期しその後キャンセルとなりました。今回も2回延期の末にようやくの受験です。さっさと受けろよと我ながら思います。

勉強の準備

 まずは試験範囲を確認するのが最重要と思い、AWS公式のExam Readinessのデジタル講座を受講しました。
Exam Readiness: AWS Certified Advanced Networking - Specialty (Digital)
www.aws.training

 これオンラインで無料で受けられるのですが、めちゃくちゃ長いです。なんと合計9時間近く。試験範囲のところの目次も作っておきたかったので、聞いたり止めたり少し巻き戻したりと、なんだかんだで1.5倍くらいの時間が掛かったと思います。さらに、これモジュールの途中から再生という機能がないのですよね。この辺りは改善して欲しいなぁと思います。目次はこんな感じでまとめています。勉強の方針を決める上で重宝しています。

f:id:dkfj:20210120010437p:plain

 ちなみにNetworkについては、日本語字幕付きにはなっていないです。そのうち字幕付きのものも出てくるといいなぁと思います。そして書いていて思い出したのですが、日本のSA陣による試験準備の動画コンテンツがありました。散歩中にTwitterでみて、家帰って見ようと思いつつ忘れていたことを今思い出しました。
※まだ見ていないです。ごめんなさい

pages.awscloud.com

重点的に勉強したところ

 自分の中の知識として、Direct Connectに関するものが圧倒的に不足していると自覚がありました。なので、そこを重点的にすることにしました。が、昔から試験勉強は苦手なので、ブログを書きながら整理するというスタイルを取っています。そのために書いたのが、Direct Connect 5部作です。誰かDirect Connectの薄い本を書いてくれないですかねぇ?

AWS Direct Connectの勉強 - プログラマでありたい
AWS Direct Connectの勉強その2 プライベートVIFの接続パターン - プログラマでありたい
2021-01-07 AWS Direct Connectの勉強その3 パブリックVIF - プログラマでありたい
AWS Direct Connectの勉強その4 Direct Connect GatewayとTransit Gateway - プログラマでありたい
AWS Direct Connectの勉強その5 経路選択と冗長化 - プログラマでありたい

 また夏頃に、AWS認定ソリューションアーキテクトの改訂作業があり、その際に加筆のためにELBの整理を改めてしていました。そこも結果的に役に立っていたのかなぁという気がします。

AWSのAutoScalingの整理 スケーリングポリシー編 - プログラマでありたい
AWSのAutoScalingの整理 猶予期間・ウォームアップ・終了ポリシー編 - プログラマでありたい

 またもう少し知識を整理しようと思っていたサービスとして、Route53があります。今回は時間が足りずブログは書いていませんが、どこかのタイミングでまとめてみたいなぁと思います。

まとめ

 果たしてこの勉強の仕方は他人にとって役に立つのか、非常に疑問ではあります。が、今回、ものすごく真面目に試験対策しましたので、書き記しておきます。動画を見るのに12〜13時間くらい。Direct Connectの勉強に10時間くらい費やしました。いやー、苦労しました。次は2月初旬にデータベースを、下旬にはAlexaを取ろうと思っています。
 ちなみに、AWSの試験対策本として下記のような本がありますよというステマで締めさせて頂きます

AWS Direct Connectの勉強その5 経路選択と冗長化

 AWS認定アドバンストネットワーク(高度なネットワーキング)のために、苦手なDirect Connectの勉強をしよう。勉強するならブログにまとめようと軽い気持ちで始めたこのシリーズですが、いよいよ第5回目、最終回を迎えることになりました。

AWS Direct Connectの勉強 - プログラマでありたい
AWS Direct Connectの勉強その2 プライベートVIFの接続パターン - プログラマでありたい
2021-01-07 AWS Direct Connectの勉強その3 パブリックVIF - プログラマでありたい
AWS Direct Connectの勉強その4 Direct Connect GatewayとTransit Gateway - プログラマでありたい
AWS Direct Connectの勉強その5 経路選択と冗長化 - プログラマでありたい

AWSとオンプレミス間の経路選択について

 AWSとオンプレミス間でDirect Connectで接続する場合、回線が1本の場合はそれが単一障害点となります。そのため、複数の回線を利用して冗長化するのが望ましいです。その場合、どの経路を通って通信するかという経路選択が必要になります。Direct Connectの場合(たぶんDirect Connect以外の専用線接続の場合でも)、BGPを使って経路をコントロールします。
 ということで、今日はみんな大好き(さっぱり解らない)BGPを中心としたAWSとオンプレミス拠点の接続の制御という観点でみていきます。まずBGPの基本として、同一AS内ではiBGP(Internal BGP)で異なるASとはeBGP(External BGP)で経路の制御をします。

f:id:dkfj:20210111224323p:plain

 経路の制御として、2つの値があります。

  • オンプレミス⇒AWS: Local Preference(LP)
  • AWS⇒オンプレミス: AS Path Prepend

 これ以外にも、MEDがあります。MEDによって優先度の制御はできるが、AWSとしてはサポートの対象外のようです。さて、この2つの設定値ですが、オンプレミス側のルーターで設定を行います。AWS側は一切設定しません。AWS側での設定が無いと初めて知った時は、へぇーって思いました。
※AS番号の設定等はしますが、経路選択に直接影響を与える訳ではないです。

経路選択

 では、実際の経路選択の例を見てみましょう。次の図は、2つのカスタマーゲートウェイに接続していて、Active/Standbyになっている例です。VGWからオンプレの経路は、AS Path Prependのパス長をみます。Activeな左側のルーターは、Prependがなしです。Standbyになっている右側のルーターは、Prependが2つあります。AS Path Prependは最小の方を優先されるため、Prepend なしのルートが選択されます。オンプレからAWSのルートは、Local Preference(LP)をみます。LPは大きな値の方が優先されるため、左側の200が設定されているルーターが優先されます。よって、Active/Standby構成になります。

f:id:dkfj:20210112000558p:plain

 Active/Activeの構成にしたい場合は、AS Path PrependとLocal Preferenceの値をどちらのルーターも同じに設定すれば良いです。

f:id:dkfj:20210112000611p:plain

 AS Path PrependとLocal Preferenceの付け方を間違えると、上りと下りのトラフィックが別々の経路を通る(非対称ルート)ということになるので、注意が必要です。

f:id:dkfj:20210112000725p:plain

VGWの経路選択の優先度

仮想プライベートゲートウェイ(VGW)の経路選択の優先度は以下の仕様になっています。

  1. ロンゲストマッチを優先
  2. Direct ConnectとVPNで冗長化時は、Direct Connectを優先
  3. スタティックルートと動的ルーティングを同時利用時はスタティックルートが優先
  4. BGPのAS-PATH属性を適用
  5. 上記に当てはまらないまたは同じ場合はロードバランス(Act/Act構成)

Site-to-Site VPN routing options - AWS Site-to-Site VPN


 この中でロンゲストマッチ(最長プレフィックス一致)というのが解りにくいです。宛先が172.16.1.1というものがあった通信があり、172.16.1.0/24と172.16.0.0/16の2つのネットワークが広告されていた場合、ロンゲストマッチとしては172.16.1.0/24となります。

経路障害の検知

 経路の冗長化と通常時の経路選択ができるとして、それでは経路障害時はどのように検知するのでしょうか?AWSには、2種類の検知のための設定値があります。

  • keepalive/ Hold Timer
  • BFD(Bidirectional Forwarding Detection)

keepaliveとHold Timerは、数十秒単位で設定するようです。BFDはミリ秒での設定のようです。BFDを有効にした方が早く検知できますね。

CloudWatchのDirect Connectの監視可能項目

 最後にCloudWatchでDirect Connectの監視可能メトリクスです。CloudWatchでは物理的な回線であるコネクションと、論理的な接続であるVIFの監視が可能です。メトリクスについては、公式ページを参照してください

docs.aws.amazon.com

まとめ

 苦手なDirect Connectについて5回に渡ってまとめてみました。基本的な要素・機能・考え方については理解できたので、もう少しユースケースとか実際の設定を試してみて身につけていこうと思います。こんな事も知っておいた方が良いよということがありましたら、是非教えて下さい。

AWS Direct Connectの勉強その4 Direct Connect GatewayとTransit Gateway

AWS認定アドバンストネットワークのための、Direct Connectの勉強シリーズです。今回で、第4回目。ようやくDirect Connect Gatewayにたどり着けました。

AWS Direct Connectの勉強 - プログラマでありたい
AWS Direct Connectの勉強その2 プライベートVIFの接続パターン - プログラマでありたい
2021-01-07 AWS Direct Connectの勉強その3 パブリックVIF - プログラマでありたい
AWS Direct Connectの勉強その4 Direct Connect GatewayとTransit Gateway - プログラマでありたい
AWS Direct Connectの勉強その5 経路選択と冗長化 - プログラマでありたい

Direct Connect Gatewayとは?

 Direct Connect Gatewayは、単一のPrivate VIFを利用して中国を除く世界の全リージョンの複数のVPCに接続するためのサービスです。これまでのDirect Connectの解説で、Private VIFは同一リージョンの一つのVGWしか接続できず、Public VIFは中国を除く全リージョンに接続できるがパブリックIPのサービスなのでVPWには接続できないという説明をしてきました。Direct Connect Gatewayを利用することで、単一のPrivate VIFで自リージョン以外のVPC含め、複数のVPCと接続できるようになりました。また、サービス発表当初は、同一AWSアカウントのみの接続可能でしたが、2019年10月のサービスアップデートで別AWSアカウントにも接続できるようになりました。


f:id:dkfj:20210111194244p:plain

 Direct Connect Gatwayは、利用にあたって追加の費用は発生しません。将来的な拡張性を考えると、Direct Connectの当面の接続先が1つの場合でも、Direct Connect Gatewayを挟んでおいた方がよいのではないでしょうか。

Direct Connect Gatewayの通信の制約

 とっても便利なDirect Connect Gatewayですが、幾つかの制約があります。その中で大きいものは、折返しの通信ができないということです。折返しの通信とは、例えばオンプレミスを経由しないVPC間の通信や、逆にオンプレミス間の通信です。

f:id:dkfj:20210111194823p:plain

 これ以外に接続するVPCが最大10までと、思ったより少ないというのがあります。管理している大量のVPCを管理するのに良さそうに見えますが、Direct Connect Gatewayはそういうサービスではないのです。そういう用途として、Transit Gatewayというサービスが用意されています。

Transit Gateway

 Transit Gatewayは、ハブ型のネットワークを構築できるサービスです。AWSの様々なネットワークサービスに接続可能で、VPC以外にDirect Connect Gatewayやオンプレミス拠点とのVPN接続などが可能です。接続可能なVPCは、最大5,000と非常に多いです。一方で、Direct Connect Gatewayと違ってリージョナルサービスです。つまり東京リージョンで作成したら、東京リージョン内のリソースとのみ接続可能です。

f:id:dkfj:20210111205841p:plain

 あとちょっと不思議な事に、VPC間の接続をVGWではなくTransit GatewayとAZごとに作成されたENIを通じて通信をします。

Transit GatewayとDirect Connect Gatewayの組み合わせ

 Transit Gatewayの発表当初はできなかったのですが、今だとTransit GatewayとDirect Connect Gatewayを組み合わせて利用することができます。

f:id:dkfj:20210111210724p:plain

 Transit Gatewayは、Direct Connect Gatewayと接続することが可能です。この際には、パブリックVIFでもプライベートVIFでもなく、Transit VIFという特別なVIFを使います。このTransit VIFは、Connectionにつき1つしか作れないという制約があります。このため、Connectionを複数で共有する共有型Direct Connectでは使いにくいという問題があります。これを解決するために、Private Link等を活用した様々なデザインパターンがありますが、ここでは割愛します。

AWS VPN CloudHub

 Transit Gatewayを紹介したついでに、もうひとつのハブ型のネットワークである AWS VPN CloudHubを紹介します。これ概念としては聞いた事があるのですが、実際に構築したこともありません。Transit Gatewayが出た今となっては、たぶん構築することもないと思います。AWS側のVPCをハブとして、複数の拠点をVPNで接続するのがVPN CloudHubです。といっても、特別なサービスがある訳でもなく、通常のVPNでBGPを使って相互に経路を広告しあうという構成のようです。

f:id:dkfj:20210111213136p:plain

AWSの下記のページより拝借
VPN CloudHub を使用して安全なサイト間通信を提供する - AWS Site-to-Site VPN

まとめ

 長い長いDirect Connectの説明を経て、ようやくDirect Connect GatewayとTransit Gatewayの触りの部分を説明できました。サービスの進化の順番に学びなおしたので、何が足りなかったので新しいサービスが出てきたのかが理解しやすかったです。次は、Direct Connect等を利用した経路の制御や冗長化の話です。苦手なBGP等がどっさりと出てくるはずです。次回で最終回にできるかな?