Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWSパターン別構築・運用ガイド 輪読会 3.6節~/aws_book_3_6

meow
November 28, 2019

AWSパターン別構築・運用ガイド 輪読会 3.6節~/aws_book_3_6

2019年11月29日(金)にコワーキングスペース秋葉原Weeybleにて開催された、『AWSパターン別構築・運用ガイド 輪読会』で発表した資料です。

https://weeyble-infrastructure.connpass.com/event/156293/

meow

November 28, 2019
Tweet

More Decks by meow

Other Decks in Technology

Transcript

  1. 今回の内容  3-6 CloudFormationによるテンプレートを利用した自動構 築  3-7 SESによるメール送信システムの構築  3-8

    AWS上に開発環境を構築する  3-9 モバイルアプリからAWS上のリソースを利用する
  2. テンプレート(p.302) JSONの例(データ: 03-06¥3-6-1.txt) { "AWSTemplateFormatVersion" : "version date", "Description" :

    "JSON string", "Parameters" : { set of parameters }, "Mappings" : { set of mappings }, "Conditions" : { set of conditions }, "Resources" : { set of resources }, "Outputs" : { set of outputs } } ←テンプレートのバージョン。2010年から変更なし ← メモの記入欄 ← スタック作成時に、パラメータとして任意の値を渡せる ← キーと値を設定 ← 条件判断を行い、満たした場合のみ実行されるリソースを指定 ← EC2やセキュリティグループのようなリソースと設定値 ←VPCやセキュリティグループのID、IPアドレスを出力させる
  3. ネットワークの構築(p.304)  データ: 03-06¥cloudformation_vpc.template VPC Internet gateway Availability Zone(DMZ) Availability

    Zone(Trust) Public subnet Private subnet Private subnet Public subnet 172.30.11.0/24 172.30.12.0/24 172.30.51.0/24 172.30.52.0/24 ネットワーク ACL
  4. CloudFormationからサーバにデータ を渡す仕組み(p.317)  EC2のプロパティに、UserDataを追加し、シェルスクリプ トを埋め込む。  3-6-6.txt "UserData" : {

    "Fn::Base64" : { "Fn::Join" : ["", [ "#!/bin/bash¥n", "yum update -y¥n", "yum install -y httpd¥n", "service httpd start¥n", "chkconfig httpd on¥n" ]] } }
  5. 入れ子のテンプレートを実行する(p.320)  ネットワーク作成テンプレートから、インスタンス作成用 のテンプレートを呼び出すように変更する  3-6-10.txt "InstanceCreate" : { "Type"

    : "AWS::CloudFormation::Stack", "Properties" : { "TemplateURL" : "https://s3-ap-northeast-1.amazonaws.com/******** cloudformation_instance_parameters.template", "Parameters" : { "InstanceSubnetId" : { "Ref" : "SubnetTrustAZd" }, "SecurityGroupDefault" : { "Ref" : "SecurityGroupDefault" } } } }
  6. SESを使ってメールを送信する(p.322)  メールサービスは欠かせない  アカウント作成  パスワード変更  メルマガ 

    メール送信方式 1. SES(Simple Email Service) 2. EC2インスタンスにメールサーバを構築 3. サードパーティ製のツールを利用
  7. SES(Simple Email Service)の設定 (p.324)  東京リージョンでは使うことができない  バージニア北部を選択  Verify

    a New Email Addressで、お手持ちのメールアドレ スを登録  登録したメルアドに、確認の通知がくるので、URLをクリックして activate  ためしに自分の別のメアド(登録したものでもOK)に投げる  迷惑メールフォルダに分類されているかもしれない Amazon Simple Email Service
  8. 正式利用に向けた申請(p.328)  Sending Statistics > Request a Sending Limit Increase

     p.329 表3-7-1の設定に極力合わせる  UIが変わっているので、無いものもある  申請すると1日程度おいて受理される
  9. EC2インスタンスにメールサーバを 構築する(p.337)  あまりおすすめしていない(p.340 l.5)  適当なスペックのインスタンスを用意する  ディストリビューションはAmazaon Linux

     Elastic IPを取得しこのインスタンスに付与  メールサーバとしてPostfixをインストール(p.338)  メールサーバのホスト名をDNSに登録  メール不正中継のテストをする  AWSのWebサイトでメール送信制限の解除申請を行う (p.339)
  10. 環境のコード化のサービス(p.343)  Terraform  Infrastructure as a CodeをAWS以外でも実現可能  kumogata

     Rubyをサポート  JSON,ymlにない、柔軟なロジック設計が可能  変数が利用できるだけでも助かる  Chef: 機能が豊富  Ansible: 学習コスト低め  Itamae: 著者の推し構成管理サービス 追記: AWSにもCDKという スクリプトで環境を構築できる フレームワークがある
  11. 継続的インテグレーション(CI)を実 施する(p.348)  コードを変更するごとに、全体として動作するかをテスト する  バグの早期発見  EC2にリポジトリサーバ、ビルドサーバを立てる 

    リポジトリサーバ  AWS CodeCommit  GitLab,SVN  GitHubは、他社サービスに上げることに抵抗がないならアリ (p.349)  ビルドサーバ  Jenkins  AWSだと、CodeBuild, CodePipeline,CodeDeploy