我有一個附有實體組態檔的 ec2 實體。此實體組態檔有權將訊息發布到 sns 主題。當我遠程進入 ec2 實體并發出類似的命令時
aws sns publish --topic-arn topic_arn --message hello
這行得通。
現在我正在嘗試用一個簡單的 curl 命令來做同樣的事情,這就是我在遠程進入 ec2 實體后使用的
curl "https://sns.us-west-2.amazonaws.com/?Message=hello&Action=Publish&TargetArn=topic_arn"
我收到以下錯誤
<Code>MissingAuthenticationToken</Code>
<Message>Request is missing Authentication Token</Message>
我希望 curl 在發送請求時會附加實體組態檔詳細資訊(例如使用 aws cli 時),但它似乎沒有這樣做。有誰知道我怎么能克服這個?
uj5u.com熱心網友回復:
當你這樣做時:
curl "https://sns.us-west-2.amazonaws.com/?Message=hello&Action=Publish&TargetArn=topic_arn"
您直接向 SNS 端點發出請求。這意味著您必須使用實體組態檔中的 AWS 憑證簽署您的請求。如果您不想使用 AWS CLI 或任何 AWS 開發工具包來訪問 SNS,則必須按照檔案中的說明自行撰寫整個簽名程序。
這就是為什么當您使用 AWS CLI 時
aws sns publish --topic-arn topic_arn --message hello
一切正常,因為 AWS CLI代表您向 SNS 終端節點發出簽名請求。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/489584.html
