실습요약
AWS 콘솔 - Lambda - 함수 생성
이름과 런타임을 지정한다.
역할은 aws 정책 템플릿에서 Lambda@edge 권한을 선택하기 때문에 따로 만들지 않아도 고를 수 있다. 이후 함수 생성☑
생성된 함수와 코드를 볼 수 있다.
여기서 api 게이트웨이를 추가해보자.
보안 - 열기 - 생성을 누른다
API 게이트웨이가 만들어진 것을 확인할 수 있다.
엔드포인트도 확인할 수 있다.
이후 함수코드에서 Hello~ 부분을 event.queryStringParameters로 바꾼다.
엔드포인트 뒤에 get데이터를 전달해서 표시할 수 있다.
주소창 끝에 ?text=hello 추가
GET데이터는 Key=Value 형태로 데이터를 전달한다.
이제 데이터를 받아 다이나모DB에 저장해보자.
IAM - 역할 - 정책 연결 - 정책 생성
dynamoDB를 검색하고 모든 작업,
리소스에도 모든 리소스를 선택한다.
검토화면에서 이름과 설명을 넣고 모든 엑세스와 리소스가 설정된 것을 볼 수 있다.
CRUD는 Create(생성), Read(읽기), Update(변경), Delete(삭제)를 의미한다
생성 완료, 역할과 정책을 연결한다
연결된 것을 확인할 수 있다.
Dynamo db를 만들자
이름과 파티션 키에 id를 입력하고 생성한다.
아직 항목에 아무것도 없는 것을 확인할 수 있다.
람다 함수를 수정한다
//aws-sdk를 불러옵니다.
const AWS = require('aws-sdk')
//다이나모디비 클라이언트를 초기화합니다.
const dynamodb = new AWS.DynamoDB.DocumentClient()
exports.handler = async (event) => {
//리턴할 값을 선언합니다.
let response
//queryStringParameters즉 GET값들이 들어오는지 들어온다면 id가 있는지 체크합니다.
if (!event.queryStringParameters || !event.queryStringParameters.id) {
response = {
statusCode: 400,
body: JSON.stringify("id가 없습니다."),
}
return response
} else {
let params = {
Item:{
id:event.queryStringParameters.id,
data: event.queryStringParameters
},
TableName: "dynamo_apigateway_query",
}
await dynamodb.put(params).promise().catch(e => {
response = {
statusCode: 500,
body: JSON.stringify("에러가 발생하였습니다:" + e),
}
return response
})
response = {
statusCode: 200,
body: JSON.stringify("데이터가 성공적으로 저장되었습니다.."),
}
return response
}
}
그림의 소스코드는 'queryStringParameter를 인자로 받아 다이나모 db에 저장하고 get 데이터나 id값이 없다면 400, 저장하는데 문제가 있다면 500, 성공적으로 데이터를 넣었다면 200코드를 반환하는 소스코드이다.
작성 후 deploy!
API게이트웨이의 URL로 들어가면 ID가 없습니다라는 텍스트를 볼 수 있다.
URI끝에 ?id=72 와 같은 데이터를 추가해보면??
데이터가 성공적으로 저장됐다는 결과를 볼 수 있다.
aws콘솔에서도 성공적으로 저장된 모습을 볼 수 있다.
우왕!