Ошибка при развертывании существующей службы приложений с использованием Pulumi.Azure

#azure #pulumi

#azure #pulumi

Вопрос:

Я получаю 2020-10-29T22:27:58.8724283Z I1029 22:27:58.870264 4596 eventsink.go:78] eventSink::Infoerr(<{%reset%}>panic: interface conversion: interface {} is nil, not map[string]interface {} 2020-10-29T22:27:58.8728827Z <{%reset%}>) 2020-10-29T22:27:58.8735984Z I1029 22:27:58.870264 4596 eventsink.go:78] eventSink::Infoerr(<{%reset%}>goroutine 199 [running]: 2020-10-29T22:27:58.8767921Z <{%reset%}>) 2020-10-29T22:27:58.8778359Z I1029 22:27:58.870264 4596 eventsink.go:78] eventSink::Infoerr(<{%reset%}>github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/services/web.expandAppServiceLogs(0x47f6180, 0xc0013eca00, 0x4, 0x47f6180, 0xc0013eca00, 0x1) , когда пытаюсь развернуть существующую службу приложений в Azure.

Эта ошибка не позволяет развернуть мой стек в Azure.

    var webApi = new AppService(appServiceName, new AppServiceArgs
                {
                    Name = appServiceName,
                    ResourceGroupName = resourceGroupName,
                    Identity = new AppServiceIdentityArgs {Type = "SystemAssigned"},
                    AppServicePlanId = appServicePlanId,
                    AppSettings =
                    {
                        {"WEBSITE_RUN_FROM_PACKAGE", webApiCodeBlob},
                        {"AzureStorage__AccountName", storageAccountName},
                        {"AzureStorage__AccountKey", storageAccountPrimaryAccessKey},
                        {"APPINSIGHTS_INSTRUMENTATIONKEY", appInsightsInstrumentationKey},
                        {
                            "APPLICATIONINSIGHTS_CONNECTION_STRING", appInsightsConnectionString
                        },
                        {"ApplicationInsightsAgent_EXTENSION_VERSION", "~2"}
                    },
                    ConnectionStrings =
                    {
                        new AppServiceConnectionStringArgs
                        {
                            Name = "AzureServiceBusConnectionString",
                            Value = serviceBusConnectionString,
                            Type = "Custom"
                        },
                        new AppServiceConnectionStringArgs
                        {
                            Name = "BlobStorageConnectionString",
                            Value = blobConnectionString,
                            Type = "Custom"
                        },
                        new AppServiceConnectionStringArgs
                        {
                            Name = "MongoConnectionString",
                            Value = cosmosAccountConnectionString,
                            Type = "Custom"
                        }
                    },
                    SiteConfig = new AppServiceSiteConfigArgs
                    {
                        AlwaysOn = true,
                        Cors = new AppServiceSiteConfigCorsArgs
                        {
                            AllowedOrigins = allowedOrigins
                        }
                    },
                    Tags = new InputMap<string>()
                    {
                        {"team", Team},
                        {"product", Product},
                        {"productId", ProductId},
                        {"environment", environment},
                        {"service", ServiceName}
                    },
                });
  

Если служба приложений не существует, она работает с первого раза. Сбой происходит только при развертывании существующей службы приложений. Это происходит только тогда, когда в службе приложений не определен раздел журналов.

Я использую Pulumi 3.28.0

Ответ №1:

Я нашел обходной путь для решения этой проблемы, он основан на этом https://github.com/pulumi/pulumi-azure/issues/383#issuecomment-549192628

Похоже, что когда в службе приложений нет раздела «Настройка журналов», и он пытается преобразовать ваш стек C # во внутреннее представление Pulumi, имеется нулевое значение, которое невозможно сопоставить, откройте ссылку, чтобы увидеть более точные сведения о первопричине этого.

Вот как я смог заставить это работать.

Добавьте раздел журналов в свой AppService

  Logs = new AppServiceLogsArgs
                    {
                        ApplicationLogs = new AppServiceLogsApplicationLogsArgs
                        {
                            AzureBlobStorage = new AppServiceLogsApplicationLogsAzureBlobStorageArgs
                            {
                                Level = "Information",
                                RetentionInDays = 1,
                                SasUrl = $"${storageAccount.PrimaryBlobEndpoint}{blobSas}"
                            }
                        },
                        HttpLogs = new AppServiceLogsHttpLogsArgs
                        {
                            FileSystem = new AppServiceLogsHttpLogsFileSystemArgs
                            {
                                RetentionInDays = 1,
                                RetentionInMb = 100
                            }
                        }
                    },