Udemy「手を動かしながら2週間で学ぶ AWS 基本から応用まで」Day12,13,14
どうも、はぐりんです。
一か月ぶりの更新となります。
炎上プロジェクトはどうなったかって?
怒号と罵声が飛び交うぐらい順調です(ハート)
喧嘩を止めてると「私、何してるのかしら?」って思いますよね。
さて、受講が滞っていたUdemyのAWS講座
https://www.udemy.com/aws-14days/
のDay12,13,14を一気に受講しましたので、
その内容メモを残したいと思います。
Day12 Eメール送受信サービスSESとキューイングサービスSQS
【Amazon Simple Email Service(SES)】
・フルマネージドなメール送受信サービス
・送信の特徴
→ AWSSDK経由でPGからメール送信を行うことが可能
→ 独自ドメインからメールを送れる
・受信の特徴
→ 独自ドメインを設定可能
→ 受信メールをS3に保存したり受信をトリガに後続処理を実施可能
・SESの利用方法(準備)
→ ドメインを登録する
→ Route53に紐づける
→ 利用緩和申請を行う(今回は行わない)
→ メールを事前登録する
→ マネジメントコンソールから送信する
→ SDKforPHPでメッセージを送信する
・SESは3つのリージョンからしか利用できない。
・初期設定
→ ドメイン登録(Route53にも登録される)
→ DKIMも有効にする。
→ 送信先メールを事前登録する。これで登録したアドレスにはメールを送れるようになる。
・マネジメントコンソールからテストメール送信
→ From:Route53に登録したドメイン(@の前は自由に設定)
→ To:事前登録したアドレス
→ メール送信成功!
・プログラムからのメール送信
→ バッチサーバへメール送信PHPを実行
→ メール送信成功!
・SNSと組み合わせてメールが正しく送信できたかを取得することができる
【Amazon Simple Queue Service(SQS)】
・フルマネージドなキューイングサービス
・処理の間にQueueをかませるメリット
→ 非同期処理にできる、モジュール間を疎結合にできる
・SQSの機能
→ 一度に複数件のメッセージを登録・処理できる
・注意点
→ 順序は保障されない
→ 同じメッセージを複数回受信する可能性がある(FIFOキューを検討する)
→ FIFOキューの方が価格が高い
・SQSの利用方法
→ キューを作成する
→ マネジメントコンソールから送受信する
→ SDKforPHPでメッセージを送受信する
・プログラムからSQSを利用する
→ 作成したキューのURLを指定してキューの送受信
→ ※うまく動かないと思ったらリージョン間違えてた!
【コラム2】
3)ネイティブアプリ+サーバレスAPIパターン
4)サーバレスSPAパターン+サーバレスAPIパターン
5)Twitterボット+サーバレスバッチパターン
→5)が、お手軽で面白そう!(課金も少ない模様)
Day13 アプリケーション開発を支援するCodeシリーズ
【Codeシリーズ】
・CodeCommit
→ ソースコードを管理するGitリポジトリサービス
・CodeBuild
→ ソースコードのビルド/テスティングサービス
・CodeDeploy
→ ビルドされたモジュールのデプロイサービス
・CodePipeline
→ 継続的デリバリー/継続的インテグレーションをサポートするサービス
【CodeCommit】
・フルマネージドなソースコード管理サービス
→ 簡単にGitリポジトリをホストすることができる。
→ プルリクエスト機能も利用できる
・利用するソースコードを準備する(@バッチサーバ)
・リポジトリを作成する
→ マネージメントコンソールでリポジトリ作成
→ バッチサーバでgitの初期設定、初回のコミット。
(別途、gitの勉強をすること。今回は写経)
【CodeBuild・CodeDeploy】
・フルマネージドなビルドサービス
→ コンパイルやテスト環境を簡単に構築することができる。
→ 作業はbuildspec.yml(ヤムルと読む)
・成果物格納用S3バケットの作成
・buildspec.ymlファイルの準備
→ アプリケーション名、S3バケット名を登録。
・CodeBuildでプロジェクトの作成
→ 新しいロールに権限の付与
・デプロイ自動化サービス。S3にあるビルド済のアーティファクトをEC2やオンプレサーバにデプロイする。
→ デプロイ動作は、appspec.ymlに定義する。
→ デプロイ方式を選択可能
→ デプロイ先にエージェントをインストールする必要がある。
・1)EC2用のIAMロール作成
・2)EC2にCodeDeployエージェントをインストール
・3)CodeDeploy用のロール作成
・4)CodeDeployの設定
→ アプリケーション名(buildspec.yml)と合わせる
→ デプロイ先のインスタンスを指定(Webサーバ2つ)し、
ロードバランシングも有効にする。
(デプロイ時に切り離ししてくれる)
・ビルドの実行→デプロイの実行
・ビルド時間は約8分。うち6分は「BlockTraffic」という動作
→ これはロードバランサーが切り離すのに待つ時間。
ロードバランサーのターゲットグループで設定値を確認。
【CodePipeline】
・継続的デリバリーをサポートするサービス
・CodeCommit/CodeBuild/CodeDeployの流れをパイプラインとして定義することで
ソースコードがコミットされたらデプロイまで自動化。
→ デプロイ前にリーダーの承認を必須とするというルールも定義可能。
・CodePipelineの設定をして、
ソースコードを編集し、コミットすると自動でビルド、デプロイされることを確認。
Day14 CloudFormationを用いた環境構築の自動化
【AWSの環境構築自動化サービスについて】
・1)Elastic Beanstalk
→ 定番インフラ構成の自動構築およびAppデプロイの自動化サービス
→ ◎アプリ開発にリソース注力できる、×自由度は低い
・2)OpsWorks
→ Chefを利用した構成管理サービス
→ ◎Chefを既に利用している場合に最適、×OSより下のレイヤー
・3)CloudFormation
→ AWSのリソース管理・構築を自動化するサービス
→ ◎自由度が高く何でもできる、×OSより上のレイヤー
【CloudFormation】
・テンプレート:AWSリースの構成をYAMLorJSONで記載したドキュメント
・スタック:テンプレートから自動構築されたAWSリソースの集合
・テンプレート
→ セクション(Parameters、Mappings、Resources)
→ 組み込み関数(実行時に決まる動的な値)
・CloudFormationを使ってみる
→ 1)テンプレートファイルの作成
→ CloudFormationにテンプレートファイルを渡す
→ 設定したVPCが自動で生成された
→ 2)Subnetの追加
→ テンプレートファイルの更新・アップロード。
→ 前回の差分を確認。
→ 更新。サブネットが自動生成されていることを確認。
※大文字と小文字を間違えてエラーになった。
→ 3)残りのネットワークまわりを仕上げる
→ 4)EC2のひな形を作る
→ 5)インスタンスタイプを実行時に選択できるようにする
→ 6)キーペアを登録する
→ キーペアはインスタンス作成時に埋め込むため、新規インスタンスが作成される
→ 7)MappingsセクションとFindInMap関数を使ってリージョンごとのAMIを選択する
・ベストプラクティス
→ 1)組み込み関数を使って環境に依存しないテンプレートを目指す。
→ 2)リソース追加・変更は必ずCloudFormationで行う
→ 3)テンプレートをバージョン管理する
→ 4)システムの規模やライフサイクルによってテンプレートを分割する
→ ※JSON or YAML?
→ YAMLはコメントがかける、JSONよりカッコが少なくて済む。
今回の受講は約3時間でした。
受講を開始したのが10月頭なので、2週間の講座を丸々3か月かけて受講したことになります。
さて、講座は最後のDay15(まとめ)が残っているので、
次回の記事で受講をまとめたいと思います。
ではまた(´-ω-`)))コックリコックリ。。