簡體   English   中英

AWS Lambda SSM 調用隨機超時

[英]AWS Lambda SSM calls randomly goes in timeout

我在 AWS 上部署了一個 lambda,在一個通過 NAT 具有 inte.net 訪問權限的 VPC 中。 部署是使用Serverless進行的。 lambda 使用一些Middy中間件並從 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 毫秒),大約需要 26 秒后您的 lambda 才會放棄。

您在此處運行時違反了SSM 標准吞吐量限制

您可以通過以下方式啟用增加的吞吐量

aws ssm update-service-setting --setting-id arn:aws:ssm:*region*:*account-id*:servicesetting/ssm/parameter-store/high-throughput-enabled --setting-value true

請注意,之后每次調用 getParameter 都會產生額外費用(0.05 美元/10.000 次請求)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM