CloudFront 를 통해 접근하는 방법도 있지만, DNS 를 새로 만들고 싶지 않아서 API Gateway 를 사용해 프록시 생성하는 방법으로 진행했다.
먼저 API Gateway 에서 Amazon S3 작업을 호출하도록 허용하는 IAM Policy 을 만들어 주자.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": "*"
}
]
}
IAM Role 을 생성하는데, 신뢰할 수 있는 AWS 서비스로 API Gateway 를 선택해준 후 위에서 만든 정책을 연결해 준다.
신뢰 관계를 편집해서 직접 수정한다면 아래와 같이 기재해 주자.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "apigateway.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
나는 기존에 있던 API 에 연결해 줄건데, 새로운 API 를 만들 경우 REST API 로 구축하면 된다.
[작업] > [리소스 생성] 을 누른 후 프록시 리소스로 구성해 준다.
통합 유형은 어차피 바꿔줄 거기 때문에 HTTP 프록시를 선택해 주고 엔드포인트 URL 은 아무거나 입력해 주자.
[통합 요청] 을 클릭한다.
통합 유형은 AWS 서비스로 선택하고, 리전과 서비스와 메서드를 선택해준 후 작업 유형은 경로 재정의 사용을 클릭한다.
경로 재정의에 S3 버킷명을 입력해 주고 실행 역할에는 위에서 만든 IAM Role 을 기재해 준다.
URL 경로 파라미터에는 아래와 같이 추가해 주자.
- proxy: method.request.path.proxy
다시 뒤로 돌아가서 [메서드 응답] 을 클릭한다.
200 응답을 추가해준 후 아래와 같이 헤더와 본문을 기재한다.
그 후 [통합 응답] 을 클릭하여 헤더 매핑에 아래와 같이 기재해 주면 된다.
- Content-Type: integration.response.header.Content-Type
여기까지 완료됐으면 [작업] > [API 배포] 를 클릭한 후 배포할 스테이지명을 입력한 후 배포해 주면 끝난다.
References
'AWS' 카테고리의 다른 글
[CloudWatch] AWS Chatbot 을 이용하여 Slack 에 메시지 전송하기 (0) | 2022.12.14 |
---|---|
[VPC] 개념정리 (0) | 2022.05.06 |
[Lambda] API Gateway + Lambda 를 이용하여 S3 에 이미지 업로드 (0) | 2021.12.20 |
[AWS] Glue vs DataPipeline vs DMS vs Kinesis (0) | 2021.12.08 |
[ECS] AWS ECS 세팅하기 - 3. 서비스 생성 - 블루/그린 배포 2 (0) | 2021.09.12 |