Home > Software design >  Using Eventbridge to trigger Glue job but with delay
Using Eventbridge to trigger Glue job but with delay

Time:08-02

I want to create an Eventbridge rule which triggers after certain number of files are uploaded into the S3 bucket. For ex: Consider a certain prefix in bucket is empty(bucket/folder/[empty]), the user needs to upload 5 files. Only after those five files are uploaded can the Eventbridge be triggered. I tried searching for rule pattern, but unable to find anything related to this. Currently using

{
  "source": ["aws.s3"],
  "detail-type": ["Object Created"],
  "detail": {
    "bucket": {
      "name": ["test-bucket-for-event"]
    },
    "object": {
      "key": [{
        "prefix": "folder/Latest/"
      }]
    }
  }
}

Can i mention like, numbers here, like using greater than 5 etc. Or how to configure that.

Help is appreciated.

Thanks

CodePudding user response:

I created a Lambda function which is used to trigger glue job after certain number of files are created

import json
import boto3
def lambda_handler(event,context):
    bucket = "bucket-name"
    folder = "Folder/Subfolder/"
    objs = boto3.client('s3').list_objects_v2(Bucket=bucket,Prefix=folder)
    conn = boto3.client('s3')
    for key in conn.list_objects(Bucket=bucket,Prefix=folder)['Contents']:
        file_name = list(key['Key'])
        print(''.join(file_name))
    fileCount = objs['KeyCount']
    fileCount = fileCount - 1
    print(fileCount)
    if fileCount >= 5:
        print('the files are present,going to send notification') #here add the glue trigger
    else:
        print("None")
  • Related