AWS.Lambda.Powertools.Tracing 1.5.0
前缀已保留
dotnet add package AWS.Lambda.Powertools.Tracing --version 1.5.0
NuGet\Install-Package AWS.Lambda.Powertools.Tracing -Version 1.5.0
该命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用了 NuGet 模块的 Install-Package 版本。
<PackageReference Include="AWS.Lambda.Powertools.Tracing" Version="1.5.0" />
对于支持 PackageReference 的项目,将此 XML 节点复制到项目文件中以引用包。
paket add AWS.Lambda.Powertools.Tracing --version 1.5.0
NuGet 团队不提供对此客户端的支持。请联系其 管理员 以获得支持。
#r "nuget: AWS.Lambda.Powertools.Tracing, 1.5.0"
#r 指令可用于 F# Interactive 和 Polyglot Notebooks。将此内容复制到交互式工具或脚本的源代码中以引用包。
// Install AWS.Lambda.Powertools.Tracing as a Cake Addin #addin nuget:?package=AWS.Lambda.Powertools.Tracing&version=1.5.0 // Install AWS.Lambda.Powertools.Tracing as a Cake Tool #tool nuget:?package=AWS.Lambda.Powertools.Tracing&version=1.5.0
NuGet 团队不提供对此客户端的支持。请联系其 管理员 以获得支持。
AWS.Lambda.Powertools.Tracing
AWS Lambda(.NET)Powertools 跟踪是一个针对 AWS X-Ray .NET SDK 的精简包装器,提供了一个减少执行常见跟踪任务开销的功能。
主要功能
- 辅助方法以改善创建 自定义 AWS X-Ray 子段 的开发者体验。
- 将冷启动作为注释捕获。
- 捕获函数响应和完整异常作为元数据。
- 在开发多线程时体验更好。
- 自动修复 AWS X-Ray 支持的模块
阅读文档
要查看完整功能列表,请访问 docs.powertools.aws.dev/lambda/dotnet/core/tracing/
GitHub: https://github.com/aws-powertools/powertools-lambda-dotnet/
示例函数
在此处查看完整示例: https://github.com/aws-powertools/powertools-lambda-dotnet/tree/develop/examples/Tracing
public class Function
{
/// <summary>
/// Lambda Handler
/// </summary>
/// <param name="apigwProxyEvent">API Gateway Proxy event</param>
/// <param name="context">AWS Lambda context</param>
/// <returns>API Gateway Proxy response</returns>
[Logging(LogEvent = true)]
[Tracing(CaptureMode = TracingCaptureMode.ResponseAndError)]
public async Task<APIGatewayProxyResponse> FunctionHandler(APIGatewayProxyRequest apigwProxyEvent,
ILambdaContext context)
{
var requestContextRequestId = apigwProxyEvent.RequestContext.RequestId;
Logger.LogInformation("Getting ip address from external service");
var location = await GetCallingIp().ConfigureAwait(false);
var lookupRecord = new LookupRecord(lookupId: requestContextRequestId,
greeting: "Hello Powertools for AWS Lambda (.NET)", ipAddress: location);
// Trace Fluent API
Tracing.WithSubsegment("LoggingResponse",
subsegment =>
{
subsegment.AddAnnotation("AccountId", apigwProxyEvent.RequestContext.AccountId);
subsegment.AddMetadata("LookupRecord", lookupRecord);
});
try
{
await SaveRecordInDynamo(lookupRecord);
return new APIGatewayProxyResponse
{
Body = JsonSerializer.Serialize(lookupRecord),
StatusCode = 200,
Headers = new Dictionary<string, string> { { "Content-Type", "application/json" } }
};
}
catch (Exception e)
{
Logger.LogError(e.Message);
return new APIGatewayProxyResponse
{
Body = e.Message,
StatusCode = 500,
Headers = new Dictionary<string, string> { { "Content-Type", "application/json" } }
};
}
}
/// <summary>
/// Calls location api to return IP address
/// </summary>
/// <returns>IP address string</returns>
[Tracing(SegmentName = "Location service")]
private static async Task<string?> GetCallingIp()
{
if (_httpClient == null) return "0.0.0.0";
_httpClient.DefaultRequestHeaders.Accept.Clear();
_httpClient.DefaultRequestHeaders.Add("User-Agent", "AWS Lambda .Net Client");
try
{
Logger.LogInformation("Calling Check IP API");
var response = await _httpClient.GetStringAsync("https://checkip.amazonaws.com/").ConfigureAwait(false);
var ip = response.Replace("\n", "");
Logger.LogInformation($"API response returned {ip}");
return ip;
}
catch (Exception ex)
{
Logger.LogError(ex);
throw;
}
}
/// <summary>
/// Saves the lookup record in DynamoDB
/// </summary>
/// <param name="lookupRecord">Instance of LookupRecord</param>
/// <returns>A Task that can be used to poll or wait for results, or both.</returns>
[Tracing(SegmentName = "DynamoDB")]
private static async Task SaveRecordInDynamo(LookupRecord lookupRecord)
{
try
{
Logger.LogInformation($"Saving record with id {lookupRecord.LookupId}");
await _dynamoDbContext?.SaveAsync(lookupRecord)!;
}
catch (AmazonDynamoDBException e)
{
Logger.LogCritical(e.Message);
throw;
}
}
}
示例输出
产品 | 版本 兼容的以及额外的计算目标框架版本。 |
---|---|
.NET | net6.0 兼容。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 兼容。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。 |
-
net6.0
- AspectInjector (>= 2.8.1)
- AWSSDK.XRay (>= 3.7.300.54)
- AWSXRayRecorder.Core (>= 2.14.0)
- AWSXRayRecorder.Handlers.AwsSdk (>= 2.12.0)
-
net8.0
- AspectInjector (>= 2.8.1)
- AWSSDK.XRay (>= 3.7.300.54)
- AWSXRayRecorder.Core (>= 2.14.0)
- AWSXRayRecorder.Handlers.AwsSdk (>= 2.12.0)
NuGet包 (1)
显示依赖AWS.Lambda.Powertools.Tracing的顶部1个NuGet包
包 | 下载 |
---|---|
Lambifast
包描述 |
GitHub仓库 (4)
显示依赖AWS.Lambda.Powertools.Tracing的前4个最受欢迎的GitHub仓库
仓库 | 星级 |
---|---|
aws/aws-lambda-dotnet
库、示例和工具,帮助.NET Core开发者开发AWS Lambda函数。
|
|
aws-samples/serverless-test-samples
本存储库旨在为实施无服务器应用程序的综合测试套件提供指导。
|
|
aws-powertools/powertools-lambda-dotnet
Powertools 是一个用于实施无服务器最佳实践和加速开发者速度的开发者工具包。
|
|
aws-samples/serverless-dotnet-demo
|
版本 | 下载 | 最后更新 |
---|---|---|
1.5.0 | 1,260 | 7/25/2024 |
1.4.2 | 49,989 | 3/21/2024 |
1.4.1 | 8,723 | 3/10/2024 |
1.4.0 | 15,342 | 2/16/2024 |
1.3.2 | 59,445 | 9/19/2023 |
1.2.0 | 10,503 | 9/7/2023 |
1.1.2 | 10,910 | 8/22/2023 |
1.1.1 | 21,841 | 6/21/2023 |
1.1.0 | 18,150 | 5/5/2023 |
1.0.1 | 15,306 | 4/6/2023 |
1.0.0 | 4,077 | 2/24/2023 |
0.0.2-preview | 198 | 1/18/2023 |
0.0.1-preview.1 | 3,708 | 8/1/2022 |