Skip to content

Instantly share code, notes, and snippets.

@leantorres73
Last active April 30, 2021 12:11
Show Gist options
  • Save leantorres73/9868c184060d8408176325689b48f65b to your computer and use it in GitHub Desktop.
Save leantorres73/9868c184060d8408176325689b48f65b to your computer and use it in GitHub Desktop.
Lambda websocket
const domainName = ssm.StringParameter.valueForStringParameter(this, '/ws-domain-name');
const wsCertificate = ssm.StringParameter.valueForStringParameter(this, '/ws-certificate');
// RECEIVER
const lambdaAPIsocket = new lambda.Function(this, 'wsReceiver', {
functionName: 'wsReceiver',
runtime: lambda.Runtime.NODEJS_12_X,
tracing: Tracing.ACTIVE,
handler: 'src/index.main',
timeout: Duration.seconds(30),
code: lambda.Code.asset('lambdas.zip')
});
// SENDER
const lambdaSender = new lambda.Function(this, 'wsSender', {
functionName: 'wsSender',
runtime: lambda.Runtime.NODEJS_12_X,
tracing: Tracing.ACTIVE,
timeout: Duration.seconds(60),
handler: 'src/sendMessage.main',
code: lambda.Code.asset('lambdas.zip'),
environment: {
DOMAIN_NAME: domainName
}
});
lambdaSender.addToRolePolicy(new iam.PolicyStatement({
effect: iam.Effect.ALLOW,
resources: ["arn:aws:execute-api:*:*:*/@connections/*"],
actions: ["execute-api:ManageConnections"]
}));
// WEBSOCKET api
const apigatewaysocket = new apigateway.CfnApi(this, "apigatewaysocket", {
name: "WDISSockets",
protocolType: "WEBSOCKET",
routeSelectionExpression: "$request.body.message"
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment