diff --git a/functions.tf b/functions.tf
index 50d092090a5b95ca007ca3dabef2455f264b8c55..3bc9e1caed10b445d373170072554a088d7ec2a0 100644
--- a/functions.tf
+++ b/functions.tf
@@ -2,6 +2,7 @@ locals {
   function_name_prefix = local.Name
   functions = [
     "_dns",
+    "gitlab",
   ]
 }
 
diff --git a/requirements.txt b/requirements.txt
index 2f735967970a157d6b4157f57a763a0b204d6f8b..5c7639c236dbd4a1a83c19240ff743cdc88d41ca 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1 +1,2 @@
 dnspython
+requests
diff --git a/src/gitlab.py b/src/gitlab.py
new file mode 100644
index 0000000000000000000000000000000000000000..d012691ebce932a69cc1e4c0bcb0e7ac488450ec
--- /dev/null
+++ b/src/gitlab.py
@@ -0,0 +1,22 @@
+from utils import check_url, publish
+
+
+def handler(event, context):  # pylint: disable=unused-argument
+    """Lambda event handler."""
+    checks = [
+        {"url": "http://git.shore.co.il/", "codes": [301, 302]},
+        {"url": "https://git.shore.co.il/", "codes": [301, 302]},
+        {"url": "https://git.shore.co.il/explore/", "codes": [200]},
+    ]
+
+    for check in checks:
+        if not check_url(check["url"], valid_codes=check["codes"]):
+            message = f"Failed check for {check['url']}."
+            print(message)
+            publish(message)
+        else:
+            print(f"{check['url']} is OK.")
+
+
+if __name__ == "__main__":
+    handler("event", "context")
diff --git a/src/utils.py b/src/utils.py
index 0dbc3ccd159bbc55dba9c351347174daf4197907..4ff09527836c0f68226bde052bca3be980d6d478 100644
--- a/src/utils.py
+++ b/src/utils.py
@@ -1,6 +1,7 @@
 # pylint: disable=import-error
 import os
 import boto3
+import requests
 
 
 TOPIC_ARN = os.getenv("TOPIC_ARN")
@@ -10,3 +11,14 @@ def publish(message):
     """Publish an SNS message."""
     client = boto3.client("sns")
     client.publish(TopicArn=TOPIC_ARN, Message=message)
+
+
+def check_url(url, method="GET", valid_codes=(200)):
+    """Checks URL for validity.
+
+    Allows specifying the HTTP method and a list of valid codes."""
+    try:
+        response = requests.request(method, url, allow_redirects=False)
+        return response.status_code in valid_codes
+    except Exception:  # pylint: disable=broad-except
+        return False