Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Aws lambda 在无服务器框架中有条件地为API网关和Lambda启用x-ray_Aws Lambda_Aws Api Gateway_Serverless Framework_Serverless_Aws Xray - Fatal编程技术网

Aws lambda 在无服务器框架中有条件地为API网关和Lambda启用x-ray

Aws lambda 在无服务器框架中有条件地为API网关和Lambda启用x-ray,aws-lambda,aws-api-gateway,serverless-framework,serverless,aws-xray,Aws Lambda,Aws Api Gateway,Serverless Framework,Serverless,Aws Xray,只有在我需要节省一些钱的时候,我才尝试启用x射线。下面的serverless.yml从.env文件加载环境变量。然而,无服务器似乎只允许true、活动和直通。有没有可能绕过这个问题?谢谢 # serverless.yml provider: name: aws runtime: nodejs10.x logs: restApi: ${env:ENABLE_X_RAY, false} tracing: apiGateway: ${env:ENABLE_X_RAY,

只有在我需要节省一些钱的时候,我才尝试启用x射线。下面的
serverless.yml
.env
文件加载环境变量。然而,无服务器似乎只允许
true
活动
直通
。有没有可能绕过这个问题?谢谢

# serverless.yml

provider:
  name: aws
  runtime: nodejs10.x
  logs:
    restApi: ${env:ENABLE_X_RAY, false}
  tracing:
    apiGateway: ${env:ENABLE_X_RAY, false}
    lambda: ${env:ENABLE_X_RAY, false}

plugins:
  - serverless-dotenv-plugin

如果服务的入口点是API网关,则可以在AWS X-Ray控制台上配置采样规则和限制,或使用API控制X-Ray采样的请求数

有关X射线取样的介绍,请参阅本文:

如果您对此有进一步的问题,请告诉我

更新

采样规则只能在X射线中指定。 这允许您限制跟踪的数量,无论您有多少API网关或EC2实例来处理您的请求

小提示:到目前为止,只有当入口点是API网关或实例(EC2或其他)上运行了>2.0版本的X射线守护程序时,才支持这种采样模式。如果入口点为lambda,则目前不支持此采样效果,但很快将支持此效果

在您的情况下,您似乎正在使用API网关作为入口点,因此您可以确定并使其在所有API网关端点上全局生效


您还可以为不同的URL配置不同的采样规则,例如/auth是以5个测试点采样的,而/products是根据您的用例为具有不同存储库的1个测试点配置的。

感谢@Rohit提供信息。对API Gateway和API Gateway V2的模板引用都有一个快速锁定,似乎目前CloudFormation中不支持x射线和采样规则,并假设我必须使用Lambda创建一个自定义资源来实现这一点?如果可能,最好寻找IaC解决方案。采样规则在X射线更新答案中指定,以澄清采样规则需要在X射线控制台中配置,并且它们将对所有API网关处理程序产生全局影响。无需在模板中配置任何内容。
# .env

ENABLE_X_RAY=true