簡體   English   中英

NodeJS AWS SDK 無法從 EC2 實例對附加了實例配置文件的 SQS 進行 API 調用

[英]NodeJS AWS SDK unable to make API calls from EC2 Instance to SQS with Instance Profile Attached

問題

我有一個在 Elastic Beanstalk 上運行的 NodeJS REST API。 節點 API 從 AWS 訪問服務,例如 SQS、SES 等。為了對這些服務進行 API 調用,我使用了 AWS 推薦的做法。 即,將實例配置文件附加到 EC2,這樣我們就不必手動處理 AWS 憑證並將其放入我們的 EC2。

它在過去幾個月內按預期工作,出於某種原因,最近幾天對 AWS 服務的所有請求都開始拋出以下錯誤:

code: 'IncompleteSignature'
Error: "Authorization header requires 'Credential' parameter. Authorization header requires 'Signature' parameter. Authorization header requires 'SignedHeaders' parameter. Authorization=AWS xxxxx:xxxxxx"

我做了什么

因為我找不到解決這個問題的方法,所以我通過 SSH 進入了實例並重新啟動了節點進程。 API 之后開始正常工作。 對 SQS、SES、S3 等的所有請求再次開始工作。 無需更改代碼、彈性豆莖或角色權限中的任何內容。

困境

我認為這是一個一次性的問題,但是,在負載均衡器啟動一個新實例並終止前一個實例(我在其中重新啟動節點進程)之后,這個問題再次出現,我再次通過 SSH 進入新實例並重新啟動節點進程,毫不奇怪它又開始工作了。

問題

為什么 AWS SDK 無法正確簽署對 SQS 或其他服務的請求? 為什么在我終止並重新啟動 EC2 中的節點進程后它開始工作。 考慮到 AWS 在文檔中聲明如果實例配置文件附加到 EC2,我們不需要擔心管理憑證,aws-sdk 開箱即用

EC2 實例和環境信息:

OS: Linux

aws-sdk: v2.964.0

NodeJS : v14.20.1

Permissions : EC2 Instance Profile has all the appropriate permissions

EC2 Role : Attached to Instance

非常感謝對此的任何幫助!

我也有同樣的問題,在運行npm update后修復。 問題可能是由於 aws 安全更新的一些更新

注意:僅更新 aws-sdk package。

暫無
暫無

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

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