我正在尝试以编程方式从C#/ REST API启动GCE实例(即不使用gcloud或控制台)。在启动期间,这些实例必须具有传递给它们的值(标识谁启动它们,因此每个实例将有所不同),然后这些值将传递给其中运行的各种应用程序。向GCE请求添加环境变量的明显方法似乎是不可能的,那么如何提供动态配置?
我当前用于创建实例的代码,效果很好:
public void CreateInstance(string name)
{
var credentials = GoogleCredential.GetApplicationDefault().CreateScoped(ComputeService.Scope.Compute);
var service = new ComputeService(new BaseClientService.Initializer
{
HttpClientInitializer = credentials,
ApplicationName = "Spin-up"
});
var spec = new Google.Apis.Compute.v1.Data.Instance
{
Name = name
};
var instanceTemplate = service.InstanceTemplates.Get(GCloudConfig.ProjectName, GCloudConfig.TemplateName).Execute();
var insertRequest = service.Instances.Insert(spec, GCloudConfig.ProjectName, GCloudConfig.Region);
insertRequest.SourceInstanceTemplate = instanceTemplate.SelfLink;
insertRequest.Execute();
}
答案 0 :(得分:0)
您可以使用Compute Engine方法的API:instances.start或instances.stop来触发具有C#代码请求的VM实例的启动或停止。
有关这些API方法的其他信息在文档instances.start中进行了描述。和instances.stop。