为了账号安全,请及时绑定邮箱和手机立即绑定

如何在docker容器内使用主机的IAM

如何在docker容器内使用主机的IAM

Go
杨__羊羊 2023-07-26 17:03:21
我正在 ec2 机器上的 docker 中设置一个 go 服务器,该服务器使用 aws-sdk-go 模块来调用 AWS api。由以下代码构建的二进制文件在容器内运行时会出现证书问题。相同的二进制文件运行良好,并在主机上运行时给出预期结果。package mainimport (    "fmt"    "github.com/aws/aws-sdk-go/aws"    "github.com/aws/aws-sdk-go/aws/awserr"    "github.com/aws/aws-sdk-go/aws/session"    "github.com/aws/aws-sdk-go/service/autoscaling")func main() {    svc := autoscaling.New(session.New(), aws.NewConfig().WithRegion("us-east-1"))    input := &autoscaling.DescribeAutoScalingGroupsInput{        AutoScalingGroupNames: []*string{            aws.String("spark-worker-asg"),        },    }    result, err := svc.DescribeAutoScalingGroups(input)    if err != nil {        if aerr, ok := err.(awserr.Error); ok {            switch aerr.Code() {            case autoscaling.ErrCodeInvalidNextToken:                fmt.Println(autoscaling.ErrCodeInvalidNextToken, aerr.Error())            case autoscaling.ErrCodeResourceContentionFault:                fmt.Println(autoscaling.ErrCodeResourceContentionFault, aerr.Error())            default:                fmt.Println(aerr.Error())            }        } else {            // Print the error, cast err to awserr.Error to get the Code and            // Message from an error.            fmt.Println(err.Error())        }        return    }    fmt.Println(result)}错误日志:RequestError: send request failedcaused by: Post https://autoscaling.us-east-1.amazonaws.com/: x509: certificate signed by unknown authority
查看完整描述

1 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

您不需要将 IAM 角色分配给 docker 容器,它已经使用主机 IAM 角色作为 Docker 容器可以访问的主机元数据。

造成的:发布https://autoscaling.us-east-1.amazonaws.com/:x509:由未知机构签名的证书

上面的错误不是由于权限造成的,而是您的 Docker 映像中缺少某些内容。

尝试添加ca-certificatesdocker 容器。

确保您的实例上安装了 ca-certificates 包。安装后重新启动 Go 程序。


查看完整回答
反对 回复 2023-07-26
  • 1 回答
  • 0 关注
  • 128 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信