конструкция aws CDK на c # для веб-узлов шлюза API

#amazon-web-services #aws-api-gateway #aws-sdk-net

#amazon-веб-сервисы #aws-api-gateway #aws-sdk-net

Вопрос:

Я использую AWS CDK для создания стека для веб-узлов API gateway. Я могу посмотреть эту документацию здесь

но это не дает никакого четкого объяснения, какую конструкцию on использовать для веб-сокетов. может ли кто-нибудь помочь мне с правильной конструкцией для использования для websockets.

Ответ №1:

До сих пор команда CDK не опубликовала простой в использовании API, подобный другим более распространенным компонентам AWS, отсюда и отсутствие какой-либо документации на этот счет.

В настоящее время вы можете использовать конструкции более низкого уровня для достижения результата или обрабатывать управление WS вне среды CDK с помощью CLI, скрипта или веб-консоли.

Если вы хотите перейти к использованию некоторых конструкций более низкого уровня, ожидая, пока CDK достигнет лучшей стадии по отношению к API Websockets, вот небольшой пример, написанный с помощью TypeScript:

 // Handle your other resources like roles, lambdas, and dependencies
// ...

// Example API definition
const api = new CfnApi(this, name, {
  name: "ChatAppApi",
  protocolType: "WEBSOCKET",
  routeSelectionExpression: "$request.body.action",
});

// Example lambda integration
const connectIntegration = new CfnIntegration(this, "connect-lambda-integration", {
  apiId: api.ref,
  integrationType: "AWS_PROXY",
  integrationUri: "arn:aws:apigateway:"   config["region"]   ":lambda:path/2015-03-31/functions/"   connectFunc.functionArn   "/invocations",
  credentialsArn: role.roleArn,
});

// Example route definition
const connectRoute = new CfnRoute(this, "connect-route", {
  apiId: api.ref,
  routeKey: "$connect",
  authorizationType: "NONE",
  target: "integrations/"   connectIntegration.ref,
});

// Finishing touches on the API definition
const deployment = new CfnDeployment(this, `${name}-deployment`, {
  apiId: api.ref
});

new CfnStage(this, `${name}-stage`, {
  apiId: api.ref,
  autoDeploy: true,
  deploymentId: deployment.ref,
  stageName: "dev"
});

const dependencies = new ConcreteDependable();
dependencies.add(connectRoute)

  

Я получил эту информацию из PR, который кто-то внес в документацию samples:
https://github.com/aws-samples/aws-cdk-examples/pull/325/files

Я все еще экспериментирую с этим, но, по крайней мере, в последней версии CDK вы можете найти используемые функции и классы.