๐Ÿ“’ AWS(4)

Kimdongkiยท2024๋…„ 5์›” 6์ผ

DB

๋ชฉ๋ก ๋ณด๊ธฐ
14/33

๐Ÿ“Œ CLI

  • AWS ์„œ๋น„์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํ†ตํ•ฉ ๋„๊ตฌ์ด๋‹ค.
  • pip install awscli
  • pip3 install awscli

์ฐธ๊ณ 

  • CLI ์„ค์ •
  • IAM์—์„œ ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ๋ฐ›์€ ํ›„ ์„ค์ •์„ ํ•ด์•ผํ•œ๋‹ค.
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFeMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
  1. aws configure ์ž…๋ ฅ
  2. ์•ก์„ธ์Šค ํ‚ค ์ž…๋ ฅ(๋ณต๋ถ™)
  3. ๋น„๋ฐ€ ์•ก์„ธ์Šค ํ‚ค ์ž…๋ ฅ(๋ณต๋ถ™)
  4. region ์ž…๋ ฅ -> ap-northeast-NUM
  5. json -> Enter๋กœ ๋„˜๊ธฐ๊ธฐ
    ๋งˆ๋ฌด๋ฆฌ -> aws configure list๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์„ค์ •์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

aws s3 ls๋กœ ๋“ค์–ด๊ฐ€๋ ค ํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋‹ค.
์ด๋Š” ๊ถŒํ•œ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
IAM์—์„œ ๊ถŒํ•œ ์ถ”๊ฐ€๋ฅผ ํ•˜๋ฉด๋œ๋‹ค.
์ง์ ‘ ์ •์ฑ… ์—ฐ๊ฒฐ -> AmazonS3FullAccess ์„ ํƒ -> ๊ถŒํ•œ ์ถ”๊ฐ€

aws s3 mb s3://urface-profiles ๋ฅผ ์ฝ˜์†”์ฐฝ์— ์ž‘์„ฑํ•˜๋ฉด
AWS์˜ S3์— urface-profiles๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

์ด์ „์— ๋งŒ๋“  Spring์„ ์˜ฌ๋ ค๋ณด์ž.
aws s3 sync . s3://urface-profiles๋ฅผ ์ž‘์„ฑํ•˜๋ฉด
๋ชจ๋‘ ์ž˜ ์˜ฌ๋ผ๊ฐ€๋Š” ๊ฒƒ์„ S3์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
aws s3 rm s3://urface-profiles --recursive๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋ชจ๋‘ ์ง€์šธ ์ˆ˜ ์žˆ๋‹ค.
์—ฌ๊ธฐ์„œ revcursive๋Š” ํ•˜์œ„ํŒŒ์ผ๊นŒ์ง€ ์ ‘๊ทผํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
์ด์™ธ์— ๋‹ค๋ฅธ ์„œ๋น„์Šค๋„ ์ฝ˜์†”์„ ํ†ตํ•ด์„œ ์ปจํŠธ๋กค์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿ“Œ Docker

ํŒŒ์ด์ฌ์˜ Venv์™€ ๋น„์Šทํ•œ ํ˜•ํƒœ์˜ ๊ฐ€์ƒํ™” ๊ธฐ์ˆ ์ด๋‹ค.
์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜์˜ ๋ณ„๋„์˜ ์ด๋ฏธ์ง€๋กœ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋„์ปค์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฒ„์ „์— ๋”ฐ๋ฅธ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ์ค„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด์„œ ์ธ๊ณต์ง€๋Šฅ ๋ถ„์•ผ์—์„œ๋Š” Python์˜ ํŠน์ • ๋ฒ„์ „๊นŒ์ง€๋งŒ ์ง€์›ํ•˜๋Š” ๊ธฐ์ˆ ๋“ค์ด ์กด์žฌํ•œ๋‹ค.
๋˜๋Š” ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์—์„œ๋งŒ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์กด์žฌํ•œ๋‹ค.

๐Ÿ“• ๋ช…๋ น์–ด

  • ์ƒ์„ฑ ๋ฐ ์‹คํ–‰
    • run : container ์ƒ์„ฑ ๋ฐ ์‹คํ–‰
    • stop : container ์ค‘์ง€
    • start : container ์‹คํ–‰
    • restart : container ์žฌ์‹คํ–‰
  • ๊ด€๋ฆฌ
    • ps : container ํ™•์ธ
    • rm : container ์‚ญ์ œ
  • ์‹คํ–‰ ๊ด€๋ฆฌ
    • logs : container log ํ™•์ธ
    • exec : container์— ๋ช…๋ น์–ด ์ˆ˜ํ–‰
  • Image ๊ด€๋ฆฌ
    • images : image ํ™•์ธ
    • rmi : image ์‚ญ์ œ
    • pull : image ๋‹ค์šด๋กœ๋“œ
    • push : image ์—…๋กœ๋“œ
    • tag : image ํƒœ๊ทธ ์ง€์ •
๋ช…๋ น์–ด์„ค๋ช…
FROM๋ฒ ์ด์Šค ์ด๋ฏธ์ง€๋ฅผ ์„ค์ •ํ•œ๋‹ค. <์ด๋ฏธ์ง€ ์ด๋ฆ„>:<ํƒœ๊ทธ> ํ˜•์‹์œผ๋กœ ์„ค์ •
METATAINER๋ฉ”์ธํ…Œ์ด๋„ˆ ์ •๋ณด
RUN์…€ ์Šคํฌ๋ฆฝํŠธ ํ˜น์€ ๋ช…๋ น์„ ์‹คํ–‰, ์ด๋ฏธ์ง€ ์ƒ์„ฑ ์‹œ์— ์‹คํ–‰
CMD์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์„ ๋•Œ ์‹คํ–‰ํ•  ์‹คํ–‰ ํŒŒ์ผ ๋˜๋Š” ์…ธ ์Šคํฌ๋ฆฝํŠธ
EXPOSEํ˜ธ์ŠคํŠธ์™€ ์—ฐ๊ฒฐํ•  ํฌํŠธ ๋ฒˆํ˜ธ
WORKDIRCMD์—์„œ ์„ค์ •ํ•œ ์‹คํ–‰ ํŒŒ์ผ์ด ์‹คํ–‰๋  ๋””๋ ‰ํ† ๋ฆฌ
FROM openjdk:8-jdk-alpine
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} demo-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java","-jar","/demo-0.0.1-SNAPSHOT.jar"]

๐Ÿ“Œ Docker-compose

์—ฌ๋Ÿฌ๊ฐœ์˜ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“Œ ECR/ECS

์ปจํ…Œ์ด๋„ˆ SW๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” AWS ์„œ๋น„์Šค์ด๋‹ค.
์ด๋ฏธ์ง€ ๊ด€๋ จ๋œ ๊ฒƒ๋“ค์„ ์ €์žฅํ•˜๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ECR์ด๋ผ ํ•˜๋ฉฐ
ECR์— ์ €์žฅ๋œ ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ€์ƒํ™”๋œ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ECS์ด๋‹ค.

์•„๋ž˜ ์ •์ฑ…์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด ์ฃผ์–ด์•ผํ•œ๋‹ค.

{
  	"Version": "2012-10-17",
	"Statement": [
      {
          "Sid": "VisualEditor0",
          "Effect": "Allow",
          "Action": "ecr:*",
          "Resource": "*"
      }
    ]
}

๐Ÿ“Œ Lambda

ServerLess์˜ ๋Œ€ํ‘œ์ ์ธ ์„œ๋น„์Šค์ด๋‹ค.
์‚ฌ์šฉํ•œ ์ปดํ“จํŒ… ์‹œ๊ฐ„์— ๋Œ€ํ•ด์„œ๋งŒ ์š”๊ธˆ์„ ์ง€๋ถˆํ•˜๋ฉด ๋˜๊ณ  ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š์„ ๋•Œ๋Š” ์š”๊ธˆ์ด ๋ถ€๊ณผ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Lambda๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์‹ค์ƒ ๋ชจ๋“  ์œ ํ˜•์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ณ  ์ด๋ฅผ ๊ด€๋ฆฌํ•  ํ•„์š”๋Š” ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ API Gateway

๊ฐœ๋ฐœ์ž๋“ค์ด Amazon EC2, AWS Lambda ๋˜๋Š” ๊ณต๊ฐœ๋œ ์ฃผ์†Œ๊ฐ€ ์žˆ๋Š” ์›น ์„œ๋น„์Šค์—์„œ ์‹คํ–‰ ์ค‘์ธ ๋ฐฑ์—”๋“œ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ API๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. Amazon API Gateway๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ API์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ง€์ • ํด๋ผ์ด์–ธํŠธ SDK๋ฅผ ๋งŒ๋“ค๊ณ , ๋ฐฑ์—”๋“œ ์‹œ์Šคํ…œ์„ ๋ชจ๋ฐ”์ผ, ์›น, ์„œ๋ฒ„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” ์„œ๋น„์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ CloudWatch

Application์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ , ์‹œ์Šคํ…œ ์ „์ฒด ์„ฑ๋Šฅ ๋ณ€๊ฒฝ์— ๋Œ€์‘ํ•˜๋ฉฐ, ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋ฅ ์„ ์ตœ์ ํ™”ํ•˜๊ณ , ์šด์˜ ์ƒํƒœ๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ ๋ณด๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์™€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€