Diff
Modified: trunk/Tools/ChangeLog (222633 => 222634)
--- trunk/Tools/ChangeLog 2017-09-28 21:31:40 UTC (rev 222633)
+++ trunk/Tools/ChangeLog 2017-09-28 21:43:43 UTC (rev 222634)
@@ -1,3 +1,20 @@
+2017-09-28 Lucas Forschler <[email protected]>
+
+ check in AWS Lambda code used for WebKitArchiveSupport
+ https://bugs.webkit.org/show_bug.cgi?id=177614
+
+ Rubber-stamped by Alexey Proskuryakov.
+
+ * WebKitArchiveSupport/lambda: Added.
+ * WebKitArchiveSupport/lambda/delete-minified-s3-archive-from-dynamodb.py: Added.
+ (lambda_handler):
+ * WebKitArchiveSupport/lambda/delete-s3-archive-from-dynamodb.py: Added.
+ (lambda_handler):
+ * WebKitArchiveSupport/lambda/register-archive-in-dynamodb.py: Added.
+ (lambda_handler):
+ * WebKitArchiveSupport/lambda/register-minified-s3-archive-in-dynamodb.py: Added.
+ (lambda_handler):
+
2017-09-28 Jiewen Tan <[email protected]>
WeakPtrFactory should allow downcasting
Added: trunk/Tools/WebKitArchiveSupport/lambda/delete-minified-s3-archive-from-dynamodb.py (0 => 222634)
--- trunk/Tools/WebKitArchiveSupport/lambda/delete-minified-s3-archive-from-dynamodb.py (rev 0)
+++ trunk/Tools/WebKitArchiveSupport/lambda/delete-minified-s3-archive-from-dynamodb.py 2017-09-28 21:43:43 UTC (rev 222634)
@@ -0,0 +1,32 @@
+import boto3
+import json
+import urllib.parse # pylint: disable=E0611
+
+print('Loading function')
+dynamodb_client = boto3.client('dynamodb')
+table_name = 'minified-archives.webkit.org'
+s3 = boto3.client('s3')
+
+
+def lambda_handler(event, context):
+ print("Received event: " + json.dumps(event, indent=2))
+
+ key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'], encoding='utf-8') # pylint: disable=E1101
+ # ex: mac-sierra-x86_64-debug/218331.zip
+
+ split_key = key.split('/')
+ identifier = split_key[0] # mac-sierra-x86_64-debug
+ filename = split_key[1] # 218331.zip
+ revision = filename.split('.')[0] # 218331
+
+ print ("identifier: " + identifier)
+ print ("revision: " + revision)
+
+ try:
+ item = {'identifier': {'S': identifier}, 'revision': {'N': revision}}
+ response = dynamodb_client.delete_item(TableName=table_name, Key=item)
+ return response
+ except Exception as e:
+ print(e)
+ print('Error deleting item: {}\nfrom database: {}.'.format(item, table_name))
+ raise e
Added: trunk/Tools/WebKitArchiveSupport/lambda/delete-s3-archive-from-dynamodb.py (0 => 222634)
--- trunk/Tools/WebKitArchiveSupport/lambda/delete-s3-archive-from-dynamodb.py (rev 0)
+++ trunk/Tools/WebKitArchiveSupport/lambda/delete-s3-archive-from-dynamodb.py 2017-09-28 21:43:43 UTC (rev 222634)
@@ -0,0 +1,32 @@
+import boto3
+import json
+import urllib.parse # pylint: disable=E0611
+
+print('Loading function')
+dynamodb_client = boto3.client('dynamodb')
+table_name = 'archives.webkit.org'
+s3 = boto3.client('s3')
+
+
+def lambda_handler(event, context):
+ print("Received event: " + json.dumps(event, indent=2))
+
+ key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'], encoding='utf-8') # pylint: disable=E1101
+ # ex: mac-sierra-x86_64-debug/218331.zip
+
+ split_key = key.split('/')
+ identifier = split_key[0] # mac-sierra-x86_64-debug
+ filename = split_key[1] # 218331.zip
+ revision = filename.split('.')[0] # 218331
+
+ print ("identifier: " + identifier)
+ print ("revision: " + revision)
+
+ try:
+ item = {'identifier': {'S': identifier}, 'revision': {'N': revision}}
+ response = dynamodb_client.delete_item(TableName=table_name, Key=item)
+ return response
+ except Exception as e:
+ print(e)
+ print('Error deleting item: {}\nfrom database: {}.'.format(item, table_name))
+ raise e
Added: trunk/Tools/WebKitArchiveSupport/lambda/register-archive-in-dynamodb.py (0 => 222634)
--- trunk/Tools/WebKitArchiveSupport/lambda/register-archive-in-dynamodb.py (rev 0)
+++ trunk/Tools/WebKitArchiveSupport/lambda/register-archive-in-dynamodb.py 2017-09-28 21:43:43 UTC (rev 222634)
@@ -0,0 +1,48 @@
+import boto3
+import json
+import time
+import urllib.parse # pylint: disable=E0611
+
+DAYS_TO_KEEP = 14
+EPOCH_DAY = 86400
+TABLE_NAME = 'archives.webkit.org'
+URL_PREFIX = 'https://s3-us-west-2.amazonaws.com'
+
+dynamodb_client = boto3.client('dynamodb')
+s3 = boto3.client('s3')
+
+
+def lambda_handler(event, context):
+ print("Received event: " + json.dumps(event, indent=2))
+
+ # Get the bucket name from the event
+ bucket = event['Records'][0]['s3']['bucket']['name']
+ key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'], encoding='utf-8') # pylint: disable=E1101
+ # ex: mac-sierra-x86_64-debug/218331.zip
+
+ split_key = key.split('/')
+ identifier = split_key[0] # mac-sierra-x86_64-debug
+ filename = split_key[1] # 218331.zip
+ revision = filename.split('.')[0] # 218331
+ creation_time = int(time.time())
+ expiration_time = creation_time + DAYS_TO_KEEP * EPOCH_DAY
+
+ creation_time = str(creation_time)
+ expiration_time = str(expiration_time)
+ s3_url = '/'.join([URL_PREFIX, bucket, key])
+
+ try:
+ item = {
+ 'identifier': {'S': identifier},
+ 'revision': {'N': revision},
+ 's3_url': {'S': s3_url},
+ 'creationTime': {'N': creation_time},
+ 'expirationTime': {'N': expiration_time},
+ }
+ print('Item: {}'.format(item))
+ dynamodb_client.put_item(TableName=TABLE_NAME, Item=item)
+ return s3_url
+ except Exception as e:
+ print(e)
+ print('Error registering item: {}\nfrom bucket {}.'.format(item, bucket))
+ raise e
Added: trunk/Tools/WebKitArchiveSupport/lambda/register-minified-s3-archive-in-dynamodb.py (0 => 222634)
--- trunk/Tools/WebKitArchiveSupport/lambda/register-minified-s3-archive-in-dynamodb.py (rev 0)
+++ trunk/Tools/WebKitArchiveSupport/lambda/register-minified-s3-archive-in-dynamodb.py 2017-09-28 21:43:43 UTC (rev 222634)
@@ -0,0 +1,48 @@
+import boto3
+import json
+import time
+import urllib.parse # pylint: disable=E0611
+
+DAYS_TO_KEEP = 910
+EPOCH_DAY = 86400
+TABLE_NAME = 'minified-archives.webkit.org'
+URL_PREFIX = 'https://s3-us-west-2.amazonaws.com'
+
+dynamodb_client = boto3.client('dynamodb')
+s3 = boto3.client('s3')
+
+
+def lambda_handler(event, context):
+ print("Received event: " + json.dumps(event, indent=2))
+
+ # Get the bucket name from the event
+ bucket = event['Records'][0]['s3']['bucket']['name']
+ key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'], encoding='utf-8') # pylint: disable=E1101
+ # ex: mac-sierra-x86_64-debug/218331.zip
+
+ split_key = key.split('/')
+ identifier = split_key[0] # mac-sierra-x86_64-debug
+ filename = split_key[1] # 218331.zip
+ revision = filename.split('.')[0] # 218331
+ creation_time = int(time.time())
+ expiration_time = creation_time + DAYS_TO_KEEP * EPOCH_DAY
+
+ creation_time = str(creation_time)
+ expiration_time = str(expiration_time)
+ s3_url = '/'.join([URL_PREFIX, bucket, key])
+
+ try:
+ item = {
+ 'identifier': {'S': identifier},
+ 'revision': {'N': revision},
+ 's3_url': {'S': s3_url},
+ 'creationTime': {'N': creation_time},
+ 'expirationTime': {'N': expiration_time},
+ }
+ print('Item: {}'.format(item))
+ dynamodb_client.put_item(TableName=TABLE_NAME, Item=item)
+ return s3_url
+ except Exception as e:
+ print(e)
+ print('Error registering item: {}\nfrom bucket {}.'.format(item, bucket))
+ raise e