java.io.IOException: Permission denied
at java.io.UnixFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(File.java:1012)
at com.common.util.file.FileUtil.convert(FileUtil.java:17)
무중단 배포 적용 후 수동 테스트에서 이미지 업로드가 안되는 오류가 있었다.
- local 에서도 정상, 자동 배포가 아닌 수동 배포에서도 정상
- 처음엔 permission denied 처럼 s3 버킷의 권한이나 iam role의 권한 문제 인줄 알고 이번 프로젝트의 최대 멍멍이 삽집을 했다.
(3일 걸림..)
- 결론은, amazone codeDeploy 설정인 appspec.yml 의 start.sh의 runas 실행 권한 설정을 ec2-user → root 로 변경하니 정상
- appspec.yml 파일 설정
hooks:
AfterInstall:
- location: stop.sh # 엔진엑스와 연결되어 있지 않은 스프링 부트를 종료합니다.
timeout: 60
runas: root
ApplicationStart:
- location: start.sh # 엔진엑스와 연결되어 있지 않은 Port로 새 버전의 스프링 부트를 시작합니다.
timeout: 60
runas: root
ValidateService:
- location: health.sh # 새 스프링 부트가 정상적으로 실행됐는지 확인 합니다.
timeout: 60
runas: root
삽집을 할 수밖에 없었던 것이 관련 구글링 결과들이 다 s3, i am role 관련 내용들이라 엄한 다리를 아주 씨게 끍고 있었다..
죄절하고 다른 우회 방법을 생각하던 중 deploy를 수동으로 ec2 서버에서 돌리니 정상적으로 되서 다른 문제라고 그때서야 알게됐다..
(수도(sudo)세를 내야하는군하!!!)
- 삽질하게 만든 관련 구글링 내용
- https://stackoverflow.com/questions/43445058/aws-s3-403-access-denied-from-ec2-instance
- s3 bucket에 신규로 허용할 end-point 권한을 추가하라는 내용
- https://stackoverflow.com/questions/41667916/upload-file-to-s3-on-ec2-instance-permission-denied
- aws credentials 을 애플리케이션에 넣지 말고 IM role를 생성해서 연결 하라는 내용
- 이미 ec2에 연결된 role에 s3FullAccess를 추가해서 aws.yml 파일의 credentials를 바라보는 문제가 남는지 해결되지 않음
- https://velog.io/@chss3339/AWS-S3-Access-denied-에러
- S3를 퍼블릭으로 허용하라는 내용
'AWS' 카테고리의 다른 글
s3 업로드 시 파일용량 제한 오류 해결 방법 (0) | 2022.08.01 |
---|---|
EC2 서버에 웹 프로젝트 배포 (0) | 2021.10.02 |
AWS RDS 생성 (0) | 2021.10.02 |
EC2 인스턴스 서버에 필수 설정 (0) | 2021.10.02 |
EIP (탄력적 IP) 할당 (0) | 2021.10.02 |