AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: Serverlesspresso Resources: MetricsQueue: Type: AWS::SQS::Queue Properties: QueueName: MetricsQueue ReceiveMessageWaitTimeSeconds: 5 VisibilityTimeout: 30 SqsManagedSseEnabled: true QueuePolicy: Type: AWS::SQS::QueuePolicy Properties: Queues: - !Ref MetricsQueue PolicyDocument: Statement: - Action: - SQS:SendMessage Effect: Allow Resource: !Ref MetricsQueue Principal: Service: "events.amazonaws.com" Condition: ArnEquals: aws:SourceArn: !Sub "arn:aws:events:${AWS::Region}:${AWS::AccountId}:rule/Serverlesspresso/OrderMetrics-DynamoDB" MetricsTable: Type: AWS::DynamoDB::Table Properties: TableName: serverlesspresso-metrics-table AttributeDefinitions: - AttributeName: PK AttributeType: S - AttributeName: SK AttributeType: S ProvisionedThroughput: ReadCapacityUnits: 5 WriteCapacityUnits: 5 KeySchema: - AttributeName: PK KeyType: HASH - AttributeName: SK KeyType: RANGE PublishMetrics: Type: AWS::Serverless::Function Properties: CodeUri: code/ Handler: PublishMetrics.handler Description: Publish Event Metrics for Serverlesspresso MemorySize: 512 Runtime: nodejs16.x ReservedConcurrentExecutions: 1 Timeout: 30 PublishMetricsTableConnector: Type: AWS::Serverless::Connector Properties: Source: Id: PublishMetrics Destination: Id: MetricsTable Permissions: - Write PublishMetricsQueueConnector: Type: AWS::Serverless::Connector Properties: Source: Id: MetricsQueue Destination: Id: PublishMetrics Permissions: - Write - Read LambdaFunctionEventSourceMapping: Type: AWS::Lambda::EventSourceMapping Properties: BatchSize: 10 MaximumBatchingWindowInSeconds: 30 Enabled: true EventSourceArn: !GetAtt MetricsQueue.Arn FunctionName: !GetAtt PublishMetrics.Arn EventsLoadTest: Type: AWS::Serverless::Function Properties: CodeUri: code/ Handler: EventsLoadTest.handler Description: Load test Events for Serverlesspresso MemorySize: 512 Runtime: nodejs16.x Timeout: 30 EventsLoadTestEventsConnector: Type: AWS::Serverless::Connector Properties: Source: Id: EventsLoadTest Destination: Arn: !Sub "arn:aws:events:${AWS::Region}:${AWS::AccountId}:event-bus/Serverlesspresso" Type: AWS::Events::EventBus Permissions: - Write