【问题标题】:How to use IAM of the host machines inside docker container [duplicate]如何在docker容器内使用主机的IAM [重复]
【发布时间】:2019-09-27 14:29:56
【问题描述】:

我在 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

【问题讨论】:

  • 你需要在你的 docker 容器中安装 ca-certificates 包。 RUN apt install -y ca-certificates #for ubuntu

标签: amazon-web-services docker go


【解决方案1】:

您无需将 IAM 角色分配给 Docker 容器,它已经使用主机 IAM tole,因为 Docker 容器可以访问主机元数据。

引起:帖子https://autoscaling.us-east-1.amazonaws.com/:x509: 由未知权威签署的证书a

上面的错误不是因为权限问题,而是你的 Docker 镜像中缺少的东西。

尝试在 docker 容器中添加ca-certificates

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

AWS SES Error: x509: certificate signed by unknown authority

【讨论】:

    猜你喜欢
    • 2017-02-23
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    相关资源
    最近更新 更多