Skip to content

Commit 3314893

Browse files
docs(parameters): snippets split, improved, and lint (#1564)
* chore(parameters): refactoring examples * chore(parameters): adding cache examples * chore(parameters): adding builtin examples and fix mypy errors * chore(parameters): adding all providers with custom config * chore(parameters): adding custom provider * chore(parameters): adding custom provider * chore(parameters): adding custom provider * chore(parameters): adding DynamoDB provider * chore(parameters): adding tests - mock * chore(parameters): adding more tests * chore(parameters): adding appconfig builtin provider * chore(parameters): adding final examples * chore(parameters): adding final examples * chore(parameters): highlights - small changes * fix(docs): broken link in boto3_session * fix(docs): improve constrast ratio * fix(docs): typing and correctness on null endpoint * (chore): addressing Ruben's feedbacks * (chore): import errors --------- Signed-off-by: Leandro Damascena <[email protected]> Co-authored-by: heitorlessa <[email protected]>
1 parent 04ee1d0 commit 3314893

File tree

52 files changed

+1638
-744
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+1638
-744
lines changed

docs/utilities/parameters.md

Lines changed: 219 additions & 503 deletions
Large diffs are not rendered by default.
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
AWSTemplateFormatVersion: '2010-09-09'
2+
Transform: AWS::Serverless-2016-10-31
3+
Description: 'DynamoDB Table example'
4+
Resources:
5+
ParameterTable:
6+
Type: AWS::DynamoDB::Table
7+
Properties:
8+
TableName: ParameterTable
9+
AttributeDefinitions:
10+
- AttributeName: IdKeyAttr
11+
AttributeType: S
12+
- AttributeName: SkKeyAttr
13+
AttributeType: S
14+
KeySchema:
15+
- AttributeName: IdKeyAttr
16+
KeyType: HASH
17+
- AttributeName: SkKeyAttr
18+
KeyType: RANGE
19+
TimeToLiveSpecification:
20+
AttributeName: expiration
21+
Enabled: true
22+
BillingMode: PAY_PER_REQUEST
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
AWSTemplateFormatVersion: '2010-09-09'
2+
Transform: AWS::Serverless-2016-10-31
3+
Description: 'DynamoDB Table example'
4+
Resources:
5+
ParameterTable:
6+
Type: AWS::DynamoDB::Table
7+
Properties:
8+
TableName: ParameterTable
9+
AttributeDefinitions:
10+
- AttributeName: id
11+
AttributeType: S
12+
- AttributeName: sk
13+
AttributeType: S
14+
KeySchema:
15+
- AttributeName: id
16+
KeyType: HASH
17+
- AttributeName: sk
18+
KeyType: RANGE
19+
TimeToLiveSpecification:
20+
AttributeName: expiration
21+
Enabled: true
22+
BillingMode: PAY_PER_REQUEST
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
AWSTemplateFormatVersion: '2010-09-09'
2+
Transform: AWS::Serverless-2016-10-31
3+
Description: 'DynamoDB Table example'
4+
Resources:
5+
ParameterTable:
6+
Type: AWS::DynamoDB::Table
7+
Properties:
8+
TableName: ParameterTable
9+
AttributeDefinitions:
10+
- AttributeName: id
11+
AttributeType: S
12+
KeySchema:
13+
- AttributeName: id
14+
KeyType: HASH
15+
TimeToLiveSpecification:
16+
AttributeName: expiration
17+
Enabled: true
18+
BillingMode: PAY_PER_REQUEST
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from typing import Any
2+
3+
import requests
4+
5+
from aws_lambda_powertools.utilities import parameters
6+
from aws_lambda_powertools.utilities.typing import LambdaContext
7+
8+
9+
def lambda_handler(event: dict, context: LambdaContext):
10+
try:
11+
# Retrieve a single parameter
12+
endpoint_comments: Any = parameters.get_app_config(
13+
name="config", environment="dev", application="comments", force_fetch=True
14+
)
15+
16+
# the value of this parameter is https://jsonplaceholder.typicode.com/comments/
17+
comments: requests.Response = requests.get(endpoint_comments)
18+
19+
return {"comments": comments.json()[:10], "statusCode": 200}
20+
except parameters.exceptions.GetParameterError as error:
21+
return {"comments": None, "message": str(error), "statusCode": 400}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from typing import Any
2+
3+
import requests
4+
5+
from aws_lambda_powertools.utilities import parameters
6+
from aws_lambda_powertools.utilities.typing import LambdaContext
7+
8+
9+
def lambda_handler(event: dict, context: LambdaContext):
10+
try:
11+
# Retrieve a single parameter
12+
endpoint_comments: Any = parameters.get_app_config(
13+
name="config", environment="dev", application="comments", max_age=20
14+
)
15+
16+
# the value of this parameter is https://jsonplaceholder.typicode.com/comments/
17+
comments: requests.Response = requests.get(endpoint_comments)
18+
19+
return {"comments": comments.json()[:10], "statusCode": 200}
20+
except parameters.exceptions.GetParameterError as error:
21+
return {"comments": None, "message": str(error), "statusCode": 400}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from typing import Any
2+
3+
import requests
4+
from botocore.config import Config
5+
6+
from aws_lambda_powertools.utilities import parameters
7+
from aws_lambda_powertools.utilities.typing import LambdaContext
8+
9+
config = Config(region_name="sa-east-1")
10+
appconf_provider = parameters.AppConfigProvider(environment="dev", application="comments", config=config)
11+
12+
13+
def lambda_handler(event: dict, context: LambdaContext):
14+
try:
15+
# Retrieve a single parameter
16+
endpoint_comments: Any = appconf_provider.get("config")
17+
18+
# the value of this parameter is https://jsonplaceholder.typicode.com/comments/
19+
comments: requests.Response = requests.get(endpoint_comments)
20+
21+
return {"comments": comments.json()[:10], "statusCode": 200}
22+
except parameters.exceptions.GetParameterError as error:
23+
return {"comments": None, "message": str(error), "statusCode": 400}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
from typing import Any
2+
3+
import requests
4+
5+
from aws_lambda_powertools.utilities import parameters
6+
from aws_lambda_powertools.utilities.typing import LambdaContext
7+
8+
dynamodb_provider = parameters.DynamoDBProvider(table_name="ParameterTable", endpoint_url="http://localhost:8000")
9+
10+
11+
def lambda_handler(event: dict, context: LambdaContext):
12+
13+
try:
14+
# Usually an endpoint is not sensitive data, so we store it in DynamoDB Table
15+
endpoint_comments: Any = dynamodb_provider.get("comments_endpoint")
16+
17+
comments: requests.Response = requests.get(endpoint_comments)
18+
19+
return {"comments": comments.json()[:10], "statusCode": 200}
20+
# general exception
21+
except Exception as error:
22+
return {"comments": None, "message": str(error), "statusCode": 400}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from typing import Any
2+
3+
import requests
4+
5+
from aws_lambda_powertools.utilities import parameters
6+
from aws_lambda_powertools.utilities.typing import LambdaContext
7+
8+
dynamodb_provider = parameters.DynamoDBProvider(
9+
table_name="ParameterTable", key_attr="IdKeyAttr", sort_attr="SkKeyAttr", value_attr="ValueAttr"
10+
)
11+
12+
13+
def lambda_handler(event: dict, context: LambdaContext):
14+
15+
try:
16+
# Usually an endpoint is not sensitive data, so we store it in DynamoDB Table
17+
endpoint_comments: Any = dynamodb_provider.get("comments_endpoint")
18+
19+
comments: requests.Response = requests.get(endpoint_comments)
20+
21+
return {"comments": comments.json()[:10], "statusCode": 200}
22+
# general exception
23+
except Exception as error:
24+
return {"comments": None, "message": str(error), "statusCode": 400}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
from typing import Any
2+
3+
import requests
4+
5+
from aws_lambda_powertools.utilities import parameters
6+
from aws_lambda_powertools.utilities.typing import LambdaContext
7+
8+
dynamodb_provider = parameters.DynamoDBProvider(table_name="ParameterTable")
9+
10+
11+
def lambda_handler(event: dict, context: LambdaContext):
12+
13+
try:
14+
# Retrieve multiple parameters using HASH KEY
15+
all_parameters: Any = dynamodb_provider.get_multiple("config")
16+
endpoint_comments = "https://jsonplaceholder.typicode.com/noexists/"
17+
limit = 2
18+
19+
for parameter, value in all_parameters.items():
20+
21+
if parameter == "endpoint_comments":
22+
endpoint_comments = value
23+
24+
if parameter == "limit":
25+
limit = int(value)
26+
27+
# the value of parameter is https://jsonplaceholder.typicode.com/comments/
28+
comments: requests.Response = requests.get(endpoint_comments)
29+
30+
return {"comments": comments.json()[limit]}
31+
# general exception
32+
except Exception as error:
33+
return {"comments": None, "message": str(error), "statusCode": 400}

0 commit comments

Comments
 (0)