Azure在创建VM时分配角色

Azure在创建VM时分配角色,azure,azure-virtual-machine,azure-vm-role,Azure,Azure Virtual Machine,Azure Vm Role,我正在用Java编写一个程序,它在Azure中创建一个VM实例,将脚本上载到一个容器,并在VM中下载和执行脚本。但是,我目前在授予机器对容器的访问权限方面面临困难。我补充说 .withSystemAssignedManagedServiceIdentity() 到机器创建。然而,这还不够,显然我还必须向VM添加角色(在我的例子中是存储阅读器)。当我在门户中手动执行此操作时,在机器设置完成后,我会通过SSH看到我具有访问权限。但是在我的Java程序的VM创建过程中有没有一种方法可以做到这一点呢?

我正在用Java编写一个程序,它在Azure中创建一个VM实例,将脚本上载到一个容器,并在VM中下载和执行脚本。但是,我目前在授予机器对容器的访问权限方面面临困难。我补充说

.withSystemAssignedManagedServiceIdentity()

到机器创建。然而,这还不够,显然我还必须向VM添加角色(在我的例子中是存储阅读器)。当我在门户中手动执行此操作时,在机器设置完成后,我会通过SSH看到我具有访问权限。但是在我的Java程序的VM创建过程中有没有一种方法可以做到这一点呢?

有可能的话,您可以使用这个方法

以下是:

VirtualMachine VirtualMachine=azureResourceManager.virtualMachines()
.define(linuxVMName)
.withRegion(地区)
.withNewResourceGroup(rgName)
.withNewPrimaryNetwork(“10.0.0.0/28”)
.withPrimaryPrivateIPAddressDynamic()
.withNewPrimaryPublicIPAddress(pipName)
.WithPopularLinux最大化(知道inuxVirtualMachine.UBUNTU\u服务器\u 16\u 04\u LTS)
.withRootUsername(用户名)
.withRootPassword(密码)
.带有大小(虚拟机类型.标准\u DS2\u V2)
.使用OSDiskCaching(CachingTypes.READ_WRITE)
.withSystemAssignedManagedServiceIdentity()
.WithSystemAssignedEntityBasedAccessTo(“,BuiltInRole.READER)
.create();

谢谢!你帮我节省了很多时间去寻找和尝试那些不可能奏效的东西!非常感谢。您知道我是否必须指定资源组和存储帐户,或者是否有方法允许从该特定VM访问所有资源组/存储帐户?@vedsil抱歉我的疏忽,看起来在java中也是可能的,我错过了使用SystemAssignedEntityBasedAccess的
方法,更新了我的答案。这看起来正是我需要的,我今天就试试!非常感谢。是否还有一个函数可以从例如名称中获取存储帐户ID?@vedsil是的,您可以,只需使用
StorageAccount account=azureResourceManager.storageAccounts().getByResourceGroup(“,”);System.out.println(account.id())
VirtualMachine virtualMachine = azureResourceManager.virtualMachines()
                    .define(linuxVMName)
                        .withRegion(region)
                        .withNewResourceGroup(rgName)
                        .withNewPrimaryNetwork("10.0.0.0/28")
                        .withPrimaryPrivateIPAddressDynamic()
                        .withNewPrimaryPublicIPAddress(pipName)
                        .withPopularLinuxImage(KnownLinuxVirtualMachineImage.UBUNTU_SERVER_16_04_LTS)
                        .withRootUsername(userName)
                        .withRootPassword(password)
                        .withSize(VirtualMachineSizeTypes.STANDARD_DS2_V2)
                        .withOSDiskCaching(CachingTypes.READ_WRITE)
                        .withSystemAssignedManagedServiceIdentity()
                        .withSystemAssignedIdentityBasedAccessTo("<storage-account-resource-id>", BuiltInRole.READER)
                        .create();