1. ๋ชฉ์
2.๊ตฌ์ฑ
ec2 ์์ฑ
- ๊ธฐ๋ณธ๊ฐ์ผ๋ก ํผ๋ธ๋ฆญ์ ์ธ์คํด์ค ์์ฑ → ๊ธฐ๋ณธ์ ์ธ web๊ตฌ์ฑ๊ณผ efs๋ฅผ mount ์์ผ๋๊ธฐ ์ํ ๋ชฉ์ ์ ํ ์คํธ ์ธ์คํด์ค
- ๊ฐ๋จ indexํ์ด์ง → ๊ธฐ๋ณธ์ผ๋ก ๋ค์ด๊ฐ ์์ ์นํ์ด์ง์ด๋ค.
EFS ์์ฑ
๊ฐ๋ ์ฐธ๊ณ : https://practice.hooniworld.io/entry/AWS-EFS-๊ฐ๋ -๋ฐ-๊ตฌ์ฑ-๋ฐฉ๋ฒ
EFS ์ฌ์ฉ ์์
- EFS ์์ฑ์ VPC ์์ AZ subnet๋น mount targer์์ฑ
- ๋๊ฐ ์ด์์ผ ๊ฒฝ์ฐ ํ๊ฐ๋ง mount target ์์ฑ ๊ฐ๋ฅ
- console ์ ํตํ์ฌ EFS ์์ฑ
- ๋ง์ดํธ ํฌ์ธํธ
ec2-EFS ๋ง์ดํธ
- EFS์ ๊ฐ์ฉ์์ญ ํ์ธ
- ๋ณด์๊ทธ๋ฃน ์ค์
- nfs ํด๋ผ์ด์ธํธ ์ค์น
sudo yum -y update $ sudo reboot sudo yum -y install nfs-utils
- nfs ํด๋ผ์ด์ธํธ๊ฐ ํ์ฌ๋์ด์์ผ๋ฏ๋ก nfs ์ด์ฉ
- efs ํธ์คํธ ๋ฑ๋ก → auto-mount ๋ฅผ ํธ๋ฆฌํ๊ฒ ํ๊ธฐ ์ํจ ์์์ ๋ณด์ด๋ mount ํฌ์ธํธ๋ช ์ ๋๋ฌด ๊ธธ๊ธฐ๋๋ฌธ ์ฌ์ฉ๋ ๊ฐ์ฉ์์ญ๋ง ์ง์ ํด์ค๋ค.
- auto mount๋ฅผ ์ํ ์ค์
- ํ์ธ
efs ํ์ผ ์์ฑํ AMI ์์ฑ
→ ํด๋น ๋ง์ดํธ point๋ก ์ด๋ํ ํ์ผ ์์ฑ ๋ค ํด๋น ์ธ์คํด์ค ์ด๋ฏธ์ง ์์ฑauto sacling ์์ฑ
- ์์์ ์์ฑ๋ AMI๋ฅผ ์ด์ฉํ์ฌ ์์๊ตฌ์ฑ ์์ฑ
3. ํ ์คํธ
efs ๋์ ํ ์คํธ
- auto-scaling์ผ๋ก ์์ฑ๋ ec2 ํ์ธ
- mount ํ์ธ ๋ฐ ํ์ผ ํ์ธ → ์ถ๊ฐ๋ก ์๋ฌด ํ์ผ์ ์์ฑํด๋ณด๊ณ ๊ธฐ์กด bastion์๋ ์ ์ฉ๋์๋ ํ์ธ
- ์ ์ mount ์๋ ํ์ธ
cloudwatch ์ด๋ฒคํธ - run command ๋์
- ํด๋น ์ด๋ฒคํธ ๋์์ - scale out์ ์ด์ ์ ์์ฑ๋ efs.html์ด ๋ถ๋ฌ์์ก๋์ง ํ์ธ ํ ์คํธ → ์ด์ ์ 3 2 3 ๊ตฌ์ฑ์ 4 2 4๋ก ๋ณ๊ฒฝ์ ์ธ์คํด์ค ์ถ๊ฐ ๋๊ธฐ๋๋ฌธ์ ํด๋น ์ธ์คํด์ค๋ฅผ ํ์ธํ ์์
- ์ถ๊ฐ ์ธ์คํด์ค ํ์ธ
- ๋ก๋๋ฐธ๋ฐ์๋ก ํ์ธ์
- ๊ธฐ๋ณธ index.html ํ์ด์ง
→ ์ต๊ทผ ์ธ์คํด์ค๊ฐ ๋ชป๋ฐ์์๋ค ์ธ์คํด์ค ์คํํ๋ฉด์ auto mount๋ณด๋ค run command ๋์์ด ์ฐ์ ์ ๋์ด ๋ฐ์์ค์ง ๋ชปํ๋ค.
lambda ์ด์ฉํ - run command
- ๋๋ค ์ญํ ์์ฑ → ์ฌ์ฉํ ์๋น์ค๋ค์ ๋ํด์ ์ญํ ์ ์ง์ ํด์ฃผ์๋ค.
- ๋๋ค ํจ์ ์์ฑ
- ์ฝ๋ ์์ฑ
1. ๋จ์ผ ์ธ์คํด์ค run command ๋์ import json import boto3 def lambda_handler(event, context): ssm_client = boto3.client('ssm') response = ssm_client.send_command( InstanceIds=['i-0e4c2788a45b4baf2'], DocumentName="AWS-RunShellScript", Parameters={'commands': ['sudo echo "<html><body>lambda test webserver6</body></html>" > /var/www/html/index.html']}, ) return { 'statusCode': 200 } 2. tag๋ฅผ ์ด์ฉํ run command ๋์ import json import boto3 ssm = boto3.client('ssm') def lambda_handler(event, context): ssmcommand = ssm.send_command( Targets = [ {'Key': 'tag:Name', 'Values': [ 'ec2-efs'] } ], DocumentName="AWS-RunShellScript", Parameters={'commands': ['sudo cp -fv "<html><body>tag lambda runcommand22</body></html>" > /efstest/index.html'],['sudo cp -fv /efstest/index.html /var/www/html/] }, ) return{ 'status_code': 200 }
- ์ด๋ฒคํธ ํธ๋ฆฌ๊ฑฐ - cloudwatch ๊ท์น → sacle out์ run command ๋์
- ํ์ธ ๊ณผ์ → ๋๋ค ์ฝ๋์์ ๋ด์ฉ์ ๋ณ๊ฒฝํ ์์ ์งํํด๋ณด์
- sacle out ๋์ → ์ ์์ ์ผ๋ก run command ๋์ ํ์ธ
๊ฒฐ๋ก
๋ฐ๋ผ์, Cloudwatch๋ฅผ ์ด์ฉํ์ฌ SSM runcommand ๋ฅผ ์ ์ฉํ๊ธฐ๋ณด๋จ Cloudwatch Event ์ Lambda๋ฅผ ํธ๋ฆฌ๊ฑฐ ์ํค๋ ๋ฐฉ์์ด ์ฉ์ดํ๋ค,
๋ํ, ASG ๊ตฌ์ฑ ๋ฐฉ์์ค Launch Template์ ์ด์ฉํ์ฌ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํตํ์ฌ ์๋ฒ๋ฅผ ์ ๋ฐ์ดํธ ํ๋ ๋ฐฉ์์ด ์กด์ฌ ํ๋ฉฐ
ํด๋น Template์ ์ธ์คํด์ค ์๋ก๊ณ ์นจ or Warm pool ๋ฐฉ์์ ์ ์ฉํ๋ฉด ํธ๋ฆฌํ ๊ฒ ์ด๋ค.
'Automation' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
SSM Automation์ ํตํ ์๋ํ (0) | 2022.08.23 |
---|---|
image builder 2 (0) | 2021.06.16 |
Image Builder -golden ami ์์ฑ (0) | 2021.03.29 |
Lambda Ec2 start / stop Tag๊ธฐ๋ฐ (0) | 2021.01.20 |