簡體   English   中英

使用 aws sdk v3 調試 ENOTFOUND 錯誤

[英]Debugging ENOTFOUND error using aws sdk v3

我一直在使用 AWS JS SDK V3,並注意到我的 lambda 表達式間歇性地遇到連接到 AWS 資源的錯誤。 下面我有一個 dynamodb 的例子,但我在連接到 secrets manager 時也遇到了問題。 我的 lambda 和資源都包含在一個 VPC 中。 我注意到這些問題似乎在 lambda 冷啟動期間更頻繁地出現,但我不完全確定。 如果重新發送請求(前端用戶刷新頁面),此錯誤似乎消失了 go。 我希望內置的客戶端重試會減少我的代碼看到的錯誤,但似乎沒有嘗試重試。

我正在尋找可能揭示這些問題的原因的潛在調試技巧。 到目前為止,我一直在查看似乎沒有任何好的見解的 cloudwatch 日志。 我相信這是由錯誤的 DNS 分辨率引起的,但我對這些錯誤的頻率感到驚訝。 除了將我的 lambda 表達式移至 ec2 並利用緩存之外,還有哪些方法可以解決此問題。

閱讀這篇文章: https://aws.amazon.com/premiumsupport/knowledge-center/vpc-find-cause-of-failed-dns-queries/建議增加 DNS 重試計時器,但我不確定我會怎么做那也是。

{
    "errorType": "Error",
    "errorMessage": "getaddrinfo ENOTFOUND dynamodb.us-east-1.amazonaws.com",
    "code": "ENOTFOUND",
    "errno": -3008,
    "syscall": "getaddrinfo",
    "hostname": "dynamodb.us-east-1.amazonaws.com",
    "$metadata": {
        "attempts": 1,
        "totalRetryDelay": 0
    },
    "stack": [
        "Error: getaddrinfo ENOTFOUND dynamodb.us-east-1.amazonaws.com",
        "    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:71:26)"
    ]
}

您如何從您的 VPC 連接到 DynamoDB?

您使用的是 NAT 實例還是網關?

您使用的是自定義 DNS 分辨率嗎?

我建議您將 DynamoDB VPCe 添加到您的 VPC 以允許您通過 AWS private.network 連接到 DynamoDB。

暫無
暫無

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

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