Создайте стек моста событий с помощью Amazon CDK

#javascript #aws-lambda #aws-cdk

#javascript #aws-lambda #aws-cdk

Вопрос:

Я использую AWS CDK для создания стека мостов событий. Вкратце, идея заключается в том, что проект CDK будет отвечать за создание шины событий, правил и целевых объектов.

В моем сценарии целями являются лямбда-функции, которые уже существуют.

Я следую этому документу:

https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda .Функция.html#свойства

Я считаю, что проблема с приведенным ниже кодом заключается в том, что я не указываю на сегмент, в котором существует лямбда, но я не могу указать, поскольку я хотел бы указать непосредственно на развернутую функцию лямбда.

Возможно ли выполнить это с помощью CDK?

 const cdk = require('@aws-cdk/core');
const busCdk = require('@aws-cdk/aws-events')
const ruleCdk = require('@aws-cdk/aws-events')
const targets = require('@aws-cdk/aws-events-targets')
const functionCdk = require('@aws-cdk/aws-lambda')

class PocCdkStack extends cdk.Stack {
  /**
   *
   * @param {cdk.Construct} scope
   * @param {string} id
   * @param {cdk.StackProps=} props
   */
  constructor(scope, id, props) {
    super(scope, id, props);

    const bus = new busCdk.EventBus(this,'ProfileEventBus',{
      eventBusName: "PocProfileBus"
    })

    const rule = new ruleCdk.Rule(this, "newRule", {
      description: "description",
      eventPattern: {
        source: ["order_service"]
      },
      eventBus: bus
    });

    const func = new functionCdk.Function(this, 'testLambda', {
      functionArn: 'arn:aws:lambda:us-east-1:111111111111:function:ccna-poc-eventbus-project-test-triggerByEventBusTwo'
    });

    rule.addTarget(new targets.LambdaFunction(func));
  }
}

module.exports = { PocCdkStack }

  

Спасибо вам всем,

Ответ №1:

Я считаю, что нашел решение.

 const func = functionCdk.Function.fromFunctionArn(this, 'testLambda', 'arn:aws:lambda:us-east-1:11111:function:ccna-poc-eventbus-project-test-triggerByEventBusTwo')
  

Существует статический метод, который выполняет эту работу.

Комментарии:

1. Работает ли это для вас? Для меня тот же код создает шину событий и правило, но на самом деле он не связывает правило с функцией lambda (я не вижу соответствующего триггера для функции).