|
11 | 11 | aws_apigateway as apigateway, |
12 | 12 | aws_iam as iam, |
13 | 13 | aws_lambda as _lambda, |
14 | | - CfnOutput as Output |
| 14 | + CfnOutput as Output, |
15 | 15 | ) |
16 | 16 | from constructs import Construct |
17 | 17 |
|
18 | | -class QuizAppStack(Stack): |
19 | 18 |
|
| 19 | +class QuizAppStack(Stack): |
20 | 20 | def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: |
21 | 21 | super().__init__(scope, construct_id, **kwargs) |
22 | 22 |
|
@@ -61,22 +61,63 @@ def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: |
61 | 61 | write_capacity=5, |
62 | 62 | ) |
63 | 63 |
|
64 | | - submission_queue = sqs.Queue(self, "QuizSubmissionQueue", queue_name="QuizSubmissionQueue") |
| 64 | + submission_queue = sqs.Queue( |
| 65 | + self, "QuizSubmissionQueue", queue_name="QuizSubmissionQueue" |
| 66 | + ) |
65 | 67 | functions_and_roles = [ |
66 | | - ("CreateQuizFunction","configurations/create_quiz_policy.json","CreateQuizRole", "lambdas/get_quiz"), |
67 | | - ("GetQuizFunction","configurations/get_quiz_policy.json","GetQuizRole", "lambdas/get_quiz"), |
68 | | - ("SubmitQuizFunction","configurations/submit_quiz_policy.json", "SubmitQuizRole", "lambdas/submit_quiz"), |
69 | | - ("ScoringFunction", "configurations/scoring_policy.json", "ScoringRole", "lambdas/scoring"), |
70 | | - ("GetSubmissionFunction", "configurations/get_submission_policy.json", "GetSubmissionRole", "lambdas/get_submission"), |
71 | | - ("GetLeaderboardFunction", "configurations/get_leaderboard_policy.json", "GetLeaderboardRole", "lambdas/get_leaderboard"), |
72 | | - ("ListPublicQuizzesFunction", "configurations/list_quizzes_policy.json", "ListQuizzesRole", "lambdas/list_quizzes"), |
73 | | - ("RetryQuizzesWritesFunction","configurations/retry_quizzes_writes_policy.json", "RetryQuizzesWritesRole", "lambdas/retry_quizzes_writes"), |
| 68 | + ( |
| 69 | + "CreateQuizFunction", |
| 70 | + "configurations/create_quiz_policy.json", |
| 71 | + "CreateQuizRole", |
| 72 | + "lambdas/get_quiz", |
| 73 | + ), |
| 74 | + ( |
| 75 | + "GetQuizFunction", |
| 76 | + "configurations/get_quiz_policy.json", |
| 77 | + "GetQuizRole", |
| 78 | + "lambdas/get_quiz", |
| 79 | + ), |
| 80 | + ( |
| 81 | + "SubmitQuizFunction", |
| 82 | + "configurations/submit_quiz_policy.json", |
| 83 | + "SubmitQuizRole", |
| 84 | + "lambdas/submit_quiz", |
| 85 | + ), |
| 86 | + ( |
| 87 | + "ScoringFunction", |
| 88 | + "configurations/scoring_policy.json", |
| 89 | + "ScoringRole", |
| 90 | + "lambdas/scoring", |
| 91 | + ), |
| 92 | + ( |
| 93 | + "GetSubmissionFunction", |
| 94 | + "configurations/get_submission_policy.json", |
| 95 | + "GetSubmissionRole", |
| 96 | + "lambdas/get_submission", |
| 97 | + ), |
| 98 | + ( |
| 99 | + "GetLeaderboardFunction", |
| 100 | + "configurations/get_leaderboard_policy.json", |
| 101 | + "GetLeaderboardRole", |
| 102 | + "lambdas/get_leaderboard", |
| 103 | + ), |
| 104 | + ( |
| 105 | + "ListPublicQuizzesFunction", |
| 106 | + "configurations/list_quizzes_policy.json", |
| 107 | + "ListQuizzesRole", |
| 108 | + "lambdas/list_quizzes", |
| 109 | + ), |
| 110 | + ( |
| 111 | + "RetryQuizzesWritesFunction", |
| 112 | + "configurations/retry_quizzes_writes_policy.json", |
| 113 | + "RetryQuizzesWritesRole", |
| 114 | + "lambdas/retry_quizzes_writes", |
| 115 | + ), |
74 | 116 | ] |
75 | 117 | functions = {} |
76 | 118 |
|
77 | 119 | for function_info in functions_and_roles: |
78 | | - |
79 | | - function_name, policy_file_path, role_name, handler_path = function_info |
| 120 | + function_name, policy_file_path, role_name, handler_path = function_info |
80 | 121 | policy_json = self.read_policy_file(f"../{policy_file_path}") |
81 | 122 | policy_document = iam.PolicyDocument.from_json(policy_json) |
82 | 123 |
|
@@ -130,11 +171,11 @@ def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: |
130 | 171 | ] |
131 | 172 | for path_part, http_method, function_name in endpoints: |
132 | 173 | resource = rest_api.root.add_resource(path_part) |
133 | | - integration = apigateway.LambdaIntegration(functions[function_name], proxy=True) |
| 174 | + integration = apigateway.LambdaIntegration( |
| 175 | + functions[function_name], proxy=True |
| 176 | + ) |
134 | 177 | resource.add_method(http_method, integration=integration) |
135 | 178 |
|
136 | | - |
137 | | - |
138 | 179 | @staticmethod |
139 | 180 | def read_policy_file(file_path: str) -> dict: |
140 | 181 | """Reads a JSON policy file and returns it as a dictionary.""" |
|
0 commit comments