Skip to content

Commit 07a6ccf

Browse files
Using parameter utility in the example
1 parent abf6a93 commit 07a6ccf

File tree

3 files changed

+37
-28
lines changed

3 files changed

+37
-28
lines changed

docs/utilities/data_classes.md

+16-28
Original file line numberDiff line numberDiff line change
@@ -1095,6 +1095,22 @@ This example is based on the AWS Blog post [Introducing Amazon S3 Object Lambda
10951095
file_key = event.detail.object.key
10961096
```
10971097

1098+
### Secrets Manager
1099+
1100+
AWS Secrets Manager rotation uses an AWS Lambda function to update the secret. [Click here](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html){target="_blank"} for more information about rotating AWS Secrets Manager secrets.
1101+
1102+
=== "app.py"
1103+
1104+
```python hl_lines="2 7 11"
1105+
--8<-- "examples/event_sources/src/secrets_manager.py"
1106+
```
1107+
1108+
=== "Secrets Manager Example Event"
1109+
1110+
```json
1111+
--8<-- "tests/events/secretsManagerEvent.json"
1112+
```
1113+
10981114
### SES
10991115

11001116
=== "app.py"
@@ -1161,34 +1177,6 @@ You can register your Lambda functions as targets within an Amazon VPC Lattice s
11611177
--8<-- "examples/event_sources/src/vpc_lattice_payload.json"
11621178
```
11631179

1164-
### Secrets Manager
1165-
1166-
=== "app.py"
1167-
1168-
```python
1169-
import boto3
1170-
1171-
from aws_lambda_powertools.utilities.data_classes import event_source, SecretsManagerEvent
1172-
1173-
@event_source(data_class=SecretsManagerEvent)
1174-
def lambda_handler(event: SecretsManagerEvent, context):
1175-
service_client = boto3.client('secretsmanager', endpoint_url=os.environ['SECRETS_MANAGER_ENDPOINT'])
1176-
secret = service_client.get_secret_value(
1177-
SecretId=event.secret_id,
1178-
VersionId=event.client_request_token,
1179-
VersionStage="AWSCURRENT"
1180-
)
1181-
# {'Name': 'MyTestDatabaseSecret','SecretString': '{\n "username":"david",\n "password":"EXAMPLE-PASSWORD"\n}\n',}
1182-
# work with secrets afterwards
1183-
# see - https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas
1184-
...
1185-
```
1186-
=== "Secrets Manager Example Event"
1187-
1188-
```json
1189-
--8<-- "tests/events/secretsManagerEvent.json"
1190-
```
1191-
11921180
## Advanced
11931181

11941182
### Debugging
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
from aws_lambda_powertools.utilities import parameters
2+
from aws_lambda_powertools.utilities.data_classes import SecretsManagerEvent, event_source
3+
4+
secrets_provider = parameters.SecretsProvider()
5+
6+
7+
@event_source(data_class=SecretsManagerEvent)
8+
def lambda_handler(event: SecretsManagerEvent, context):
9+
# Getting secret value using Parameter utility
10+
# See https://docs.powertools.aws.dev/lambda/python/latest/utilities/parameters/
11+
secret = secrets_provider.get(event.secret_id, VersionId=event.client_request_token, VersionStage="AWSCURRENT")
12+
13+
# You need to work with secrets afterwards
14+
# Check more examples: https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas
15+
16+
return secret
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"SecretId":"arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestDatabaseSecret-a1b2c3",
3+
"ClientRequestToken":"550e8400-e29b-41d4-a716-446655440000",
4+
"Step":"createSecret"
5+
}

0 commit comments

Comments
 (0)