Node.js AWS Lambda SSM调用随机进入超时
我在AWS上部署了一个lambda,它位于一个VPC中,可以通过NAT访问互联网。部署是使用。 lambda使用一些中间件并从SSM获取一些凭证 问题是SSM获取随机进入超时 以下是lambda代码: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
/* 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