[AWS S3] ๋ฒํท ์์ฑํ๊ธฐ
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