go - 仅在 kubernetes/CoreOS 上的 Go 中无效的 header 字段值

标签 go kubernetes coreos aws-sdk-go

我有一个使用 aws-sdk-go 与 dynamodb 对话的 Go 程序。依赖项已出售。转到版本 1.7.1。 aws-sdk-go 版本 1.6.24。该程序在以下所有环境中都按预期工作:

  • 来自 shell (Arch Linux) 的开发框
  • 在我的开发箱上运行的 docker 容器 (Docker 1.13.1)
  • 来自 shell (Ubuntu 16.04) 的 Ec2 实例

当我在 kubernetes 上运行 docker 容器时(我在我的开发箱上测试过的那个容器),我收到以下错误:


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

看起来问题出在 header 值验证上,但我无法理解为什么它在除我的 k8s 集群之外的所有地方都能正常工作。集群由运行最新CoreOS stable ami (CoreOS stable 1235.8.0)的Ec2实例组成

在我的开发机器上运行的 docker 镜像是基于 scratch 的。为了进行故障排除,我创建了一个基于 Ubuntu 最新版本的图像,该图像带有一个单独的 go 程序,该程序仅从 dynamodb 执行简单的获取项目。当这个图像在我的 k8s 集群上运行并且程序从交互式 shell 运行时,我得到了同样的错误。我已经确认我可以从这个环境中 ping dynamodb 端点。

我很难解决这个问题:我是不是遗漏了什么愚蠢的东西?有人能给我指出正确的方向或知道发生了什么事吗?

最佳答案

执行此操作时请记住“-n”: echo -n 键 | base64

关于go - 仅在 kubernetes/CoreOS 上的 Go 中无效的 header 字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42567606/

相关文章:

string - 如何获取字符串中的行数?

go - AMP 表单始终显示提交错误,即使响应代码为 200

kubernetes - 如何使用服务帐号登录Kubernetes?

macos - docker 登录失败 -> x509 : certificate signed by unknown authority . 。 "crypto/rsa: verification error"

kubernetes - 如何在 Kubernetes minion 中将 pod 作为全局服务运行

http - 使用 rs.cors 时返回 http 状态码

amazon-web-services - 503 Service Temporarily Unavailable use EKS ALB Ingress

kubernetes - 在传递yaml进行容器创建时如何参数化图像版本

ubuntu - Kubernetes 服务在一个节点宕机后停止

php - 如何构建用于从 Kubernetes 集群外部的机器传递文件的 sidecar 容器?