๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”ฅ ํ”„๋กœ์ ํŠธ/์›จ๋”ฉ๋ฉ”์ดํŠธ

[AWS S3] ๋ฒ„ํ‚ท ์ƒ์„ฑํ•˜๊ธฐ

by nitronium102 2023. 7. 13.

OAuth2 ์ ์šฉ์ด ๋”œ๋ ˆ์ด ๋ผ์„œ aws ์„ค์ •์ด๋ผ๋„ ํ•˜๊ธฐ...

 

1. ๋ฒ„ํ‚ท ์ƒ์„ฑํ•˜๊ธฐ

 

 

์‚ฌ์šฉ์ž๋“ค์ด ์‚ฌ์ง„ ์—…๋กœ๋“œ/๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— public์œผ๋กœ ๋Œ๋ฆฌ๊ธฐ

 

 

๋ฒ„ํ‚ท ๋ฒ„์ „ ๊ด€๋ฆฌ๋ž‘ ๊ธฐ๋ณธ ์•”ํ˜ธํ™”๋Š” ์ผ๋‹จ ๋น„ํ™œ์„ฑํ™”๋กœ ์„ค์ •ํ–ˆ๋‹ค.

 

 

1. public access ์„ค์ •

์•„์ง public access๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— policy๋ฅผ ๋งŒ๋“ค์–ด ์ ์šฉํ•ด์•ผ ํ•œ๋‹ค.

๋ฒ„ํ‚ท > ๊ถŒํ•œ > ๋ฒ„ํ‚ท ์ •์ฑ… > ์ •์ฑ… ์ƒ์„ฑ๊ธฐ๋กœ ๋“ค์–ด๊ฐ€ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค.

 

https://awspolicygen.s3.amazonaws.com/policygen.html

 

- effet : ์ ‘๊ทผํ•˜๋Š” ์‚ฌ๋žŒ์„ ์„ ํƒํ•  ๊ฒƒ์ธ๊ฐ€

- principal : ์ ‘๊ทผํ•˜๋Š” ์‚ฌ๋žŒ ์„ ํƒ

- actions : getObject, putObject, deleteObject (์„œ๋น„์Šค์— ๋งž๊ฒŒ ์„ค์ •)

- arn : bucket์— ์žˆ๋Š” ๊ฑฐ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ (arn:aws:s3:::{๋ฒ„ํ‚ท ์ด๋ฆ„})

 

๊ทธ๋Ÿฌ๋ฉด ์—ฌ๊ธฐ์—์„œ ์ •์ฑ…์„ ์ƒ์„ฑํ•ด์ฃผ๋Š”๋ฐ, ํ•ด๋‹น jSON ๊ฐ’์„ bucket์˜ ์ •์ฑ…์— ๋ถ™์—ฌ๋„ฃ์œผ๋ฉด ๋œ๋‹ค

{
  "Id": "Policy1689225916395",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1689225914460",
      "Action": [
        "s3:DeleteObject",
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::weddingmate-bucket",
      "Principal": "*"
    }
  ]
}

 

๊ทผ๋ฐ ๊ทธ๋ƒฅ ๋…›์œผ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” Resource์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š์•„์„œ ๊ทธ๋ ‡๋‹ค๊ณ  ํ•˜๋Š”๋ฐ, ์œ„์— ๋ณต์‚ฌํ–ˆ๋˜ ์ •์ฑ…์—์„œ Resource ๋งจ ๋’ค์— /*๋ฅผ ๋‹ฌ์•„์ค€๋‹ค.

(ํŠน์ • ํด๋”์—๋งŒ ์ ‘๊ทผํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด /ํด๋”์ด๋ฆ„)

https://24hours-beginner.tistory.com/151

 

์˜์กด์„ฑ ์ถ”๊ฐ€

build.gradle์— ์•„๋ž˜๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค

 implementation 'org.springframework.cloud:spring-cloud-starter-aws' // AWS-S3 bucket

 

application.yml

- application.yml

  # file ๊ด€๋ จ ์„ค์ •
  spring:
  	servlet:
    	multipart:
      		max-request-size: 30MB
      		max-file-size: 30MB

 

- application-cloud.yml

cloud:
  aws:
    credentials:
      access-key: {}
      secret-key: {}
    s3:
      bucket: weddingmate-bucket
    region:
      static: ap-northeast-2
    stack:
      auto: false

๋Œ“๊ธ€