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์ผ๋ก ๋ค์ด๊ฐ์ ๋ |
---|---|
![]() | ![]() |
์ด์ ํด๋๋ ๋ง๋ค์ด๋ณด์. ๋ค์ ๋ฒํท์ ๋ค์ด๊ฐ์ Create folder๋ฅผ ๋๋ฅธ๋ค.
ํด๋ ์ด๋ฆ์ ์ ์ ๋๋ /
๊ฐ ๋ค์ ์๋์ผ๋ก ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ /
๋ฅผ ๋ถ์ด์ง ์์๋ ๋๋ค. ํด๋ ์ด๋ฆ์ ์ ๊ณ Create folder
๋ฅผ ๋๋ฅธ๋ค.
๊ทธ๋ผ ์ด๋ ๊ฒ ํด๋๊ฐ ์์ฑ๋๊ณ , ์ด ์์์๋ ํ์ผ์ ์
๋ก๋ํ ์ ์๋ค.
๋ฒํท์์ 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 ๊ถํ์ ์ฃผ๊ธฐ ์ํด์๋ 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 ์ ๊ทผํ๊ฒ ๋๋ค.