1
1
import { TerraformStack } from 'cdktf'
2
- import { FunctionApp } from '@cdktf/provider-azurerm'
3
2
import { BoosterConfig } from '@boostercloud/framework-types'
4
3
import { ApplicationSynthStack , RocketUtils } from '@boostercloud/framework-provider-azure-infrastructure'
5
4
import { getFunctionAppName } from '../helper'
6
5
import { functionID } from '@boostercloud/rocket-webhook-types'
6
+ import { AzurermProvider } from '@cdktf/provider-azurerm/lib/provider'
7
+ import { windowsFunctionApp } from '@cdktf/provider-azurerm'
7
8
8
9
export class TerraformFunctionApp {
9
10
static build (
11
+ providerResource : AzurermProvider ,
10
12
terraformStack : TerraformStack ,
11
13
applicationSynthStack : ApplicationSynthStack ,
12
14
config : BoosterConfig ,
13
15
utils : RocketUtils
14
- ) : FunctionApp {
16
+ ) : windowsFunctionApp . WindowsFunctionApp {
15
17
const resourceGroup = applicationSynthStack . resourceGroup !
16
18
const applicationServicePlan = applicationSynthStack . applicationServicePlan !
17
19
const storageAccount = applicationSynthStack . storageAccount !
@@ -21,32 +23,33 @@ export class TerraformFunctionApp {
21
23
const functionAppName = getFunctionAppName ( applicationSynthStack )
22
24
23
25
const id = utils . toTerraformName ( applicationSynthStack . appPrefix , 'webhookfunc' )
24
- return new FunctionApp ( terraformStack , id , {
26
+ return new windowsFunctionApp . WindowsFunctionApp ( terraformStack , id , {
25
27
name : functionAppName ,
26
28
location : resourceGroup . location ,
27
29
resourceGroupName : resourceGroup . name ,
28
- appServicePlanId : applicationServicePlan . id ,
30
+ servicePlanId : applicationServicePlan . id ,
29
31
appSettings : {
30
- FUNCTIONS_WORKER_RUNTIME : 'node' ,
31
- AzureWebJobsStorage : storageAccount . primaryConnectionString ,
32
- WEBSITE_CONTENTAZUREFILECONNECTIONSTRING : storageAccount . primaryConnectionString ,
33
- WEBSITE_RUN_FROM_PACKAGE : '' ,
32
+ WEBSITE_RUN_FROM_PACKAGE : '1' ,
34
33
WEBSITE_CONTENTSHARE : id ,
35
- WEBSITE_NODE_DEFAULT_VERSION : '~14' ,
36
34
...config . env ,
37
35
BOOSTER_ENV : config . environmentName ,
38
36
BOOSTER_REST_API_URL : `https://${ apiManagementServiceName } .azure-api.net/${ config . environmentName } ` ,
39
37
COSMOSDB_CONNECTION_STRING : `AccountEndpoint=https://${ cosmosDatabaseName } .documents.azure.com:443/;AccountKey=${ cosmosDbConnectionString } ;` ,
40
38
BOOSTER_ROCKET_FUNCTION_ID : functionID ,
41
39
} ,
42
- osType : 'linux' ,
43
40
storageAccountName : storageAccount . name ,
44
41
storageAccountAccessKey : storageAccount . primaryAccessKey ,
45
- version : '~3' ,
46
42
dependsOn : [ resourceGroup ] ,
47
43
lifecycle : {
48
44
ignoreChanges : [ 'app_settings["WEBSITE_RUN_FROM_PACKAGE"]' ] ,
49
45
} ,
46
+ provider : providerResource ,
47
+ siteConfig : {
48
+ applicationStack : {
49
+ nodeVersion : '~14' ,
50
+ } ,
51
+ } ,
52
+ functionsExtensionVersion : '~3' , // keep it on version 3. Version 4 needs a migration process
50
53
} )
51
54
}
52
55
}
0 commit comments