All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.azure.appservice.LinuxFunctionAppArgs Maven / Gradle / Ivy

Go to download

A Pulumi package for creating and managing Microsoft Azure cloud resources, based on the Terraform azurerm provider. We recommend using the [Azure Native provider](https://github.com/pulumi/pulumi-azure-native) to provision Azure infrastructure. Azure Native provides complete coverage of Azure resources and same-day access to new resources and resource updates.

There is a newer version: 6.10.0-alpha.1731737215
Show newest version
// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.azure.appservice;

import com.pulumi.azure.appservice.inputs.LinuxFunctionAppAuthSettingsArgs;
import com.pulumi.azure.appservice.inputs.LinuxFunctionAppAuthSettingsV2Args;
import com.pulumi.azure.appservice.inputs.LinuxFunctionAppBackupArgs;
import com.pulumi.azure.appservice.inputs.LinuxFunctionAppConnectionStringArgs;
import com.pulumi.azure.appservice.inputs.LinuxFunctionAppIdentityArgs;
import com.pulumi.azure.appservice.inputs.LinuxFunctionAppSiteConfigArgs;
import com.pulumi.azure.appservice.inputs.LinuxFunctionAppStickySettingsArgs;
import com.pulumi.azure.appservice.inputs.LinuxFunctionAppStorageAccountArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.exceptions.MissingRequiredPropertyException;
import java.lang.Boolean;
import java.lang.Integer;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class LinuxFunctionAppArgs extends com.pulumi.resources.ResourceArgs {

    public static final LinuxFunctionAppArgs Empty = new LinuxFunctionAppArgs();

    /**
     * A map of key-value pairs for [App
     * Settings](https://docs.microsoft.com/en-us/azure/azure-functions/functions-app-settings) and custom values.
     * 
     */
    @Import(name="appSettings")
    private @Nullable Output> appSettings;

    /**
     * @return A map of key-value pairs for [App
     * Settings](https://docs.microsoft.com/en-us/azure/azure-functions/functions-app-settings) and custom values.
     * 
     */
    public Optional>> appSettings() {
        return Optional.ofNullable(this.appSettings);
    }

    /**
     * A `auth_settings` block as defined below.
     * 
     */
    @Import(name="authSettings")
    private @Nullable Output authSettings;

    /**
     * @return A `auth_settings` block as defined below.
     * 
     */
    public Optional> authSettings() {
        return Optional.ofNullable(this.authSettings);
    }

    /**
     * An `auth_settings_v2` block as defined below.
     * 
     */
    @Import(name="authSettingsV2")
    private @Nullable Output authSettingsV2;

    /**
     * @return An `auth_settings_v2` block as defined below.
     * 
     */
    public Optional> authSettingsV2() {
        return Optional.ofNullable(this.authSettingsV2);
    }

    /**
     * A `backup` block as defined below.
     * 
     */
    @Import(name="backup")
    private @Nullable Output backup;

    /**
     * @return A `backup` block as defined below.
     * 
     */
    public Optional> backup() {
        return Optional.ofNullable(this.backup);
    }

    /**
     * Should built in logging be enabled. Configures `AzureWebJobsDashboard` app setting based on the configured storage setting. Defaults to `true`.
     * 
     */
    @Import(name="builtinLoggingEnabled")
    private @Nullable Output builtinLoggingEnabled;

    /**
     * @return Should built in logging be enabled. Configures `AzureWebJobsDashboard` app setting based on the configured storage setting. Defaults to `true`.
     * 
     */
    public Optional> builtinLoggingEnabled() {
        return Optional.ofNullable(this.builtinLoggingEnabled);
    }

    /**
     * Should the function app use Client Certificates.
     * 
     */
    @Import(name="clientCertificateEnabled")
    private @Nullable Output clientCertificateEnabled;

    /**
     * @return Should the function app use Client Certificates.
     * 
     */
    public Optional> clientCertificateEnabled() {
        return Optional.ofNullable(this.clientCertificateEnabled);
    }

    /**
     * Paths to exclude when using client certificates, separated by ;
     * 
     */
    @Import(name="clientCertificateExclusionPaths")
    private @Nullable Output clientCertificateExclusionPaths;

    /**
     * @return Paths to exclude when using client certificates, separated by ;
     * 
     */
    public Optional> clientCertificateExclusionPaths() {
        return Optional.ofNullable(this.clientCertificateExclusionPaths);
    }

    /**
     * The mode of the Function App's client certificates requirement for incoming requests. Possible values are `Required`, `Optional`, and `OptionalInteractiveUser`. Defaults to `Optional`.
     * 
     */
    @Import(name="clientCertificateMode")
    private @Nullable Output clientCertificateMode;

    /**
     * @return The mode of the Function App's client certificates requirement for incoming requests. Possible values are `Required`, `Optional`, and `OptionalInteractiveUser`. Defaults to `Optional`.
     * 
     */
    public Optional> clientCertificateMode() {
        return Optional.ofNullable(this.clientCertificateMode);
    }

    /**
     * One or more `connection_string` blocks as defined below.
     * 
     */
    @Import(name="connectionStrings")
    private @Nullable Output> connectionStrings;

    /**
     * @return One or more `connection_string` blocks as defined below.
     * 
     */
    public Optional>> connectionStrings() {
        return Optional.ofNullable(this.connectionStrings);
    }

    /**
     * Should the settings for linking the Function App to storage be suppressed.
     * 
     */
    @Import(name="contentShareForceDisabled")
    private @Nullable Output contentShareForceDisabled;

    /**
     * @return Should the settings for linking the Function App to storage be suppressed.
     * 
     */
    public Optional> contentShareForceDisabled() {
        return Optional.ofNullable(this.contentShareForceDisabled);
    }

    /**
     * The amount of memory in gigabyte-seconds that your application is allowed to consume per day. Setting this value only affects function apps under the consumption plan. Defaults to `0`.
     * 
     */
    @Import(name="dailyMemoryTimeQuota")
    private @Nullable Output dailyMemoryTimeQuota;

    /**
     * @return The amount of memory in gigabyte-seconds that your application is allowed to consume per day. Setting this value only affects function apps under the consumption plan. Defaults to `0`.
     * 
     */
    public Optional> dailyMemoryTimeQuota() {
        return Optional.ofNullable(this.dailyMemoryTimeQuota);
    }

    /**
     * Is the Function App enabled? Defaults to `true`.
     * 
     */
    @Import(name="enabled")
    private @Nullable Output enabled;

    /**
     * @return Is the Function App enabled? Defaults to `true`.
     * 
     */
    public Optional> enabled() {
        return Optional.ofNullable(this.enabled);
    }

    /**
     * Should the default FTP Basic Authentication publishing profile be enabled. Defaults to `true`.
     * 
     */
    @Import(name="ftpPublishBasicAuthenticationEnabled")
    private @Nullable Output ftpPublishBasicAuthenticationEnabled;

    /**
     * @return Should the default FTP Basic Authentication publishing profile be enabled. Defaults to `true`.
     * 
     */
    public Optional> ftpPublishBasicAuthenticationEnabled() {
        return Optional.ofNullable(this.ftpPublishBasicAuthenticationEnabled);
    }

    /**
     * The runtime version associated with the Function App. Defaults to `~4`.
     * 
     */
    @Import(name="functionsExtensionVersion")
    private @Nullable Output functionsExtensionVersion;

    /**
     * @return The runtime version associated with the Function App. Defaults to `~4`.
     * 
     */
    public Optional> functionsExtensionVersion() {
        return Optional.ofNullable(this.functionsExtensionVersion);
    }

    /**
     * Can the Function App only be accessed via HTTPS? Defaults to `false`.
     * 
     */
    @Import(name="httpsOnly")
    private @Nullable Output httpsOnly;

    /**
     * @return Can the Function App only be accessed via HTTPS? Defaults to `false`.
     * 
     */
    public Optional> httpsOnly() {
        return Optional.ofNullable(this.httpsOnly);
    }

    /**
     * A `identity` block as defined below.
     * 
     */
    @Import(name="identity")
    private @Nullable Output identity;

    /**
     * @return A `identity` block as defined below.
     * 
     */
    public Optional> identity() {
        return Optional.ofNullable(this.identity);
    }

    /**
     * The User Assigned Identity ID used for accessing KeyVault secrets. The identity must be assigned to the application in the `identity` block. [For more information see - Access vaults with a user-assigned identity](https://docs.microsoft.com/azure/app-service/app-service-key-vault-references#access-vaults-with-a-user-assigned-identity)
     * 
     */
    @Import(name="keyVaultReferenceIdentityId")
    private @Nullable Output keyVaultReferenceIdentityId;

    /**
     * @return The User Assigned Identity ID used for accessing KeyVault secrets. The identity must be assigned to the application in the `identity` block. [For more information see - Access vaults with a user-assigned identity](https://docs.microsoft.com/azure/app-service/app-service-key-vault-references#access-vaults-with-a-user-assigned-identity)
     * 
     */
    public Optional> keyVaultReferenceIdentityId() {
        return Optional.ofNullable(this.keyVaultReferenceIdentityId);
    }

    /**
     * The Azure Region where the Linux Function App should exist. Changing this forces a new Linux Function App to be created.
     * 
     */
    @Import(name="location")
    private @Nullable Output location;

    /**
     * @return The Azure Region where the Linux Function App should exist. Changing this forces a new Linux Function App to be created.
     * 
     */
    public Optional> location() {
        return Optional.ofNullable(this.location);
    }

    /**
     * The name which should be used for this Linux Function App. Changing this forces a new Linux Function App to be created. Limit the function name to 32 characters to avoid naming collisions. For more information about [Function App naming rule](https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/resource-name-rules#microsoftweb) and [Host ID Collisions](https://github.com/Azure/azure-functions-host/wiki/Host-IDs#host-id-collisions)
     * 
     */
    @Import(name="name")
    private @Nullable Output name;

    /**
     * @return The name which should be used for this Linux Function App. Changing this forces a new Linux Function App to be created. Limit the function name to 32 characters to avoid naming collisions. For more information about [Function App naming rule](https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/resource-name-rules#microsoftweb) and [Host ID Collisions](https://github.com/Azure/azure-functions-host/wiki/Host-IDs#host-id-collisions)
     * 
     */
    public Optional> name() {
        return Optional.ofNullable(this.name);
    }

    /**
     * Should public network access be enabled for the Function App. Defaults to `true`.
     * 
     */
    @Import(name="publicNetworkAccessEnabled")
    private @Nullable Output publicNetworkAccessEnabled;

    /**
     * @return Should public network access be enabled for the Function App. Defaults to `true`.
     * 
     */
    public Optional> publicNetworkAccessEnabled() {
        return Optional.ofNullable(this.publicNetworkAccessEnabled);
    }

    /**
     * The name of the Resource Group where the Linux Function App should exist. Changing this forces a new Linux Function App to be created.
     * 
     */
    @Import(name="resourceGroupName", required=true)
    private Output resourceGroupName;

    /**
     * @return The name of the Resource Group where the Linux Function App should exist. Changing this forces a new Linux Function App to be created.
     * 
     */
    public Output resourceGroupName() {
        return this.resourceGroupName;
    }

    /**
     * The ID of the App Service Plan within which to create this Function App.
     * 
     */
    @Import(name="servicePlanId", required=true)
    private Output servicePlanId;

    /**
     * @return The ID of the App Service Plan within which to create this Function App.
     * 
     */
    public Output servicePlanId() {
        return this.servicePlanId;
    }

    /**
     * A `site_config` block as defined below.
     * 
     */
    @Import(name="siteConfig", required=true)
    private Output siteConfig;

    /**
     * @return A `site_config` block as defined below.
     * 
     */
    public Output siteConfig() {
        return this.siteConfig;
    }

    /**
     * A `sticky_settings` block as defined below.
     * 
     */
    @Import(name="stickySettings")
    private @Nullable Output stickySettings;

    /**
     * @return A `sticky_settings` block as defined below.
     * 
     */
    public Optional> stickySettings() {
        return Optional.ofNullable(this.stickySettings);
    }

    /**
     * The access key which will be used to access the backend storage account for the Function App. Conflicts with `storage_uses_managed_identity`.
     * 
     */
    @Import(name="storageAccountAccessKey")
    private @Nullable Output storageAccountAccessKey;

    /**
     * @return The access key which will be used to access the backend storage account for the Function App. Conflicts with `storage_uses_managed_identity`.
     * 
     */
    public Optional> storageAccountAccessKey() {
        return Optional.ofNullable(this.storageAccountAccessKey);
    }

    /**
     * The backend storage account name which will be used by this Function App.
     * 
     */
    @Import(name="storageAccountName")
    private @Nullable Output storageAccountName;

    /**
     * @return The backend storage account name which will be used by this Function App.
     * 
     */
    public Optional> storageAccountName() {
        return Optional.ofNullable(this.storageAccountName);
    }

    /**
     * One or more `storage_account` blocks as defined below.
     * 
     */
    @Import(name="storageAccounts")
    private @Nullable Output> storageAccounts;

    /**
     * @return One or more `storage_account` blocks as defined below.
     * 
     */
    public Optional>> storageAccounts() {
        return Optional.ofNullable(this.storageAccounts);
    }

    /**
     * The Key Vault Secret ID, optionally including version, that contains the Connection String to connect to the storage account for this Function App.
     * 
     * > **NOTE:** `storage_key_vault_secret_id` cannot be used with `storage_account_name`.
     * 
     * > **NOTE:** `storage_key_vault_secret_id` used without a version will use the latest version of the secret, however, the service can take up to 24h to pick up a rotation of the latest version. See the [official docs](https://docs.microsoft.com/azure/app-service/app-service-key-vault-references#rotation) for more information.
     * 
     */
    @Import(name="storageKeyVaultSecretId")
    private @Nullable Output storageKeyVaultSecretId;

    /**
     * @return The Key Vault Secret ID, optionally including version, that contains the Connection String to connect to the storage account for this Function App.
     * 
     * > **NOTE:** `storage_key_vault_secret_id` cannot be used with `storage_account_name`.
     * 
     * > **NOTE:** `storage_key_vault_secret_id` used without a version will use the latest version of the secret, however, the service can take up to 24h to pick up a rotation of the latest version. See the [official docs](https://docs.microsoft.com/azure/app-service/app-service-key-vault-references#rotation) for more information.
     * 
     */
    public Optional> storageKeyVaultSecretId() {
        return Optional.ofNullable(this.storageKeyVaultSecretId);
    }

    /**
     * Should the Function App use Managed Identity to access the storage account. Conflicts with `storage_account_access_key`.
     * 
     * > **NOTE:** One of `storage_account_access_key` or `storage_uses_managed_identity` must be specified when using `storage_account_name`.
     * 
     */
    @Import(name="storageUsesManagedIdentity")
    private @Nullable Output storageUsesManagedIdentity;

    /**
     * @return Should the Function App use Managed Identity to access the storage account. Conflicts with `storage_account_access_key`.
     * 
     * > **NOTE:** One of `storage_account_access_key` or `storage_uses_managed_identity` must be specified when using `storage_account_name`.
     * 
     */
    public Optional> storageUsesManagedIdentity() {
        return Optional.ofNullable(this.storageUsesManagedIdentity);
    }

    /**
     * A mapping of tags which should be assigned to the Linux Function App.
     * 
     */
    @Import(name="tags")
    private @Nullable Output> tags;

    /**
     * @return A mapping of tags which should be assigned to the Linux Function App.
     * 
     */
    public Optional>> tags() {
        return Optional.ofNullable(this.tags);
    }

    @Import(name="virtualNetworkSubnetId")
    private @Nullable Output virtualNetworkSubnetId;

    public Optional> virtualNetworkSubnetId() {
        return Optional.ofNullable(this.virtualNetworkSubnetId);
    }

    /**
     * Is container image pull over virtual network enabled? Defaults to `false`.
     * 
     */
    @Import(name="vnetImagePullEnabled")
    private @Nullable Output vnetImagePullEnabled;

    /**
     * @return Is container image pull over virtual network enabled? Defaults to `false`.
     * 
     */
    public Optional> vnetImagePullEnabled() {
        return Optional.ofNullable(this.vnetImagePullEnabled);
    }

    /**
     * Should the default WebDeploy Basic Authentication publishing credentials enabled. Defaults to `true`.
     * 
     * > **NOTE:** Setting this value to true will disable the ability to use `zip_deploy_file` which currently relies on the default publishing profile.
     * 
     */
    @Import(name="webdeployPublishBasicAuthenticationEnabled")
    private @Nullable Output webdeployPublishBasicAuthenticationEnabled;

    /**
     * @return Should the default WebDeploy Basic Authentication publishing credentials enabled. Defaults to `true`.
     * 
     * > **NOTE:** Setting this value to true will disable the ability to use `zip_deploy_file` which currently relies on the default publishing profile.
     * 
     */
    public Optional> webdeployPublishBasicAuthenticationEnabled() {
        return Optional.ofNullable(this.webdeployPublishBasicAuthenticationEnabled);
    }

    /**
     * The local path and filename of the Zip packaged application to deploy to this Linux Function App.
     * 
     * > **Note:** Using this value requires either `WEBSITE_RUN_FROM_PACKAGE=1` or `SCM_DO_BUILD_DURING_DEPLOYMENT=true` to be set on the App in `app_settings`. Refer to the [Azure docs](https://learn.microsoft.com/en-us/azure/azure-functions/functions-deployment-technologies) for further details.
     * 
     */
    @Import(name="zipDeployFile")
    private @Nullable Output zipDeployFile;

    /**
     * @return The local path and filename of the Zip packaged application to deploy to this Linux Function App.
     * 
     * > **Note:** Using this value requires either `WEBSITE_RUN_FROM_PACKAGE=1` or `SCM_DO_BUILD_DURING_DEPLOYMENT=true` to be set on the App in `app_settings`. Refer to the [Azure docs](https://learn.microsoft.com/en-us/azure/azure-functions/functions-deployment-technologies) for further details.
     * 
     */
    public Optional> zipDeployFile() {
        return Optional.ofNullable(this.zipDeployFile);
    }

    private LinuxFunctionAppArgs() {}

    private LinuxFunctionAppArgs(LinuxFunctionAppArgs $) {
        this.appSettings = $.appSettings;
        this.authSettings = $.authSettings;
        this.authSettingsV2 = $.authSettingsV2;
        this.backup = $.backup;
        this.builtinLoggingEnabled = $.builtinLoggingEnabled;
        this.clientCertificateEnabled = $.clientCertificateEnabled;
        this.clientCertificateExclusionPaths = $.clientCertificateExclusionPaths;
        this.clientCertificateMode = $.clientCertificateMode;
        this.connectionStrings = $.connectionStrings;
        this.contentShareForceDisabled = $.contentShareForceDisabled;
        this.dailyMemoryTimeQuota = $.dailyMemoryTimeQuota;
        this.enabled = $.enabled;
        this.ftpPublishBasicAuthenticationEnabled = $.ftpPublishBasicAuthenticationEnabled;
        this.functionsExtensionVersion = $.functionsExtensionVersion;
        this.httpsOnly = $.httpsOnly;
        this.identity = $.identity;
        this.keyVaultReferenceIdentityId = $.keyVaultReferenceIdentityId;
        this.location = $.location;
        this.name = $.name;
        this.publicNetworkAccessEnabled = $.publicNetworkAccessEnabled;
        this.resourceGroupName = $.resourceGroupName;
        this.servicePlanId = $.servicePlanId;
        this.siteConfig = $.siteConfig;
        this.stickySettings = $.stickySettings;
        this.storageAccountAccessKey = $.storageAccountAccessKey;
        this.storageAccountName = $.storageAccountName;
        this.storageAccounts = $.storageAccounts;
        this.storageKeyVaultSecretId = $.storageKeyVaultSecretId;
        this.storageUsesManagedIdentity = $.storageUsesManagedIdentity;
        this.tags = $.tags;
        this.virtualNetworkSubnetId = $.virtualNetworkSubnetId;
        this.vnetImagePullEnabled = $.vnetImagePullEnabled;
        this.webdeployPublishBasicAuthenticationEnabled = $.webdeployPublishBasicAuthenticationEnabled;
        this.zipDeployFile = $.zipDeployFile;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(LinuxFunctionAppArgs defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private LinuxFunctionAppArgs $;

        public Builder() {
            $ = new LinuxFunctionAppArgs();
        }

        public Builder(LinuxFunctionAppArgs defaults) {
            $ = new LinuxFunctionAppArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param appSettings A map of key-value pairs for [App
         * Settings](https://docs.microsoft.com/en-us/azure/azure-functions/functions-app-settings) and custom values.
         * 
         * @return builder
         * 
         */
        public Builder appSettings(@Nullable Output> appSettings) {
            $.appSettings = appSettings;
            return this;
        }

        /**
         * @param appSettings A map of key-value pairs for [App
         * Settings](https://docs.microsoft.com/en-us/azure/azure-functions/functions-app-settings) and custom values.
         * 
         * @return builder
         * 
         */
        public Builder appSettings(Map appSettings) {
            return appSettings(Output.of(appSettings));
        }

        /**
         * @param authSettings A `auth_settings` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder authSettings(@Nullable Output authSettings) {
            $.authSettings = authSettings;
            return this;
        }

        /**
         * @param authSettings A `auth_settings` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder authSettings(LinuxFunctionAppAuthSettingsArgs authSettings) {
            return authSettings(Output.of(authSettings));
        }

        /**
         * @param authSettingsV2 An `auth_settings_v2` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder authSettingsV2(@Nullable Output authSettingsV2) {
            $.authSettingsV2 = authSettingsV2;
            return this;
        }

        /**
         * @param authSettingsV2 An `auth_settings_v2` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder authSettingsV2(LinuxFunctionAppAuthSettingsV2Args authSettingsV2) {
            return authSettingsV2(Output.of(authSettingsV2));
        }

        /**
         * @param backup A `backup` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder backup(@Nullable Output backup) {
            $.backup = backup;
            return this;
        }

        /**
         * @param backup A `backup` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder backup(LinuxFunctionAppBackupArgs backup) {
            return backup(Output.of(backup));
        }

        /**
         * @param builtinLoggingEnabled Should built in logging be enabled. Configures `AzureWebJobsDashboard` app setting based on the configured storage setting. Defaults to `true`.
         * 
         * @return builder
         * 
         */
        public Builder builtinLoggingEnabled(@Nullable Output builtinLoggingEnabled) {
            $.builtinLoggingEnabled = builtinLoggingEnabled;
            return this;
        }

        /**
         * @param builtinLoggingEnabled Should built in logging be enabled. Configures `AzureWebJobsDashboard` app setting based on the configured storage setting. Defaults to `true`.
         * 
         * @return builder
         * 
         */
        public Builder builtinLoggingEnabled(Boolean builtinLoggingEnabled) {
            return builtinLoggingEnabled(Output.of(builtinLoggingEnabled));
        }

        /**
         * @param clientCertificateEnabled Should the function app use Client Certificates.
         * 
         * @return builder
         * 
         */
        public Builder clientCertificateEnabled(@Nullable Output clientCertificateEnabled) {
            $.clientCertificateEnabled = clientCertificateEnabled;
            return this;
        }

        /**
         * @param clientCertificateEnabled Should the function app use Client Certificates.
         * 
         * @return builder
         * 
         */
        public Builder clientCertificateEnabled(Boolean clientCertificateEnabled) {
            return clientCertificateEnabled(Output.of(clientCertificateEnabled));
        }

        /**
         * @param clientCertificateExclusionPaths Paths to exclude when using client certificates, separated by ;
         * 
         * @return builder
         * 
         */
        public Builder clientCertificateExclusionPaths(@Nullable Output clientCertificateExclusionPaths) {
            $.clientCertificateExclusionPaths = clientCertificateExclusionPaths;
            return this;
        }

        /**
         * @param clientCertificateExclusionPaths Paths to exclude when using client certificates, separated by ;
         * 
         * @return builder
         * 
         */
        public Builder clientCertificateExclusionPaths(String clientCertificateExclusionPaths) {
            return clientCertificateExclusionPaths(Output.of(clientCertificateExclusionPaths));
        }

        /**
         * @param clientCertificateMode The mode of the Function App's client certificates requirement for incoming requests. Possible values are `Required`, `Optional`, and `OptionalInteractiveUser`. Defaults to `Optional`.
         * 
         * @return builder
         * 
         */
        public Builder clientCertificateMode(@Nullable Output clientCertificateMode) {
            $.clientCertificateMode = clientCertificateMode;
            return this;
        }

        /**
         * @param clientCertificateMode The mode of the Function App's client certificates requirement for incoming requests. Possible values are `Required`, `Optional`, and `OptionalInteractiveUser`. Defaults to `Optional`.
         * 
         * @return builder
         * 
         */
        public Builder clientCertificateMode(String clientCertificateMode) {
            return clientCertificateMode(Output.of(clientCertificateMode));
        }

        /**
         * @param connectionStrings One or more `connection_string` blocks as defined below.
         * 
         * @return builder
         * 
         */
        public Builder connectionStrings(@Nullable Output> connectionStrings) {
            $.connectionStrings = connectionStrings;
            return this;
        }

        /**
         * @param connectionStrings One or more `connection_string` blocks as defined below.
         * 
         * @return builder
         * 
         */
        public Builder connectionStrings(List connectionStrings) {
            return connectionStrings(Output.of(connectionStrings));
        }

        /**
         * @param connectionStrings One or more `connection_string` blocks as defined below.
         * 
         * @return builder
         * 
         */
        public Builder connectionStrings(LinuxFunctionAppConnectionStringArgs... connectionStrings) {
            return connectionStrings(List.of(connectionStrings));
        }

        /**
         * @param contentShareForceDisabled Should the settings for linking the Function App to storage be suppressed.
         * 
         * @return builder
         * 
         */
        public Builder contentShareForceDisabled(@Nullable Output contentShareForceDisabled) {
            $.contentShareForceDisabled = contentShareForceDisabled;
            return this;
        }

        /**
         * @param contentShareForceDisabled Should the settings for linking the Function App to storage be suppressed.
         * 
         * @return builder
         * 
         */
        public Builder contentShareForceDisabled(Boolean contentShareForceDisabled) {
            return contentShareForceDisabled(Output.of(contentShareForceDisabled));
        }

        /**
         * @param dailyMemoryTimeQuota The amount of memory in gigabyte-seconds that your application is allowed to consume per day. Setting this value only affects function apps under the consumption plan. Defaults to `0`.
         * 
         * @return builder
         * 
         */
        public Builder dailyMemoryTimeQuota(@Nullable Output dailyMemoryTimeQuota) {
            $.dailyMemoryTimeQuota = dailyMemoryTimeQuota;
            return this;
        }

        /**
         * @param dailyMemoryTimeQuota The amount of memory in gigabyte-seconds that your application is allowed to consume per day. Setting this value only affects function apps under the consumption plan. Defaults to `0`.
         * 
         * @return builder
         * 
         */
        public Builder dailyMemoryTimeQuota(Integer dailyMemoryTimeQuota) {
            return dailyMemoryTimeQuota(Output.of(dailyMemoryTimeQuota));
        }

        /**
         * @param enabled Is the Function App enabled? Defaults to `true`.
         * 
         * @return builder
         * 
         */
        public Builder enabled(@Nullable Output enabled) {
            $.enabled = enabled;
            return this;
        }

        /**
         * @param enabled Is the Function App enabled? Defaults to `true`.
         * 
         * @return builder
         * 
         */
        public Builder enabled(Boolean enabled) {
            return enabled(Output.of(enabled));
        }

        /**
         * @param ftpPublishBasicAuthenticationEnabled Should the default FTP Basic Authentication publishing profile be enabled. Defaults to `true`.
         * 
         * @return builder
         * 
         */
        public Builder ftpPublishBasicAuthenticationEnabled(@Nullable Output ftpPublishBasicAuthenticationEnabled) {
            $.ftpPublishBasicAuthenticationEnabled = ftpPublishBasicAuthenticationEnabled;
            return this;
        }

        /**
         * @param ftpPublishBasicAuthenticationEnabled Should the default FTP Basic Authentication publishing profile be enabled. Defaults to `true`.
         * 
         * @return builder
         * 
         */
        public Builder ftpPublishBasicAuthenticationEnabled(Boolean ftpPublishBasicAuthenticationEnabled) {
            return ftpPublishBasicAuthenticationEnabled(Output.of(ftpPublishBasicAuthenticationEnabled));
        }

        /**
         * @param functionsExtensionVersion The runtime version associated with the Function App. Defaults to `~4`.
         * 
         * @return builder
         * 
         */
        public Builder functionsExtensionVersion(@Nullable Output functionsExtensionVersion) {
            $.functionsExtensionVersion = functionsExtensionVersion;
            return this;
        }

        /**
         * @param functionsExtensionVersion The runtime version associated with the Function App. Defaults to `~4`.
         * 
         * @return builder
         * 
         */
        public Builder functionsExtensionVersion(String functionsExtensionVersion) {
            return functionsExtensionVersion(Output.of(functionsExtensionVersion));
        }

        /**
         * @param httpsOnly Can the Function App only be accessed via HTTPS? Defaults to `false`.
         * 
         * @return builder
         * 
         */
        public Builder httpsOnly(@Nullable Output httpsOnly) {
            $.httpsOnly = httpsOnly;
            return this;
        }

        /**
         * @param httpsOnly Can the Function App only be accessed via HTTPS? Defaults to `false`.
         * 
         * @return builder
         * 
         */
        public Builder httpsOnly(Boolean httpsOnly) {
            return httpsOnly(Output.of(httpsOnly));
        }

        /**
         * @param identity A `identity` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder identity(@Nullable Output identity) {
            $.identity = identity;
            return this;
        }

        /**
         * @param identity A `identity` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder identity(LinuxFunctionAppIdentityArgs identity) {
            return identity(Output.of(identity));
        }

        /**
         * @param keyVaultReferenceIdentityId The User Assigned Identity ID used for accessing KeyVault secrets. The identity must be assigned to the application in the `identity` block. [For more information see - Access vaults with a user-assigned identity](https://docs.microsoft.com/azure/app-service/app-service-key-vault-references#access-vaults-with-a-user-assigned-identity)
         * 
         * @return builder
         * 
         */
        public Builder keyVaultReferenceIdentityId(@Nullable Output keyVaultReferenceIdentityId) {
            $.keyVaultReferenceIdentityId = keyVaultReferenceIdentityId;
            return this;
        }

        /**
         * @param keyVaultReferenceIdentityId The User Assigned Identity ID used for accessing KeyVault secrets. The identity must be assigned to the application in the `identity` block. [For more information see - Access vaults with a user-assigned identity](https://docs.microsoft.com/azure/app-service/app-service-key-vault-references#access-vaults-with-a-user-assigned-identity)
         * 
         * @return builder
         * 
         */
        public Builder keyVaultReferenceIdentityId(String keyVaultReferenceIdentityId) {
            return keyVaultReferenceIdentityId(Output.of(keyVaultReferenceIdentityId));
        }

        /**
         * @param location The Azure Region where the Linux Function App should exist. Changing this forces a new Linux Function App to be created.
         * 
         * @return builder
         * 
         */
        public Builder location(@Nullable Output location) {
            $.location = location;
            return this;
        }

        /**
         * @param location The Azure Region where the Linux Function App should exist. Changing this forces a new Linux Function App to be created.
         * 
         * @return builder
         * 
         */
        public Builder location(String location) {
            return location(Output.of(location));
        }

        /**
         * @param name The name which should be used for this Linux Function App. Changing this forces a new Linux Function App to be created. Limit the function name to 32 characters to avoid naming collisions. For more information about [Function App naming rule](https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/resource-name-rules#microsoftweb) and [Host ID Collisions](https://github.com/Azure/azure-functions-host/wiki/Host-IDs#host-id-collisions)
         * 
         * @return builder
         * 
         */
        public Builder name(@Nullable Output name) {
            $.name = name;
            return this;
        }

        /**
         * @param name The name which should be used for this Linux Function App. Changing this forces a new Linux Function App to be created. Limit the function name to 32 characters to avoid naming collisions. For more information about [Function App naming rule](https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/resource-name-rules#microsoftweb) and [Host ID Collisions](https://github.com/Azure/azure-functions-host/wiki/Host-IDs#host-id-collisions)
         * 
         * @return builder
         * 
         */
        public Builder name(String name) {
            return name(Output.of(name));
        }

        /**
         * @param publicNetworkAccessEnabled Should public network access be enabled for the Function App. Defaults to `true`.
         * 
         * @return builder
         * 
         */
        public Builder publicNetworkAccessEnabled(@Nullable Output publicNetworkAccessEnabled) {
            $.publicNetworkAccessEnabled = publicNetworkAccessEnabled;
            return this;
        }

        /**
         * @param publicNetworkAccessEnabled Should public network access be enabled for the Function App. Defaults to `true`.
         * 
         * @return builder
         * 
         */
        public Builder publicNetworkAccessEnabled(Boolean publicNetworkAccessEnabled) {
            return publicNetworkAccessEnabled(Output.of(publicNetworkAccessEnabled));
        }

        /**
         * @param resourceGroupName The name of the Resource Group where the Linux Function App should exist. Changing this forces a new Linux Function App to be created.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(Output resourceGroupName) {
            $.resourceGroupName = resourceGroupName;
            return this;
        }

        /**
         * @param resourceGroupName The name of the Resource Group where the Linux Function App should exist. Changing this forces a new Linux Function App to be created.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(String resourceGroupName) {
            return resourceGroupName(Output.of(resourceGroupName));
        }

        /**
         * @param servicePlanId The ID of the App Service Plan within which to create this Function App.
         * 
         * @return builder
         * 
         */
        public Builder servicePlanId(Output servicePlanId) {
            $.servicePlanId = servicePlanId;
            return this;
        }

        /**
         * @param servicePlanId The ID of the App Service Plan within which to create this Function App.
         * 
         * @return builder
         * 
         */
        public Builder servicePlanId(String servicePlanId) {
            return servicePlanId(Output.of(servicePlanId));
        }

        /**
         * @param siteConfig A `site_config` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder siteConfig(Output siteConfig) {
            $.siteConfig = siteConfig;
            return this;
        }

        /**
         * @param siteConfig A `site_config` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder siteConfig(LinuxFunctionAppSiteConfigArgs siteConfig) {
            return siteConfig(Output.of(siteConfig));
        }

        /**
         * @param stickySettings A `sticky_settings` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder stickySettings(@Nullable Output stickySettings) {
            $.stickySettings = stickySettings;
            return this;
        }

        /**
         * @param stickySettings A `sticky_settings` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder stickySettings(LinuxFunctionAppStickySettingsArgs stickySettings) {
            return stickySettings(Output.of(stickySettings));
        }

        /**
         * @param storageAccountAccessKey The access key which will be used to access the backend storage account for the Function App. Conflicts with `storage_uses_managed_identity`.
         * 
         * @return builder
         * 
         */
        public Builder storageAccountAccessKey(@Nullable Output storageAccountAccessKey) {
            $.storageAccountAccessKey = storageAccountAccessKey;
            return this;
        }

        /**
         * @param storageAccountAccessKey The access key which will be used to access the backend storage account for the Function App. Conflicts with `storage_uses_managed_identity`.
         * 
         * @return builder
         * 
         */
        public Builder storageAccountAccessKey(String storageAccountAccessKey) {
            return storageAccountAccessKey(Output.of(storageAccountAccessKey));
        }

        /**
         * @param storageAccountName The backend storage account name which will be used by this Function App.
         * 
         * @return builder
         * 
         */
        public Builder storageAccountName(@Nullable Output storageAccountName) {
            $.storageAccountName = storageAccountName;
            return this;
        }

        /**
         * @param storageAccountName The backend storage account name which will be used by this Function App.
         * 
         * @return builder
         * 
         */
        public Builder storageAccountName(String storageAccountName) {
            return storageAccountName(Output.of(storageAccountName));
        }

        /**
         * @param storageAccounts One or more `storage_account` blocks as defined below.
         * 
         * @return builder
         * 
         */
        public Builder storageAccounts(@Nullable Output> storageAccounts) {
            $.storageAccounts = storageAccounts;
            return this;
        }

        /**
         * @param storageAccounts One or more `storage_account` blocks as defined below.
         * 
         * @return builder
         * 
         */
        public Builder storageAccounts(List storageAccounts) {
            return storageAccounts(Output.of(storageAccounts));
        }

        /**
         * @param storageAccounts One or more `storage_account` blocks as defined below.
         * 
         * @return builder
         * 
         */
        public Builder storageAccounts(LinuxFunctionAppStorageAccountArgs... storageAccounts) {
            return storageAccounts(List.of(storageAccounts));
        }

        /**
         * @param storageKeyVaultSecretId The Key Vault Secret ID, optionally including version, that contains the Connection String to connect to the storage account for this Function App.
         * 
         * > **NOTE:** `storage_key_vault_secret_id` cannot be used with `storage_account_name`.
         * 
         * > **NOTE:** `storage_key_vault_secret_id` used without a version will use the latest version of the secret, however, the service can take up to 24h to pick up a rotation of the latest version. See the [official docs](https://docs.microsoft.com/azure/app-service/app-service-key-vault-references#rotation) for more information.
         * 
         * @return builder
         * 
         */
        public Builder storageKeyVaultSecretId(@Nullable Output storageKeyVaultSecretId) {
            $.storageKeyVaultSecretId = storageKeyVaultSecretId;
            return this;
        }

        /**
         * @param storageKeyVaultSecretId The Key Vault Secret ID, optionally including version, that contains the Connection String to connect to the storage account for this Function App.
         * 
         * > **NOTE:** `storage_key_vault_secret_id` cannot be used with `storage_account_name`.
         * 
         * > **NOTE:** `storage_key_vault_secret_id` used without a version will use the latest version of the secret, however, the service can take up to 24h to pick up a rotation of the latest version. See the [official docs](https://docs.microsoft.com/azure/app-service/app-service-key-vault-references#rotation) for more information.
         * 
         * @return builder
         * 
         */
        public Builder storageKeyVaultSecretId(String storageKeyVaultSecretId) {
            return storageKeyVaultSecretId(Output.of(storageKeyVaultSecretId));
        }

        /**
         * @param storageUsesManagedIdentity Should the Function App use Managed Identity to access the storage account. Conflicts with `storage_account_access_key`.
         * 
         * > **NOTE:** One of `storage_account_access_key` or `storage_uses_managed_identity` must be specified when using `storage_account_name`.
         * 
         * @return builder
         * 
         */
        public Builder storageUsesManagedIdentity(@Nullable Output storageUsesManagedIdentity) {
            $.storageUsesManagedIdentity = storageUsesManagedIdentity;
            return this;
        }

        /**
         * @param storageUsesManagedIdentity Should the Function App use Managed Identity to access the storage account. Conflicts with `storage_account_access_key`.
         * 
         * > **NOTE:** One of `storage_account_access_key` or `storage_uses_managed_identity` must be specified when using `storage_account_name`.
         * 
         * @return builder
         * 
         */
        public Builder storageUsesManagedIdentity(Boolean storageUsesManagedIdentity) {
            return storageUsesManagedIdentity(Output.of(storageUsesManagedIdentity));
        }

        /**
         * @param tags A mapping of tags which should be assigned to the Linux Function App.
         * 
         * @return builder
         * 
         */
        public Builder tags(@Nullable Output> tags) {
            $.tags = tags;
            return this;
        }

        /**
         * @param tags A mapping of tags which should be assigned to the Linux Function App.
         * 
         * @return builder
         * 
         */
        public Builder tags(Map tags) {
            return tags(Output.of(tags));
        }

        public Builder virtualNetworkSubnetId(@Nullable Output virtualNetworkSubnetId) {
            $.virtualNetworkSubnetId = virtualNetworkSubnetId;
            return this;
        }

        public Builder virtualNetworkSubnetId(String virtualNetworkSubnetId) {
            return virtualNetworkSubnetId(Output.of(virtualNetworkSubnetId));
        }

        /**
         * @param vnetImagePullEnabled Is container image pull over virtual network enabled? Defaults to `false`.
         * 
         * @return builder
         * 
         */
        public Builder vnetImagePullEnabled(@Nullable Output vnetImagePullEnabled) {
            $.vnetImagePullEnabled = vnetImagePullEnabled;
            return this;
        }

        /**
         * @param vnetImagePullEnabled Is container image pull over virtual network enabled? Defaults to `false`.
         * 
         * @return builder
         * 
         */
        public Builder vnetImagePullEnabled(Boolean vnetImagePullEnabled) {
            return vnetImagePullEnabled(Output.of(vnetImagePullEnabled));
        }

        /**
         * @param webdeployPublishBasicAuthenticationEnabled Should the default WebDeploy Basic Authentication publishing credentials enabled. Defaults to `true`.
         * 
         * > **NOTE:** Setting this value to true will disable the ability to use `zip_deploy_file` which currently relies on the default publishing profile.
         * 
         * @return builder
         * 
         */
        public Builder webdeployPublishBasicAuthenticationEnabled(@Nullable Output webdeployPublishBasicAuthenticationEnabled) {
            $.webdeployPublishBasicAuthenticationEnabled = webdeployPublishBasicAuthenticationEnabled;
            return this;
        }

        /**
         * @param webdeployPublishBasicAuthenticationEnabled Should the default WebDeploy Basic Authentication publishing credentials enabled. Defaults to `true`.
         * 
         * > **NOTE:** Setting this value to true will disable the ability to use `zip_deploy_file` which currently relies on the default publishing profile.
         * 
         * @return builder
         * 
         */
        public Builder webdeployPublishBasicAuthenticationEnabled(Boolean webdeployPublishBasicAuthenticationEnabled) {
            return webdeployPublishBasicAuthenticationEnabled(Output.of(webdeployPublishBasicAuthenticationEnabled));
        }

        /**
         * @param zipDeployFile The local path and filename of the Zip packaged application to deploy to this Linux Function App.
         * 
         * > **Note:** Using this value requires either `WEBSITE_RUN_FROM_PACKAGE=1` or `SCM_DO_BUILD_DURING_DEPLOYMENT=true` to be set on the App in `app_settings`. Refer to the [Azure docs](https://learn.microsoft.com/en-us/azure/azure-functions/functions-deployment-technologies) for further details.
         * 
         * @return builder
         * 
         */
        public Builder zipDeployFile(@Nullable Output zipDeployFile) {
            $.zipDeployFile = zipDeployFile;
            return this;
        }

        /**
         * @param zipDeployFile The local path and filename of the Zip packaged application to deploy to this Linux Function App.
         * 
         * > **Note:** Using this value requires either `WEBSITE_RUN_FROM_PACKAGE=1` or `SCM_DO_BUILD_DURING_DEPLOYMENT=true` to be set on the App in `app_settings`. Refer to the [Azure docs](https://learn.microsoft.com/en-us/azure/azure-functions/functions-deployment-technologies) for further details.
         * 
         * @return builder
         * 
         */
        public Builder zipDeployFile(String zipDeployFile) {
            return zipDeployFile(Output.of(zipDeployFile));
        }

        public LinuxFunctionAppArgs build() {
            if ($.resourceGroupName == null) {
                throw new MissingRequiredPropertyException("LinuxFunctionAppArgs", "resourceGroupName");
            }
            if ($.servicePlanId == null) {
                throw new MissingRequiredPropertyException("LinuxFunctionAppArgs", "servicePlanId");
            }
            if ($.siteConfig == null) {
                throw new MissingRequiredPropertyException("LinuxFunctionAppArgs", "siteConfig");
            }
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy