Azure SDK for Go
本仓库用于 Azure SDK for Go 的积极开发。对于 SDK 的使用者,您可以点击以下链接访问您感兴趣的文档
入门指南
要开始使用某个模块,请参阅位于该模块项目文件夹中的 README.md 文件。您可以在 /sdk 目录中找到按服务分组的这些模块文件夹。
[!IMPORTANT] 我们的库与最近两个主要 Go 版本兼容,这与 Go 编程语言遵循的相同策略一致。
[!IMPORTANT] 强烈建议项目使用最新版本的 Go。这可以确保您的产品拥有最新的安全修复,并包含在 Go 的支持生命周期中。
[!WARNING] 包含
/services/**/mgmt/**子路径(也称为 track 1)的根 azure-sdk-for-go Go 模块已弃用且不再提供支持。请参阅迁移指南以了解如何迁移到当前版本。
可用包
每个服务都可以拥有 'client' 和 'management' 模块。'Client' 模块用于消费服务,而 'management' 模块用于配置和管理服务。
Client 模块
我们的客户端模块遵循 Azure Go SDK 指南。这些模块允许您使用、消费和与现有资源进行交互,例如上传 blob。它们还共享许多核心功能,包括重试、日志记录、传输协议、身份验证协议等,这些功能可以在 azcore 模块中找到。
您可以在我们的 最新页面 上找到最新的新模块列表。
[!NOTE] 如果您需要确保代码已准备好用于生产环境,请使用其中一个稳定的、非 beta 版本的模块。
管理模块
与我们的客户端模块类似,管理模块遵循 Azure Go SDK 指南。所有管理模块均可在 sdk/resourcemanager 处获取。这些模块提供了所有 Azure SDK 共享的许多核心功能,包括直观的 Azure Identity 模块、具有自定义策略的 HTTP 管道、错误处理、分布式跟踪等。
要开始使用,请遵循 此处的快速入门指南。要了解迁移的好处以及如何迁移到新模块,请访问 迁移指南。
您可以在我们的页面上找到 所有新软件包的最新列表
[!NOTE] 如果需要确保代码可用于生产环境,请使用其中一个稳定的非 beta 模块。此外,如果在升级某些包后,管理模块出现身份验证问题,可能是您在未更改身份验证代码的情况下升级到了 SDK 的新版本。请参阅迁移指南以获取正确的说明。
- 新版本的快速入门教程。文档也可在单个模块的每个 readme 文件中找到(示例:计算模块的 Readme)
示例
有关使用 Go SDK 管理模块的更多代码示例,可以在以下位置找到
- Go SDK 代码示例仓库
- 每个包下的示例文件。例如,网络包的示例可以在此处找到
历史版本
请注意,来自 Microsoft 的最新模块按服务分组在 /sdk 目录中。如果您使用的是前缀为 github.com/Azure/azure-sdk-for-go/services、github.com/Azure/azure-sdk-for-go/storage、github.com/Azure/azure-sdk-for-go/profiles 的包,请考虑迁移到最新模块。您可以在此处找到从这些历史版本到其等效版本的映射表。
报告安全问题和安全漏洞
安全问题和漏洞应通过电子邮件私下报告给 Microsoft Security Response Center (MSRC) secure@microsoft.com。您应在 24 小时内收到回复。如果由于某种原因未收到,请通过电子邮件跟进,以确保我们已收到您的原始消息。更多信息,包括 MSRC PGP 密钥,可在 Security TechCenter 中找到。
需要帮助?
- 通过 Github Issues 提交问题
- 查看 previous questions 或在 StackOverflow 上使用
azure和go标签提出新问题。
数据收集
软件可能会收集有关您及您对软件使用情况的信息,并将其发送给 Microsoft。Microsoft 可能会使用此信息来提供服务并改进我们的产品和服务。您可以按照以下说明关闭遥测。您可以在帮助文档和 Microsoft 的 privacy statement 中了解有关数据收集和使用的更多信息。有关 Azure SDK 收集的数据的更多信息,请访问 Telemetry Guidelines 页面。
遥测配置
默认情况下,遥测收集处于开启状态。
若要退出,您可以在客户端和凭据构建时禁用遥测。在 ClientOptions.Telemetry 中将 Disabled 设置为 true。这将禁用客户端中所有方法的遥测。请对创建的每个新客户端和凭据执行此操作。
以下示例使用 azblob 模块。在您的代码中,您可以将 azblob 替换为您正在使用的包。
package main
import (
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)
func main() {
// set http client options
clientOpts := policy.ClientOptions{
Telemetry: policy.TelemetryOptions{
Disabled: true,
},
}
// set identity client options
credOpts := azidentity.ManagedIdentityCredentialOptions{
ClientOptions: clientOpts,
}
// set service client options
azblobOpts := azblob.ClientOptions{
ClientOptions: clientOpts,
}
// authenticate with Microsoft Entra ID
cred, err := azidentity.NewManagedIdentityCredential(&credOpts)
// TODO: handle error
// create a client for the specified storage account
client, err := azblob.NewClient(account, cred, &azblobOpts)
// TODO: handle error
// TODO: do something with the client
}
[!NOTE] 请注意,
AzureDeveloperCLICredential和AzureCLICredential不包含ClientOptions.Telemetry。因此,无需在这些凭据中设置选项。
Community
- 在 Gophers Slack 的 #Azure SDK channel 中与我们聊天。如有必要,请先 在此 注册。
Contribute
参见 CONTRIBUTING.md。
对于 AI 代理和自动化工具,请参阅 AGENTS.md 以获取有关仓库工作流、自动化边界和最佳实践的指导。
本项目已采纳 Microsoft Open Source Code of Conduct。有关更多信息,请参阅 Code of Conduct FAQ 或就任何额外问题或意见联系 opencode@microsoft.com。
Trademarks
本项目可能包含项目、产品或服务的商标或徽标。对 Microsoft 商标或徽标的授权使用须遵守并遵循 Microsoft's Trademark & Brand Guidelines。在本项目的修改版本中使用 Microsoft 商标或徽标不得引起混淆或暗示 Microsoft 的赞助。任何第三方商标或徽标的使用均受该第三方政策约束。