Пройдите тестирование AWS для неверного входа - PullRequest
0 голосов
/ 26 февраля 2019

Использование Golang с go-aws-sdk и некоторые проблемы с обнаружением неверных учетных данных сеанса.

Использование общих файлов учетных данных в ~ / .aws / {config, credentials}

Sess, err := session.NewSessionWithOptions(session.Options{
    Profile: instance.Config.AWS.AWSProfile,
})

Работает нормально, когда учетные данные действительны, но если я использую неверный aws_access_key_id в файле учетных данных, мне нужен способ обнаружить это с помощью функции AWSLogin ().

Что происходит при любых последующих вызовах AWSСервис вызывает панику при использовании Sess выше.

Как я могу обнаружить неудачный вход в систему с помощью вышеуказанного метода NewSessionWithOptions ()?

ОБНОВЛЕНИЕ: да, тип ошибки - ноль, поэтому следующее не имеет смысла:

 if err != nil {
        return nil, fmt.Errorf("Error logging into AWS: %v", err.Error())
    }

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Вот что я в итоге сделал.Проверьте, загружены ли учетные данные, проверьте известную службу, такую ​​как сегмент S3, к которой этому приложению необходим доступ.

// login to AWS
AWSProfile := "default"
fmt.Printf("Using AWS Profile: %v\n", instance.Config.AWS.AWSProfile)
Sess, err := session.NewSessionWithOptions(session.Options{
    Profile: AWSProfile,
})
if err != nil {
    return fmt.Errorf("Error logging into AWS: %v", err.Error())
}

// attempt to load config (e.g. env variables, shared config, instance profile) 
// log which AWS API Key is being used
svc := s3.New(Sess)
credentials, err := svc.Config.Credentials.Get()
if err != nil {
    return errors.New("Error logging into AWS. Check Credentials.")
}
fmt.Printf("Using Access Key ID: (%v)\n", credentials.AccessKeyID)
bucketName := "s3bucketname"

// test the login can access a typical aws service (s3) and known bucket 
params := &s3.ListObjectsInput {
    Bucket: aws.String(bucketName),
}
resp, _ := svc.ListObjects(params)

if len(resp.Contents) < 1 {
    return nil, fmt.Errorf("Error logging into AWS. Can not access bucket (%v). Check Credentials.", bucketName)
}
0 голосов
/ 26 февраля 2019

Таким образом, вам придется проверять наличие недопустимых ошибок после звонка в aws.Попробуйте использовать Credentials.Get () и посмотрите, если err != nil

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