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 [![godoc](https://godoc.org/github.com/Azure/azure-sdk-for-go?status.svg)](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, 微软技术栈, 搜索引擎爬虫, 日志审计, 程序破解, 规则引擎, 跨平台开发