Ausgabe
Ich habe eine Regel auf AWS EventBridge erstellt, die eine Sagemaker-Pipeline-Ausführung auslöst. Dazu habe ich folgendes Ereignismuster:
{
"source": ["aws.s3"],
"detail-type": ["AWS API Call via CloudTrail"],
"detail": {
"eventSource": ["s3.amazonaws.com"],
"eventName": ["PutObject", "CopyObject", "CompleteMultipartUpload"],
"requestParameters": {
"bucketName": ["my-bucket-name"],
"key": [{
"prefix": "folder/inside/my/bucket/"
}]
}
}
}
Ich habe CloudTrail aktiviert, um meine S3-Datenereignisse zu protokollieren, und die Regel löst meine Sagemaker-Pipeline-Ausführung korrekt aus.
Das Problem hier ist: Eine Pipeline-Ausführung wird für alle Put/Copy- Objekte in meinem Präfix ausgelöst. Dann möchte ich meine Pipeline-Ausführung nur dann auslösen, wenn ein bestimmtes Objekt in den Bucket hochgeladen wird, da ich seinen vollständigen Namen nicht kenne.
Zum Beispiel ist ein möglicher Objektname, den ich haben werde, wobei dieses Datum dynamisch aufgebaut wird:
my-bucket-name/folder/inside/my/bucket/2021-07-28/_SUCESS
Ich möchte ein Ereignismuster mit etwas wie diesem schreiben:
"prefix": "folder/inside/my/bucket/{current_date}/_SUCCESS"
oder
"key": [{
"prefix": "folder/inside/my/bucket/"
}, {
"suffix": "_SUCCESS"
}]
Ich denke, dass Event Pattern auf AWS keine Suffixfilterung unterstützt. In der Dokumentation ist das Verhalten nicht klar. Ich habe eine S3-Ereignisbenachrichtigung mit einem Suffix konfiguriert und die gefilterte Benachrichtigung an eine SQS-Warteschlange gesendet, aber jetzt weiß ich nicht, was ich mit dieser Warteschlange tun soll, um meine EventBridge-Regel aufzurufen, um eine Sagemaker-Pipeline-Ausführung auszulösen.
Lösung
Ich habe mir eine ähnliche Funktionalität angesehen.
Leider basierend auf den Dokumenten von AWS ( https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html )
.. sieht so aus, als ob es nur die folgenden Muster unterstützt:
Beantwortet von – Potter Rafed
Antwort geprüft von – Marilyn (FixError Volunteer)