Resources: TriggerFunction: Type: AWS::Serverless::Function Properties: Runtime: nodejs14.x Handler: index.handler Timeout: 10 # in case eb has delay InlineCode: | const AWS = require('aws-sdk'); exports.handler = async (event) => { const eb = new AWS.EventBridge(); const response = await eb.putEvents({ Entries: [{ Source: process.env.EVENT_SOURCE, Detail: "{}", DetailType: "Test", }] }).promise(); const sqs = new AWS.SQS(); const data = await sqs.getQueueAttributes({ QueueUrl: process.env.QUEUE_URL, AttributeNames: ['ApproximateNumberOfMessages'] }).promise(); if (data.Attributes.ApproximateNumberOfMessages < 2) { throw 'Not enough messages in the queue!'; } }; Environment: Variables: QUEUE_URL: !Ref VerificationQueue EVENT_SOURCE: !Sub '${AWS::StackName}-test-event' Policies: - EventBridgePutEventsPolicy: EventBusName: default - SQSPollerPolicy: QueueName: !GetAtt VerificationQueue.QueueName EventRule: Type: AWS::Events::Rule Properties: Description: !Sub 'EventRule-${AWS::StackName}' EventPattern: source: - !Sub '${AWS::StackName}-test-event' Targets: - Arn: !GetAtt Function.Arn Id: Target - Arn: !GetAtt VerificationQueue.Arn Id: Target2 Function: Type: AWS::Serverless::Function Properties: Runtime: nodejs14.x Handler: index.handler InlineCode: | const AWS = require('aws-sdk'); exports.handler = async (event) => { const sqs = new AWS.SQS(); await sqs.sendMessage({ QueueUrl: process.env.QUEUE_URL, MessageBody: "test" }).promise(); }; Environment: Variables: QUEUE_URL: !Ref VerificationQueue Policies: - SQSSendMessagePolicy: QueueName: !GetAtt VerificationQueue.QueueName VerificationQueue: Type: AWS::SQS::Queue MyConnector: Type: AWS::Serverless::Connector Properties: Source: Id: EventRule Destination: - Id: Function - Id: VerificationQueue Permissions: - Write Metadata: SamTransformTest: true