changeset 7:7c5fb7573dd8

first working version
author Dennis C. M. <dennis@denniscm.com>
date Mon, 05 Jun 2023 19:06:34 +0100
parents d15ccf5f1373
children f2442b8f43de
files events/get_tickers_event.json get_report/app.py get_tickers/__init__.py get_tickers/app.py get_tickers/requirements.txt template.yaml
diffstat 5 files changed, 64 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/events/get_tickers_event.json	Mon Jun 05 19:06:34 2023 +0100
@@ -0,0 +1,3 @@
+{
+
+}
\ No newline at end of file
--- a/get_report/app.py	Mon Jun 05 17:12:18 2023 +0100
+++ b/get_report/app.py	Mon Jun 05 19:06:34 2023 +0100
@@ -19,6 +19,11 @@
 
     return {
         "statusCode": 200,
+        "headers": {
+            "Access-Control-Allow-Headers": "Content-Type",
+            "Access-Control-Allow-Origin": "*",
+            "Access-Control-Allow-Methods": "GET"
+        },
         "body": json.dumps({
             "message": {
                 "items": response['Items'],
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/get_tickers/app.py	Mon Jun 05 19:06:34 2023 +0100
@@ -0,0 +1,27 @@
+import json
+import boto3
+from boto3.dynamodb.conditions import Key
+
+resource = boto3.resource('dynamodb')
+table = resource.Table('FinanceParser')
+
+
+def lambda_handler(event, context):
+    response = table.scan(
+        FilterExpression=Key('pk').begins_with('file')
+    )
+
+    return {
+        "statusCode": 200,
+        "headers": {
+            "Access-Control-Allow-Headers": "Content-Type",
+            "Access-Control-Allow-Origin": "*",
+            "Access-Control-Allow-Methods": "GET"
+        },
+        "body": json.dumps({
+            "message": {
+                "items": response['Items'],
+                "count": len(response['Items'])
+            }
+        }),
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/get_tickers/requirements.txt	Mon Jun 05 19:06:34 2023 +0100
@@ -0,0 +1,1 @@
+boto3
\ No newline at end of file
--- a/template.yaml	Mon Jun 05 17:12:18 2023 +0100
+++ b/template.yaml	Mon Jun 05 19:06:34 2023 +0100
@@ -120,6 +120,10 @@
     Type: AWS::Serverless::Api
     Properties:
       StageName: Prod
+      Cors:
+        AllowMethods: "'GET, POST, OPTIONS'"
+        AllowHeaders: "'content-type, x-api-key'"
+        AllowOrigin: "'*'"
       Models:
         Empty:
           type: object
@@ -150,6 +154,25 @@
           Permissions:
             - Read
 
+  GetTickersFunction:
+    Type: AWS::Serverless::Function
+    Properties:
+      CodeUri: get_tickers/
+      Events:
+        GetProductEvent:
+          Type: Api
+          Properties:
+            RestApiId: !Ref Api
+            Path: /tickers
+            Method: get
+    Connectors:
+      DynamoConnector:
+        Properties:
+          Destination:
+            Id: DynamoTable
+          Permissions:
+            - Read
+
   DynamoTable:
     Type: AWS::DynamoDB::Table
     Properties:
@@ -173,4 +196,8 @@
 Outputs:
   GetReportEndpoint:
     Description: "Endpoint to get a report"
-    Value: !Sub "https://${Api}.execute-api.${AWS::Region}.amazonaws.com/Prod/report"
\ No newline at end of file
+    Value: !Sub "https://${Api}.execute-api.${AWS::Region}.amazonaws.com/Prod/report"
+
+  GetTickersEndpoint:
+    Description: "Endpoint to get tickers"
+    Value: !Sub "https://${Api}.execute-api.${AWS::Region}.amazonaws.com/Prod/ticker"
\ No newline at end of file