Skip to content

Commit 09c6933

Browse files
Merge branch 'develop' into feat/ci-nox-metrics
2 parents d35725f + c509412 commit 09c6933

File tree

14 files changed

+235
-70
lines changed

14 files changed

+235
-70
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ complexity-baseline:
8686
$(info Maintenability index)
8787
poetry run radon mi aws_lambda_powertools
8888
$(info Cyclomatic complexity index)
89-
poetry run xenon --max-absolute C --max-modules A --max-average A aws_lambda_powertools --exclude aws_lambda_powertools/shared/json_encoder.py
89+
poetry run xenon --max-absolute C --max-modules A --max-average A aws_lambda_powertools --exclude aws_lambda_powertools/shared/json_encoder.py,aws_lambda_powertools/utilities/validation/base.py
9090

9191
#
9292
# Use `poetry version <major>/<minor></patch>` for version bump

aws_lambda_powertools/utilities/validation/base.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,18 @@
33

44
import fastjsonschema # type: ignore
55

6-
from .exceptions import InvalidSchemaFormatError, SchemaValidationError
6+
from aws_lambda_powertools.utilities.validation.exceptions import InvalidSchemaFormatError, SchemaValidationError
77

88
logger = logging.getLogger(__name__)
99

1010

11-
def validate_data_against_schema(data: Union[Dict, str], schema: Dict, formats: Optional[Dict] = None):
11+
def validate_data_against_schema(
12+
data: Union[Dict, str],
13+
schema: Dict,
14+
formats: Optional[Dict] = None,
15+
handlers: Optional[Dict] = None,
16+
provider_options: Optional[Dict] = None,
17+
):
1218
"""Validate dict data against given JSON Schema
1319
1420
Parameters
@@ -19,6 +25,11 @@ def validate_data_against_schema(data: Union[Dict, str], schema: Dict, formats:
1925
JSON Schema to validate against
2026
formats: Dict
2127
Custom formats containing a key (e.g. int64) and a value expressed as regex or callback returning bool
28+
handlers: Dict
29+
Custom methods to retrieve remote schemes, keyed off of URI scheme
30+
provider_options: Dict
31+
Arguments that will be passed directly to the underlying validation call, in this case fastjsonchema.validate.
32+
For all supported arguments see: https://horejsek.github.io/python-fastjsonschema/#fastjsonschema.validate
2233
2334
Raises
2435
------
@@ -29,7 +40,9 @@ def validate_data_against_schema(data: Union[Dict, str], schema: Dict, formats:
2940
"""
3041
try:
3142
formats = formats or {}
32-
fastjsonschema.validate(definition=schema, data=data, formats=formats)
43+
handlers = handlers or {}
44+
provider_options = provider_options or {}
45+
fastjsonschema.validate(definition=schema, data=data, formats=formats, handlers=handlers, **provider_options)
3346
except (TypeError, AttributeError, fastjsonschema.JsonSchemaDefinitionException) as e:
3447
raise InvalidSchemaFormatError(f"Schema received: {schema}, Formats: {formats}. Error: {e}")
3548
except fastjsonschema.JsonSchemaValueException as e:

aws_lambda_powertools/utilities/validation/exceptions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from typing import Any, List, Optional
22

3-
from ...exceptions import InvalidEnvelopeExpressionError
3+
from aws_lambda_powertools.exceptions import InvalidEnvelopeExpressionError
44

55

66
class SchemaValidationError(Exception):

aws_lambda_powertools/utilities/validation/validator.py

Lines changed: 44 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import logging
22
from typing import Any, Callable, Dict, Optional, Union
33

4+
from aws_lambda_powertools.middleware_factory import lambda_handler_decorator
45
from aws_lambda_powertools.utilities import jmespath_utils
5-
6-
from ...middleware_factory import lambda_handler_decorator
7-
from .base import validate_data_against_schema
6+
from aws_lambda_powertools.utilities.validation.base import validate_data_against_schema
87

98
logger = logging.getLogger(__name__)
109

@@ -16,8 +15,12 @@ def validator(
1615
context: Any,
1716
inbound_schema: Optional[Dict] = None,
1817
inbound_formats: Optional[Dict] = None,
18+
inbound_handlers: Optional[Dict] = None,
19+
inbound_provider_options: Optional[Dict] = None,
1920
outbound_schema: Optional[Dict] = None,
2021
outbound_formats: Optional[Dict] = None,
22+
outbound_handlers: Optional[Dict] = None,
23+
outbound_provider_options: Optional[Dict] = None,
2124
envelope: str = "",
2225
jmespath_options: Optional[Dict] = None,
2326
**kwargs: Any,
@@ -44,6 +47,17 @@ def validator(
4447
Custom formats containing a key (e.g. int64) and a value expressed as regex or callback returning bool
4548
outbound_formats: Dict
4649
Custom formats containing a key (e.g. int64) and a value expressed as regex or callback returning bool
50+
inbound_handlers: Dict
51+
Custom methods to retrieve remote schemes, keyed off of URI scheme
52+
outbound_handlers: Dict
53+
Custom methods to retrieve remote schemes, keyed off of URI scheme
54+
inbound_provider_options: Dict
55+
Arguments that will be passed directly to the underlying validation call, in this case fastjsonchema.validate.
56+
For all supported arguments see: https://horejsek.github.io/python-fastjsonschema/#fastjsonschema.validate
57+
outbound_provider_options: Dict
58+
Arguments that will be passed directly to the underlying validation call, in this case fastjsonchema.validate.
59+
For all supported arguments see: https://horejsek.github.io/python-fastjsonschema/#fastjsonschema.validate
60+
4761
4862
Example
4963
-------
@@ -127,13 +141,25 @@ def handler(event, context):
127141

128142
if inbound_schema:
129143
logger.debug("Validating inbound event")
130-
validate_data_against_schema(data=event, schema=inbound_schema, formats=inbound_formats)
144+
validate_data_against_schema(
145+
data=event,
146+
schema=inbound_schema,
147+
formats=inbound_formats,
148+
handlers=inbound_handlers,
149+
provider_options=inbound_provider_options,
150+
)
131151

132152
response = handler(event, context, **kwargs)
133153

134154
if outbound_schema:
135155
logger.debug("Validating outbound event")
136-
validate_data_against_schema(data=response, schema=outbound_schema, formats=outbound_formats)
156+
validate_data_against_schema(
157+
data=response,
158+
schema=outbound_schema,
159+
formats=outbound_formats,
160+
handlers=outbound_handlers,
161+
provider_options=outbound_provider_options,
162+
)
137163

138164
return response
139165

@@ -142,6 +168,8 @@ def validate(
142168
event: Any,
143169
schema: Dict,
144170
formats: Optional[Dict] = None,
171+
handlers: Optional[Dict] = None,
172+
provider_options: Optional[Dict] = None,
145173
envelope: Optional[str] = None,
146174
jmespath_options: Optional[Dict] = None,
147175
):
@@ -161,6 +189,10 @@ def validate(
161189
Alternative JMESPath options to be included when filtering expr
162190
formats: Dict
163191
Custom formats containing a key (e.g. int64) and a value expressed as regex or callback returning bool
192+
handlers: Dict
193+
Custom methods to retrieve remote schemes, keyed off of URI scheme
194+
provider_options: Dict
195+
Arguments that will be passed directly to the underlying validate call
164196
165197
Example
166198
-------
@@ -229,4 +261,10 @@ def handler(event, context):
229261
jmespath_options=jmespath_options,
230262
)
231263

232-
validate_data_against_schema(data=event, schema=schema, formats=formats)
264+
validate_data_against_schema(
265+
data=event,
266+
schema=schema,
267+
formats=formats,
268+
handlers=handlers,
269+
provider_options=provider_options,
270+
)

docs/utilities/validation.md

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,10 +147,10 @@ Here is a handy table with built-in envelopes along with their JMESPath expressi
147147
| **`API_GATEWAY_HTTP`** | `powertools_json(body)` |
148148
| **`API_GATEWAY_REST`** | `powertools_json(body)` |
149149
| **`CLOUDWATCH_EVENTS_SCHEDULED`** | `detail` |
150-
| **`CLOUDWATCH_LOGS`** | `awslogs.powertools_base64_gzip(data) | powertools_json(@).logEvents[*]` |
150+
| **`CLOUDWATCH_LOGS`** | `awslogs.powertools_base64_gzip(data)` or `powertools_json(@).logEvents[*]` |
151151
| **`EVENTBRIDGE`** | `detail` |
152152
| **`KINESIS_DATA_STREAM`** | `Records[*].kinesis.powertools_json(powertools_base64(data))` |
153-
| **`SNS`** | `Records[0].Sns.Message | powertools_json(@)` |
153+
| **`SNS`** | `Records[0].Sns.Message` or `powertools_json(@)` |
154154
| **`SQS`** | `Records[*].powertools_json(body)` |
155155

156156
## Advanced
@@ -199,3 +199,33 @@ You can use our built-in [JMESPath functions](./jmespath_functions.md){target="_
199199

200200
???+ info
201201
We use these for [built-in envelopes](#built-in-envelopes) to easily to decode and unwrap events from sources like Kinesis, CloudWatch Logs, etc.
202+
203+
### Validating with external references
204+
205+
JSON Schema [allows schemas to reference other schemas](https://json-schema.org/understanding-json-schema/structuring#dollarref) using the `$ref` keyword with a URI value. By default, `fastjsonschema` will make a HTTP request to resolve this URI.
206+
207+
You can use `handlers` parameter to have full control over how references schemas are fetched. This is useful when you might want to optimize caching, reducing HTTP calls, or fetching them from non-HTTP endpoints.
208+
209+
=== "custom_handlers.py"
210+
211+
```python hl_lines="1 7 8 11"
212+
--8<-- "examples/validation/src/custom_handlers.py"
213+
```
214+
215+
=== "custom_handlers_parent_schema"
216+
217+
```python hl_lines="1 7"
218+
--8<-- "examples/validation/src/custom_handlers_schema.py"
219+
```
220+
221+
=== "custom_handlers_child_schema"
222+
223+
```python hl_lines="12"
224+
--8<-- "examples/validation/src/custom_handlers_schema.py"
225+
```
226+
227+
=== "custom_handlers_payload.json"
228+
229+
```json hl_lines="2"
230+
--8<-- "examples/validation/src/custom_handlers_payload.json"
231+
```
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from custom_handlers_schema import CHILD_SCHEMA, PARENT_SCHEMA
2+
3+
from aws_lambda_powertools.utilities.typing import LambdaContext
4+
from aws_lambda_powertools.utilities.validation import validator
5+
6+
7+
# Function to return the child schema
8+
def get_child_schema(uri: str):
9+
return CHILD_SCHEMA
10+
11+
12+
@validator(inbound_schema=PARENT_SCHEMA, inbound_handlers={"https": get_child_schema})
13+
def lambda_handler(event, context: LambdaContext) -> dict:
14+
return event
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"ParentSchema":
3+
{
4+
"project": "powertools"
5+
}
6+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
PARENT_SCHEMA = {
2+
"$schema": "http://json-schema.org/draft-07/schema#",
3+
"$id": "https://example.com/schemas/parent.json",
4+
"type": "object",
5+
"properties": {
6+
"ParentSchema": {
7+
"$ref": "https://SCHEMA",
8+
},
9+
},
10+
}
11+
12+
CHILD_SCHEMA = {
13+
"$schema": "http://json-schema.org/draft-07/schema#",
14+
"$id": "https://example.com/schemas/child.json",
15+
"type": "object",
16+
"properties": {
17+
"project": {
18+
"type": "string",
19+
},
20+
},
21+
"required": ["project"],
22+
}

layer/scripts/layer-balancer/go.mod

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,25 @@ module layerbalancer
33
go 1.18
44

55
require (
6-
github.com/aws/aws-sdk-go-v2 v1.28.0
7-
github.com/aws/aws-sdk-go-v2/config v1.27.19
8-
github.com/aws/aws-sdk-go-v2/service/lambda v1.54.7
6+
github.com/aws/aws-sdk-go-v2 v1.29.0
7+
github.com/aws/aws-sdk-go-v2/config v1.27.20
8+
github.com/aws/aws-sdk-go-v2/service/lambda v1.55.0
99
golang.org/x/exp v0.0.0-20230321023759-10a507213a29
1010
golang.org/x/sync v0.7.0
1111
)
1212

1313
require (
1414
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2 // indirect
15-
github.com/aws/aws-sdk-go-v2/credentials v1.17.19 // indirect
16-
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.6 // indirect
17-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.10 // indirect
18-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.10 // indirect
15+
github.com/aws/aws-sdk-go-v2/credentials v1.17.20 // indirect
16+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.7 // indirect
17+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.11 // indirect
18+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.11 // indirect
1919
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect
2020
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 // indirect
21-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.12 // indirect
22-
github.com/aws/aws-sdk-go-v2/service/sso v1.20.12 // indirect
23-
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.6 // indirect
24-
github.com/aws/aws-sdk-go-v2/service/sts v1.28.13 // indirect
21+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.13 // indirect
22+
github.com/aws/aws-sdk-go-v2/service/sso v1.21.0 // indirect
23+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.25.0 // indirect
24+
github.com/aws/aws-sdk-go-v2/service/sts v1.29.0 // indirect
2525
github.com/aws/smithy-go v1.20.2 // indirect
2626
github.com/jmespath/go-jmespath v0.4.0 // indirect
2727
)

layer/scripts/layer-balancer/go.sum

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
1-
github.com/aws/aws-sdk-go-v2 v1.28.0 h1:ne6ftNhY0lUvlazMUQF15FF6NH80wKmPRFG7g2q6TCw=
2-
github.com/aws/aws-sdk-go-v2 v1.28.0/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM=
1+
github.com/aws/aws-sdk-go-v2 v1.29.0 h1:uMlEecEwgp2gs6CsM6ugquNHr6mg0LHylPBR8u5Ojac=
2+
github.com/aws/aws-sdk-go-v2 v1.29.0/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM=
33
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2 h1:x6xsQXGSmW6frevwDA+vi/wqhp1ct18mVXYN08/93to=
44
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2/go.mod h1:lPprDr1e6cJdyYeGXnRaJoP4Md+cDBvi2eOj00BlGmg=
5-
github.com/aws/aws-sdk-go-v2/config v1.27.19 h1:+DBS8gJP6VsxYkZ6UEV0/VsRM2rYpbQCYsosW9RRmeQ=
6-
github.com/aws/aws-sdk-go-v2/config v1.27.19/go.mod h1:KzZcioJWzy9oV+oS5CobYXlDtU9+eW7bPG1g7gizTW4=
7-
github.com/aws/aws-sdk-go-v2/credentials v1.17.19 h1:R18G7nBBGLby51CFEqUBFF2IVl7LUdCtYj6iosUwh/0=
8-
github.com/aws/aws-sdk-go-v2/credentials v1.17.19/go.mod h1:xr9kUMnaLTB866HItT6pg58JgiBP77fSQLBwIa//zk8=
9-
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.6 h1:vVOuhRyslJ6T/HteG71ZWCTas1q2w6f0NKsNbkXHs/A=
10-
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.6/go.mod h1:jimWaqLiT0sJGLh51dKCLLtExRYPtMU7MpxuCgtbkxg=
11-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.10 h1:LZIUb8sQG2cb89QaVFtMSnER10gyKkqU1k3hP3g9das=
12-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.10/go.mod h1:BRIqay//vnIOCZjoXWSLffL2uzbtxEmnSlfbvVh7Z/4=
13-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.10 h1:HY7CXLA0GiQUo3WYxOP7WYkLcwvRX4cLPf5joUcrQGk=
14-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.10/go.mod h1:kfRBSxRa+I+VyON7el3wLZdrO91oxUxEwdAaWgFqN90=
5+
github.com/aws/aws-sdk-go-v2/config v1.27.20 h1:oQSn/KNUMV54X0FBEDQQ2ymNfcKyMT81ar8gyvMzzqs=
6+
github.com/aws/aws-sdk-go-v2/config v1.27.20/go.mod h1:IbEMotJrWc3Bh7++HXZDlviHZP7kHrkHU3PNl9e17po=
7+
github.com/aws/aws-sdk-go-v2/credentials v1.17.20 h1:VYTCplAeOeBv5InTtrmF61OIwD4aHKryg3KZ6hf7dsI=
8+
github.com/aws/aws-sdk-go-v2/credentials v1.17.20/go.mod h1:ktubcFYvbN8++72jVM9IJoQH6Q2TP+Z7r2VbV1AaESU=
9+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.7 h1:54QUEXjkE1SlxHmRA3gBXA52j/ZSAgdOfAFGv1NsPCY=
10+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.7/go.mod h1:bQRjJsdSMzmo/qbtGeBtPbIMp1IgQ+9R9jYJLm12uJA=
11+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.11 h1:ltkhl3I9ddcRR3Dsy+7bOFFq546O8OYsfNEXVIyuOSE=
12+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.11/go.mod h1:H4D8JoCFNJwnT7U5U8iwgG24n71Fx2I/ZP/18eYFr9g=
13+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.11 h1:+BgX2AY7yV4ggSwa80z/yZIJX+e0jnNxjMLVyfpSXM0=
14+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.11/go.mod h1:DlBATBSDCz30BCdRFldmyLsAzJwi2pdQ+YSdJTHhTUI=
1515
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU=
1616
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY=
1717
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs=
1818
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2/go.mod h1:5CsjAbs3NlGQyZNFACh+zztPDI7fU6eW9QsxjfnuBKg=
19-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.12 h1:kO2J7WMroF/OTHN9WTcUtMjPhJ7ZoNxx0dwv6UCXQgY=
20-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.12/go.mod h1:mrNxrjYvXaSjZe5fkKaWgDnOQ6BExLn/7Ru9OpRsMPY=
21-
github.com/aws/aws-sdk-go-v2/service/lambda v1.54.7 h1:Rr4YGZLMHz4GqQRc4Bu1YNvvdYHVSUOvjst4UcXFqTU=
22-
github.com/aws/aws-sdk-go-v2/service/lambda v1.54.7/go.mod h1:kYcUu4I4LBJ+fdJpPOcbQcrcbh3aPk7Ljr6rpm9b5FY=
23-
github.com/aws/aws-sdk-go-v2/service/sso v1.20.12 h1:FsYii6U+2k8ynYBo+pywlCBY9HNAFRh+iICRHbn+Qyw=
24-
github.com/aws/aws-sdk-go-v2/service/sso v1.20.12/go.mod h1:j9Rps+Lcs2A0tYypWsNBeJOjgsIYUf1Styppo9Es0Wo=
25-
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.6 h1:lEE+xEcq3lh9bk362tgErP1+n689q5ERdmTwmF1XT3M=
26-
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.6/go.mod h1:2tR0x1DCL5IgnVZ1NQNFDNg5/XL/kiQgWI5l7I/N5Js=
27-
github.com/aws/aws-sdk-go-v2/service/sts v1.28.13 h1:TSzmuUeruVJ4XWYp3bYzKCXue70ECpJWmbP3UfEvhYY=
28-
github.com/aws/aws-sdk-go-v2/service/sts v1.28.13/go.mod h1:FppRtFjBA9mSWTj2cIAWCP66+bbBPMuPpBfWRXC5Yi0=
19+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.13 h1:3A8vxp65nZy6aMlSCBvpIyxIbAN0DOSxaPDZuzasxuU=
20+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.13/go.mod h1:IxJ/pMQ/Y+MDFGo6pQRyqzKKwtGMHb5IWp5PXSQr8dM=
21+
github.com/aws/aws-sdk-go-v2/service/lambda v1.55.0 h1:vrwMgAOU8ZXrWs0QZOOAFRdWFNxoL2DdH4doD0BkmU4=
22+
github.com/aws/aws-sdk-go-v2/service/lambda v1.55.0/go.mod h1:ZVT/r5NG5Fxjaw7rgDmOYVu0y2KELlQCcda/f+yypUQ=
23+
github.com/aws/aws-sdk-go-v2/service/sso v1.21.0 h1:P0zUA+5liaoNILI/btBBQHC09PFPyRJr+w+Xt9KHKck=
24+
github.com/aws/aws-sdk-go-v2/service/sso v1.21.0/go.mod h1:0bmRzdsq9/iNyP02H4UV0ZRjFx6qQBqRvfCJ4trFgjE=
25+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.25.0 h1:jPV8U9r3msO9ECm9geW8PGjU/rz8vfPTPmIBbA83W3M=
26+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.25.0/go.mod h1:B3G77bQDCmhp0RV0P/J9Kd4/qsymdWVhzTe3btAtywE=
27+
github.com/aws/aws-sdk-go-v2/service/sts v1.29.0 h1:dqW4XRwPE/poWSqVntpeXLHzpPK6AOfKmL9QWDYl9aw=
28+
github.com/aws/aws-sdk-go-v2/service/sts v1.29.0/go.mod h1:j8+hrxlmLR8ZQo6ytTAls/JFrt5bVisuS6PD8gw2VBw=
2929
github.com/aws/smithy-go v1.20.2 h1:tbp628ireGtzcHDDmLT/6ADHidqnwgF57XOXZe6tp4Q=
3030
github.com/aws/smithy-go v1.20.2/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E=
3131
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=

0 commit comments

Comments
 (0)