AWS S3관련 설정
AWS IAM에서IAM Group생성 및AmazonS3FullAccess 권한부여
- 해당
IAM Group에 속하는IAM USER생성
- 생성된
IAM USER를 클릭 후Access Key를 생성
。Spring App내에서 저장되어 관리되므로AWS Access Key발급 시로컬 코드로 지정
。 발급된Access Key를 저장
▶ 이후application.yml내 등록되어 활용
AWS 콘솔 -> S3에서버킷생성 버킷
- 생성된
Bucket에서권한 -> CORS로 진입하여CORS지정
[ { "AllowedOrigins": ["http://localhost:8080"], "AllowedMethods": ["GET", "PUT", "POST"], "AllowedHeaders": ["*"], "ExposeHeaders": ["ETag"], "MaxAgeSeconds": 3000 } ]▶
브라우저에서S3 버킷으로PUT 요청을 전달하여 직접 업로드하고자,S3 버킷의CORS를 설정하여PUT을 허용
application.ymls3: access-key: ${AWS_ACCESS_KEY} secret-key: ${AWS_SECRET_KEY} bucket: ${AWS_S3_BUCKET_NAME} region: ${AWS_REGION} presigned-url-expiration-seconds: ${PRESIGNEDURL_EXPIRATION_TIME_SEC}
.env
。발급한S3 Bucket과IAM User의액세스키를 입력# AWS S3 AWS_S3_ACCESS_KEY=액세스키명 AWS_S3_SECRET_KEY=시크릿키명 AWS_S3_BUCKET_NAME=s3demo-604415812331 AWS_REGION=ap-northeast-2 PRESIGNEDURL_EXPIRATION_TIME_SEC=3600
Properties 클래스@ConfigurationProperties(prefix = "s3") public record S3Proeprties( String accessKey, String secretKey, String bucket, String region, Long presignedUrlExpirationSeconds ) { }▶ 이후 기존
RustFsProperties를 사용하는클래스(S3Config,MediaService,MultipartService)를S3Properties로 전환
S3Config수정@Configuration @RequiredArgsConstructor public class S3Config { private final S3Proeprties s3Proeprties; @Bean public S3Client s3Client() { return S3Client.builder() .region(Region.of(s3Proeprties.region())) .credentialsProvider(StaticCredentialsProvider.create( AwsBasicCredentials.create( s3Proeprties.accessKey(), s3Proeprties.secretKey() ) )) .build(); } @Bean public S3Presigner s3Presigner() { return S3Presigner.builder() .region(Region.of(s3Proeprties.region())) .credentialsProvider(StaticCredentialsProvider.create( AwsBasicCredentials.create( s3Proeprties.accessKey(), s3Proeprties.secretKey() ) )) .build(); } }
이후
AWS S3으로파입 업로드/파일 다운로드를 완료할 수 있음
도움이 많이 됐어요! 감사합니다