aws lambda 의 권한에 사용할 정책에 AmazonAPIGatewayInvokeFullAccess
추가하기
api gateway 에서 websocket 용 api를 만들고 lambda 함수랑 통합하기
lambda 함수 작성하기
const AWS = require("aws-sdk");
const url = "{API 의 ID}.execute-api.{REGION 이름}.amazonaws.com/{STAGE}" // API gateway 로 생성시 만들어지는 https://{API 의 ID}.execute-api.{REGION 이름}.amazonaws.com/{STAGE} 이름} 에서 https:// 를 제외한 부분을 적어준다;
const apig = new AWS.ApiGatewayManagementApi({
endpoint: url
});
exports.handler = async (event, context, callback) => {
const connectionId = event.requestContext.connectionId;
try {
await apig
.postToConnection({
'ConnectionId': connectionId,
'Data': Buffer.from(JSON.stringify({message: connectionId}))
}).promise();
} catch(err) {
}
const response = {
statusCode: 200,
body: connectionId,
};
return response
};
npm 으로 wscat 글로벌 설치.
wscat -c wss://{API 아이디}.execute-api.{REGION 이름}.amazonaws.com/{STAGE 이름}
을 터미널에 입력하면 websocket 연결이 된다.