Не у всех есть возможность использовать персональный oauth токен и приходится работать с Яндекс облаком через корпоративную (федеративную) учётную запись. В связи с этим прошу расширить пример авторизации в YandexCloud через SDK разными способами, чтобы другие люди могли сэкономить время.
oauthToken := flag.String("oauth-token", "", "")
pathToServiceAccountKey := flag.String("path-to-service-account-key", "", "path/to/service-account-key.json")
iamToken := flag.String("iam-token", "", "")
flag.Parse()
var creds ycsdk.Credentials
if *oauthToken != "" {
creds = ycsdk.OAuthToken(*oauthToken)
} else if *iamToken != "" {
creds = ycsdk.NewIAMTokenCredentials(*iamToken)
} else if *pathToServiceAccountKey != "" {
bytes, err := ioutil.ReadFile(*pathToServiceAccountKey)
if err != nil {
return fmt.Errorf("cant find service account json file: %w", err)
}
var SAKey iamkey.Key
err = yaml.Unmarshal(bytes, &SAKey)
if err != nil {
return err
}
creds, err = ycsdk.ServiceAccountKey(&SAKey)
if err != nil {
return err
}
} else {
return fmt.Errorf("error: oauth or iam token is not provided")
}
sdk, err := ycsdk.Build(ctx, ycsdk.Config{
Credentials: creds,
})
if err != nil {
log.Fatal("build creds error:", err)
}
Не у всех есть возможность использовать персональный oauth токен и приходится работать с Яндекс облаком через корпоративную (федеративную) учётную запись. В связи с этим прошу расширить пример авторизации в YandexCloud через SDK разными способами, чтобы другие люди могли сэкономить время.
Мой пример: