gpt4 book ai didi

c# - 如何使用 C# 启动之前停止的 Azure 容器实例?

转载 作者:太空宇宙 更新时间:2023-11-03 12:08:26 25 4
gpt4 key购买 nike

我有以下代码来停止 Azure 容器实例,并希望使用类似的代码来启动它。

using Microsoft.Azure.Management.Compute.Fluent.Models;
using Microsoft.Azure.Management.Fluent;
using Microsoft.Azure.Management.ResourceManager.Fluent;
using Microsoft.Azure.Management.ResourceManager.Fluent.Core;

var credentials = SdkContext.AzureCredentialsFactory.FromServicePrincipal("XXXX", "XXXX", "XXXX", AzureEnvironment.AzureGlobalCloud);

var azure = Azure
.Configure()
.WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
.Authenticate(credentials)
.WithSubscription("XXXXX");

var containerName = "mycontainer";
var containerGroup = azure.ContainerGroups.GetByResourceGroup("myResourceGroup", containerName);
if (containerGroup.State == "Running")
{
containerGroup.Stop();
}

我想做同样的事情并启动我的 azure 容器实例。那么containerGroup.Start();在哪里? ?这在界面中似乎不存在。我尝试过使用containerGroup.Restart();但这在停止状态下不起作用。我需要能够在 C# 代码中执行此操作,并且希望尽可能避免使用 powershell。

最佳答案

有一种方法可以做到这一点,但它没有在 Fluent API 中公开:

using Microsoft.Azure.Management.ContainerInstance.Fluent;

// azure is an instance of IAzure; the fluent Azure API
var resources = await azure.ContainerGroups.ListAsync();

foreach(var containerGroup in resources.Where(aci => aci.State != "Running"))
{
await ContainerGroupsOperationsExtensions.StartAsync(
containerGroup.Manager.Inner.ContainerGroups,
containerGroup.ResourceGroupName,
containerGroup.Name);
}

正如其他人所提到的,您确实需要意识到这实际上是在启动一个新容器。除非您在其他地方(如 mounted volume 中)保留该状态,否则不会保留上次运行的任何状态。 .

您还需要向执行此代码的人员授予适当的权限。我正在使用一个函数,所以我必须设置一个服务帐户和一个角色,这个 blog post有所有详细信息。

更新我使用的代码位于 GitHub 上:https://github.com/alanta/azure_scheduler/blob/master/src/StartACIs.cs

关于c# - 如何使用 C# 启动之前停止的 Azure 容器实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53691613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com