Ausgabe
Ich habe 4 AWS Lambdas, die S3-Bucket lesen sollten, wenn eine Datei erstellt wird (S3-Ereignis), aber in Cloudformation kann ich nur 1 Lambda-ARN verwenden, siehe innen AWS::S3::Bucket LambdaConfiguration
:
Wie kann ich mehr als 1 Lambda in der Bucket-Lambda-Konfiguration auslösen?
Lösung
AWS hat kürzlich S3-Ereignisbenachrichtigungen mit Amazon EventBridge angekündigt . Folglich können Sie die EventBridge-Benachrichtigung für Ihren Bucket aktivieren und dann eine (oder mehrere) Lambda-Funktion(en) von diesen Ereignissen auslösen lassen.
Beispielimplementierung mit AWS SAM:
AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: 'S3 EventBridge Example'
Parameters:
BucketName:
Type: String
Description: 'Name of the bucket to be created'
Resources:
S3Bucket:
Type: AWS::S3::Bucket
Properties:
BucketName: !Ref BucketName
NotificationConfiguration:
EventBridgeConfiguration:
EventBridgeEnabled: true
S3EventProcessor:
Type: AWS::Serverless::Function
Properties:
FunctionName: S3EventListener
Architectures:
- arm64
Runtime: nodejs14.x
Handler: index.handler
InlineCode: |
exports.handler = (event, context) => {
console.log('event:', JSON.stringify(event));
}
Events:
S3EventBridgeRule:
Type: EventBridgeRule
Properties:
Pattern:
source:
- aws.s3
detail:
bucket:
name:
- !Ref BucketName
Beantwortet von – matsev
Antwort geprüft von – Candace Johnson (FixError Volunteer)