我有一個使用AWS-SDK-去談話dynamodb Go程序。依賴關係是暢銷的。去版本1.7.1。 aws-sdk-go版本1.6.24。該項目工程按預期在所有以下環境:從外殼無效的報頭字段值僅在kubernetes/CoreOS
- 開發框(Arch Linux的)對我的dev的盒子運行
- 泊塢窗容器(泊塢窗1.13.1)從外殼
- EC2實例(Ubuntu的16.04)
當我運行kubernetes泊塢窗容器(我在我的dev的盒子測試同一個),我收到以下錯誤:
2017/03/02 22:30:13 DEBUG ERROR: Request dynamodb/GetItem: ---[ REQUEST DUMP ERROR ]----------------------------- net/http: invalid header field value "AWS4-HMAC-SHA256 Credential=hidden\n/20170302/us-east-1/dynamodb/aws4_request, SignedHeaders=accept-encoding;content-length;content-type;host;x-amz-date;x-amz-target, Signature=483f56dd0b17d8945d3c2f2044b7f97e531190602f132a4d5f828264b3a2cff2" for key Authorization ----------------------------------------------------- 2017/03/02 22:30:13 DEBUG: Response dynamodb/GetItem Details: ---[ RESPONSE ]-------------------------------------- HTTP/0.0 000 status code 0 Content-Length: 0
基於:
https://golang.org/src/net/http/transport.go
https://godoc.org/golang.org/x/net/lex/httplex#ValidHeaderFieldValue
它看起來像問題是與標頭值的驗證,但我很茫然理解爲什麼它的工作原理無處不在,除了我的K8S集羣上。該集羣由運行最新CoreOS穩定AMI(CoreOS穩定1235.8.0)
的碼頭工人形象,我的dev的機器的工作原理是基於從頭EC2實例。爲了排除故障,我創建了一個基於Ubuntu的圖像,並使用一個單獨的go程序創建了一個簡單的從dynamodb獲取項目的程序。當這個鏡像在我的k8s羣集上運行並且程序從交互式shell運行時,我得到了相同的錯誤。我已經證實我可以從這個env ping通dynamodb端點。
我有一個很難解決此問題:我失去了一些愚蠢的事嗎?有人能指出我正確的方向還是想知道發生了什麼?
'\ n'在我清理髮布之前已經在標題中。我覺得奇怪的是,它只能插入到k8s環境中,不過因爲一切都應該是相同的(特別是在docker部署的情況下),但它是我追蹤的主角! – SjB
從文件中創建一個k8s祕密是在祕密數據後面添加一個\ n,然後將其插入到標題中。 – SjB