Как использовать IAM хост-машин внутри Docker-контейнера - PullRequest
0 голосов
/ 27 сентября 2019

Я настраиваю сервер go в docker на машине ec2, этот сервер использует модуль aws-sdk-go для звонков в API AWS.Этот двоичный файл, созданный из следующего кода, дает проблемы с сертификатом при работе внутри контейнера.

Тот же двоичный файл работает нормально и дает ожидаемый результат при работе на хост-компьютере.

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

1 Ответ

1 голос
/ 27 сентября 2019

Вам не нужно назначать роль IAM для контейнера Docker, он уже использует разрешение IAM узла, так как метаданные узла доступны для контейнера Docker.

, вызвано: Post https://autoscaling.us -east-1.amazonaws.com/: x509: сертификат, подписанный неизвестным органом a

Приведенная выше ошибка не из-за разрешения, это что-то отсутствует в вашем образе Docker.

Попробуйте добавить ca-certificates в контейнер докера.

Убедитесь, что пакет ca-Certificates установлен на вашем экземпляре.После установки перезапустите программы Go.

Ошибка AWS SES: x509: сертификат подписан неизвестным органом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...