http://susemi99.kr/7178/ 에서 만든 테이블에 REST API 를 이용해서 데이터를 넣을 수 있다.
IAM 에서 작업하기
- AWS IAM – 역할로 이동
- 새 역할 만들기 – 사용자 지정 신뢰 정책 선택 후 아래 json 추가.
"Service": "apigateway.amazonaws.com"
부분 중요
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "apigateway.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
- 이름 지정, 검토 및 생성에서 이름 적으면 완료. PutSensorStatus 처럼 적당히 적으면 됨
- 생성한 역할에 들어가서 권한탭 – 권한 추가 – 인라인 정책 생성 클릭
- 정책 생성
- 서비스: DynamoDB
- 작업: 쓰기 – PutItem 선택
- 리소스: 특정 – ARN 추가 클릭
- Region: ap-northeast-2
- Table name: DynamoDB의 테이블 이름. SensorStatus-asd8uapd8f-staging 형태
- 정책 검토는 적당히 이름 넣고 정책 생성
API Gateway 에서 작업하기
- API Gateway에서 API 생성
- 생성한 api로 들어가서 리소스 생성. 여기서 만든 경로는
https://asdfaf.amazon.com/staging/여기
에 들어가게 됨 - 생성한 리소스를 선택하고 메소드 생성. GET, POST, PUT 같은 걸 선택하고 바로 옆의 v 를 눌러야 함
- 만들어진 메소드를 선택하고 AWS 서비스를 선택
- 리전: 사용할 리전을 선택
- 서비스: DynamoDB를 선택
- HTTP 메서드: 방금 전에 만든 거랑 같은 걸 선택
- 작업: PutItem
- 실행역할: IAM 에서 만든 역할의 ARN 붙여넣기. arn:aws:iam::1234567890:role/put-sensor-status 형식
- /sensor_status – POST로 이동함
- 메서드 요청
- API 키가 필요함: true. 변경 후 v를 눌어야 저장됨
- 통합요청 – 매핑 템플릿
- 정의된 템플릿이 없는 경우(권장) 선택
- 매핑 템플릿 추가 클릭
- application/json 입력 후 v를 누르면 하단에 템플릿을 만들 수 있는 화면이 표시됨. 이런 식으로 테이블 형식 넣기
{ "TableName": "SensorStatus-asd8uapd8f-staging", "Item": { "id": { "S": "$context.requestId" }, "name": { "S": "$input.path('$.name')" }, "message": { "S": "$input.path('$.message')" }, "timestamp": { "N": "$context.requestTimeEpoch" } } }
- /sensor_status – POST – 테스트로 이동해서 요청 본문에 본문 json 파일 작성 후 테스트 버튼을 눌러서 테이블에 데이터가 잘 들어가는지 확인
- 만든 리소스를 선택하고 API 배포. paw나 post man같은 곳에서 테스트 하기위해 이 작업 필요
- 배포 스테이지: develop, staging, production 같은 이름 넣기
https://8jdud7e8.execute-api.ap-northeast-2.amazonaws.com/staging
같은 url이 표시됨- api key를 만들기 위해 사용량 계획 생성
- 이름: 적당히 넣기
- 나머지 정보도 적당히 넣기
- API 스테이즈 추가에는 아까 배포한 api와 스테이지 선택. v 눌러줘야 저장됨
- API 키 생성 후 사용량 계획에 추가에는 적당히 이름 넣기
- 왼쪽의 API 키 메뉴에서 위에서 만든 걸 선택하면 API 키 옆에 표시 를 클릭해서 API key 볼 수 있음
- 포스트맨에서
POST https://8jdud7e8.execute-api.ap-northeast-2.amazonaws.com/staging
를 호출할 때 아래 정보를 넣고 정상동작하는지 확인- header: x-api-key 에는 API 넣기
- body:
{ "name": "센서이름", "message": "메시지" }