본문 바로가기
AWS

[API Gateway] REST API 를 Amazon S3 프록시로 생성

by yonikim 2022. 1. 11.
728x90

 

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

API Gateway에서 REST API를 Amazon S3 프록시로 생성

728x90