Upload API
참고 자료
- https://youtube.com/watch?v=7T5VbMEJStQ
- https://repost.aws/knowledge-center/api-gateway-upload-image-s3
버킷 생성
- 이름, 리전 지정
- 버저닝 허용
- 암호화 허용
- 다른 설정은 모두 default
Role 생성 및 연결
Role 생성
- Trust : AWS Service
- Use case : API Gateway
- Permission : AmazonAPIGatewayPushToCloudWatchLogs
- Role name : api-gateway-s3-role
Role에 Policy 생성 및 연결
- 생성한 Role 콘솔 → Add Permissions → Create Inline Policy
- Service : s3
- Actions : PutObject
- Resources : ARN 생성 - 버킷 이름, 모든 오브젝트(*) 지정
- Policy Name : s3-putobject-policy
API Gateway 작업
API Gatway 생성
- REST API 선택
- new api
- name : file-upload-api
루트 하위에 리소스 생성
- resource name : bucket
- resource path : {bucket}
bucket 하위에 리소스 생성
- resource name : filename
- resource path : {filename}
filename에 Method 생성
- Method type : PUT
- Integration type : AWS service
- AWS Region : s3 생성한 곳과 같은 지역
- AWS service : S3
- HTTP Method : PUT
- Action type : path override
- path : {bucket}/{filename}
- execution role : api-gateway-s3-role의 arn
- default timeout 활성화
Integration Request
- URL path parameter 추가
- bucket : method.request.path.bucket
- filename : method.request.path.filename
API Settings
- Binary Media Types : / (이미지, 텍스트, pdf 등 대부분의 파일 형식 지원)
Deploy
- new Stage : dev
- invoke url 확인
Postman Test
- method : PUT
- API Gateway url/{bucket}/{filename}
- Body에 binary로 업로드할 파일 선택
- 테스트!
- 참고) body에 json 데이터 올려도 업로드 잘 된다
Download API
참고 자료
- https://www.youtube.com/watch?v=kc9XqcBLstw
- https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-content-encodings-examples-image-s3.html
Role 생성 및 연결
role 생성
- entity type : AWS Service
- use case : API Gateway
- policy : AmazonAPIGatewayPushToCloudWatchLogs
- name : api-gateway-s3-role-get
Role에 Policy 생성 및 연결
- 생성한 Role 콘솔 → Add Permissions → Create Inline Policy
- Service : s3
- Actions : ReadObject
- Resources : ARN 생성 - 버킷 이름, 모든 오브젝트(*) 지정
- Policy Name : s3-readobject-policy
API Gateway 작업
filename에 Method 생성
- Method type : GET
- Integration type : AWS service
- AWS Region : s3 생성한 곳과 같은 지역
- AWS service : S3
- HTTP Method : GET
- Action type : path override
- path : {bucket}/{filename}
- execution role : api-gateway-s3-role-get의 arn
- default timeout 활성화
Integration Request
- URL path parameter 추가
- bucket : method.request.path.bucket
- filename : method.request.path.filename
API Settings (앞에서 했다면 생략)
- Binary Media Types : / (이미지, 텍스트, pdf 등 대부분의 파일 형식 지원)
Deploy
- new Stage : dev
- invoke url 확인
Postman 테스트
- method : GET
- API Gateway url/{bucket}/{filename}
- 테스트!
'Cloud > AWS' 카테고리의 다른 글
ELB + EC2 Auto Scaling (2) | 2024.01.07 |
---|---|
json 파일 업로드/다운로드하는 API 만들기 : AWS API Gateway, Lambda, S3 사용 (0) | 2023.12.24 |
AWS RDS 구성하고 Spring Boot와 JPA, Docker Run, Github Action과 연동하기 (1) | 2023.10.29 |
Github Actions와 Docker Hub를 활용해서 CI/CD 파이프라인 구축하기 (1) | 2023.10.29 |
EC2 생성하고 Spring Boot 프로젝트 도커로 배포하기 (0) | 2023.10.29 |