Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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
Node.js AWS Lambda SSM调用随机进入超时_Node.js_Amazon Web Services_Aws Lambda_Aws Ssm - Fatal编程技术网

Node.js AWS Lambda SSM调用随机进入超时

Node.js AWS Lambda SSM调用随机进入超时,node.js,amazon-web-services,aws-lambda,aws-ssm,Node.js,Amazon Web Services,Aws Lambda,Aws Ssm,我在AWS上部署了一个lambda,它位于一个VPC中,可以通过NAT访问互联网。部署是使用。 lambda使用一些中间件并从SSM获取一些凭证 问题是SSM获取随机进入超时 以下是lambda代码: /* requirements are omitted */ const authorize = async (_event, _context) => { try { const ssm = new SSM({ maxRetries: 6, // lowers a

我在AWS上部署了一个lambda,它位于一个VPC中,可以通过NAT访问互联网。部署是使用。 lambda使用一些中间件并从SSM获取一些凭证

问题是SSM获取随机进入超时

以下是lambda代码:

/* requirements are omitted */

const authorize = async (_event, _context) => {
  try {
    const ssm = new SSM({
      maxRetries: 6, // lowers a chance to hit service rate limits, default is 3
      retryDelayOptions: { base: 200 }
    })
    const params = {
      Names: ["param1", "param2"],
      WithDecryption: true
    }
    const fetch = () => new Promise(resolve => {
      ssm.getParameters(params, function(err, data) {
        if (err) resolve(err, err.stack); // an error occurred
        else     resolve(data);           // successful response
      })
    })
    const res = await fetch()
    return {
      statusCode: 200,
      body: JSON.stringify(res)
    }
  } catch (_err) {
    console.error(_err)
    return {
      statusCode: 500,
      body: 'error'
    }
  }
}

export default middy(authorize)
  .use(warmup({ waitForEmptyEventLoop: false }))
  .use(doNotWaitForEmptyEventLoop({ runOnError: true }))
  .use(httpSecurityHeaders())

lambda正在超时,因为ssm正在使用当前配置(6次重试200毫秒)限制您。在lambda放弃之前大约需要26秒

你在这里对抗敌人

您可以通过以下方式启用:


请注意,以后每次调用getParameter(0.05$/10.000个请求)都会产生一个错误。

您好,谢谢您的回答!我想问你们两个问题:1)你们是如何从6次重试开始计算26秒的,200毫秒?2) 我达到的吞吐量极限是多少?我可以读“默认吞吐量:40”,所以我不认为这是一个?1) 每重试一次,指数退避将使200ms加倍,因此这将在25,5秒内结束:*2%5E72)更新服务设置是否起作用?然后在cloudwatch或cost explorer中查看这些特定用法。
aws ssm update-service-setting --setting-id arn:aws:ssm:*region*:*account-id*:servicesetting/ssm/parameter-store/high-throughput-enabled --setting-value true