Skip to content

Commit 30decb2

Browse files
authored
docs(metadata): extract inline code examples into snippet files (#1191)
1 parent 9c3b12e commit 30decb2

3 files changed

Lines changed: 86 additions & 58 deletions

File tree

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// This file is referenced by docs/utilities/metadata.md
2+
// via pymdownx.snippets (mkdocs).
3+
4+
namespace AWS.Lambda.Powertools.Docs.Snippets.Metadata;
5+
6+
// --8<-- [start:getting_started]
7+
using AWS.Lambda.Powertools.Metadata;
8+
9+
public class Function
10+
{
11+
public string Handler(object input, ILambdaContext context)
12+
{
13+
var azId = LambdaMetadata.AvailabilityZoneId;
14+
return $"Running in AZ: {azId}";
15+
}
16+
}
17+
// --8<-- [end:getting_started]
18+
19+
// --8<-- [start:error_handling]
20+
using AWS.Lambda.Powertools.Metadata;
21+
using AWS.Lambda.Powertools.Metadata.Exceptions;
22+
23+
try
24+
{
25+
var azId = LambdaMetadata.AvailabilityZoneId;
26+
}
27+
catch (LambdaMetadataException ex)
28+
{
29+
Console.WriteLine($"Failed to get metadata: {ex.Message}");
30+
31+
if (ex.StatusCode != -1)
32+
Console.WriteLine($"HTTP Status: {ex.StatusCode}");
33+
}
34+
// --8<-- [end:error_handling]
35+
36+
// --8<-- [start:refresh_metadata]
37+
LambdaMetadata.Refresh();
38+
// --8<-- [end:refresh_metadata]

docs/snippets/metadata/UseCases.cs

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// This file is referenced by docs/utilities/metadata.md
2+
// via pymdownx.snippets (mkdocs).
3+
4+
namespace AWS.Lambda.Powertools.Docs.Snippets.Metadata;
5+
6+
// --8<-- [start:multi_az_routing]
7+
using AWS.Lambda.Powertools.Metadata;
8+
9+
public class Function
10+
{
11+
public async Task<string> Handler(OrderRequest request, ILambdaContext context)
12+
{
13+
var endpoint = LambdaMetadata.AvailabilityZoneId switch
14+
{
15+
"use1-az1" => "https://service-az1.internal",
16+
"use1-az2" => "https://service-az2.internal",
17+
_ => "https://service.internal"
18+
};
19+
20+
return await ProcessOrder(request, endpoint);
21+
}
22+
}
23+
// --8<-- [end:multi_az_routing]
24+
25+
// --8<-- [start:logging_with_metadata]
26+
using AWS.Lambda.Powertools.Logging;
27+
using AWS.Lambda.Powertools.Metadata;
28+
29+
public class Function
30+
{
31+
public Function()
32+
{
33+
Logger.AppendKey("az_id", LambdaMetadata.AvailabilityZoneId);
34+
}
35+
36+
[Logging]
37+
public string Handler(object input, ILambdaContext context)
38+
{
39+
Logger.LogInformation("Processing request");
40+
return "Success";
41+
}
42+
}
43+
// --8<-- [end:logging_with_metadata]

docs/utilities/metadata.md

Lines changed: 5 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,7 @@ dotnet add package AWS.Lambda.Powertools.Metadata
2222
## Getting started
2323

2424
```csharp
25-
using AWS.Lambda.Powertools.Metadata;
26-
27-
public class Function
28-
{
29-
public string Handler(object input, ILambdaContext context)
30-
{
31-
var azId = LambdaMetadata.AvailabilityZoneId;
32-
return $"Running in AZ: {azId}";
33-
}
34-
}
25+
--8<-- "docs/snippets/metadata/GettingStarted.cs:getting_started"
3526
```
3627

3728
## Available metadata
@@ -43,28 +34,15 @@ public class Function
4334
## Error handling
4435

4536
```csharp
46-
using AWS.Lambda.Powertools.Metadata;
47-
using AWS.Lambda.Powertools.Metadata.Exceptions;
48-
49-
try
50-
{
51-
var azId = LambdaMetadata.AvailabilityZoneId;
52-
}
53-
catch (LambdaMetadataException ex)
54-
{
55-
Console.WriteLine($"Failed to get metadata: {ex.Message}");
56-
57-
if (ex.StatusCode != -1)
58-
Console.WriteLine($"HTTP Status: {ex.StatusCode}");
59-
}
37+
--8<-- "docs/snippets/metadata/GettingStarted.cs:error_handling"
6038
```
6139

6240
## Refreshing metadata
6341

6442
Metadata remains constant for the Lambda sandbox lifetime. If you need to force a refresh:
6543

6644
```csharp
67-
LambdaMetadata.Refresh();
45+
--8<-- "docs/snippets/metadata/GettingStarted.cs:refresh_metadata"
6846
```
6947

7048
## Thread safety
@@ -76,42 +54,11 @@ LambdaMetadata.Refresh();
7654
### Multi-AZ routing
7755

7856
```csharp
79-
using AWS.Lambda.Powertools.Metadata;
80-
81-
public class Function
82-
{
83-
public async Task<string> Handler(OrderRequest request, ILambdaContext context)
84-
{
85-
var endpoint = LambdaMetadata.AvailabilityZoneId switch
86-
{
87-
"use1-az1" => "https://service-az1.internal",
88-
"use1-az2" => "https://service-az2.internal",
89-
_ => "https://service.internal"
90-
};
91-
92-
return await ProcessOrder(request, endpoint);
93-
}
94-
}
57+
--8<-- "docs/snippets/metadata/UseCases.cs:multi_az_routing"
9558
```
9659

9760
### Logging
9861

9962
```csharp
100-
using AWS.Lambda.Powertools.Logging;
101-
using AWS.Lambda.Powertools.Metadata;
102-
103-
public class Function
104-
{
105-
public Function()
106-
{
107-
Logger.AppendKey("az_id", LambdaMetadata.AvailabilityZoneId);
108-
}
109-
110-
[Logging]
111-
public string Handler(object input, ILambdaContext context)
112-
{
113-
Logger.LogInformation("Processing request");
114-
return "Success";
115-
}
116-
}
63+
--8<-- "docs/snippets/metadata/UseCases.cs:logging_with_metadata"
11764
```

0 commit comments

Comments
 (0)