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

Cloudformation (SAM) で実装した EC2 の 運用自動化

Cloudformation (SAM) で実装した EC2 の 運用自動化

2022.4.29のJAWS-UG浜松 AWS勉強会 2022#4でLT予定の資料を登録します

Saito5656

April 28, 2022
Tweet

More Decks by Saito5656

Other Decks in Programming

Transcript

  1. userアプリ検証用環境 Public subnet VPC AWS Cloud ap-northeast-3a Ap-northeast-3 Internet gateway

    Amazon CloudFront S3 Lambda@Edge Amazon SNS AmazonIpSpaceChanged ip-ranges.json RDP User Developer AWS Lambda http https WAF Sg-pub
  2. 本運用に向けて 要件定義 要望整理 ・自作アプリをInternet経由で見たい ・もしかすると社内のVMで運用する ・速やかに環境が欲しい 要求 非機能 機能 ・NW/serverには社内からInternet接続

    ・データ保管場所も社内からInternet接続 ・当然ながら自動起動・自動停止 ・データは暗号化で、AD認証、社外からは接続不可 ・userがLatest版のアプリにアクセスできるように ・コスト重視だがBackupは欲しい
  3. ・自作アプリをInternet経由で見たい ・もしかすると社内のVMで運用する ・速やかに環境が欲しい 要求 非機能 機能 ・NW/serverには社内からInternet接続 ・データ保管場所も社内からInternet接続 ・当然ながら自動起動・自動停止 ・データは暗号化で、AD認証、社外からは接続不可

    ・userがLatest版のアプリにアクセスできるように ・コスト重視だがBackupは欲しい ザクっとこんな構成でヨシ! このままEC2でGo🚀 社内と切離したほうがスピード対応可 DNSはRoute53でVPCとS3は継続利用 スケジュール実行すればイイか ALBでoidc→AD IdP、sgでIp縛り 開発serverのBackupを本番起動imageに CrossRegionCopyとる? ⇒ us-east-1
  4. CfnだけでAMI更新後のId自動登録はムリ Azure IdP Public Public AWS Cloud VPC us-east-1a us-east-1c

    Auto Scaling group 本番用 us-east-1 (ASGはmax3台設定) 開発用 RDP https User 本番用 RDP/http Daily Backup ap-northeast-3 10.2.0.0/16 10.2.0.0/24 10.2.1.0/24 Sg-pub Sg-pri Sg-pri Sg-ALB https http https Developer ap-southeast-1 Daily Backup Copy Latest Backup AMI ap-northeast-1 http LaunchTemplate ASGで起動テンプレートがLatest設定できない 登録が必要 Copyが必要 初回起動に登録が必要
  5. Id登録とversion設定をEvent実行で自動化 Public Public AWS Cloud VPC us-east-1a us-east-1c Auto Scaling

    group 本番用 us-east-1 (ASGはmax3台設定) 開発用 本番用 Update AMI Id Latest RDP/http CreateImage Daily Backup Set Version Latest CreateAutoScalingGroup ap-northeast-3 10.2.0.0/16 10.2.0.0/24 10.2.1.0/24 Sg-pub Sg-pri Sg-pri Sg-ALB https http ap-southeast-1 Daily Backup Copy Latest Backup AMI LaunchTemplate ap-northeast-1 AMI Id DevImage temporary AMI Id Copy Image Extract AMI Id http start stop LaunchTemplate ①ASGに起動テンプレートLatest設定 ②DLM起動後にAMI Id登録 ④AMI Id parameter出力 Azure IdP RDP https User https Developer ③AMI copy
  6. ③AMIの手動copy (Backup立上げ時) 東京で障害が発生した場合 バージニアに同じtemplateをdeploy us-east-1 開発用 Copy Latest Backup AMI

    ap-northeast-1 AMI Id Dev Image Copy Image LaunchTemplate temporary AMI Id Extract AMI Id VPCとEC2をdeployする前に AMIのCrossRegionCopyから 起動用のImageを作成 templateのdeploy時に parameter storeからAMI Id読み込みアタッチ
  7. ④AMI Idをparameter出力(Backup立上げ時) Backup先のtemplateに起動AMIのIdを渡す ためのparameter store出力 us-east-1 開発用 Copy Latest Backup

    AMI ap-northeast-1 AMI Id Dev Image Copy Image LaunchTemplate temporary AMI Id Extract AMI Id (時間切れで CreateImageのEventでLambda起動する 仕様になってない…後ほど変更予定)
  8. まとめ (10行で立ち上げ可能にできた) 起動イメージの作成とAMI Idのparameter出力 $ aws lambda invoke --function-name Copy-Latest-Image-Function

    --region us-east-1 responce.json $ aws lambda invoke --function-name Export-Latest-AMIId-Function --region us-east-1 responce.json VPC、NW、ec2のdeploy $ cd .. $ cd project_root/EC2_Deploy $ sam deploy AutoScalingGroupのdeploy $ cd .././EC2_ASG_Deploy $ sam deploy 開発用EC2をオリジンとするCloudfrontのdeploy $ cd .././CloudFront_Deploy $ sam deploy 開発用EC2の自動起動・自動停止をするLambda関数のdeploy $ cd .././DevEC2-START-STOP-FUNC $ sam deploy