Azure/azure-sdk-for-go
GitHub: Azure/azure-sdk-for-go
微软官方的 Azure SDK for Go,提供统一的 Client 和 Management 模块,帮助开发者在 Go 语言中高效调用和管理 Azure 云服务。
Stars: 1800 | Forks: 966
# Azure SDK for Go
[](https://godoc.org/github.com/Azure/azure-sdk-for-go)
此仓库用于 Azure SDK for Go 的积极开发。对于 SDK 的使用者,您可以点击下方链接查看您感兴趣的文档:
* [Azure SDK for Go 概述](https://docs.microsoft.com/azure/developer/go/)
* [SDK 参考](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk)
* [Azure Go SDK 代码示例](https://github.com/azure-samples/azure-sdk-for-go-samples)
* [Azure REST API 文档](https://docs.microsoft.com/rest/api/)
* [Azure 通用文档](https://docs.microsoft.com/azure)
* [向我们分享您对 Azure SDK 的反馈](https://www.surveymonkey.com/r/FWPGFGG)
## 入门指南
要开始使用某个模块,请参阅该模块项目文件夹中的 README.md 文件。您可以在 `/sdk` 目录中找到按服务分组的这些模块文件夹。
## 可用包
每个服务都可以包含“client”和“management”模块。“Client”模块用于使用服务,而“management”模块用于配置和管理服务。
### Client 模块
我们的 client 模块遵循 [Azure Go SDK 指南](https://azure.github.io/azure-sdk/golang_introduction.html)。这些模块允许您使用、消费现有资源并与之交互,例如上传 blob。它们还共享许多核心功能,包括重试、日志记录、传输协议、身份验证协议等,这些功能可以在 [azcore](https://github.com/Azure/azure-sdk-for-go/blob/main/sdk/azcore) 模块中找到。
您可以在我们的[最新页面](https://azure.github.io/azure-sdk/releases/latest/index.html#go)上找到最新模块的列表。
### Management 模块
与 client 模块类似,management 模块遵循 [Azure Go SDK 指南](https://azure.github.io/azure-sdk/golang_introduction.html)。所有 management 模块都位于 `sdk/resourcemanager`。这些模块提供了所有 Azure SDK 共享的许多核心功能,包括直观的 Azure Identity 模块、带有自定义策略的 HTTP Pipeline、错误处理、分布式追踪等。
要开始使用,请遵循[此处的快速入门指南](https://aka.ms/azsdk/go/mgmt)。要了解迁移的好处以及如何迁移到新模块,请访问[迁移指南](https://aka.ms/azsdk/go/mgmt/migration)。
您可以在[我们的页面上找到所有新包的最新列表](https://azure.github.io/azure-sdk/releases/latest/mgmt/go.html)
* [新版本快速入门教程](https://aka.ms/azsdk/go/mgmt)。各个模块的 readme 文件中也提供了文档(例如:[Compute 模块的自述文件](https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/resourcemanager/compute/armcompute))
## 示例
关于使用 Go SDK management 模块的更多代码示例可以在以下位置找到:
- [Go SDK 代码示例仓库](https://aka.ms/azsdk/go/mgmt/samples)
- 每个包下的示例文件。例如,Network 包的示例可以在[这里找到](https://github.com/Azure/azure-sdk-for-go/blob/main/sdk/resourcemanager/network/armnetwork/loadbalancernetworkinterfaces_client_example_test.go)
## 历史版本
请注意,来自 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` 的包,请考虑迁移到最新模块。您可以在此处找到这些历史版本与其对应版本的[映射表](https://azure.github.io/azure-sdk/releases/deprecated/index.html#go)。
## 报告安全问题和安全漏洞
安全问题和漏洞应通过电子邮件私下报告给 Microsoft 安全响应中心 (MSRC) 。您应该在 24 小时内收到回复。如果由于某种原因您没有收到回复,请通过电子邮件跟进,以确保我们收到了您的原始消息。更多信息,包括 MSRC PGP 密钥,可以在 [Security TechCenter](https://www.microsoft.com/msrc/faqs-report-an-issue) 中找到。
## 需要帮助?
* 通过 [Github Issues](https://github.com/Azure/azure-sdk-for-go/issues) 提交 issue
* 查看[以往的问题](https://stackoverflow.com/questions/tagged/azure+go)或在 StackOverflow 上使用 `azure` 和 `go` 标签提出新问题。
## 数据收集
该软件可能会收集有关您和您使用该软件的信息,并将其发送给 Microsoft。Microsoft 可能会使用此信息来提供服务并改进我们的产品和服务。您可以按照下文所述关闭遥测。您可以在帮助文档和 Microsoft 的[隐私声明](https://go.microsoft.com/fwlink/?LinkID=824704)中了解有关数据收集和使用的更多信息。有关 Azure SDK 收集的数据的更多信息,请访问[遥测指南](https://azure.github.io/azure-sdk/general_azurecore.html#telemetry-policy)页面。
### 遥测配置
遥测收集默认处于开启状态。
要选择退出,您可以在构建 client 和 credential 时禁用遥测。将 `ClientOptions.Telemetry` 中的 `Disabled` 设置为 true。这将禁用该 client 中所有方法的遥测。对创建的每个新 client 和 credential 执行此操作。
下面的示例使用 `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
}
```
## 贡献
请参阅 [CONTRIBUTING.md](https://github.com/Azure/azure-sdk-for-go/blob/main/CONTRIBUTING.md)。
本项目采用了 [Microsoft 开源行为准则](https://opensource.microsoft.com/codeofconduct/)。有关更多信息,请参阅[行为准则 FAQ](https://opensource.microsoft.com/codeofconduct/faq/),或联系 [opencode@microsoft.com](mailto:opencode@microsoft.com) 提出任何其他问题或评论。
## 商标
本项目可能包含项目、产品或服务的商标或徽标。授权使用 Microsoft 商标或徽标受 [Microsoft 商标与品牌指南](https://www.microsoft.com/legal/intellectualproperty/trademarks/usage/general)约束并必须遵循该指南。在本项目的修改版本中使用 Microsoft 商标或徽标不得引起混淆或暗示 Microsoft 的赞助。任何第三方商标或徽标的使用均受这些第三方政策的约束。
标签:API客户端, Azure REST API, Azure SDK, Golang, Go语言, 云服务开发, 云计算, 云资源管理, 后端开发, 安全编程, 开源库, 微软Azure, 微软技术栈, 搜索引擎爬虫, 日志审计, 程序破解, 规则引擎, 跨平台开发