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

我正在 ec2 机器上的 docker 中设置一个 go 服务器,该服务器使用 aws-sdk-go 模块来调用 AWS api。由以下代码构建的二进制文件在容器内运行时会出现证书问题。


相同的二进制文件运行良好,并在主机上运行时给出预期结果。


package main


import (

    "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 failed

caused by: Post https://autoscaling.us-east-1.amazonaws.com/: x509: certificate signed by unknown authority


杨__羊羊
浏览 136回答 1
1回答

倚天杖

您不需要将 IAM 角色分配给 docker 容器,它已经使用主机 IAM 角色作为 Docker 容器可以访问的主机元数据。造成的:发布https://autoscaling.us-east-1.amazonaws.com/:x509:由未知机构签名的证书上面的错误不是由于权限造成的,而是您的 Docker 映像中缺少某些内容。尝试添加ca-certificatesdocker 容器。确保您的实例上安装了 ca-certificates 包。安装后重新启动 Go 程序。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go