gpt4 book ai didi

serverless-framework - 将 XRAY Tracing 添加到非休息功能,例如 SQS、Cognito 触发器等

转载 作者:行者123 更新时间:2023-12-04 14:09:50 28 4
gpt4 key购买 nike

使用 Serverless framework ,我有未附加到 API 网关端点的函数,例如:

  • 认知触发器
  • S3 事件
  • DynamoDB 流
  • SQS 事件

我也在使用 XRAY 追踪,我在我的 serverless.yml 文件中将其设置为 tracing: true。似乎没有跟踪到这些功能,我收到的调试消息是:

Ignoring flush on subsegment 20dcd559aa2ab487. Associated segment is marked as not sampled.

有没有办法通过无服务器或 cloudformation 添加这些功能?

提前致谢。

最佳答案

要为所有服务的 Lambda 函数启用 X-Ray 跟踪,您只需在提供商级别设置相应的跟踪配置:

provider:
tracing:
lambda: true

如果您想在每个函数级别设置跟踪,您可以在函数定义中使用跟踪配置:

functions:
myFunction:
handler: index.handler
tracing: true

将跟踪设置为 true 会转换为事件跟踪配置。您可以通过以字符串形式提供所需的配置来覆盖此行为:

functions:
myFunction:
handler: index.handler
tracing: PassThrough

另请注意,您可以混合提供程序级别和功能级别的配置。所有函数都将继承提供者级别的配置,然后可以在单个函数的基础上进行覆盖:

service:
name: my-tracing-service

provider:
name: aws
stage: dev
runtime: nodejs8.10
tracing:
lambda: true

functions:
myFunc1: # this function will inherit the provider-level tracing configuration
handler: index.func1
myFunc2:
handler: handler.func2
tracing: PassThrough # here we're overwriting the provider-level configuration

建议使用上述跟踪配置为 Lambda 设置 X-Ray 跟踪,因为这样做将确保 X-Ray 设置由无服务器框架核心通过 CloudFormation 进行管理。

您可以获得更细化的信息并指定要跟踪的资源:

打开您的 serverless.yml 并在提供程序部分添加一个跟踪配置:

provider:
...
tracing:
apiGateway: true
lambda: true

重要提示:由于 CloudFormation 的限制,无法在目前不使用跟踪的现有部署上启用 AWS X-Ray Tracing。

如果您想使用 AWS X-Ray Tracing for Lambda,请删除旧的无服务器部署并重新部署启用跟踪的 lambda。

最后,不要忘记配置正确的 IAM 权限策略:

provider:
...
iamRoleStatements:
- Effect: Allow
Action:
...
- xray:PutTraceSegments
- xray:PutTelemetryRecords
Resource: "*"

要为 AWS Lambda 调用的其他 AWS 服务启用 X-Ray 跟踪,您必须安装 AWS X-Ray SDK。在您的项目目录中,运行:

$ npm install -s aws-xray-sdk更新您的 Lambda 代码并使用 X-Ray SDK 包装 AWS SDK。变化:

const AWS = require('aws-sdk');

收件人:

const AWSXRay = require('aws-xray-sdk-core');
const AWS = AWSXRay.captureAWS(require('aws-sdk'));

截至发布 Serverless v140

关于serverless-framework - 将 XRAY Tracing 添加到非休息功能,例如 SQS、Cognito 触发器等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65207520/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com