|
7 | 7 | import os |
8 | 8 | import json |
9 | 9 | import boto3 |
| 10 | +from aws_lambda_powertools.utilities.typing import LambdaContext |
| 11 | +from aws_lambda_powertools.utilities.data_classes import SQSEvent |
10 | 12 |
|
11 | 13 | def process(payload): |
12 | | - |
| 14 | + """Annotate payload with environment-passed variants, later this function |
| 15 | + will evolve to allow importing types, groups, and policies""" |
13 | 16 | # queue url is |
14 | | - queueUrl = os.environ.get('QUEUE_TARGET') |
| 17 | + queue_url = os.environ.get('QUEUE_TARGET') |
15 | 18 |
|
16 | 19 | # Policy is required. |
17 | 20 | payload['policy_name'] = os.environ.get('POLICY_NAME') |
18 | 21 |
|
19 | 22 | # Thing group is desired, but optional. |
20 | | - # The reason why 'None' has to be set is an environment variable |
| 23 | + # The reason why 'None' has to be set is an environment variable |
21 | 24 | # on a Lambda function cannot be set to empty |
22 | | - |
23 | | - if (os.environ.get('THING_GROUP_NAME') == "None"): |
24 | | - payload['thing_group_name'] = "" |
| 25 | + if os.environ.get('THING_GROUP_NAME') == "None": |
| 26 | + payload['thing_group_name'] = None |
25 | 27 | else: |
26 | 28 | payload['thing_group_name'] = os.environ.get('THING_GROUP_NAME') |
27 | 29 |
|
28 | 30 | # Thing group is desired, but optional. |
29 | | - if (os.environ.get('THING_TYPE_NAME') == "None"): |
30 | | - payload['thing_type_name'] = "" |
| 31 | + if os.environ.get('THING_TYPE_NAME') == "None": |
| 32 | + payload['thing_type_name'] = None |
31 | 33 | else: |
32 | 34 | payload['thing_type_name'] = os.environ.get('THING_TYPE_NAME') |
33 | 35 |
|
34 | 36 | # Pass on to the queue for target processing. |
35 | 37 | print(json.dumps(payload)) |
36 | 38 |
|
37 | 39 | client = boto3.client("sqs") |
38 | | - client.send_message( QueueUrl=queueUrl, |
| 40 | + client.send_message( QueueUrl=queue_url, |
39 | 41 | MessageBody=json.dumps(payload)) |
| 42 | + return payload |
40 | 43 |
|
41 | | -def lambda_handler(event, context): |
42 | | - |
| 44 | +def lambda_handler(event: SQSEvent, context: LambdaContext) -> dict: |
| 45 | + """Lambda function main entry point""" |
43 | 46 | # Get the payload coming in and process it. There might be more than one. |
| 47 | + result = [] |
44 | 48 | for record in event['Records']: |
45 | | - process(json.loads(record["body"])) |
| 49 | + r = process(json.loads(record["body"])) |
| 50 | + result.append(r) |
| 51 | + return result |
0 commit comments