Skip to content

Commit e81deb7

Browse files
Merge branch 'develop' into feat/add-openapi-extension
2 parents c917877 + 10d551c commit e81deb7

22 files changed

+345
-76
lines changed

.github/workflows/publish_v2_layer.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ jobs:
101101
- name: Install poetry
102102
run: pipx install git+https://github.com/python-poetry/poetry@68b88e5390720a3dd84f02940ec5200bfce39ac6 # v1.5.0
103103
- name: Setup Node.js
104-
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
104+
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
105105
with:
106106
node-version: "16.12"
107107
- name: Setup python

.github/workflows/reusable_deploy_v2_layer_stack.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ jobs:
158158
aws-region: ${{ matrix.region }}
159159
role-to-assume: ${{ secrets.AWS_LAYERS_ROLE_ARN }}
160160
- name: Setup Node.js
161-
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
161+
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
162162
with:
163163
node-version: "16.12"
164164
- name: Setup python

.github/workflows/reusable_deploy_v2_sar.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ jobs:
111111
aws-region: ${{ env.AWS_REGION }}
112112
role-to-assume: ${{ secrets.AWS_SAR_V2_ROLE_ARN }}
113113
- name: Setup Node.js
114-
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
114+
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
115115
with:
116116
node-version: ${{ env.NODE_VERSION }}
117117
- name: Download artifact

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ jobs:
6262
architecture: "x64"
6363
cache: "poetry"
6464
- name: Setup Node.js
65-
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
65+
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
6666
with:
6767
node-version: "20.10.0"
6868
- name: Install CDK CLI

CHANGELOG.md

Lines changed: 33 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -15,44 +15,55 @@
1515
* **i-made-this:** Bedrock agents with Powertools for AWS Lambda ([#4705](https://github.com/aws-powertools/powertools-lambda-python/issues/4705))
1616
* **public_reference:** add BusPatrol as a public reference ([#4713](https://github.com/aws-powertools/powertools-lambda-python/issues/4713))
1717

18+
## Features
19+
20+
* **parser:** add support for API Gateway Lambda authorizer events ([#4718](https://github.com/aws-powertools/powertools-lambda-python/issues/4718))
21+
1822
## Maintenance
1923

2024
* Add token to codecov action ([#4682](https://github.com/aws-powertools/powertools-lambda-python/issues/4682))
25+
* **ci:** new pre-release 2.40.2a4 ([#4694](https://github.com/aws-powertools/powertools-lambda-python/issues/4694))
26+
* **ci:** new pre-release 2.40.2a0 ([#4665](https://github.com/aws-powertools/powertools-lambda-python/issues/4665))
27+
* **ci:** new pre-release 2.40.2a7 ([#4726](https://github.com/aws-powertools/powertools-lambda-python/issues/4726))
2128
* **ci:** new pre-release 2.40.2a6 ([#4715](https://github.com/aws-powertools/powertools-lambda-python/issues/4715))
22-
* **ci:** new pre-release 2.40.2a5 ([#4706](https://github.com/aws-powertools/powertools-lambda-python/issues/4706))
2329
* **ci:** new pre-release 2.40.2a1 ([#4669](https://github.com/aws-powertools/powertools-lambda-python/issues/4669))
24-
* **ci:** new pre-release 2.40.2a3 ([#4688](https://github.com/aws-powertools/powertools-lambda-python/issues/4688))
25-
* **ci:** new pre-release 2.40.2a0 ([#4665](https://github.com/aws-powertools/powertools-lambda-python/issues/4665))
26-
* **ci:** new pre-release 2.40.2a4 ([#4694](https://github.com/aws-powertools/powertools-lambda-python/issues/4694))
30+
* **ci:** new pre-release 2.40.2a5 ([#4706](https://github.com/aws-powertools/powertools-lambda-python/issues/4706))
2731
* **ci:** new pre-release 2.40.2a2 ([#4679](https://github.com/aws-powertools/powertools-lambda-python/issues/4679))
28-
* **deps:** bump docker/setup-buildx-action from 3.3.0 to 3.4.0 ([#4693](https://github.com/aws-powertools/powertools-lambda-python/issues/4693))
32+
* **ci:** new pre-release 2.40.2a3 ([#4688](https://github.com/aws-powertools/powertools-lambda-python/issues/4688))
2933
* **deps:** bump docker/setup-qemu-action from 3.0.0 to 3.1.0 ([#4685](https://github.com/aws-powertools/powertools-lambda-python/issues/4685))
30-
* **deps:** bump certifi from 2024.6.2 to 2024.7.4 ([#4700](https://github.com/aws-powertools/powertools-lambda-python/issues/4700))
31-
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.23 to 1.27.24 in /layer/scripts/layer-balancer in the layer-balancer group ([#4684](https://github.com/aws-powertools/powertools-lambda-python/issues/4684))
32-
* **deps:** bump the layer-balancer group in /layer/scripts/layer-balancer with 3 updates ([#4659](https://github.com/aws-powertools/powertools-lambda-python/issues/4659))
33-
* **deps:** bump zgosalvez/github-actions-ensure-sha-pinned-actions from 3.0.9 to 3.0.10 ([#4678](https://github.com/aws-powertools/powertools-lambda-python/issues/4678))
3434
* **deps:** bump actions/download-artifact from 4.1.7 to 4.1.8 ([#4699](https://github.com/aws-powertools/powertools-lambda-python/issues/4699))
35+
* **deps:** bump docker/setup-buildx-action from 3.3.0 to 3.4.0 ([#4693](https://github.com/aws-powertools/powertools-lambda-python/issues/4693))
3536
* **deps:** bump actions/upload-artifact from 4.3.3 to 4.3.4 ([#4698](https://github.com/aws-powertools/powertools-lambda-python/issues/4698))
37+
* **deps:** bump the layer-balancer group in /layer/scripts/layer-balancer with 3 updates ([#4659](https://github.com/aws-powertools/powertools-lambda-python/issues/4659))
38+
* **deps:** bump actions/setup-node from 4.0.2 to 4.0.3 ([#4725](https://github.com/aws-powertools/powertools-lambda-python/issues/4725))
39+
* **deps:** bump zipp from 3.17.0 to 3.19.1 in /docs ([#4720](https://github.com/aws-powertools/powertools-lambda-python/issues/4720))
40+
* **deps:** bump certifi from 2024.6.2 to 2024.7.4 ([#4700](https://github.com/aws-powertools/powertools-lambda-python/issues/4700))
41+
* **deps:** bump zgosalvez/github-actions-ensure-sha-pinned-actions from 3.0.9 to 3.0.10 ([#4678](https://github.com/aws-powertools/powertools-lambda-python/issues/4678))
42+
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.23 to 1.27.24 in /layer/scripts/layer-balancer in the layer-balancer group ([#4684](https://github.com/aws-powertools/powertools-lambda-python/issues/4684))
43+
* **deps-dev:** bump aws-cdk from 2.147.2 to 2.147.3 ([#4672](https://github.com/aws-powertools/powertools-lambda-python/issues/4672))
44+
* **deps-dev:** bump aws-cdk-lib from 2.147.2 to 2.147.3 ([#4674](https://github.com/aws-powertools/powertools-lambda-python/issues/4674))
45+
* **deps-dev:** bump cfn-lint from 1.5.0 to 1.5.1 ([#4711](https://github.com/aws-powertools/powertools-lambda-python/issues/4711))
46+
* **deps-dev:** bump sentry-sdk from 2.7.1 to 2.8.0 ([#4712](https://github.com/aws-powertools/powertools-lambda-python/issues/4712))
3647
* **deps-dev:** bump mkdocs-material from 9.5.27 to 9.5.28 ([#4676](https://github.com/aws-powertools/powertools-lambda-python/issues/4676))
3748
* **deps-dev:** bump cdklabs-generative-ai-cdk-constructs from 0.1.199 to 0.1.200 ([#4677](https://github.com/aws-powertools/powertools-lambda-python/issues/4677))
38-
* **deps-dev:** bump aws-cdk-lib from 2.147.2 to 2.147.3 ([#4674](https://github.com/aws-powertools/powertools-lambda-python/issues/4674))
39-
* **deps-dev:** bump aws-cdk from 2.147.2 to 2.147.3 ([#4672](https://github.com/aws-powertools/powertools-lambda-python/issues/4672))
40-
* **deps-dev:** bump mypy-boto3-s3 from 1.34.120 to 1.34.138 in the boto-typing group ([#4673](https://github.com/aws-powertools/powertools-lambda-python/issues/4673))
4149
* **deps-dev:** bump cfn-lint from 1.4.2 to 1.5.0 ([#4675](https://github.com/aws-powertools/powertools-lambda-python/issues/4675))
42-
* **deps-dev:** bump cdklabs-generative-ai-cdk-constructs from 0.1.200 to 0.1.201 ([#4687](https://github.com/aws-powertools/powertools-lambda-python/issues/4687))
43-
* **deps-dev:** bump aws-cdk-aws-lambda-python-alpha from 2.147.2a0 to 2.147.3a0 ([#4686](https://github.com/aws-powertools/powertools-lambda-python/issues/4686))
44-
* **deps-dev:** bump cdklabs-generative-ai-cdk-constructs from 0.1.198 to 0.1.199 ([#4668](https://github.com/aws-powertools/powertools-lambda-python/issues/4668))
45-
* **deps-dev:** bump aws-cdk-aws-lambda-python-alpha from 2.147.1a0 to 2.147.2a0 ([#4667](https://github.com/aws-powertools/powertools-lambda-python/issues/4667))
46-
* **deps-dev:** bump cdklabs-generative-ai-cdk-constructs from 0.1.201 to 0.1.202 ([#4696](https://github.com/aws-powertools/powertools-lambda-python/issues/4696))
47-
* **deps-dev:** bump sentry-sdk from 2.7.1 to 2.8.0 ([#4712](https://github.com/aws-powertools/powertools-lambda-python/issues/4712))
4850
* **deps-dev:** bump ruff from 0.5.0 to 0.5.1 ([#4697](https://github.com/aws-powertools/powertools-lambda-python/issues/4697))
49-
* **deps-dev:** bump cfn-lint from 1.4.1 to 1.4.2 ([#4660](https://github.com/aws-powertools/powertools-lambda-python/issues/4660))
50-
* **deps-dev:** bump cfn-lint from 1.5.0 to 1.5.1 ([#4711](https://github.com/aws-powertools/powertools-lambda-python/issues/4711))
51+
* **deps-dev:** bump mypy-boto3-s3 from 1.34.120 to 1.34.138 in the boto-typing group ([#4673](https://github.com/aws-powertools/powertools-lambda-python/issues/4673))
5152
* **deps-dev:** bump aws-cdk from 2.147.3 to 2.148.0 ([#4708](https://github.com/aws-powertools/powertools-lambda-python/issues/4708))
52-
* **deps-dev:** bump aws-cdk from 2.147.1 to 2.147.2 ([#4657](https://github.com/aws-powertools/powertools-lambda-python/issues/4657))
53-
* **deps-dev:** bump ruff from 0.4.10 to 0.5.0 ([#4644](https://github.com/aws-powertools/powertools-lambda-python/issues/4644))
5453
* **deps-dev:** bump aws-cdk-lib from 2.147.3 to 2.148.0 ([#4710](https://github.com/aws-powertools/powertools-lambda-python/issues/4710))
54+
* **deps-dev:** bump cfn-lint from 1.4.1 to 1.4.2 ([#4660](https://github.com/aws-powertools/powertools-lambda-python/issues/4660))
55+
* **deps-dev:** bump cdklabs-generative-ai-cdk-constructs from 0.1.198 to 0.1.199 ([#4668](https://github.com/aws-powertools/powertools-lambda-python/issues/4668))
56+
* **deps-dev:** bump aws-cdk-aws-lambda-python-alpha from 2.147.1a0 to 2.147.2a0 ([#4667](https://github.com/aws-powertools/powertools-lambda-python/issues/4667))
57+
* **deps-dev:** bump aws-cdk-aws-lambda-python-alpha from 2.147.3a0 to 2.148.0a0 ([#4722](https://github.com/aws-powertools/powertools-lambda-python/issues/4722))
58+
* **deps-dev:** bump zipp from 3.17.0 to 3.19.1 in /layer ([#4721](https://github.com/aws-powertools/powertools-lambda-python/issues/4721))
59+
* **deps-dev:** bump cdklabs-generative-ai-cdk-constructs from 0.1.202 to 0.1.205 ([#4723](https://github.com/aws-powertools/powertools-lambda-python/issues/4723))
60+
* **deps-dev:** bump cdklabs-generative-ai-cdk-constructs from 0.1.200 to 0.1.201 ([#4687](https://github.com/aws-powertools/powertools-lambda-python/issues/4687))
5561
* **deps-dev:** bump aws-cdk-lib from 2.147.1 to 2.147.2 ([#4661](https://github.com/aws-powertools/powertools-lambda-python/issues/4661))
62+
* **deps-dev:** bump aws-cdk-aws-lambda-python-alpha from 2.147.2a0 to 2.147.3a0 ([#4686](https://github.com/aws-powertools/powertools-lambda-python/issues/4686))
63+
* **deps-dev:** bump aws-cdk from 2.147.1 to 2.147.2 ([#4657](https://github.com/aws-powertools/powertools-lambda-python/issues/4657))
64+
* **deps-dev:** bump ruff from 0.4.10 to 0.5.0 ([#4644](https://github.com/aws-powertools/powertools-lambda-python/issues/4644))
65+
* **deps-dev:** bump cfn-lint from 1.5.1 to 1.5.2 ([#4724](https://github.com/aws-powertools/powertools-lambda-python/issues/4724))
66+
* **deps-dev:** bump cdklabs-generative-ai-cdk-constructs from 0.1.201 to 0.1.202 ([#4696](https://github.com/aws-powertools/powertools-lambda-python/issues/4696))
5667

5768

5869
<a name="v2.40.1"></a>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
"""Exposes version constant to avoid circular dependencies."""
22

3-
VERSION = "2.40.2a6"
3+
VERSION = "2.40.2a7"

aws_lambda_powertools/utilities/batch/base.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,12 @@ def failure_handler(self, record, exception: ExceptionInfo) -> FailureResponse:
222222
class BasePartialBatchProcessor(BasePartialProcessor): # noqa
223223
DEFAULT_RESPONSE: PartialItemFailureResponse = {"batchItemFailures": []}
224224

225-
def __init__(self, event_type: EventType, model: Optional["BatchTypeModels"] = None):
225+
def __init__(
226+
self,
227+
event_type: EventType,
228+
model: Optional["BatchTypeModels"] = None,
229+
raise_on_entire_batch_failure: bool = True,
230+
):
226231
"""Process batch and partially report failed items
227232
228233
Parameters
@@ -231,6 +236,9 @@ def __init__(self, event_type: EventType, model: Optional["BatchTypeModels"] = N
231236
Whether this is a SQS, DynamoDB Streams, or Kinesis Data Stream event
232237
model: Optional["BatchTypeModels"]
233238
Parser's data model using either SqsRecordModel, DynamoDBStreamRecordModel, KinesisDataStreamRecord
239+
raise_on_entire_batch_failure: bool
240+
Raise an exception when the entire batch has failed processing.
241+
When set to False, partial failures are reported in the response
234242
235243
Exceptions
236244
----------
@@ -239,6 +247,7 @@ def __init__(self, event_type: EventType, model: Optional["BatchTypeModels"] = N
239247
"""
240248
self.event_type = event_type
241249
self.model = model
250+
self.raise_on_entire_batch_failure = raise_on_entire_batch_failure
242251
self.batch_response: PartialItemFailureResponse = copy.deepcopy(self.DEFAULT_RESPONSE)
243252
self._COLLECTOR_MAPPING = {
244253
EventType.SQS: self._collect_sqs_failures,
@@ -274,7 +283,7 @@ def _clean(self):
274283
if not self._has_messages_to_report():
275284
return
276285

277-
if self._entire_batch_failed():
286+
if self._entire_batch_failed() and self.raise_on_entire_batch_failure:
278287
raise BatchProcessingError(
279288
msg=f"All records failed processing. {len(self.exceptions)} individual errors logged "
280289
f"separately below.",
@@ -475,7 +484,7 @@ def lambda_handler(event, context: LambdaContext):
475484
Raises
476485
------
477486
BatchProcessingError
478-
When all batch records fail processing
487+
When all batch records fail processing and raise_on_entire_batch_failure is True
479488
480489
Limitations
481490
-----------
@@ -624,7 +633,7 @@ def lambda_handler(event, context: LambdaContext):
624633
Raises
625634
------
626635
BatchProcessingError
627-
When all batch records fail processing
636+
When all batch records fail processing and raise_on_entire_batch_failure is True
628637
629638
Limitations
630639
-----------

aws_lambda_powertools/utilities/feature_flags/appconfig.py

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import logging
22
import traceback
3-
from typing import Any, Dict, Optional, Union, cast
3+
from typing import TYPE_CHECKING, Any, Dict, Optional, Union, cast
44

5+
import boto3
56
from botocore.config import Config
67

78
from aws_lambda_powertools.utilities import jmespath_utils
@@ -15,6 +16,9 @@
1516
from .base import StoreProvider
1617
from .exceptions import ConfigurationStoreError, StoreClientError
1718

19+
if TYPE_CHECKING:
20+
from mypy_boto3_appconfigdata import AppConfigDataClient
21+
1822

1923
class AppConfigStore(StoreProvider):
2024
def __init__(
@@ -27,6 +31,9 @@ def __init__(
2731
envelope: Optional[str] = "",
2832
jmespath_options: Optional[Dict] = None,
2933
logger: Optional[Union[logging.Logger, Logger]] = None,
34+
boto_config: Optional[Config] = None,
35+
boto3_session: Optional[boto3.session.Session] = None,
36+
boto3_client: Optional["AppConfigDataClient"] = None,
3037
):
3138
"""This class fetches JSON schemas from AWS AppConfig
3239
@@ -48,17 +55,29 @@ def __init__(
4855
Alternative JMESPath options to be included when filtering expr
4956
logger: A logging object
5057
Used to log messages. If None is supplied, one will be created.
58+
boto_config: botocore.config.Config, optional
59+
Botocore configuration to pass during client initialization
60+
boto3_session : boto3.Session, optional
61+
Boto3 session to use for AWS API communication
62+
boto3_client : AppConfigDataClient, optional
63+
Boto3 AppConfigDataClient Client to use, boto3_session and boto_config will be ignored if both are provided
5164
"""
5265
super().__init__()
5366
self.logger = logger or logging.getLogger(__name__)
5467
self.environment = environment
5568
self.application = application
5669
self.name = name
5770
self.cache_seconds = max_age
58-
self.config = sdk_config
71+
self.config = sdk_config or boto_config
5972
self.envelope = envelope
6073
self.jmespath_options = jmespath_options
61-
self._conf_store = AppConfigProvider(environment=environment, application=application, config=sdk_config)
74+
self._conf_store = AppConfigProvider(
75+
environment=environment,
76+
application=application,
77+
config=sdk_config or boto_config,
78+
boto3_client=boto3_client,
79+
boto3_session=boto3_session,
80+
)
6281

6382
@property
6483
def get_raw_configuration(self) -> Dict[str, Any]:

docs/requirements.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ watchdog==3.0.0 \
192192
--hash=sha256:d00e6be486affb5781468457b21a6cbe848c33ef43f9ea4a73b4882e5f188a44 \
193193
--hash=sha256:d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33
194194
# via mkdocs
195-
zipp==3.17.0 \
196-
--hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \
197-
--hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0
195+
zipp==3.19.1 \
196+
--hash=sha256:2828e64edb5386ea6a52e7ba7cdb17bb30a73a858f5eb6eb93d8d36f5ea26091 \
197+
--hash=sha256:35427f6d5594f4acf82d25541438348c26736fa9b3afa2754bcd63cdb99d8e8f
198198
# via importlib-metadata

docs/utilities/batch.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,20 @@ Inheritance is importance because we need to access message IDs and sequence num
491491
--8<-- "examples/batch_processing/src/pydantic_dynamodb_event.json"
492492
```
493493

494+
### Working with full batch failures
495+
496+
By default, the `BatchProcessor` will raise `BatchProcessingError` if all records in the batch fail to process, we do this to reflect the failure in your operational metrics.
497+
498+
When working with functions that handle batches with a small number of records, or when you use errors as a flow control mechanism, this behavior might not be desirable as your function might generate an unnaturally high number of errors. When this happens, the [Lambda service will scale down the concurrency of your function](https://docs.aws.amazon.com/lambda/latest/dg/services-sqs-errorhandling.html#services-sqs-backoff-strategy){target="_blank"}, potentially impacting performance.
499+
500+
For these scenarios, you can set the `raise_on_entire_batch_failure` option to `False`.
501+
502+
=== "working_with_entire_batch_fail.py"
503+
504+
```python hl_lines="10"
505+
--8<-- "examples/batch_processing/src/working_with_entire_batch_fail.py"
506+
```
507+
494508
### Accessing processed messages
495509

496510
Use the context manager to access a list of all returned values from your `record_handler` function.

0 commit comments

Comments
 (0)