プログラマでありたい

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

まさに実践入門!!「Amazon Web Services 実践入門」

 舘岡さん(@iara)さんに、Amazon Web Services 実践入門を頂きました。ありがとうございます!!

f:id:dkfj:20151105113855j:plain

 早速読んでみましたが、実践入門という名前に違わず入門なのに実践的という内容にまとまっていました。その辺りは、著者陣の経験の深さがにじみ出ています。著者陣は、舘岡さんを筆頭に、今井さん、永淵さん、間瀬さん、三浦さん、柳瀬さんとAWS界隈のスーパースターたちです。それぞれの所属する会社は、日本で5社しかないAWSのプレミアパートナー、従来の情報システム部の常識をスーパーのパックの刺身のツマほどの価値しか認めず常に大胆かつ合理的な方法でAWSを利用し周囲を驚かせるハンズラボ、オンラインによる名刺管理という業界を作りリーダーとして君臨するSansanの中の人とAWSを知り尽くした人々によって書かれています。

Amazon Web Services 実践入門が実践的な理由



 本書で取り扱っているサービスは、EC2,Route53,VPC,S3,CloudFront,RDS,ELB,CloudWatch,IAM,Billingとそれほど多いとは言えません。しかし、AWSを有効に活用するには、まず押さえておく必要のあるサービスです。それを、概念的なところから実際の使い方、ハマりどころや注意点、場合によってはパフォーマンス・チューニングまで取り扱っています。読んでいて、そうそうと頷く部分が多かったです。
 例えば、Route53の紹介の部分。月100円以下でDNSを運用できるという夢のようなサービスですが、よく勘違いされるのがDNSのキャッシュ機能です。DNSには、権威サーバとキャッシュサーバの機能があり、BINDにはこの2つの機能を併せもちます。Route53はこのうち権威サーバの機能しか持ちません。その辺り、DNSというのはどういうもので、どこに使えばよいのかとか背景からちゃんと説明されています。また、内部DNSとしての使い方までかなりのページを割いて説明しているのが良いですね。 

執筆陣が苦労したのだろうなと垣間見れるところ



 私もAWSの本を出したことありますが、AWS本を書くのはかなり大変です。サービスの進化が早過ぎるため、書いている途中に書いていることが古くなるためです。はじめにの部分で取り上げらていますが、日本語コンソールに変わったり、出来なかったことが機能のアップデートや新サービスで出来るようになったりです。またコンソールのUIも微妙に変わることが多々あるので、画面キャプチャの陳腐化リスクもあります。その辺り配慮して、コマンドラインでAWSを操作するCLIについても併記しているのだと思います。CLIのコマンドや結果も含めると誌面を専有するので、構成等大変だったのではと思います。
 ちなみに最近のアップデートで、既に内容が変わっているところもありました。P137の1つの拠点(グローバルIP)からVPCに複数VPN接続というコラムに、IP辺りのVPC接続数は1つというのがあります。先日のアップデートで、この制限がなくなっています。きっと、1ヶ月もしないうちに増刷されて、その際には修正されることでしょう。ということで、みんな買いましょうw

感想



 安心して人にお勧めできる、とっても良い本だと思います。私も社内のメンバーに読むように勧めています。初心者にとって役に立つことも間違いないですし、AWSの経験のある人にとっても新たな気付きは沢山あります。私もなるほどこんな考え方なのだと非常に参考になりました。とりあえず私は、この本持って著者の一人一人にサイン貰いに行こうと思います。
 あと個人的に気になってたことがあります。私が出したAWS本の客観的な真実は、現在出ているAWS本で一番分厚いということです。紹介するときも、名前覚えられないのでそう紹介していますが、今回の本が出てどうでしょう?ということで較べてみました。

f:id:dkfj:20151105162014j:plain

 まだAWSの一番分厚い本と名乗っても大丈夫なようです

Amazon Web Services実践入門 (WEB+DB PRESS plus)

Amazon Web Services実践入門 (WEB+DB PRESS plus)

  • 作者: 舘岡守,今井智明,永淵恭子,間瀬哲也,三浦悟,柳瀬任章
  • 出版社/メーカー: 技術評論社
  • 発売日: 2015/11/02
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る
Amazon Web Services パターン別構築・運用ガイド  一番大切な知識と技術が身につく

Amazon Web Services パターン別構築・運用ガイド  一番大切な知識と技術が身につく

  • 作者: NRIネットコム株式会社,佐々木拓郎,林晋一郎,小西秀和,佐藤瞬
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2015/03/25
  • メディア: Kindle版
  • この商品を含むブログを見る

 以下、詳細の目次です。項目見てるだけでも、実践的な内容が伝わってきますね。

第1章 AWSの基本知識
1.1 AWS(Amazon Web Services)の概要
 AWSの特徴
 豊富なサービス
 柔軟なリソース
 従量課金
1.2 AWSを支える概念と本書で扱うサービス
 AWSを支える概念
 リージョン
 アベイラビリティゾーン
 エッジロケーション
 本書で扱うサービス
1.3 AWSへのサインアップ
 サインアップの流れ
 マネジメントコンソールの起動
1.4 まとめ

第2章 仮想サーバの作成(EC2基本編)
2.1 Amazon EC2(Elastic Compute Cloud)の概要
 EC2とは
 インスタンスタイプとは
 [コラム]T2インスタンスの特徴
 AMI(Amazon Machine Image)とは
 AMIの種類
 AMIの仮想化形式
 EC2のストレージ
 EBS(Elastic Block Store)
 インスタンスストア
2.2 EC2の起動
 キーペアの作成
 セキュリティグループの作成
 仮想サーバの起動
 AMIの選択
 インスタンスタイプの選択
 インスタンスの詳細設定
 ストレージの追加
 インスタンスのタグ付け
 セキュリティグループの設定
 インスタンス作成の確認
 既存キーペアの選択/新規作成
 EIP(Elastic IP Address)の取得と付与
 EIPの取得
 インスタンスへの付与
2.3 EC2への接続
 キーペアを使ったSSH接続
 *nixのターミナル経由の場合
 WindowsのTeraTerm経由の場合
 Windowsインスタンスからの接続
2.4 アプリケーションのインストール
 nginxのインストール
 MySQLのインストール
 Webアプリケーションの配置
2.5 EC2の停止/削除/再起動(マネジメントコンソール)
 EC2の停止/削除/再起動
 インスタンス停止の際に起こること
 インスタンス停止時のEBS、EIPの挙動
2.6 AWS CLIによる操作
 AWS CLIのインストールとセットアップ
 AWS CLIのインストール
 AWS CLIのセットアップ
 キーペアの作成
 セキュリティグループの作成
 EC2の起動
 EIPの取得と付与
 EC2の停止/削除/再起動
 EC2の停止
 EC2の削除
 EC2の再起動
 EC2インスタンスのバックアップ取得
2.7 まとめ

第3章 仮想サーバの強化(EC2応用編)
3.1 バックアップの作成
 インスタンスからのAMIの作成
 AMIの作成
 作成されたAMIの一覧
 EBSのスナップショット
 EBSボリュームの一覧
 EBSボリュームのスナップショットの作成
 作成されたEBSスナップショットの一覧
 スナップショットからの復元
 EC2へのタグ付け
3.2 スケールアップ
 インスタンスタイプの変更
 EBS-Backedインスタンスの場合
 Instance Store-Backedインスタンスの場合
3.3 ディスク容量の追加
 ボリュームの追加
 ルートボリュームの容量の追加
 追加ボリュームの容量の追加
3.4 I/Oの高速化
 EC2のストレージ
 プロビジョンドIOPSの設定
 AMI作成時
 インスタンス起動時
 EBSボリューム作成時
 EBS最適化オプション
 RAID
 ボリュームの暖機
 インスタンスストアの利用
 ベンチマークの計測
3.5 セキュリティの向上
 セキュリティグループの設定
 EBSの暗号化
 セキュリティ強化のための機能
 IAM(Identity and Access Management)
 VPC(Virtual Private Cloud)
 CloudHSM(Cloud Hardware Security Module)
 サードパーティのセキュリティツール
3.6 管理の効率化
 Linuxの効率的な管理(cloud-init)
 AWSのアプリケーション管理サービス
 Elastic Beanstalk
 OpsWorks
 CloudFormation
 3つのアプリケーション管理サービスの比較
 サードパーティの管理自動化ツール
3.7 まとめ

第4章 DNSの設定と公開(Route53)
4.1 Route 53の概要
 Route 53とは
 Route 53における重要概念
 Hosted Zone
 Record Set
 Routing Policy
 Set ID
 ヘルスチェック
 主な機能
 レイテンシベースルーティング(Latency Based Routing、LBR)
 重み付けラウンロビン(Weighted Round Robin、WRR)
 DNSフェイルオーバー
 Geo Routing
 各種AWSサービスとの連携
4.2 Route 53の基本操作
 Hosted Zoneの作成
 マネージメントコンソールの場合
 AWS CLIの場合
 Record Setの作成
 サポートされているレコードタイプ
 既存DNSサーバのゾーンファイルの移行
 ゾーンファイルの移行(マネジメントコンソール)
 ゾーンファイルの移行(AWS CLI)
 Record Setの登録(マネジメントコンソール)
 Record Setの登録(AWS CLI)
4.3 DNSフェイルオーバー
 ヘルスチェックの設定
 マネジメントコンソールの場合
 AWS CLIの場合
 DNSフェイルオーバーの設定
 マネジメントコンソールの場合
 AWS CLIの場合
 DNSフェイルオーバーの確認
4.4 Route 53の利用停止
 Record Setの削除
 マネージメントコンソールの場合
 AWS CLIの場合
 Hosted Zoneの削除
 マネージメントコンソールの場合
 AWS CLIの場合
4.5 VPCの内部DNSとしての利用
 マネージメントコンソールの場合
 AWS CLIの場合
4.6 まとめ

第5章 ネットワークの設計と設定(VPC)
5.1 Amazon VPC(Virtual Private Cloud)の概要
 VPCとは
 仮想プライベートネットワーク
 仮想ネットワークの設計
 デフォルトVPC
5.2 VPCの作成
 VPCの作成
 マネジメントコンソールの場合
 AWS CLIの場合
 サブネットの作成
 マネジメントコンソールの場合
 AWS CLIの場合
 DHCPの設定
 ネットワークACLの設定
 デフォルトのネットワークACL設定
 Webサーバを公開する場合のネットワークACL設定
 インターネットゲートウェイの作成
 マネジメントコンソールの場合
 AWS CLIの場合
 VPCへのアタッチ
 マネジメントコンソールの場合
 AWS CLIの場合
 ルーティングの設定
 マネジメントコンソールの場合
5.3 インターネットVPNによるVPCとの接続
 CGW(Customer GateWay)の作成
 マネジメントコンソールの場合
 AWS CLIの場合
 VGW(Virtual GateWay)の作成
 マネジメントコンソールの場合
 AWS CLIの場合(VGWの作成)
 AWS CLIの場合(VGWのVPCへのアタッチ)
 VPN接続の作成
 マネジメントコンソールの場合
 AWS CLIの場合
 インターネットVPNへのルーティング設定
5.4 VPC同士の接続
 VPCピアリングとは
 [コラム]NATインスタンス 
 VPCピアリングの作成
 マネジメントコンソールの場合
 AWS CLIの場合
 [コラム]1つの拠点(グローバルIPアドレス)からVPCに複数VPN接続 
5.5 まとめ

第6章 画像の配信(S3/CloudFront)
6.1 Amazon S3(Simple Storage Service)の概要
 S3とは
 S3の特徴
 99.999999999%の耐久性
 セキュリティ対策
 ライフサイクル管理機能
 制限事項
 アクセス制限
6.2 S3の基本操作
 バケットの作成
 マネジメントコンソールの場合
 AWS CLIの場合
 オブジェクトのアップロード
 マネジメントコンソールの場合
 AWS CLIの場合
 [コラム]フォルダ? プレフィックス? 
 プレフィックスを用いたフィルタ方法(マネジメントコンソール)
 アクセス制限の設定
 マネジメントコンソールの場合
 AWS CLIの場合
 バケットポリシーの設定
 マネジメントコンソールの場合
 AWS CLIの場合
6.3 EC2からのデータ移行
 静的コンテンツをディレクトリごとに移行
 Movable Typeの静的コンテンツのS3への移行
6.4 移行したコンテンツの公開
 独自ドメインの静的ウェブサイトホスティングの設定
 マネジメントコンソールの場合
 AWS CLIの場合
6.5 アクセスログの取得
 アクセスログ取得の設定
 マネジメントコンソールの場合
 AWS CLIの場合
6.6 CloudFrontによる配信の高速化
 CloudFrontとは
 S3とCloudFrontの連携
 マネジメントコンソールの場合
 AWS CLIの場合
6.7 S3のコンテンツ配信以外での利用
 ログファイルの保存
 logrotateによるローテートされたログをS3にアーカイブ
 FluentdでログをS3に定期的にアップロード
 ライフサイクルの設定
 マネジメントコンソールの場合
 AWS CLIの場合
 まとめ

第7章 DBの運用(RDS)
 7.1 Amazon RDS(Relational Database Service)の概要
 利用可能なエンジン
 リージョンとアベイラビリティゾーン
 各種設定グループ
7.2 DBインスタンスの起動と接続
 RDS用セキュリティグループの作成
 DBパラメータグループの作成
 マネジメントコンソールの場合
 AWS CLIの場合
 DBオプショングループの作成
 マネジメントコンソールの場合
 AWS CLIの場合
 DBサブネットグループの作成
 マネジメントコンソールの場合
 AWS CLIの場合
 DBインスタンスの起動
 マネジメントコンソールの場合
 AWS CLIの場合
 クライアントからRDSインスタンスへの接続
7.3 既存のDBからのデータ移行

7.4 RDSの設定(マネジメントコンソール)
 セキュリティグループの設定
 DBパラメータグループの設定
 DBオプショングループの設定
 タイムゾーンの設定
7.5 RDSインスタンスの操作
 RDSインスタンスタイプの変更
 マネジメントコンソールの場合
 AWS CLIの場合
 RDSインスタンスの再起動
 マネジメントコンソールの場合
 AWS CLIの場合
 RDSインスタンスの削除
 マネジメントコンソールの場合
 AWS CLIの場合
7.6 DBの冗長化
 マルチAZ配置の作成(マネジメントコンソール)
 リードレプリカの作成
 マネジメントコンソールの場合
 AWS CLIの場合
 リードレプリカのマスタへの昇格
 マネジメントコンソールの場合
 AWS CLIの場合
7.7 I/Oの高速化
 プロビジョンドIOPSとは
 プロビジョンドIOPSの作成(マネジメントコンソール)
7.8 バックアップ
 スナップショットの作成
 マネジメントコンソールの場合
 AWS CLIの場合
 リージョン間スナップショットのコピー
 マネジメントコンソールの場合
 AWS CLIの場合
 スナップショットの復元
 マネジメントコンソールの場合
 AWS CLIの場合
 特定時点への復元
 マネジメントコンソールの場合
 AWS CLIの場合
 自動バックアップ(マネジメントコンソール)
7.9 RDSの運用
 DBのアップグレード(マネジメントコンソール)
 DBログの確認
 マネジメントコンソールの場合
 AWS CLIの場合
7.10 本番リリースに向けて
 メンテナンスウィンドウ
7.11 まとめ

第8章 Webサーバの負荷分散(ELB)
8.1 ELB(Elastic Load Balancing)の概要
 ELBとは
 スケールアウトとロードバランシング
 ELBの特徴
 リージョンごとの構成
 アベイラビリティゾーンをまたがる構成
 ELB自身のスケールアウト/スケールイン
 安全性の確保
 名前解決
 EC2インスタンスのヘルスチェック
8.2 ELBの作成
 ELBの作成(マネジメントコンソール)
 ロードバランサーの定義
 セキュリティグループの割り当て
 セキュリティ設定の構成
 ヘルスチェックの設定
 EC2インスタンスの追加
 タグの追加
 設定の確認
 ELBの削除
 ELBの作成(AWS CLI)
 ELBの作成
 ELBのヘルスチェック設定
 ELB動作モードの設定
 EC2インスタンスの登録/除外
 ELBの削除
 [コラム]その他のELB関連コマンド 
 ELB情報の見方
8.3 ELBの設定変更
 マネジメントコンソールによる設定変更
 ELBへのEC2インスタンス登録と除外
 SSL Terminationの使用
 SSL証明書の運用
 AWS CLIによる設定変更
 SSL Terminationリスナーの追加
 SSLサーバ証明書の割り当てとHTTPSのリスナーの追加
 HTTPSリスナーのSSLサーバ証明書の変更
 作成済みリスナーの削除
 既存のSSLサーバ証明書の削除
8.4 Webサーバとの連携
 Keep Aliveの設定
 ELBのヘルスチェック
 クライアント情報の取得(クライアントIPアドレス、接続先ポート)
 Cookieによる維持設定
8.5 ELB運用のポイント
 カスタムドメインを使用するときの注意点
 暖機運転
 アイドルセッション
 ELBアクセスログの取得
8.6 まとめ

第9章 モニタリングとWebサーバのスケーリング(CloudWatch/Auto Scaling)
9.1 AWSにおけるモニタリングとスケーリングの概要
 CloudWatch
 Auto Scaling
9.2 CloudWatchとAuto Scalingの利用
 CloudWatchへのアクセス
 EC2の場合
 RDSの場合
 Auto ScalingとCloudWatchの組み合わせ
 起動設定
 Auto Scalingグループ
 スケーリングポリシー
 CloudWatchアラーム
9.3 Auto Scalingの作成(マネジメントコンソール)
 起動設定の作成
 Auto Scalingグループの設定
 Auto Scalingグループの設定内容
 スケールアウト/スケールインの設定
 スケーリングポリシーの設定
 SNS通知の設定
 タグの設定
 設定の確認
9.4 Auto Scalingの運用(マネジメントコンソール)
 Auto Scalingの動作確認
 Auto Scalingの削除
 CloudWatchアラームの削除
 Auto Scalingグループの削除
 起動設定の削除
 運用におけるその他の注意点
 アプリケーションをデプロイするときの注意点
 ログファイルの取り扱い
 [コラム]LifeCycleHookの利用 
9.5 Auto Scalingの作成と削除(AWS CLI)
 起動設定の作成
 Auto Scalingグループの作成
 スケーリングポリシーの作成
 CloudWatchのアラームの登録
 イベントの通知設定
 設定の削除
 イベント通知設定の削除
 CloudWatchアラームの削除
 Auto Scalingグループの削除
 起動設定の削除
 [コラム]Auto Scaling関連のその他のコマンド 
9.6 その他のAuto Scalingの運用
 スケジュールアクションの設定
 スタンバイの設定
 EC2インスタンスのスタンバイ設定
 スタンバイから実行中に切り戻す
 デタッチ/アタッチの設定
 デタッチの設定
 アタッチの設定
9.6 まとめ

第10章 アクセス権限の管理(IAM)
10.1 IAM(Identity and Access Management)の概要
 IAMとは
10.2 IAMユーザとIAMグループの作成
 IAMユーザの作成
 グループの作成
 グループへのユーザ追加
10.3 IAM権限の管理
 権限の種類
 ユーザベースの権限
 リソースベースの権限
 ポリシー
 Action
 Effect
 Resource
 AWS管理ポリシー
 AWS Policy Generatorの利用
 AWS Policy Generatorの選択
 ステートメントの追加
 ポリシーの生成
10.4 サインイン
 パスワードポリシーの設定
 パスワードの設定
 IAMユーザのサインイン
 MFAの有効化
 [コラム]CloudTrail 
10.5 APIアクセス権限の管理
 アクセスキーの設定
10.6 ロールの管理
 ロールの作成
 EC2インスタンスへのロール付与
 ロールによるAWS CLIの利用
 [コラム]そのほかのIAM機能 
10.7 まとめ

第11章 ビリング(Billing)
11.1 料金の考え方
 AWSの料金の基本
 データ転送量課金モデルの例
 従量課金モデル料金の種別
 オンデマンドインスタンス
 リザーブドインスタンス
 [コラム]リザーブドインスタンスの売買 
 スポットインスタンス
 ボリュームディスカウント
11.2 請求
 請求レポートの取得
 一括請求(Consolidated Billing)
11.3 料金確認/料金試算ツール
 請求とコスト管理(マネジメントコンソール)
 Trusted Advisor(マネジメントコンソール)
 Salesforce
 Which Instance?
 Cloudability
 Simple Monthly Calculator
 AWS Total Cost of Ownership(TCO) Calculator
11.5 サポートとフォーラム
 AWSサポート
 AWS Forums
 JAWS-UG
 E-JAWS
 契約と公開情報
11.5 まとめ

See Also:
「Amazon Web Services パターン別構築・運用ガイド」の執筆環境
「Amazon Web Services パターン別構築・運用ガイド」の目次
AWSパターン別本の狙い。例えばAutoScalingを使えるように。「Amazon Web Services パターン別構築・運用ガイド」の裏話
『Amazon Web Services パターン別構築・運用ガイド』を書きました
「Amazon Web Services パターン別構築・運用ガイド」の増刷決定&正誤表リストのGitHub管理
『Rubyによるクローラー開発技法』を書きました
本を書く前に準備したこと、執筆中にしていたこと
上級者向けの技術書が少ない理由