JUST DO IT!

AWS IAM, S3, CI/CD, ์ข…ํ•ฉ์‹ค์Šต - TIL230517 ๋ณธ๋ฌธ

TIL

AWS IAM, S3, CI/CD, ์ข…ํ•ฉ์‹ค์Šต - TIL230517

sunhokimDev 2023. 5. 17. 19:56

๐Ÿ“š KDT WEEK 7 DAY 3 TIL

  • IAM
  • S3
  • CI/CD

 


๐ŸŸฅ IAM

Amazon Identity and Access Management

AWS ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ์›น ์„œ๋น„์Šค

๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋กœ๊ทธ์ธ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ ๋Œ€์ƒ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค. ex) ๋ฃจํŠธ ์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ

โ€ป ์ผ์ƒ์ ์ธ ์ž‘์—…์—๋Š” ๋ฃจํŠธ ์‚ฌ์šฉ์ž๊ฐ€ ์•„๋‹ˆ๋ผ ๋ณ„๋„์˜ ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•จ

 

  • ๋ฆฌ์†Œ์Šค ๋ณ„, ๊ถŒํ•œ(์ฝ๊ธฐ/์“ฐ๊ธฐ) ๋ณ„๋กœ ์ง€์ •๋„ ๊ฐ€๋Šฅ
  • ๋งŽ์€ AWS ์„œ๋น„์Šค์™€์˜ ํ†ตํ•ฉ๊ฐ€๋Šฅ
  • ์ผ๋ถ€๋ฅผ ์ œ์™ธํ•˜๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฌด๋ฃŒ ์‚ฌ์šฉ
  • ์—ญํ• , ์ •์ฑ…, ์‚ฌ์šฉ์ž ๋“ฑ์— ๋Œ€ํ•œ ์ •์˜

 

IAM ์ •์ฑ…

ํ…Œ์Šคํฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฉ๋ฒ•๊ณผ ๊ด€๊ณ„์—†์ด ์ž‘์—…์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ

์‚ฌ์šฉํ•˜๋Š” ๊ณณ์— ์•Œ๋งž๋Š” ์—ญํ• ๊ณผ ์ •์ฑ…์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ง€์ •ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

ex) ๊ถŒํ•œ์˜ ์œ ๋ฌด๋กœ S3์— ์—‘์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๋”ฐ์งˆ ์ˆ˜ ์žˆ๋‹ค.

 

AWS์˜ IAM ์‚ฌ์šฉ์ž ์ถ”๊ฐ€ ํ™”๋ฉด

์‚ฌ์šฉ์ž ์ถ”๊ฐ€ ์™ธ์—๋„ ๊ทธ๋ฃน์„ ์ƒ์„ฑํ•˜์—ฌ ๊ทธ๋ฃน์— ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ถŒํ•œ๋„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์ถ”๊ฐ€๋œ ์‚ฌ์šฉ์ž๋Š” ์•ก์„ธ์Šค ํ‚ค, ๋น„๋ฐ€ ์—‘์„ธ์Šค ํ‚ค, ๋น„๋ฐ€๋ฒˆํ˜ธ ๋“ฑ์„ ๊ณ ์œ ์ ์œผ๋กœ ๋ถ€์—ฌ๋ฐ›์•„ ๊ฐ–๊ฒŒ ๋œ๋‹ค.

 


 

๐ŸŸฆ S3

Amazon Simple Storage Service(Amazon S3)

๋ฐ์ดํ„ฐ ๊ฐ€์šฉ์„ฑ ๋ฐ ํ™•์žฅ์„ฑ ๋ณด์•ˆ ๋ฐ ์„ฑ๋Šฅ์„ ๊ฐ–์ถ˜ ๊ฐ์ฒด ์Šคํ† ๋ฆฌ์ง€ ์„œ๋น„์Šค

ํŠน์ • ๋น„์ฆˆ๋‹ˆ์Šค๋‚˜ ์กฐ์ง์— ๋งž๊ฒŒ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ตœ์ ํ™”, ๊ตฌ์กฐํ™” ๋ฐ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณต

ex) ์ผ๋ฐ˜์ ์ธ ์˜์ƒ ๋ฐ ์ด๋ฏธ์ง€, ๋น…๋ฐ์ดํ„ฐ ๋“ฑ๋“ฑ.

 

S3๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์  ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋ณ„๋„์˜ ์„œ๋ฒ„์—†์ด ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜๋„ ์žˆ์Œ

 

  • ๋ฒ„ํ‚ท : ์ €์žฅ๋œ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ปจํ…Œ์ด๋„ˆ(์œˆ๋„์šฐ์˜ ํด๋”)
  • ๊ฐ์ฒด : S3์— ์ €์žฅ๋˜๋Š” ๊ธฐ๋ณธ ๊ฐœ์ฒด / ๊ฐ์ฒด ๋ฐ์ดํ„ฐ์™€ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์Œ
  • ํ‚ค : ๊ฐ์ฒด๋ฅผ ํŒ๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์‹๋ณ„์ž

 

S3์—์„œ ๋ฒ„ํ‚ท(ํด๋”)๋ฅผ ๋งŒ๋“ค์–ด ๊ฐ์ฒด(ํŒŒ์ผ)๋ฅผ ๋‹ด์•„๋‘๋Š” ๋ชจ์Šต

 

๋ฒ„ํ‚ท์˜ ์†์„ฑ์—์„œ ์ •์  ์›น ์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ… ํŽธ์ง‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ •์  ์›น ์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…์„ ํ™œ์„ฑํ™”ํ•˜๋ฉด url์„ ๋ฐ›์•„ ์ ‘์†ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

(๋ฒ„ํ‚ท ๊ถŒํ•œ ์ •์ฑ…์—์„œ ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค ์ฐจ๋‹จ์„ ํ’€์–ด์ค˜์•ผ ์ ‘์†์ด ๊ฐ€๋Šฅํ•˜๋‹ค.)

 


 

๐ŸŸฉ CI / CD

 

  • Continuous Integration (CI)
    • ์ฝ”๋“œ๋ฅผ ์ปค๋ฐ‹ํ•˜๊ณ  ๋ณ‘ํ•ฉํ•˜๋Š” ๊ณผ์ •
  • Continuous Delivery (CD)
    • ๊ฐœ๋ฐœํŒ€์ด ์ง€์†์ ์ธ ์งง์€ ์ฃผ๊ธฐ๋กœ SW๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ

โ–ถ CI + CD = ๊ฐœ๋ฐœํ•œ ๋‚ด์šฉ์„ ๋นŒ๋“œํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š” ๊ณผ์ •์„ ์ž๋™ํ™”

 

AWS๋‚ด์—์„œ์˜ CI / CD

 

AWS CodeCommit

ํด๋ผ์šฐ๋“œ์— ์†Œ์Šค ์ฝ”๋“œ๋‚˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ ๋“ฑ์˜ ์ž์‚ฐ์„ ๋น„๊ณต๊ฐœ๋กœ ์ €์žฅํ•˜์—ฌ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. ๊นƒํ—ˆ๋ธŒ์™€ ๋น„์Šทํ•˜๋‹ค.

 

  • ์ฝ”๋“œ ๊ณต๋™์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ
  • AWS๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์„œ๋น„์Šค์™€๋„ ํ˜ธํ™˜๋˜๋ฉฐ, git์—์„œ๋„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ
  • git์˜ ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋Šฅ ๋ฐ ๋ช…๋ น์–ด๋„ ์ œ๊ณต

CodeCommit์—์„œ ์ž„์˜์˜ Repo๋ฅผ ์ƒ์„ฑํ•œ ๋ชจ์Šต. git clone๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

AWS CodeBuild

ํด๋ผ์šฐ๋“œ์ƒ์—์˜ ์™„์ „๊ด€๋ฆฌํ˜• ๋นŒ๋“œ ์„œ๋น„์Šค

์ฝ”๋“œ๊ฐ€ ์˜ฌ๋ผ์˜ค๋ฉด ์ž๋™์œผ๋กœ ๋นŒ๋“œํ•˜๊ณ  ๋„˜๊ฒจ์ค€๋‹ค.

 

  • ์ž์ฒด ๋นŒ๋“œ ์„œ๋ฒ„ ํ•„์š”์—†์ด ์†Œ์Šค ์ฝ”๋“œ ์ปดํŒŒ์ผ ๋ฐ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์‹คํ–‰, ๋นŒ๋“œ๊นŒ์ง€ ๊ฐ€๋Šฅ
  • Gradle ๋“ฑ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋นŒ๋“œ ๋„๊ตฌ์— ๋งž๊ฒŒ ๋นŒ๋“œ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•จ

 

CodeBuild์—์„œ ๋นŒ๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ค‘ '์†Œ์Šค' ์˜ต์…˜

 

์•„๊นŒ ๋งŒ๋“ค์—ˆ๋˜ CodeCommit์˜ firstRepo๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ๋ฌผ๋ก ์ด๊ณ ,

Github์˜ OAuth ์ธ์ฆ๋งŒ ํ•˜๋ฉด ๋‚ด ๊นƒํ—ˆ๋ธŒ์˜ Repo๋„ ๋ชจ๋‘ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค!

 

 

AWS CodeDeploy

CodeBuild์—์„œ ๋„˜์–ด์˜จ ์ฝ”๋“œ๋ฅผ ์ž๋™์ ์œผ๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์„œ๋น„์Šค

์ฝ”๋“œ, AWS Lambda, ์›น ํŒŒ์ผ, ํŒจํ‚ค์ง€, ์Šคํฌ๋ฆฝํŠธ ๋“ฑ๋“ฑ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

AWS CodePipeline

CI/CD ์ „๊ณผ์ •์„ ์ž๋™ํ™”์‹œํ‚ค๋Š” ์„œ๋น„์Šค

๊ฐœ๋ฐœ ์„œ๋ฒ„, ์šด์˜ ์„œ๋ฒ„, ์Šคํ…Œ์ด์ง• ์„œ๋ฒ„ ๋“ฑ ๊ฐ ์„œ๋ฒ„๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ํ•„์š”ํ•˜๋‹ค.

CodeCommit, CodeBuild, CodePipeline ์„œ๋น„์Šค๋ฅผ ํ•œ๋ฒˆ์— ์—ฎ๋Š”๋‹ค.

 


 

๐ŸŸง ์ข…ํ•ฉ ์‹ค์Šต์œผ๋กœ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฐฐํฌํ•ด๋ณด๊ธฐ

 

AWS ์›น์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜

 

 

0. ๋ฐฑ์—”๋“œ ๋ชจ๋“ˆ ๊ตฌ์„ฑ

 

1. VPC ๊ตฌ์„ฑ

์ถ”๊ฐ€๋กœ NAT Gateway๋„ ๋„ฃ์–ด์•ผ ํ•œ๋‹ค..

2. Elastic Beanstalk ๊ตฌ์„ฑ

๋‹ค์Œ์œผ๋กœ ๋งŒ๋“ค์—ˆ๋˜ ์•ฑ์„ ๋„ฃ์„ Elastic Beanstalk ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•œ๋‹ค.

ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•œ ๋‹ค์Œ์— VPC๋ฅผ ๋„ฃ์œผ๋ ค๋ฉด ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์—, ๊ตฌ์„ฑํ•˜๋ฉด์„œ ์•„๋ž˜์ฒ˜๋Ÿผ VPC ์„ค์ •์„ ์™„๋ฃŒํ•ด์ฃผ๋ฉด ์ข‹๋‹ค.

 

Private ์˜์—ญ์— Elastic Beanstalk์„ ๋„ฃ์–ด์ค€๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋„ ๋˜‘๊ฐ™์ด Private ์˜์—ญ์— ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค.

 

3. Bastion host ์ƒ์„ฑ > EC2

bastion host ์—ญํ• ์„ ํ•  EC2๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์ค€๋‹ค.

์—ญ์‹œ ์•„๊นŒ ๋งŒ๋“ค์—ˆ๋˜ VPC๋ฅผ ์„ค์ •ํ•ด์ค€๋‹ค. bastion host๋Š” ํผ๋ธ”๋ฆญ์— ๋“ค์–ด๊ฐ€์•ผ ํ•œ๋‹ค.

 

bastion host ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์ค‘ VPC๋ฅผ ์„ค์ •ํ•œ ๋ชจ์Šต

 

4. ์ฝ˜์†”๋กœ Private subnet์˜ ElasticBeanstalk ์ ‘์†ํ•˜๊ธฐ

 

Private์— ํผ๋ธ”๋ฆญID๋ฅผ ํ†ตํ•ด ์ฝ˜์†”๋กœ ์ ‘์†ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋ฉด ๋‹น์—ฐํžˆ ์ ‘์†๋˜์ง€ ์•Š๋Š”๋‹ค.

Private์— ์ ‘์†ํ•˜๋ ค๋ฉด public์— ๋“ฑ๋กํ•œ bastion host๋ฅผ ํ†ตํ•ด ์ ‘์†ํ•ด์•ผํ•œ๋‹ค.

 

1. ํ„ฐ๋ฏธ๋„์—์„œ bastion host์— ์ ‘์†ํ•˜์—ฌ .ssh ํด๋”์— ์‚ฌ์šฉํ•˜๋˜ pem ํ‚ค๋ฅผ ๋ณต์‚ฌ (chmod 400๋„ ํ•„์š”)

2. ์‚ฌ์šฉํ•˜๋ ค๋Š” ElasticBeanstalk ๊ตฌ์„ฑ์—์„œ ๋ณด์•ˆ ์ˆ˜์ • > EC2 ํ‚คํŽ˜์–ด์— pem ํ‚ค ๋“ฑ๋ก

3. ์„ค์ •์ด ๋˜๋ฉด ์‚ฌ์šฉํ•˜๋ ค๋Š” ElasticBeanstalk ํ™˜๊ฒฝ์˜ Private IP๋ฅผ ํ†ตํ•ด ํ„ฐ๋ฏธ๋„๋กœ ์ ‘์†

 

Public์˜ bastion host๋ฅผ ํ†ตํ•ด Private์˜ ElasticBeanstalk์— ์ ‘์†๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 


 

5. RDS ์„ค์น˜

์‚ฌ์ „์— ์„œ๋ธŒ๋„ท ๊ทธ๋ฃน์„ ๋จผ์ € ์ƒ์„ฑํ•ด์ค€๋‹ค.

AWS RDS > ์„œ๋ธŒ๋„ท ๊ทธ๋ฃน ์ƒ์„ฑ > VPC Private subnet์— ๋“ฑ๋ก

 

DB๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

RDS > ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ โžก๏ธ ๋ฐฉ๊ธˆ ์ƒ์„ฑํ•œ ์„œ๋ธŒ๋„ท ๊ทธ๋ฃน ์ ์šฉ, ๊ทธ ์™ธ์—๋Š” ๊ธฐ๋ณธ ์„ค์ • ์ ์šฉ

 

์ƒ์„ฑ ํ›„ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ทธ๋ฃน์—์„œ DB์˜ ์—ฌ๋Ÿฌ ์„ค์ •์„ ๋ฐ”๊ฟ”์ค„ ์ˆ˜ ์žˆ๋‹ค.

MySQL์„ ์„ค์ •ํ–ˆ๋‹ค๋ฉด ํฌํŠธ๋กœ 3306์ด ๋“ค์–ด๊ฐ”๋Š”์ง€ ํ™•์ธํ•˜๋ฉด ์ข‹๋‹ค. (์—†์œผ๋ฉด ์ ‘์†๋ถˆ๊ฐ€)

 

DB๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด MySQL WorkBench ๋“ฑ์„ ํ†ตํ•ด ํ…Œ์ŠคํŠธ ์ปค๋„ฅ์…˜์„ ํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

> Host : ์ƒ์„ฑ๋œ ์—”๋“œํฌ์ธํŠธ

> Port : 3306

> User, Password : DB ์ƒ์„ฑ์‹œ ๋“ฑ๋กํ•œ ์œ ์ €์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ

 

โ€ป Public subnet์— DB๊ฐ€ ๋“ค์–ด์žˆ์œผ๋ฏ€๋กœ SSH ์„ค์ •๋„ ๋”ฐ๋กœ ๋„ฃ์–ด์ค˜์•ผ ์ •์ƒ์ ์œผ๋กœ ์ ‘์†์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

> SSH Configurations ํƒญ์—์„œ ์ถ”๊ฐ€ ์„ค์ •ํ•„์š”

> Host : bastion host ํผ๋ธ”๋ฆญ IP

> User name : ec2-user(๊ธฐ๋ณธ)

> Authentication type : Key pair

> Private key file : ์‚ฌ์šฉํ•˜๋Š” pem ํŒŒ์ผ ๋“ฑ๋ก

 

 


 

6. Front ๊ด€๋ฆฌ

 

S3 ๋ฒ„ํ‚ท์— Front ๋ฆฌ์†Œ์Šค๋“ค์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๋ฒ„ํ‚ท ์ด๋ฆ„์„ ์‚ฌ์šฉํ•  ๋„๋ฉ”์ธ ์ด๋ฆ„์œผ๋กœ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜๊ณ , ์ •์  ์›น ์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

 

๊ฐ„๋‹จํ•œ Front ์ž‘์—…์ด ๋œ ํŒŒ์ผ์ด ์žˆ๋‹ค๋ฉด ๋ฒ„ํ‚ท์— ์˜ฌ๋ ค ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ๋ฒ„ํ‚ท์˜ ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค ์ฐจ๋‹จ ํ•ด์ œ์™€ ๋ฒ„ํ‚ท ๊ถŒํ•œ ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

 

์„ค์ •์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด ๋ฒ„ํ‚ท์˜ ์ •์  ์›น ์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ… ์„ค์ •์— ๋‚˜ํƒ€๋‚œ ์—”๋“œ ํฌ์ธํŠธ๋ฅผ ํ†ตํ•ด ์ ‘์†์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 


 

7. CI/CD ์—ฐ๋™

CodePipeline ์„œ๋น„์Šค๋ฅผ ์—ฐ๋™ํ•˜์—ฌ CI/CD๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค.

 

1. ์ฝ”๋“œ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊นƒํ—ˆ๋ธŒ์™€ ์—ฐ๋™์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ์ƒ์„ฑ (OAuth ์ธ์ฆํ•„์š”)

  • ๋ธŒ๋žœ์น˜์˜ ๊ฒฝ์šฐ ๊ฐœ๋ฐœ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋ธŒ๋žœ์น˜์˜ ์ˆ˜ ๋งŒํผ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•˜๋‹ค.

2. CodeBuild ์ƒ์„ฑ์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•  ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์ƒ์„ฑํ•ด์—ฌ ํŒŒ์ดํ”„๋ผ์ธ์— ๋„ฃ์–ด์•ผํ•œ๋‹ค.

  • ํ•ด๋‹น ์ฝ”๋“œ๋นŒ๋“œ์˜ Buildspec ํŽธ์ง‘์„ ํ†ตํ•ด build:์™€ artifact: ์ถ”๊ฐ€๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
phases:
	build:
    		commands:
        		- ./gradlew build # gradlew ๋กœ ๋นŒ๋“œ
artifacts:
	files:
    	- '**/*' # ๋ชจ๋“  ํŒŒ์ผ์„ ๋ณด๋ƒ„

 

3. ๋ฐฐํฌ ์Šคํ…Œ์ด์ง€ ์ถ”๊ฐ€์˜ ๊ฒฝ์šฐ BeanStalk์ด Public์— ์žˆ๋‹ค๋ฉด ๋ฐ”๋กœ BeanStalk ์ ์šฉ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, Private์— ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— CodeDeploy์™€ ELB๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • CodeDeploy๋ฅผ EC2 Auto Scaling ์„ค์ •์„ Onํ•˜์—ฌ ์ƒˆ๋กœ ์ƒ์„ฑํ•œ๋‹ค.
  • ์ƒ์„ฑ ๋งˆ์ง€๋ง‰์— ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ์ถ”๊ฐ€์˜ ๊ฒฝ์šฐ EC2๋งŒ ์‚ฌ์šฉํ•˜๋ƒ, BeanStalk์„ ์‚ฌ์šฉํ–ˆ๋ƒ๋กœ ๊ฐˆ๋ฆฐ๋‹ค.
    • EC2๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ณ„๋„์˜ EC2 ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
    • ๋‚˜๋Š” BeanStalk์„ ๋”ฐ๋กœ ์ƒ์„ฑํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋ฏ€๋กœ BeanStalk ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • Private Subnet์„ ์—ฐ๊ฒฐํ•˜๋Š” ELB๋ฅผ ํ†ตํ•ด ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

4. ์ƒ์„ฑ๋œ CodeDeploy๋ฅผ ์ฝ”๋“œํŒŒ์ดํ”„๋ผ์ธ์— ์ถ”๊ฐ€ํ•œ๋‹ค.

 

โ€ป CodeDeploy๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” Front ๋ฃจํŠธ ํด๋”์— appspec.yml ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•ด์•ผํ•œ๋‹ค. ์•„๋ž˜ ๋งํฌ ์ฐธ๊ณ .

https://velog.io/@wngud4950/AWS-EC2-CodeDeploy-Appspec.yml%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC

 

[AWS] EC2-CodeDeploy Appspec.yml์— ๋Œ€ํ•˜์—ฌ

EC2์—์„œ CodeDeploy๋ฅผ ์ด์šฉํ–ˆ์„ ๋•Œ appspec.yml์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ํ•ด๋‹น ๊ธ€๊ณผ ๊ฐ™์ด ๋‚˜์ค‘์— ์—๋Ÿฌ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์• ๋ฅผ ๋จน์–ด ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ •๋ฆฌ ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.appspec.ymlํŒŒ์ผ์€ CodeDeploy

velog.io

๊ทธ๋ž˜์•ผ ๊นƒํ—ˆ๋ธŒ์—์„œ ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ CodeDeploy๊ฐ€ Appspec.yml ํŒŒ์ผ์„ ์ฝ์–ด ์ •์ƒ์ ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

 

CI/CD๊ฐ€ ์ œ๋Œ€๋กœ ๊ตฌ๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ํ„ฐ๋ฏธ๋„์—์„œ beanstalk์— ์ ‘์†ํ•˜๊ณ ,

CodeDeploy Agent๋ฅผ ๋จผ์ € ์„ค์น˜ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

 

wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install
chmod +x ./install
sudo ./install auto
sudo service codedeploy-agent status # codedeploy ๋™์ž‘ํ™•์ธ
# ์œ„ status์—์„œ codedeploy๊ฐ€ ๋™์ž‘ํ•˜์ง€ ์•Š๊ณ  ์žˆ๋‹ค๋ฉด
# sudo service codedeploy-agent start # codedeploy ๋™์ž‘

์ฐธ๊ณ  ๋งํฌ : https://sangchul.kr/entry/aws-codedeploy-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8-%EC%84%A4%EC%B9%98codedeploy-agent-install

 

์ดํ›„ ๊นƒํ—ˆ๋ธŒ๋กœ push๋ฅผ ๋ช…๋ นํ•˜๋ฉด ์ฝ”๋“œ ํŒŒ์ดํ”„๋ผ์ธ์ด ์ž๋™์ ์œผ๋กœ ๋นŒ๋“œ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 


 

8. Route53 ์„ค์ •

๋„๋ฉ”์ธ์„ Route53์„ ํ†ตํ•ด ๋„๋ฉ”์ธ์„ ๊ตฌ๋งคํ•˜๋Š” ๊ฒฝ์šฐ > Route53 ์˜ ๋„๋ฉ”์ธ ๋“ฑ๋ก์„ ํ†ตํ•ด ๋„๋ฉ”์ธ ๊ตฌ๋งค

๋‹ค๋ฅธ ๊ณณ์—์„œ ๋„๋ฉ”์ธ์„ ๊ตฌํ•ด์˜จ ๊ฒฝ์šฐ > ํ˜ธ์ŠคํŒ… ์˜์—ญ ์ƒ์„ฑ์—์„œ ๊ตฌ๋งคํ–ˆ๋˜ ๋„๋ฉ”์ธ์„ ๋„ฃ์–ด NameServer ๋ฐœ๊ธ‰๋ฐ›์•„ ๊ต์ฒดํ•ด์ฃผ๊ธฐ

 

CloudFront๋ฅผ ํ†ตํ•ด ๋ฐฐํฌํ•˜๊ธฐ(CDN)

 

CloudFront ์ƒ์„ฑ

  • ๋งŒ๋“ค์—ˆ๋˜ S3 ๋“ฑ๋ก
  • HTTP ์‚ฌ์šฉ ๋“ฑ ์›ํ•˜๋Š” ์„ธํŒ… ์„ค์ •
  • ์ธ์ฆ์„œ์˜ ๊ฒฝ์šฐ AWS Certificate Manager ์˜ ํผ๋ธ”๋ฆญ ์ธ์ฆ์„œ ์š”์ฒญ์„ ํ†ตํ•ด SSL์ธ์ฆ์„œ ๋ฐœ๊ธ‰๊ฐ€๋Šฅ (๋„๋ฉ”์ธ์œผ๋กœ ๋ฐœ๊ธ‰)

 

Route53์—์„œ ๋ ˆ์ฝ”๋“œ์ƒ์„ฑ > ๊ฐ’/ ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ… ๋Œ€์ƒ์— CDN์ด๋‚˜ S3 ๋“ฑ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ๋ผ์šฐํŒ… ์„ค์ •

 


 

๐Ÿค” ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์–ด๋ ค์› ๋˜ ๋‚ด์šฉ

AWS๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค๊ฐ€ ์ •~๋ง ๋งŽ์€ ๊ฒƒ ๊ฐ™๋‹ค.

๊ธฐ๋Šฅ์„ ํ•˜๋‚˜ํ•˜๋‚˜ ์™ธ์šฐ๋Š” ๊ฒƒ๋„ ์–ด๋ ต์ง€๋งŒ, ์ฒ˜์Œ๋ณด๋Š” ์šฉ์–ด๊ฐ€ ๋งŽ์•„์„œ ๋” ์–ด๋ ค์šด ๊ฒƒ ๊ฐ™๋‹ค..๐Ÿ˜ญ

๋ชจ๋ฅด๋Š” ์šฉ์–ด ํ•˜๋‚˜๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์ƒˆ๋กœ์šด ์šฉ์–ด ๋ช‡ ๊ฐœ๋ฅผ ๋˜ ๋ด์•ผํ•˜๋Š”.. ๋”œ๋ ˆ๋งˆ์— ๋น ์ง„๋‹ค.

AWS ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๋‚ด๊ฐ€ ๊ธฐ์ดˆ๊ฐ€ ์ •๋ง ๋ถ€์กฑํ•˜๋‹ค๋Š” ์ƒ๊ฐ๋„ ๋งŽ์ด ๋“ค์—ˆ๋‹ค..