티스토리 뷰
AWS에서 API Gateway와 Lambda와 Dynamo Db를 활용해 REST API 구축 합니다.
DynamoDb 테이블 생성
먼저 Dynamo DB에서 테이블을 생성합니다. 제 상황에서는 문자열인 기본키를 path로 입력했습니다.
생성된 테이블에서 항목 탭으로 이동하면 최초에는 디비값이 비어있습니다.
나중에 (API Gateway, Lambda)를 생성한 후 post 요청으로 아래 처럼 디비값을 넣어보겠습니다.
람다 함수 생성
함수 이름, 작성할 언어를 선택 후에 기존 역할을 선택합니다.
역할 추가가 완료가 되면 [함수 생성] 버튼을 선택합니다.
IAM 을 통해서 역할을 생성하고 추가된 역할을 선택하시면 됩니다. IAM 설정에 대해선 다른 문서를 참고하시기 바랍니다.
아래 코드는 Dynamo Db에 이미지 대체 텍스트를 조회 및 수정하는 작업입니다.
작업하면서 에로사항이 하나 있었는데, 처음에 http-method 값을 처음에 가져오지 못해서 get,post,patch 등 메소드 타입에 따라서 다른 액션처리를 못했습니다.
http-method 타입값을 받고 싶으면, 설정을 하는 부분이 있는데 자세한 내용은 아래 API Gateway 부분에서 다시 설명하겠습니다.
var AWS = require("aws-sdk")
AWS.config.update({
region: 'ap-northeast-2',
endpoint: "http://dynamodb.ap-northeast-2.amazonaws.com"
})
const dynamo = new AWS.DynamoDB.DocumentClient()
exports.handler = async (event, context, callback) => {
let method_type = event['context']['http-method']
let body_params = event['body-json'];
let table_name = 'AltImg';
// 대체 텍스트 조회
if (method_type==='GET') {
let get_params = {
TableName: table_name,
Key: {
path: event.params.querystring.path
}
}
let response = await dynamo.get(get_params).promise();
if (response.Item) {
return response.Item.alt_text;
}
else {
return ''
}
}
// 대체 텍스트 수정
else if(method_type==='PATCH') {
let patch_params = {
TableName: table_name,
Key: {
"path": body_params.path
},
UpdateExpression: "SET alt_text=:alt_text",
ExpressionAttributeValues:{
":alt_text": body_params.alt_text
}
}
await dynamo.update(patch_params).promise();
return true;
}
}
API Gateway 생성
REST API 구축을 선택합니다.
API 추가가 완료되고 나면 작업에서 리소스 생성을 합니다.
save_img_text라고 리소스 경로를 추가했습니다.
/save_img_text를 선택하고 작업 박스를 선택후에 메소드 생성을 클립합니다.
아래에 빈 셀렉터가 추가가 되며, 빈 셀렉터를 선택하고 메소드 요청 타입을 선택하세요.
메소드를 타입별로 추가를 했습니다.
저 같은 경우에는 get요청은 public으로 제공을 해주고 싶고 patch나 post는 인증 과정을 거쳐서 사용할 수 있도록 인증 단계를 추가했습니다.
아래 승인에 CUSTOM이라고 표시된 부분이 인증을 달아 놓은 것 입니다.
아래와 같이 인증을 추가하기 위해서 메서드 요청을 선택합니다.
인증 부분을 추가하기전에 커스텀으로 만든 인증을 추가를 해야합니다.
권한 부여자로 이동을 해서 새로운 권한 부여자 생성을 합니다.
먼저, 람다 인증 절차용 람다함수를 생성하고 권한 부여자 생성을 할때 추가한 람다함수를 선택하시면 됩니다.
이제 인증 부분을 추가하기 위해서 메서드 실행으로 다시 돌아옵니다.
처음엔 승인 부분에 없음이라고 표시가 되어있습니다. 수정 표시를 선택 후에 custom 으로 추가해둔 인증을 선택합니다.
http-method 받는 방법
통합 요청 선택 후 매핑 템플릿 판넬로 이동합니다.
정의된 템플릿이 없는 경우에서 메서드 요청 패스스루를 선택 후 저장 시켜주면 끝이납니다.
cors 문제 해결
CORS 활성화로 이동합니다.
아래와 같이 하시고 활성화 버튼 클릭하시면 해결됩니다.
'aws' 카테고리의 다른 글
aws ecr에 도커이미지 배포 (0) | 2019.07.18 |
---|