2
2
import boto3
3
3
import requests
4
4
import os
5
+ import re
5
6
6
7
secretsmanager = boto3 .client ('secretsmanager' )
7
8
TOKEN_SECRET_NAME = os .environ ['FLUX2_WEBHOOK_TOKEN_SECRET_NAME' ]
@@ -54,7 +55,8 @@ def make_requests(webhook_url, repository, headers):
54
55
'repository' : repository
55
56
}))
56
57
57
- def call_flux_webhook (repository ):
58
+
59
+ def call_flux_webhook (repository , image_tag ):
58
60
# Retrieve the map of values from Secrets Manager
59
61
webhook_map = get_webhook_map ()
60
62
@@ -63,13 +65,14 @@ def call_flux_webhook(repository):
63
65
token = None
64
66
if repository in webhook_map :
65
67
repo_data = webhook_map [repository ]
66
- webhook_urls = repo_data .get ('webhook' )
67
- token = repo_data .get ('token' , get_global_token ())
68
- for webhook in webhook_urls :
69
- headers = {'Authorization' : f'Bearer { token } ' }
70
- make_requests (webhook , repository , headers )
71
-
72
-
68
+ for key , data in repo_data .items ():
69
+ webhook_urls = data .get ('webhook' )
70
+ token = data .get ('token' , get_global_token ())
71
+ regex = data .get ('regex' , '.*' )
72
+ for webhook in webhook_urls :
73
+ headers = {'Authorization' : f'Bearer { token } ' }
74
+ if regex and re .match (regex , image_tag ):
75
+ make_requests (webhook , repository , headers )
73
76
74
77
75
78
def lambda_handler (event , context ):
@@ -82,7 +85,7 @@ def lambda_handler(event, context):
82
85
process_ecr_push_event (detail )
83
86
84
87
# Call the Flux webhook with the event repository
85
- call_flux_webhook (detail ['repository-name' ])
88
+ call_flux_webhook (detail ['repository-name' ], detail [ 'image-tag' ] )
86
89
87
90
return {
88
91
'statusCode' : 200 ,
0 commit comments