Замечание Для получения деталей изменений обратитесь к заметкам выпуска модулей.
Future.WaitForCompletionRef()
, если начальный асинхронный ответ включает заголовок Retry-After
, выполните паузу на указанное количество времени перед началом проверки.APIManagementHostManagementSuffix
в карту сред Azure.SynapseEndpointSuffix
и ResourceIdentifiers/Synapse
в карту сред Azure.github.com/Azure/go-autorest
.x-ms-authorization-auxiliary
на запятую.azure.SetEnvironment()
, который обновляет глобальную карту сред с указанными значениями.DoRetryForStatusCodes
больше не будут бесконечно повторять запрос при получении HTTP-статуса 429 (StatusTooManyRequests). Чтобы вернуться к старому поведению установите autorest.Count429AsRetry
равным false
.autorest.Max429Delay
может использоваться для контроля максимальной задержки между повторами при получении 429 без заголовка Retry-After
. Значение по умолчанию — ноль, что означает отсутствие ограничений.SendDecorators
к типу Client
. Это можно использовать для спецификации пользовательской цепочки декораторов отправки для каждого клиента.Client.Send()
, который включает логику выбора предпочитаемой цепочки декораторов отправки.autorest.AsStringSlice()
для преобразования элементов массива в их строковое представление.autorest.NewSharedKeyAuthorizer()
и связанные типы.autorest.NewSASTokenAuthorizer()
и связанные типы.ServicePrincipalToken.SetCustomRefresh()
, чтобы можно было вызывать пользовательскую функцию обновления токена при истечении его срока действия.cli.AccessTokensPath()
для учета переменной окружения AZURE_CONFIG_DIR
.adal.InitiateDeviceAuthWithContext()
adal.CheckForUserCompletionWithContext()
adal.WaitForUserCompletionWithContext()
autorest.WithQueryParameters()
для правильного кодирования многозначных параметров запроса.Пакет tracing
был переписан для предоставления общего интерфейса для потребителей для подключения пакета трассировки по своему выбору.
Это означает, что по умолчанию никакой провайдер трассировки не будет скомпилирован в вашу программу, и установка переменной окружения AZURE_SDK_TRACING_ENABLED
не будет иметь эффекта. Чтобы активировать это прежнее поведение вам теперь нужно добавить следующее импорт в ваш файл исходного кода.
import _ "github.com/Azure/go-autorest/tracing/opencensus"
API, требуемые автогенерируемым кодом autorest
, остались без изменений, но некоторые API были удалены, а новые добавлены.
Следующие API и переменные были удалены (большинство из них были перемещены в пакет opencensus
):
tracing.Transport
tracing.Enable()
tracing.EnableWithAIForwarding()
tracing.Disable()
Следующие API и типы были добавлены:
tracing.Tracer
tracing.Register()
Для подключения трасера просто вызовите tracing.Register()
, передав тип, удовлетворяющий интерфейсу tracing.Tracer
.
autorest.MultiTenantServicePrincipalTokenAuthorizer
теперь правильно добавляет свои вспомогательные токены Bearer.override
секции из Gopkg.toml и replace
директивы из go.mod, так как они не применимы при использовании как зависимости.ocagent
, которая всё ещё зависит от protobuf v1.2.required
условие с соответствующими constraint
секциями, чтобы зависимости dep
соответствовали go.sum.autorest.WithPrepareDecorators
и autorest.GetPrepareDecorators
для добавления и получения пользовательской цепочки PrepareDecorators в предоставленном контексте.x-ms-authorization-auxiliary
была добавлена для сценария секретных клиентских удостоверений; это фактически объединяет несколько OAuthConfig и ServicePrincipalToken типов в соответствующие MultiTenant* типы вместе с новым авторизатором, который добавляет основные и вспомогательные заголовки токенов к запросу. Помощники аутентификации были обновлены для поддержки этого сценария; если переменная окружения AZURE_AUXILIARY_TENANT_IDS установлена со списком участников, разделённых точками с запяткой, код пути многоучастников будет активирован для создания соответствующего авторизатора. Смотрите adal.NewMultiTenantOAuthConfig
, adal.NewMultiTenantServicePrincipalToken
и autorest.NewMultiTenantServicePrincipalTokenAuthorizer
вместе с их поддерживающими типами и методами.autorest.WithSendDecorators
и autorest.GetSendDecorators
для добавления и получения пользовательской цепочки SendDecorators в предоставленном контексте.autorest.DoRetryForStatusCodesWithCap
и autorest.DelayForBackoffWithCap
для применения верхнего предела на продолжительность между повторами.autorest.WithXML
, autorest.AsMerge
, autorest.WithBytes
.autorest.ByUnmarshallingBytes
.Response.IsHTTPStatus
и Response.HasHTTPStatus
для анализа HTTP-кодов состояния в типах autorest.Response
.autorest.DelayWithRetryAfter
теперь поддерживает HTTP-даты в заголовке Retry-After
и не ограничен только статусами 429.to.ByteSlicePtr()
.azure.ResourceIdentifier
.В подготовке к модулям следующий устаревший контент был удален:
async.NewFuture()
async.Future.Done()
async.Future.WaitForCompletion()
async.DoPollForAsynchronous()
utils
validation.NewErrorWithValidationError()
version
ResourceIdentifiers
в azure.Environment
для хранения идентификаторов ресурсов для общественных и суверенных облачных сред.autorest.NewClientWithOptions()
для поддержки конечных точек, требующих свободного переговора.ServicePrincipalToken
на различных типах конфигураций удостоверений в пакете auth
.autorest.BasicAuthorizer
для поддержки базовой аутентификации.GetTokenFromCLI
, которое не работало с zsh.Client.sender()
установлен минимальный уровень TLS для HTTP-клиентов на уровне 1.2.auth
был рефакторирован таким образом, чтобы настройки среды и файла стали доступными.auth.NewAuthorizerFromEnvironment()
, теперь экспортированы для создания пользовательских цепочек авторизации.adal.AddToUserAgent()
, чтобы вызывающие стороны могли добавлять пользовательские данные в заголовок User-Agent для запросов ADAL.adal.UserAgent()
для соответствия с autorest.Client
.Future.WaitForCompletionRef()
если предоставленный контекст имеет срок действия, не добавляйте стандартное время ожидания.ServicePrincipalToken()
к типу DeviceFlowConfig
.version
. Функциональность была заменена содержимым в пакете autorest
.AZURE_SDK_TRACING_ENABELD
на AZURE_SDK_TRACING_ENABLED
.
Примечание: для обеспечения обратной совместимости обе будут работать до следующего выпуска основной версии пакета.autorest.DoRetryForStatusCodes
.cli.ProfilePath
теперь учитывает переменную окружения AZURE_CONFIG_DIR
, если она доступна.ЗАМЕЧАНИЕ: Версии Go, предшествующие 1.10, были удалены из CI, так как они больше не совместимы с golint.
MSIConfig.Authorizer
теперь поддерживает пользовательски назначенные идентификаторы.tracing
, который позволяет инструментировать HTTP и API запросы.
Установка переменной окружения AZURE_SDK_TRACING_ENABLED
или вызов метода tracing.Enable
запустят инструментирование кода для метрик и трассировки.
Кроме того, установка переменной окружения OCAGENT_TRACE_EXPORTER_ENDPOINT
или вызов метода tracing.EnableWithAIForwarding
запустят инструментирование и соединение с локальным прокси-форвардером App Insights, который должен быть запущен.
Обратите внимание, что если локальный прокси-форвардер App Insights не запущен, то отслеживание всё равно будет включено.
По умолчанию инструментирование отключено. После его активации можно программно отключить вызовом Disable
.ServicePrincipalToken
не переопределять refreshLock
и объект http.Client
, если они уже установлены.auth.NewAuthorizerFromCLI
, чтобы создать авторизатор, настроенный с помощью Azure 2.0 CLI.adal.NewOAuthConfigWithAPIVersion
, чтобы создать OAuthConfig с указанным версией API.x5c
в клиентском утверждении для проверки имени издателя + имя субъекта сертификата.string
на json.Number
:
auth.NewAuthorizerFromFileWithResource
, чтобы создать авторизатор из конфигурационного файла с указанным ресурсом.client.PollingDuration
равным нулю позволит использовать предоставленный контекст для управления длительностью поллинга LRO.DoRetryForStatusCodes
, если контекст запроса был отменён, вернуть последний ответ.fmt.Fprint
при выводе запроса/ответа, чтобы любые последовательности экранировались как спецификаторы формата.Failed
в первичном ответе, вернуть ошибку сразу же, чтобы вызывающий код не имел необходимости выполнять поллинг.AdditionalInfo
ошибки для помощи в диагностике проблемы.AZURE_GO_SDK_LOG_LEVEL
на значение LogInfo
позволит логировать запросы/ответы без их тел.
Чтобы включить тела, установите уровень логирования на LogDebug
.
По умолчанию логгер пишет в stderr, но он также может записывать в stdout или файл, если указано в AZURE_GO_SDK_LOG_FILE
.
ВАЖНО: по умолчанию логгер будет скрывать заголовки Authorization и Ocp-Apim-Subscription-Key.
Любые другие секреты будут ОСТАТЬСЯ НЕСКРЫтыми.additionalInfo
в типе ServiceError
.ServicePrincipalToken.MaxMSIRefreshAttempts
для настройки максимального количества попыток обновления токена MSI.Future.GetResult()
.Future.GetResult()
.Details
ошибки сервиса, чтобы информация не была потеряна.
DetailedResponse
.azure.DoRetryWithRegistration()
.int
и int64
.NewServicePrincipalTokenFromManualTokenSecret
для создания нового SPT с использованием ручного токена и секрета.ServicePrincipalToken.MarshalTokenJSON()
для сериализации внутреннего токена.ServicePrincipalTokens
могут быть сериализованы/десериализованы в/из JSON (кроме ServicePrincipalCertificateSecret
и ServicePrincipalMSISecret
).ServicePrincipalToken.SetRefreshCallbacks()
.IsTemporaryNetworkError()
теперь возвращает true
для ошибок, которые не реализуют интерфейс net.Error
.Старый метод | Новый метод |
---|---|
azure.NewFuture() |
azure.NewFutureFromResponse() |
Future.WaitForCompletion() |
Future.WaitForCompletionRef() |
azure.NewFutureFromResponse()
для создания будущего из первичного ответа асинхронной операции.Future.GetResult()
для выполнения конечного GET-запроса для получения результата асинхронной операции.nil
в логику повторных попыток токена.TokenRefreshError
, если отправка не удалась в первичном запросе.NewAuthorizerFromEnvironmentWithResource()
.*WithContext()
для операций обновления токена ADAL.DeviceFlowConfig.Authorizer()
теперь выводит сообщение устройства кода при выполнении go test
. Необходим флаг -v
.NewPollingRequestWithContext()
для использования с поллингом асинхронных операций.Cancel
.utils.GetEnvVarOrExit()
.EnvironmentFromURL
для загрузки окружения из данного URL. Этот метод особенно полезен в модели частных и гибридных облачных систем, где можно определить собственные конечные точки.TokenAudience
в структуре окружения. Это полезно в моделях частных и гибридных облачных систем, где конечный пункт TokenAudience
может отличаться от конечного пункта ResourceManagerEndpoint
.Client.Do()
вызвать WithInspection()
последним, чтобы он анализировал WithAuthorization()
.p.Prepare()
первым, выровняв их с другими подготовщиками.auth.NewAuthorizerFromFile()
.target
и innererror
к типу ServiceError
для соответствия спецификации OData v4.Done()
для будущих теперь возвращает объект ServiceError
, когда доступен (ранее он возвращал частичное значение таких ошибок).glide
к dep
для управления зависимостями.ServiceError
для тел JSON, которые не соответствуют спецификации OData.ServiceError.Details
был изменён, чтобы соответствовать спецификации OData v4.validation.Error
.adal.Token
был декомпозирован из adal.ServicePrincipalToken
(это было необходимо для исправления конкурентного состояния обновления токена).azure.AsyncOpIncompleteError
для возврата из метода Result()
будущего объекта, когда операция ещё не завершена.application/octet-stream
.autorest.WithQueryParameters
.autorest.WithFormData
.nil *http.Response
перед его декодированием.http.StatusTooManyRequests (429)
как попытку превышения лимита повторных попыток.SkipResourceProviderRegistration
установлено значение true
.SkipResourceProviderRegistration
для клиентов для предоставления способа пропуска автоматической регистрации RPs.AsStringSlice()
, которая преобразует её параметры в массив строк.401 (http.StatusUnauthorized)
, так как это никогда не будет успешным.AccessTokensPath()
для чтения пути доступных токенов через AZURE_ACCESS_TOKEN_FILE
. Если эта переменная среды не установлена, она будет использовать по умолчанию путь, установленный Azure CLI.WaitForCompletion()
для Future
как по умолчанию реализация опроса.Future.Done()
не должен обновлять состояние опроса для непредвиденных HTTP статусных кодов.DoRetryForStatusCodes
будет повторяться, если sender.Do
возвращает не-nil ошибку.PollingMethod()
для Future
, чтобы вызывающие стороны знали, какой вид механизма опроса используется.azure.ChangeToGet()
, который преобразует http.Request
в GET (для использования с LROs).azure.Future
для отслеживания статуса долгих выполняющихся операций.- Сохраните первоначальную ошибку в DoRetryWithRegistration, если регистрация не удалась.autorest.Client.Sender
.ВАЖНО: Этот выпуск был некорректно помечен как
v8.4.0
. После выпуска он должен был быть помечен какv9.0.0
, поскольку он содержит изменения обратной совместимости для MSI пакетов. Мы извиняемся за любую неудобства, которые это может вызвать.
Добавлена поддержка конечных точек MSI и восстановления токенов CLI.
Обновлен багфикс в adal для поддержки MSI.
Обновлены строки ошибок для ясности. Также добавлен копируемый http.Response в ошибки для улучшенного опыта отладки.
Обновлен RetriableRequest для использования GetBody(), добавленного в Go 1.8.
Добавлен тип RetriableRequest для более эффективного управления повторными HTTP-запросами.
ADAL переработан в свой собственный пакет. Поддержка времени UNIX.
RespondDecorator
, ByDiscardingBody
. Это позволяет операциям подтверждать, что они не нуждаются ни в целом, ни в последней части принятого ответного тела. Таким образом, библиотека Go HTTP может переиспользовать HTTP-соединения более легко.PrepareDecorator
для цели пользовательских базовых URL.DelayForBackoff
, который вызывал удвоение продолжительности задержки.Использование json.Decoder
не ловит плохие данные так тщательно, как json.Unmarshal
. Поскольку encoding/json
успешно десериализирует все основные типы, и расширенные типы обычно предоставляют свои собственные обработчики JSON сериализации, код был возвращен к использованию json.Unmarshal
. Оригинальное изменение, использующее json.Decode
, было сделано для снижения дублирования кода; нет потерь функциональности, и есть преимущество точности, благодаря этому возврату.
Кроме того, службы Azure указывают запросы для опроса многими способами. Исходный код проверял только один из этих способов (то есть наличие заголовка Azure-AsyncOperation
). Новый код правильно покрывает все случаи и согласован с другими SDK Azure.
date.ByUnmarshallingJSONDate
и date.ByUnmarshallingJSONTime
для поддержки JSON-кодированных значений.mocks.Sender
для воспроизведения серии http.Response
объектов.PrepareDecorators
для примитивных типов (например, bool, int32).Управление опрашиваемыми и асинхронными запросами больше не является частью Client#Send
. Вместо этого новые SendDecorators
реализуют различные стили опрашиваемых действий. Смотрите autorest.DoPollForStatusCodes
и azure.DoPollForAsynchronous
для примеров.DelayForBackoff
теперь принимает канал, который может быть nil.NewErrorWithError
больше не принимает statusCode int
.NewErrorWithStatusCode
заменён на NewErrorWithResponse
.Client#Send()
больше не принимает аргумент codes ...int
.ByUnmarshallingXML()
.azure.WithErrorUnlessStatusCode()
для обработки ошибок Azure.net/http.DefaultClient
как базовый клиент../autorest/to
с помощниками []string
..travis.yml
.StatusCode
к Error
для более легкого получения HTTP Response Status Code (если имеется)to.StringMapPtr
для возврата указателя.ServicePrincipalCertificateSecret
и NewServicePrincipalTokenFromCertificate
для поддержки общего сертификата и частного ключа.Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )