๐Ÿชฃ S3 ์‹œ์ž‘ํ•˜๊ธฐ- bucket ๋งŒ๋“ค๊ธฐ, bucket policy ์„ค์ •, ์ •์  ์›น ์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, EC2์— S3 ๊ถŒํ•œ ์ฃผ๊ธฐ

euphonyยท2025๋…„ 3์›” 20์ผ
0

๋‚ด์ผ๋ฐฐ์›€์บ ํ”„

๋ชฉ๋ก ๋ณด๊ธฐ
65/66

S3(Simple Storage Service)๋ž€?

  • Amazon S3๋Š” ์ •์  ์›น ์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, ์˜จ๋ผ์ธ ๋ฐฑ์—…, ๋ฐ์ดํ„ฐ ์•„์นด์ด๋ธŒ, ๊ธฐ์—… ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, Big Data ๋ถ„์„ ๋“ฑ ๋‹ค์–‘ํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
  • ๋ฒ„ํ‚ท(Buckets) : ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฐ€์žฅ ์ƒ์œ„ ๋ ˆ๋ฒจ์˜ ํด๋” ํ˜•ํƒœ์˜ ์ปจํ…Œ์ด๋„ˆ. S3์— ์ €์žฅ๋˜๋Š” ํŒŒ์ผ๋“ค์„ โ€˜๊ฐ์ฒดโ€™๋ผ๊ณ  ๋ถ€๋ฅด๊ณ , ๋ชจ๋“  ๊ฐ์ฒด๋Š” โ€˜ํ‚คโ€™(๋””๋ ‰ํ† ๋ฆฌ)๋กœ ์‹๋ณ„๋œ๋‹ค.
  • ๋ฒ„ํ‚ท ์ด๋ฆ„ ๊ทœ์น™
    • ๋Œ€๋ฌธ์ž์™€ ์–ธ๋”์Šค์ฝ”์–ด ์‚ฌ์šฉ ๊ธˆ์ง€
    • ๊ธธ์ด ์ œํ•œ: 3์ž ์ด์ƒ, 63์ž ์ดํ•˜๋กœ ์ž‘์„ฑ
    • ์†Œ๋ฌธ์ž, ์ˆซ์ž, ์ (.) ๊ทธ๋ฆฌ๊ณ  ํ•˜์ดํ”ˆ(-)๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    • ๋ฐ˜๋“œ์‹œ ๋ฌธ์ž ๋˜๋Š” ์ˆซ์ž๋กœ ์‹œ์ž‘ํ•˜๊ณ  ๋๋‚ด๊ธฐ
    • ๋‘ ๊ฐœ์˜ ์ (.) ์—ฐ์† ์‚ฌ์šฉ ๊ธˆ์ง€
    • IP ์ฃผ์†Œ ํ˜•์‹ ์‚ฌ์šฉ ๊ธˆ์ง€

S3 ์‹œ์ž‘ํ•˜๊ธฐ

๋ฒ„ํ‚ท ๋งŒ๋“ค๊ธฐ

Create bucket์„ ๋ˆŒ๋Ÿฌ ๋ฒ„ํ‚ท์„ ์ƒ์„ฑํ•ด๋ณด์ž! ์ด๋ฆ„๋งŒ ์ •ํ•˜๊ณ  ๋‹ค๋ฅธ ์˜ต์…˜์€ ์ผ๋‹จ ๊ทธ๋Œ€๋กœ ๋‘์—ˆ๋‹ค. ๋ฒ„ํ‚ท์˜ ์ด๋ฆ„์€ global unique ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฏธ ์žˆ๋Š” ์ด๋ฆ„์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๋ฒ„ํ‚ท ์ƒ์„ฑ์ด ์•ˆ๋œ๋‹ค๋ฉด ์ด๋ฆ„ ๋•Œ๋ฌธ์ธ์ง€ ํ™•์ธํ•ด๋ณด์ž.

๋ฒ„ํ‚ท ์ƒ์„ฑ์ด ์™„๋ฃŒ๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฆฌ์ŠคํŠธ์— ๋‚˜ํƒ€๋‚œ๋‹ค. ํ•ด๋‹น ๋ฒ„ํ‚ท์˜ AWS Resion์€ ์„œ์šธ์ธ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๊ณ , ๋‹ค๋ฅธ Regon์ธ ๋ฒ„ํ‚ท์ด ์ถ”๊ฐ€๋˜๋”๋ผ๋„ ์ด ๋ฆฌ์ŠคํŠธ์—์„œ ๋ชจ๋‘ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋ฒ„ํ‚ท์— ํŒŒ์ผ ์ง์ ‘ ์—…๋กœ๋“œ ํ•˜๊ธฐ

๋ฒ„ํ‚ท ์•ˆ์— ๋“ค์–ด๊ฐ€๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋˜์–ด์žˆ๋Š”๋ฐ, ๋งจ ์˜ค๋ฅธ์ชฝ Upload๋ฅผ ๋ˆ„๋ฅธ๋‹ค.

๋“ค์–ด๊ฐ€์„œ Add File์„ ํ†ตํ•ด ์•„๋ฌด ํŒŒ์ผ์ด๋‚˜ ์˜ฌ๋ฆฐ ํ›„ Upload๋ฅผ ๋ˆ„๋ฅธ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์ด๋ ‡๊ฒŒ ์ •์ƒ์ ์œผ๋กœ ํŒŒ์ผ์ด ์—…๋กœ๋“œ๋˜์—ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

ํŒŒ์ผ๋ช…์„ ๋ˆŒ๋Ÿฌ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋œจ๋Š”๋ฐ, Object URL๊ณผ Open์„ ๊ฐ๊ฐ ๋ˆŒ๋Ÿฌ์„œ ๋น„๊ตํ•ด๋ณด์ž.

๊ฐ๊ฐ ๋ˆŒ๋Ÿฌ์„œ ๋ณด๋‹ˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐจ์ด์ ์ด ์žˆ๋‹ค. ํ˜„์žฌ ์ ‘๊ทผ ๊ถŒํ•œ์ด ์—†์–ด ์™ผ์ชฝ๊ณผ ๊ฐ™์ด ๋‚˜์˜ค๋Š”๋ฐ, ์™œ Open์„ ๋ˆ„๋ฅด๋ฉด ์ œ๋Œ€๋กœ ๋ณด์ผ๊นŒ? ์ด ์žˆ๋Š”๋ฐ. Open์„ ๋ˆ„๋ฅด๋ฉด S3์—์„œ ๋งŒ๋“ค์–ด์ง„ pre-signed URL์ด๋ผ๋Š” ๊ฒƒ์„ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค. pre-signed URL์€ ๊ถŒํ•œ์ด ์—†์–ด๋„ ๊ถŒํ•œ์„ ๋งŒ๋“ค์–ด์ฃผ๋Š” URL์ด๋ผ์„œ ์˜ค๋ฅธ์ชฝ์ฒ˜๋Ÿผ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

Object URL๋กœ ๋“ค์–ด๊ฐ”์„ ๋•ŒOpen์œผ๋กœ ๋“ค์–ด๊ฐ”์„ ๋•Œ
- AccessDenied ๋œธ - ์˜ฌ๋ฆฐ ์ด๋ฏธ์ง€๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋œธ

ํด๋” ๋งŒ๋“ค๊ธฐ

์ด์ œ ํด๋”๋„ ๋งŒ๋“ค์–ด๋ณด์ž. ๋‹ค์‹œ ๋ฒ„ํ‚ท์— ๋“ค์–ด๊ฐ€์„œ Create folder๋ฅผ ๋ˆ„๋ฅธ๋‹ค.

ํด๋” ์ด๋ฆ„์„ ์ ์„ ๋•Œ๋Š” /๊ฐ€ ๋’ค์— ์ž๋™์œผ๋กœ ๋“ค์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— /๋ฅผ ๋ถ™์ด์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ํด๋” ์ด๋ฆ„์„ ์ ๊ณ  Create folder๋ฅผ ๋ˆ„๋ฅธ๋‹ค.

๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ ํด๋”๊ฐ€ ์™„์„ฑ๋˜๊ณ , ์ด ์•ˆ์—์„œ๋„ ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฒ„ํ‚ท ํด๋ฆฌ์‹œ(Bucket Policy)

๋ฒ„ํ‚ท ํด๋ฆฌ์‹œ๋ž€?

  • ๋ฒ„ํ‚ท ํด๋ฆฌ์‹œ(Bucket Policy) : IAM ์ •์ฑ…๊ณผ ์œ ์‚ฌํ•œ JSON ํ˜•์‹์˜ ๋ฌธ์„œ. S3 ๋ฒ„ํ‚ท๊ณผ ๊ทธ ์•ˆ์˜ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์ œ์–ดํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
  • ํŠน์ง•
    • ๋ฒ„ํ‚ท ๋‚ด ๋ชจ๋“  ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ ‘๊ทผ ์ œ์–ด
    • ํŠน์ • ๊ฐ์ฒด ๋˜๋Š” ํŠน์ • ๊ฐ์ฒด ๊ทธ๋ฃน์— ๋Œ€ํ•œ ์ ‘๊ทผ ์ œ์–ด
    • ํ—ˆ์šฉํ•  IP ์ฃผ์†Œ ๋˜๋Š” IP ๋Œ€์—ญ์„ ์ง€์ •ํ•ด ํŠน์ • ์œ„์น˜์—์„œ๋งŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค์ •
    • ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค์˜ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•ด ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋งŒ ์ ‘๊ทผํ•˜๋„๋ก ์ œํ•œ
    • ์•”ํ˜ธํ™”๋œ ์—ฐ๊ฒฐ(SSL/TLS)์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ฐ•์ œ ๊ฐ€๋Šฅ

๋ฒ„ํ‚ท ํด๋ฆฌ์‹œ ์ ์šฉํ•˜๊ธฐ

๋ฒ„ํ‚ท์—์„œ Permissions์— ๋“ค์–ด๊ฐ„๋‹ค.

Block public access๋„ ๋ชจ๋‘ on์ด๊ณ , Bucket policy๋„ ์•„์˜ˆ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋จผ์ € Block public access์— ๋“ค์–ด๊ฐ€์„œ Block all public access์— ๋˜์–ด์žˆ๋˜ ์ฒดํฌ๋ฐ•์Šค๋ฅผ ํ•ด์ œํ•œ๋‹ค. ๋ฒ„ํ‚ท์„ ๋งŒ๋“ค ๋•Œ ์žˆ์—ˆ๋˜ ๋ถ€๋ถ„์ธ๋ฐ ์ด๋ ‡๊ฒŒ ๋”ฐ๋กœ ์„ค์ •์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค. ์„ค์ •์„ ๋ฐ”๊พผ ํ›„ Save changes๋ฅผ ๋ˆ„๋ฅธ๋‹ค.

๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ off ๋œ ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ด์ œ Bucket policy์— ๋“ค์–ด๊ฐ€์„œ Bucket ARN์„ ๋ณต์‚ฌํ•œ ํ›„, Policy Generator๋กœ ๋“ค์–ด๊ฐ„๋‹ค.

Policy Generator์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•ด์ค€๋‹ค. Principal์€ ์ „์ฒด๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๊ธฐ ์œ„ํ•ด * ๋ฅผ ์ ์—ˆ๋‹ค. ARN์—๋Š” ๋“ค์–ด์˜ค๊ธฐ ์ „ ๋ณต์‚ฌํ•œ ARN์„ ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•œ๋‹ค.

Actions๋Š” ์ค„ ๊ถŒํ•œ์„ ์„ค์ •ํ•˜๋ฉด ๋˜๋Š”๋ฐ, ๋‚˜๋Š” ์ฝ๊ธฐ ๊ถŒํ•œ์„ ์œ„ํ•ด GetObject๋ฅผ ์„ ํƒํ–ˆ๋‹ค.

๋‹ค ์ž‘์„ฑํ–ˆ๋‹ค๋ฉด Add Statement๋ฅผ ๋ˆ„๋ฅด๊ณ , Generate Policy๋ฅผ ๋ˆ„๋ฅธ๋‹ค.

๊ทธ๋Ÿผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ JSON ํ˜•์‹์˜ Policy ๋ฌธ์„œ๊ฐ€ ๋œจ๋Š”๋ฐ, ๋ณต์‚ฌํ•ด์„œ Bucket policy์— ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ ์ˆ˜์ •ํ•ด์•ผ ํ•  ์ ์€ ๋ฒ„ํ‚ท ์•ˆ์— ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•œ ๊ถŒํ•œ์ด๊ธฐ ๋•Œ๋ฌธ์— "Resource": "arn:aws:s3:::my-gom-bucket"๊ฐ€ ์•„๋‹ˆ๋ผ "Resource": "arn:aws:s3:::my-gom-bucket/*"๋กœ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ๋ชจ๋‘ ์„ค์ •์„ ๋งˆ์น˜๊ณ  Object URL๋กœ ๋“ค์–ด๊ฐ€๋‹ˆ ์ด์ „๊ณผ ๋‹ฌ๋ฆฌ ์ด๋ฏธ์ง€๊ฐ€ ์ž˜ ๋‚˜์˜ค๋Š” ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ •์  ์›น ์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…

์ •์  ์›น ์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…์„ ํ•ด๋ณด๊ธฐ ์œ„ํ•ด html ํŒŒ์ผ์„ ๋ฒ„ํ‚ท์— ์—…๋กœ๋“œํ–ˆ๋‹ค.

์—…๋กœ๋“œ ํ›„ ๋ฒ„ํ‚ท์—์„œ Properties์— ๋“ค์–ด๊ฐ„๋‹ค.

๋งจ ์•„๋ž˜ Static website hosting์—์„œ Edit์„ ๋ˆ„๋ฅธ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ธํŒ…์„ ํ•ด์ค€๋‹ค. index document์—์„œ๋Š” ๋‚ด๊ฐ€ ์˜ฌ๋ฆฐ html ํŒŒ์ผ๋ช…์„ ์ ์–ด์ค€๋‹ค.

๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ Bucket website endpoint๊ฐ€ ๋œจ๊ฒŒ ๋˜๋Š”๋ฐ, ๋“ค์–ด๊ฐ€๋ณด๋ฉด ๋‚ด๊ฐ€ ์˜ฌ๋ฆฐ html ํŒŒ์ผ์˜ ๋‚ด์šฉ๊ณผ ๊ฐ™๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ ์ œ๋Œ€๋กœ ๋œจ์ง€ ์•Š๋Š”๋‹ค๋ฉด Bucket policy๋ฅผ ์ž˜ ์„ค์ •ํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜์ž.

์ •์ƒ์ ์œผ๋กœ ๋œฌ๋‹ค!

EC2์— S3 ๊ถŒํ•œ ์ฃผ๊ธฐ

EC2์— S3 ๊ถŒํ•œ์„ ์ฃผ๊ธฐ ์œ„ํ•ด์„œ๋Š” IAM Role์„ ์ ์šฉํ•ด์ค˜์•ผ ํ•œ๋‹ค. IAM - Role์— ๋“ค์–ด๊ฐ€์„œ Create role์„ ํด๋ฆญํ•œ๋‹ค.

Use case์— EC2 ์„ ํƒ ํ›„ ๋‹ค์Œ์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค.

๊ฒ€์ƒ‰์ฐฝ์— S3๋ฅผ ์ž…๋ ฅ ํ›„ AmazonS3FullAccess๋ฅผ ์ฒดํฌํ•œ๋‹ค. ํ˜น์€ ํŠน์ • ๋ฒ„ํ‚ท์—๋งŒ ๊ถŒํ•œ์„ ์ฃผ๋Š” ์ปค์Šคํ…€ ์ •์ฑ…์„ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ ๋‹ค์Œ Role์˜ ์ด๋ฆ„์„ ์ •ํ•˜๊ณ  Create role์„ ๋ˆŒ๋Ÿฌ ์ƒ์„ฑํ•œ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒˆ๋กœ์šด role์ด ์ƒ์„ฑ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ด์ œ ๋‚ด EC2 ์ธ์Šคํ„ด์Šค๋กœ ์™€์„œ Actions - Security - Modify IAM Role์„ ๋ˆ„๋ฅธ๋‹ค.

๋ฐฉ๊ธˆ ๋งŒ๋“  ec2-s3-access-role์„ ์„ ํƒํ•˜๊ณ , Update IAM Role์„ ๋ˆŒ๋Ÿฌ์„œ ์ €์žฅํ•œ๋‹ค.

๊ทธ๋Ÿผ ์ด์ œ EC2๊ฐ€ S3 ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ฐ–๊ฒŒ ๋˜์—ˆ๋‹ค. ๋”ฐ๋ผ์„œ application.properties(ํ˜น์€ application.yml)์— access-key์™€ secret-key๋ฅผ ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. Role์„ ๋‹ฌ๋ฉด EC2 ์ธ์Šคํ„ด์Šค ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์—์„œ ์ž๋™์œผ๋กœ ์ž„์‹œ ํ‚ค๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์•„์„œ AWS ์ ‘๊ทผํ•˜๊ฒŒ ๋œ๋‹ค.

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

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด