Skip to content

Commit 1fdfa22

Browse files
committed
Merge branch 'develop' into fix/logger-applications
* develop: chore(deps-dev): bump aws-cdk from 2.80.0 to 2.81.0 (aws-powertools#2332) chore(deps-dev): bump coverage from 7.2.5 to 7.2.6 (aws-powertools#2326) chore(deps-dev): bump pytest-cov from 4.0.0 to 4.1.0 (aws-powertools#2327) chore(deps): bump actions/setup-python from 4.6.0 to 4.6.1 (aws-powertools#2325) fix(docs): use concrete secrets from settings (aws-powertools#2322) fix(logger): add setLevel function to set level programmatically (aws-powertools#2320) feat(parser): add support for parsing SQS events wrapped in Kinesis Firehose (aws-powertools#2294)
2 parents 01ccb98 + 7e0be2c commit 1fdfa22

19 files changed

+181
-77
lines changed

.github/workflows/on_push_docs.yml

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ jobs:
1919
contents: write
2020
pages: write
2121
id-token: write
22+
secrets: inherit
2223
uses: ./.github/workflows/reusable_publish_docs.yml
2324
with:
2425
version: develop
25-
alias: stage
26+
alias: stage

.github/workflows/publish_v2_layer.yml

+2-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ jobs:
4747
with:
4848
node-version: "16.12"
4949
- name: Setup python
50-
uses: actions/setup-python@57ded4d7d5e986d7296eab16560982c6dd7c923b # v4.6.0
50+
uses: actions/setup-python@bd6b4b6205c4dbad673328db7b31b7fab9e241c0 # v4.6.1
5151
with:
5252
python-version: "3.10"
5353
cache: "pip"
@@ -224,6 +224,7 @@ jobs:
224224
pages: write
225225
pull-requests: none
226226
id-token: write
227+
secrets: inherit
227228
uses: ./.github/workflows/reusable_publish_docs.yml
228229
with:
229230
version: ${{ inputs.latest_published_version }}

.github/workflows/python_build.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636
- name: Install poetry
3737
run: pipx install poetry
3838
- name: Set up Python ${{ matrix.python-version }}
39-
uses: actions/setup-python@57ded4d7d5e986d7296eab16560982c6dd7c923b # v4.6.0
39+
uses: actions/setup-python@bd6b4b6205c4dbad673328db7b31b7fab9e241c0 # v4.6.1
4040
with:
4141
python-version: ${{ matrix.python-version }}
4242
cache: "poetry"

.github/workflows/rebuild_latest_docs.yml

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ jobs:
2323
contents: write
2424
pages: write
2525
id-token: write
26+
secrets: inherit
2627
uses: ./.github/workflows/reusable_publish_docs.yml
2728
with:
2829
version: ${{ inputs.latest_published_version }}

.github/workflows/release.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ jobs:
139139
- name: Install poetry
140140
run: pipx install git+https://github.com/python-poetry/poetry@68b88e5390720a3dd84f02940ec5200bfce39ac6 # v1.5.0
141141
- name: Set up Python
142-
uses: actions/setup-python@57ded4d7d5e986d7296eab16560982c6dd7c923b # v4.6.0
142+
uses: actions/setup-python@bd6b4b6205c4dbad673328db7b31b7fab9e241c0 # v4.6.1
143143
with:
144144
python-version: "3.10"
145145
cache: "poetry"
@@ -177,7 +177,7 @@ jobs:
177177
- name: Install poetry
178178
run: pipx install git+https://github.com/python-poetry/poetry@68b88e5390720a3dd84f02940ec5200bfce39ac6 # v1.5.0
179179
- name: Set up Python
180-
uses: actions/setup-python@57ded4d7d5e986d7296eab16560982c6dd7c923b # v4.6.0
180+
uses: actions/setup-python@bd6b4b6205c4dbad673328db7b31b7fab9e241c0 # v4.6.1
181181
with:
182182
python-version: "3.10"
183183
cache: "poetry"

.github/workflows/reusable_deploy_v2_layer_stack.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ jobs:
108108
with:
109109
node-version: "16.12"
110110
- name: Setup python
111-
uses: actions/setup-python@57ded4d7d5e986d7296eab16560982c6dd7c923b # v4.6.0
111+
uses: actions/setup-python@bd6b4b6205c4dbad673328db7b31b7fab9e241c0 # v4.6.1
112112
with:
113113
python-version: "3.10"
114114
cache: "pip"

.github/workflows/reusable_publish_docs.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737
concurrency:
3838
group: on-docs-rebuild
3939
runs-on: ubuntu-latest
40-
environment: Docs
40+
environment: "Docs"
4141
steps:
4242
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
4343
with:
@@ -46,7 +46,7 @@ jobs:
4646
- name: Install poetry
4747
run: pipx install poetry
4848
- name: Set up Python
49-
uses: actions/setup-python@57ded4d7d5e986d7296eab16560982c6dd7c923b # v4.6.0
49+
uses: actions/setup-python@bd6b4b6205c4dbad673328db7b31b7fab9e241c0 # v4.6.1
5050
with:
5151
python-version: "3.10"
5252
cache: "poetry"

.github/workflows/run-e2e-tests.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ jobs:
3838
- name: Install poetry
3939
run: pipx install poetry
4040
- name: "Use Python"
41-
uses: actions/setup-python@57ded4d7d5e986d7296eab16560982c6dd7c923b # v4.6.0
41+
uses: actions/setup-python@bd6b4b6205c4dbad673328db7b31b7fab9e241c0 # v4.6.1
4242
with:
4343
python-version: ${{ matrix.version }}
4444
architecture: "x64"

aws_lambda_powertools/logging/logger.py

+17-2
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,9 @@ class Logger:
8686
service : str, optional
8787
service name to be appended in logs, by default "service_undefined"
8888
level : str, int optional
89-
logging.level, by default "INFO"
89+
The level to set. Can be a string representing the level name: 'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'
90+
or an integer representing the level value: 10 for 'DEBUG', 20 for 'INFO', 30 for 'WARNING', 40 for 'ERROR', 50 for 'CRITICAL'. # noqa: E501
91+
by default "INFO"
9092
child: bool, optional
9193
create a child Logger named <service>.<caller_file_name>, False by default
9294
sample_rate: float, optional
@@ -322,7 +324,7 @@ def _configure_sampling(self):
322324
try:
323325
if self.sampling_rate and random.random() <= float(self.sampling_rate):
324326
logger.debug("Setting log level to Debug due to sampling rate")
325-
self.log_level = logging.DEBUG
327+
self.setLevel(logging.DEBUG)
326328
except ValueError:
327329
raise InvalidLoggerSamplingRateError(
328330
f"Expected a float value ranging 0 to 1, but received {self.sampling_rate} instead."
@@ -438,6 +440,19 @@ def decorate(event, context, *args, **kwargs):
438440

439441
return decorate
440442

443+
def setLevel(self, level: Union[str, int]):
444+
"""
445+
Set the logging level for the logger.
446+
447+
Parameters:
448+
-----------
449+
level str | int
450+
The level to set. Can be a string representing the level name: 'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'
451+
or an integer representing the level value: 10 for 'DEBUG', 20 for 'INFO', 30 for 'WARNING', 40 for 'ERROR', 50 for 'CRITICAL'. # noqa: E501
452+
"""
453+
self.log_level = level
454+
self._logger.setLevel(level)
455+
441456
def info(
442457
self,
443458
msg: object,

aws_lambda_powertools/utilities/parser/models/__init__.py

+3
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
KinesisFirehoseRecord,
4343
KinesisFirehoseRecordMetadata,
4444
)
45+
from .kinesis_firehose_sqs import KinesisFirehoseSqsModel, KinesisFirehoseSqsRecord
4546
from .lambda_function_url import LambdaFunctionUrlModel
4647
from .s3 import (
4748
S3EventNotificationEventBridgeDetailModel,
@@ -144,4 +145,6 @@
144145
"KafkaRecordModel",
145146
"KafkaMskEventModel",
146147
"KafkaBaseEventModel",
148+
"KinesisFirehoseSqsModel",
149+
"KinesisFirehoseSqsRecord",
147150
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import json
2+
from typing import List, Optional
3+
4+
from pydantic import BaseModel, PositiveInt, validator
5+
6+
from aws_lambda_powertools.shared.functions import base64_decode
7+
from aws_lambda_powertools.utilities.parser.models import KinesisFirehoseRecordMetadata
8+
9+
from .sqs import SqsRecordModel
10+
11+
12+
class KinesisFirehoseSqsRecord(BaseModel):
13+
data: SqsRecordModel
14+
recordId: str
15+
approximateArrivalTimestamp: PositiveInt
16+
kinesisRecordMetadata: Optional[KinesisFirehoseRecordMetadata]
17+
18+
@validator("data", pre=True, allow_reuse=True)
19+
def data_base64_decode(cls, value):
20+
# Firehose payload is encoded
21+
return json.loads(base64_decode(value))
22+
23+
24+
class KinesisFirehoseSqsModel(BaseModel):
25+
invocationId: str
26+
deliveryStreamArn: str
27+
region: str
28+
sourceKinesisStreamArn: Optional[str]
29+
records: List[KinesisFirehoseSqsRecord]

docs/utilities/parser.md

+1
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ Parser comes with the following built-in models:
168168
| **KafkaSelfManagedEventModel** | Lambda Event Source payload for self managed Kafka payload |
169169
| **KinesisDataStreamModel** | Lambda Event Source payload for Amazon Kinesis Data Streams |
170170
| **KinesisFirehoseModel** | Lambda Event Source payload for Amazon Kinesis Firehose |
171+
| **KinesisFirehoseSqsModel** | Lambda Event Source payload for SQS messages wrapped in Kinesis Firehose records |
171172
| **LambdaFunctionUrlModel** | Lambda Event Source payload for Lambda Function URL payload |
172173
| **S3EventNotificationEventBridgeModel** | Lambda Event Source payload for Amazon S3 Event Notification to EventBridge. |
173174
| **S3Model** | Lambda Event Source payload for Amazon S3 |

package-lock.json

+7-7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
"name": "aws-lambda-powertools-python-e2e",
33
"version": "1.0.0",
44
"devDependencies": {
5-
"aws-cdk": "^2.80.0"
5+
"aws-cdk": "^2.81.0"
66
}
77
}

0 commit comments

Comments
 (0)