우선 앱을 빌드해서 빌드 파일을 준비한다.
AWS S3 서비스에 들어가서 bucket을 생성해 준다.
빌드한 파일들을 bucket에 업로드한다. (drag & drop 해도 되고. 뭐 ㅇㅇ)
그리고 해당 bucket에서 properties 탭에 가면 맨 하단에 static website hosting이라는 부분이 있고, 얘를 edit 해서 enable시켜준다.
이때 index file 을 설정해주어야 하는데, 우리의 경우, 그리고 대부분의 경우, index.html 으로 해주면 된다.

그리고 error document라는 부분도 있는데, react쓸경우, 특히 react router쓸 경우에는 우리가 앱 내에서 알아서 에러 페이지 처리(존재하지 않는 path 접속할 경우 등)를 하도록 해놨기 때문에, 그런 경우에 결론은 얘도 그냥 index.html로 설정해주면 된다.
그러면 이제 링크는 생성이 되어 있을건데, 눌러보면 403 에러가 날 것이다. 정상이다. 아직 permission 설정을 하지 않아서 그렇다
Permissions 탭에 가서 사람들이 우리 사이트에 접속할 수 있도록 설정을 해준다.
add actions에서 getobject를 검색해서 체크
add a resource 에서 다음과 같이 해준다.

resource type은 object로, 그리고 *resource ARN의 경우 arn:aws:s3:::{buacket name}/{object}의 형태로 작성해야 하는데, 위 이미지를 보면 bucket name은 그냥 말그대로 제대로 버킷 이름 넣었고, object의 경우 모든 파일에 접근할 수 있도록 한다는 의미로 를 넣어 주면 된다.
마지막으로 principal 항목은 직접 text edit 해준다. {}로 되어 있을 건데, “” 로 바꿔준다. ‘누가 접속할 수 있는지’를 설정해주는 부분이라고 한다. 예를들면 특정 AWS 계정만 접속할 수 있게 해준다던지 이런것도 되는 모양이다. 암튼 우리는 모두가 접속할 수 있게 해주는게 목표이므로 “”로 해준다~
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Principal": "*",
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::blight-o-mk1-bucket/*"
]
}
]
}
완료. 다시 아까 링크 접속해보면 이제 앱이 보인다.
첫번째로, 파일을 다시 빌드하여 버킷에 다시 업로드 하는 방법이 있다. (override the existing files)
두번째로 CLI를 사용하는 법이 있다. 우선 근데 CLI setup이 되어 있어야 하는듯 하다.
https://www.youtube.com/watch?v=_DIRSI07kxY
AWS CLI | Setup an S3 Static Website
aws s3 sync directory-path "s3://your-bucket-name/"
./build), your-bucket-name 부분에 말그대로 우리 버킷 이름을 지정해주면 된다.—profile ‘account-name’ 을 추가해주는 모습도 볼 수 있었다. 나는 한개니까 그냥 없이.npm run sync를 하면 업데이트가 된다.