Can';t使用azure Java管理库在订阅中列出azure appservices(春季启动应用程序)

Can';t使用azure Java管理库在订阅中列出azure appservices(春季启动应用程序),java,azure,spring-boot,azure-web-app-service,azure-management-api,Java,Azure,Spring Boot,Azure Web App Service,Azure Management Api,我正在尝试使用azure java管理库在我的一个azure订阅中列出appservices中部署的spring boot应用程序,但无法这样做 在azure cli中一切正常 azure java sdk 1.18.0版(最新) jdk 1.8.0版172 格雷德尔先生 dependencies { compile group: 'com.microsoft.azure', name: 'azure', version: '1.18.0' compile group: 'ch.

我正在尝试使用azure java管理库在我的一个azure订阅中列出appservices中部署的spring boot应用程序,但无法这样做

在azure cli中一切正常

azure java sdk 1.18.0版(最新)

jdk 1.8.0版172

格雷德尔先生

dependencies {
    compile group: 'com.microsoft.azure', name: 'azure', version: '1.18.0'
    compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
    testCompile group: 'junit', name: 'junit', version: '4.12'
}
片段

try {
    Azure azure = Azure
                   .configure()
                   .authenticate(applicationTokenCredentials)
                   .withDefaultSubscription();

            listWebApps(azure);
            listWebAppsUsingAppServicePlan(azure);

        } catch (IOException e) {
            e.printStackTrace();
        }

private static void listWebAppsUsingAppServicePlan(Azure azure){
    PagedList<WebApp> webAppPagedList = azure.appServices().webApps().list();
    System.out.printf("There are %d web apps when searched via azure.appServices().webApps()\n", webAppPagedList.size());
    for (WebApp app : webAppPagedList) {
        System.out.printf("App: %s, Deployment slots: %d", app.name(), app.deploymentSlots().list().size());
    }

}

private static void listWebApps(Azure azure){
    PagedList<WebApp> webAppPagedList = azure.webApps().list();
    System.out.printf("There are %d web apps when searched via azure.webApps()\n", webAppPagedList.size());
    for (WebApp app : webAppPagedList) {
        System.out.printf("App: %s, Deployment slots: %d", app.name(), app.deploymentSlots().list().size());
    }
}
试试看{
天蓝
.configure()
.验证(应用程序验证凭据)
.withDefaultSubscription();
listWebApps(azure);
listWebAppsUsingAppServicePlan(azure);
}捕获(IOE异常){
e、 printStackTrace();
}
私有静态无效列表WebAppsUsingAppServicePlan(Azure){
PagedList webAppPagedList=azure.appServices().webApps().list();
System.out.printf(“通过azure.appServices().webApps()\n”,webAppPagedList.size()搜索时,共有%d个web应用);
用于(WebApp应用程序:webAppPagedList){
System.out.printf(“应用程序:%s,部署插槽:%d”,应用程序名(),应用程序部署插槽().list().size());
}
}
私有静态无效listWebApps(Azure){
PagedList webAppPagedList=azure.webApps().list();
System.out.printf(“通过azure.webApps()\n”,webAppPagedList.size()搜索时,有%d个web应用);
用于(WebApp应用程序:webAppPagedList){
System.out.printf(“应用程序:%s,部署插槽:%d”,应用程序名(),应用程序部署插槽().list().size());
}
}
输出

通过azure.webApps()搜索时,共有0个web应用
通过azure.appServices().webApps()搜索时,共有0个web应用程序。

我是否遗漏了什么或者是否有一些先决条件让我知道


非常感谢。

我测试代码,但不是gradle,我的是maven。我使用
az ad sp create for rbac--sdk auth>my.azureauth
获取
my.azureauth
文件,然后获取
clientID
clientScrect
sunscriptionId
tenantID
。这是我的结果,效果很好

这是我的密码

import com.microsoft.azure.AzureEnvironment;
import com.microsoft.azure.PagedList;
import com.microsoft.azure.credentials.ApplicationTokenCredentials;
import com.microsoft.azure.management.Azure;
import com.microsoft.azure.management.appservice.WebApp;


public class App 
{
public static void main( String[] args )
{

    String client="*******";
    String tenant="*******";
    String key="********";
    String subscriptionId="********";
    ApplicationTokenCredentials credentials = new ApplicationTokenCredentials(
            client, tenant, key, AzureEnvironment.AZURE);
    Azure azure = Azure.authenticate(credentials).withSubscription(subscriptionId);

    System.out.println("asd");
    listWebApps(azure);
    System.out.println("asd");
    listWebAppsUsingAppServicePlan(azure);
}



private static void listWebAppsUsingAppServicePlan(Azure azure){
    PagedList<WebApp> webAppPagedList = azure.appServices().webApps().list();
    System.out.printf("There are %d web apps when searched via azure.appServices().webApps()\n", webAppPagedList.size());
    for (WebApp app : webAppPagedList) {
        System.out.printf("App: %s, Deployment slots: %d", app.name(), app.deploymentSlots().list().size());
    }

}

private static void listWebApps(Azure azure){
    PagedList<WebApp> webAppPagedList = azure.webApps().list();
    System.out.printf("There are %d web apps when searched via azure.webApps()\n", webAppPagedList.size());
    for (WebApp app : webAppPagedList) {
        System.out.printf("App: %s, Deployment slots: %d", app.name(), app.deploymentSlots().list().size());
    }
}

}
导入com.microsoft.azure.AzureEnvironment;
导入com.microsoft.azure.PagedList;
导入com.microsoft.azure.credentials.ApplicationTokenCredentials;
导入com.microsoft.azure.management.azure;
导入com.microsoft.azure.management.appservice.WebApp;
公共类应用程序
{
公共静态void main(字符串[]args)
{
字符串client=“*******”;
字符串tenant=“*******”;
字符串键=“*******”;
字符串subscriptionId=“*******”;
ApplicationTokenCredentials credentials=新的ApplicationTokenCredentials(
客户端、租户、密钥、AzureEnvironment.AZURE);
Azure=Azure.authenticate(凭据)。使用Subscription(subscriptionId);
系统输出打印项次(“asd”);
listWebApps(azure);
系统输出打印项次(“asd”);
listWebAppsUsingAppServicePlan(azure);
}
私有静态无效列表WebAppsUsingAppServicePlan(Azure){
PagedList webAppPagedList=azure.appServices().webApps().list();
System.out.printf(“通过azure.appServices().webApps()\n”,webAppPagedList.size()搜索时,共有%d个web应用);
用于(WebApp应用程序:webAppPagedList){
System.out.printf(“应用程序:%s,部署插槽:%d”,应用程序名(),应用程序部署插槽().list().size());
}
}
私有静态无效listWebApps(Azure){
PagedList webAppPagedList=azure.webApps().list();
System.out.printf(“通过azure.webApps()\n”,webAppPagedList.size()搜索时,有%d个web应用);
用于(WebApp应用程序:webAppPagedList){
System.out.printf(“应用程序:%s,部署插槽:%d”,应用程序名(),应用程序部署插槽().list().size());
}
}
}
注意:身份验证和运行获取web列表的方法将花费大量时间。
如果您还有其他问题,请告诉我。

不知何故
azure.webApps().list()
方法返回了一个空列表,但切换到
azure.webapps.listAsync()
解决了我的问题

新片段

    azure.webApps().listAsync()
            .subscribe(webApp -> {
                int capacity = webApp.manager().appServicePlans().getById(webApp.appServicePlanId()).capacity();
                System.out.println(webApp.name() + ": " + capacity + (capacity == 1 ? " instance" : " instances"));
            });
}

感谢anwer,但在发布“我尝试使用凭据”文件之前,Cli身份验证无效。对此表示抱歉。