【问题标题】:Google compute engine .NET API examples/samples/tutorialsGoogle 计算引擎 .NET API 示例/示例/教程
【发布时间】:2016-02-10 01:37:01
【问题描述】:

我找不到任何可以清楚地解释如何通过 .net API(特别是 c#)使用谷歌计算引擎的东西。有没有人可以指点我什么?

附:我知道 API 参考 (https://developers.google.com/resources/api-libraries/documentation/compute/v1/csharp/latest/annotated.html)

【问题讨论】:

    标签: google-compute-engine google-api-dotnet-client


    【解决方案1】:

    我找不到任何包含代码示例的详细教程,但在 [1] 中提供了官方文档,其中包含代码示例。

    在 [2] 中有一个针对 Google Drive 的 C# 示例教程。

    供您参考的 API 文档可在 [3] 获得,带注释的库参考可在 [4] 获得。

    链接: [1] - https://developers.google.com/api-client-library/dotnet/get_started#examples
    [2] - http://conficient.wordpress.com/2014/06/18/using-google-drive-api-with-c-part-1/
    [3] - https://developers.google.com/compute/docs/reference/latest/
    [4] - https://developers.google.com/resources/api-libraries/documentation/compute/v1/csharp/latest/annotated.html

    【讨论】:

      【解决方案2】:

      您需要遵循的步骤列表: 具体可以修改并使用以下代码创建谷歌计算引擎的vmInstance 这是可以创建实例的c#(使用Google api SDK)函数

      UserCredential credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
              new ClientSecrets
              {
                  ClientId = "ClientId",
                  ClientSecret = "ClientSecret"
              },
               new[] { ComputeService.Scope.Compute, ComputeService.Scope.CloudPlatform },
              "user",
               CancellationToken.None, null);
      
      
      
      `ComputeService service = new ComputeService(new BaseClientService.Initializer()
              {
                  HttpClientInitializer = credential,
                  ApplicationName = "ApplicationName",
                  ApiKey = "ApiKey"
              });
      
      
       public IEnumerable<CreateInstanceResult> CreateInstances(params CreateInstanceRequest[] instances)
          {
              IList<Instance> vmInstances = new List<Instance>();
              ComputeService service = assign GoogleComputeServiceObject;
      
              if (instances != null)
              {
                  foreach (CreateInstanceRequest requestInstance in instances)
                  {
                      #region Meatadata Setting
      
                      Metadata metaData = new Metadata();
                      metaData.Items = new List<Metadata.ItemsData>();
                      Metadata.ItemsData itemData = new Metadata.ItemsData();
                      itemData.Key = "Expiration";
                      itemData.Value = requestInstance.Expiration.ToString();
                      metaData.Items.Add(itemData);
                      itemData = new Metadata.ItemsData();
                      itemData.Key = "AccountId";
                      itemData.Value = requestInstance.AccountId;
                      metaData.Items.Add(itemData);
      
                      if (requestInstance.Data != null)
                      {
                          foreach (KeyValuePair<string, string> keyValue in requestInstance.Data)
                          {
                              Metadata.ItemsData otherItemData = new Metadata.ItemsData();
                              otherItemData.Key = keyValue.Key;
                              otherItemData.Value = keyValue.Value;
                              metaData.Items.Add(otherItemData);
                          }
                      }
                      #endregion Meatadata Setting
      
                      #region DiskSetting
      
                      IList<AttachedDisk> attachedDisks = new List<AttachedDisk>();
                      AttachedDisk attachedDisk = new AttachedDisk();
                      AttachedDiskInitializeParams attachedDiskInitializeParams = new AttachedDiskInitializeParams();
                      attachedDiskInitializeParams.DiskSizeGb = googleCloudServerSetting.DiskSize;
                      attachedDiskInitializeParams.DiskType = service.BaseUri + "Your_ProjectId" + "/zones/" + "specifyZone" + "/diskTypes/" + "specify_DiskType";
      
                      // for example
                      attachedDiskInitializeParams.SourceImage = service.BaseUri + "/debian-cloud/global/images/specify_imagesourceImage";
      
      
                      attachedDisk.AutoDelete = true;
                      attachedDisk.Boot = true;
                      attachedDisk.Interface__ = "SCSI";//for example
                      attachedDisk.InitializeParams = attachedDiskInitializeParams;
                      attachedDisks.Add(attachedDisk);
      
                      IList<NetworkInterface> networkInterfaces = new List<NetworkInterface>();
                      NetworkInterface networkInterface = new NetworkInterface();
                      networkInterface.Network = service.BaseUri + ProjectId + "/global/networks/default";
      
                      networkInterfaces.Add(networkInterface);
      
                      Tags tags = new Tags();
                      IList<string> stringList = new List<string>();
      
                      tags.Items = new List<string>();
                      tags.Items.Add("http-server");
                      tags.Items.Add("https-server");
      
                      #endregion DiskSetting
      
                      #region Creating Instance object
      
                      Instance instance = new Instance()
                      {
                          MachineType = requestInstance.SizeId ?? service.BaseUri + "ProjectId" + "/zones/" + "specify_Zone" + "/machineTypes/" + "specify_machineType",
                          Metadata = metaData,
                          Name = "InstanceName",
                          Tags = tags,
                          NetworkInterfaces = networkInterfaces,
                          Disks = attachedDisks
                      };
                      #endregion Creating Instance object
      
                      vmInstances.Add(instance);
                  }
      
             var batchRequest = new BatchRequest(service);
      
              foreach (Instance instance in instances)
              {
                  batchRequest.Queue<Instance>(service.Instances.Insert(instance, ProjectId, Zone),
                       (content, error, i, message) =>
                       {
      
                       });
              }
              await batchRequest.ExecuteAsync();
      
              }
              else
              {
                  throw new Exception("null");
              }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-01
        • 2017-01-07
        • 2018-11-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-04
        相关资源
        最近更新 更多