简介


刚学习go几天,尝试调用Azure的SDK进行管理API的操作,基本思路是基于注册的AD Application信息生成token,然后再使用Token生成serviceClient,然后再进行资源的创建等操作。因为对go并不是特别熟悉,如有使用不当之处还请批评指正。


环境搭建

  • go 安装(版本:1.10.2)
  • IDE:LiteIDE
  • 依赖安装:
go get -u github.com/Azure/azure-sdk-for-go/...

go get -u github.com/Azure-Samples/azure-sdk-for-go-samples/...

注意:在安装包的过程中会因为网络原因某些包总是无法安装,这时需要等位到GOPATH中的对应安装路径,采用git Clone的方式直接下载包即可。

示例:go get golang.org/x 包失败解决方法

示例程序:

主程序:

// test1 project main.go
package main import (
"context"
"fmt"
"log"
"os" "github.com/Azure-Samples/azure-sdk-for-go-samples/iam"
"github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2017-06-01/storage"
"github.com/Azure/go-autorest/autorest"
"github.com/Azure/go-autorest/autorest/to"
) const (
errorPrefix = "Cannot create storage account, reason: %v"
) func getStorageAccountsClient(activeDirectoryEndpoint string, baseURL string, subscriptionID string) storage.AccountsClient { iam.ParseArgs() token, err := iam.GetResourceManagementTokenHybrid(activeDirectoryEndpoint, baseURL) if err != nil {
log.Fatal(fmt.Sprintf(errorPrefix, fmt.Sprintf("Cannot generate token. Error details: %v.", err)))
}
storageAccountsClient := storage.NewAccountsClientWithBaseURI(baseURL, subscriptionID) storageAccountsClient.Authorizer = autorest.NewBearerAuthorizer(token) return storageAccountsClient
} func main() {
fmt.Println("Hello World!")
//初始化参数定义,已经失效,仅供格式参考,根据情况修改为自己的测试参数
os.Setenv("AZURE_TENANT_ID", "b388b808-0ec9-4a09-a414-a7cbbd8b7e22")
os.Setenv("AZURE_CLIENT_ID", "0675a148-8425-4cc4-8747-18683cc70422")
os.Setenv("AZURE_CLIENT_SECRET", "VLMnO1T9zA/D9tgfwve3TO+Pq3w3UzY3lGIi+X7kbK22")
var subscriptionID string = "e0fbea86-6cf2-4b2d-81e2-9c59f4f96b22"
var resourceGroupName string = "yuvmtest"
var testStrorageAccountName string = "yugodemostoragetest191"
var location string = "chinanorth" //注意如下两个参数对于中国区Azure固定,不需要修改
var baseURL string = "https://management.chinacloudapi.cn/"
var activeDirectoryEndpoint string = "https://login.chinacloudapi.cn/" ctx := context.Background() storageAccountsClient := getStorageAccountsClient(activeDirectoryEndpoint, baseURL, subscriptionID)
fmt.Println(storageAccountsClient) future, err := storageAccountsClient.Create(
ctx,
resourceGroupName,
testStrorageAccountName,
storage.AccountCreateParameters{
Sku: &storage.Sku{
Name: storage.StandardLRS},
Kind: storage.Storage,
Location: to.StringPtr(location),
AccountPropertiesCreateParameters: &storage.AccountPropertiesCreateParameters{},
}) fmt.Println(future)
fmt.Println(err)
}

代码调整:

github.com/Azure-Samples/azure-sdk-for-go-samples/iam.ParseArgs 调整为如下形式:

// ParseArgs picks up shared env vars
// Other packages should use this func after helpers.ParseArgs()
func ParseArgs() { tenantID = os.Getenv("AZURE_TENANT_ID")
clientID = os.Getenv("AZURE_CLIENT_ID")
clientSecret = os.Getenv("AZURE_CLIENT_SECRET") }

测试结果:

参考链接

Azure Go Management SDK 中国版使用示例的更多相关文章

  1. 中国版 Azure 现提供 Azure Traffic Manager

    Stephen MaloneAzure网络 - DNS和 Traffic Manager高级项目经理 我们非常高兴地宣布,中国版 Azure中现已提供 Azure Traffic Manager.Az ...

  2. [Azure] 使用 Visual Studio 2013 管理中国版 Azure 订阅

    比较关心微软平台技术的朋友应该都知道,微软云服务(Microsoft Azure)以下简称Azure分为全球版和中国版,由于政府法规问题中国版的服务是由二十一世纪互联运营,整体来看中国版Azure和全 ...

  3. 使用VNET-to-VNET连接Microsoft Azure国际版和中国版

    Microsoft Azure的VNET-to-VNET功能可以实现跨虚拟网络的VPN连接,通过VNET-to-VNET互联的两个虚拟网络可以在同一个订阅下或者隶属不同的订阅,而且可以跨数据中心.这实 ...

  4. 跨云应用部署第一步:使用IPSEC VPN连接AWS中国版和Windows Azure中国版

    随着公有云的普及,越来越多的客户将关键应用迁移到云端.但是事实证明,没有哪家云服务提供商可以提供100%的SLA,无论是例行维护还是意外中断服务,对于客户的关键应用而言,都会受到不同程度的影响.此外, ...

  5. 中国版Azure 文件服务

    中国版Azure 文件服务预览版在2015年1月13日已经上线,文件存储使用标准SMB 2.1协议为应用程序提供共享存储. 当我们的虚拟机连接到文件共享后就可以像使用本地共享文件夹一样来读取和写入文件 ...

  6. 自制Azure中国版“加血包”

    Micrsoft Azure中国版的国际出口最近升级为电话线拨号模式,目测为10个用户共享一条56kb的电话线拨号链路.有图有真相: 中国的IT从业者,有三分之一的职业生涯时间是在跟网络斗智斗勇.这点 ...

  7. 完全变味的Windows Azure Marketplace中国版

    国际版的Microsoft Azure很早就发布Marketplace了,里面有非常丰富的(超过3000款)第三方应用.服务和虚拟机镜像可以购买.其定价模式也非常灵活,支持按需付费(pay as yo ...

  8. Traffic Manager:Azure中国版 正式发布

     我们很高兴地宣布Azure Traffic Manager 现已面向中国版Azure正式发布.此版本现已投入生产,由企业 SLA支持,随时可用于生产场景中. 借助Azure Traffic Ma ...

  9. Bluemix中国版体验(一)

    很高兴终于拿到了中国版Bluemix的账号!中国版的Bluemix是由世纪互联运营的,这也是世纪互联继Microsoft Azure,Office 365之后运营的又一个国际一线大品牌的云服务. 中国 ...

随机推荐

  1. OV5640全景模式预览倒180度,拍照正常的问题

    此方法基本上适用于所有android平台上全景模式预览倒180度,拍照正常的问题. 首先说明的是,影响camera方向的有三个地方,分别是系统方向,内核camera方向和驱动镜像.全景模式预览只跟系统 ...

  2. SpriteBuilder弹出菜单层造成卡顿的解决办法

    如果你注意到略微的卡顿(延时)(lag due to low framerate)当显示一个全屏的弹出菜单时,你可以简单的设置_levelNode(_levelNode是主游戏界面中的背景层,所有游戏 ...

  3. cocoa编程第4版 8.5 挑战1 解答

    看似简单,其实也很简单,但开始思路想错了:还上网查了一下,有网友说是将Array Controller的Keys中的personName改为personName.length,好像完全不起作用. 后来 ...

  4. 【45】java的封装剖析

    类是构造对象的模板或蓝图. 封装的一些概念 从形式上看,封装不过是将数据和行为组合到一个包中,并对对象的使用者隐藏了数据的实现形式. 每个对象都包含实例域和方法.实例域的集合代表了一个集合的状态,通过 ...

  5. Mybatis源码之SimpleExecutor

    /** * @author Clinton Begin */ public class SimpleExecutor extends BaseExecutor { public SimpleExecu ...

  6. Oracle经常用到的一些函数

    1.数字函数 NVL( string1, replace_with) :如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ...

  7. Xcode9无线调试教程

    Xcode9最让人眼前一亮的莫过于同一局域网下支持无线部署调试. 从Xcode9支持无线部署调试来看,千呼万唤的iPhone8支持无线充电几乎是必然.下面简单梳理下无线调试的步骤: 1. 第一次部署调 ...

  8. Word Break(动态规划)

    Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separa ...

  9. Axis创建webservice客户端和服务端

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本人声明.否则将追究法律责任. 作者:永恒の_☆ 地址:http://blog.csdn.net/chenghui0317/ ...

  10. .net开发微信(1)——微信订阅号的配置

    到微信公众平台按提示一直走下去后,可能遇到的难点就是填写Url和Token了. 开发文档里说,url是自己的服务器地址,Token随便写.但是一直提示Token验证失败. 解决办法:需要在服务器里新增 ...