Esempio n. 1
0
        private InputMap <string> combineAppSettings(Blob zipBlob, Account account, ArchiveFunctionAppArgs args)
        {
            var codeBlobUrl = SharedAccessSignature.SignedBlobReadUrl(zipBlob, account);
            var settings    = args.AppSettings;

            if (settings == null)
            {
                settings = new InputMap <string>();
            }
            settings.Add("WEBSITE_RUN_FROM_PACKAGE", codeBlobUrl);
            settings.Add("WEBSITE_NODE_DEFAULT_VERSION", "~10");
            return(settings);
        }
Esempio n. 2
0
        public PackagedFunctionApp(string type, string name, ArchiveFunctionAppArgs args, ComponentResourceOptions?opts) : base(type, name, opts)
        {
            StorageAccountNameCleanerRegex   = new Regex(@"[^a-zA-Z0-9]");
            StorageContainerNameCleanerRegex = new Regex(@"[^a-zA-Z0-9-]");

            var parentOpts = new CustomResourceOptions {
                Parent = this
            };
            var parts = createFunctionAppParts(name, args, parentOpts);

            this.Account     = parts.Account;
            this.Container   = parts.Container;
            this.Blob        = parts.Blob;
            this.Plan        = parts.Plan;
            this.FunctionApp = new FunctionApp(name, parts.FunctionAppArgs, parentOpts);
            this.Endpoint    = getEndpoint(this.FunctionApp, parts.RootPath);
            this.RegisterOutputs();
        }
Esempio n. 3
0
 public ArchiveFunctionApp(string name, ArchiveFunctionAppArgs args, ComponentResourceOptions?opts = null) : base("azure:appservice:ArchiveFunctionApp", name, args, opts)
 {
 }
Esempio n. 4
0
        private FunctionAppParts createFunctionAppParts(string name, ArchiveFunctionAppArgs args, CustomResourceOptions?opts = null)
        {
            if (args.Archive == null)
            {
                throw new ArgumentNullException("Deployment [archive] must be provided.");
            }

            var resourceGroupName = getResourceGroupName(args.ResourceGroup, args.ResourceGroupName);

            var plan = createIfUndefined(args.Plan, () =>
            {
                return(new Plan(name, new PlanArgs
                {
                    ResourceGroupName = resourceGroupName,
                    Location = args.Location,
                    Kind = "FunctionApp",
                    Sku = new PlanSkuArgs
                    {
                        Tier = "Dynamic",
                        Size = "Y1",
                    },
                }, opts));
            });

            var account = createIfUndefined(args.Account, () =>
            {
                return(new Account(makeSafeName(StorageAccountNameCleanerRegex, name, 24 - 8), new AccountArgs
                {
                    ResourceGroupName = resourceGroupName,
                    Location = args.Location,
                    AccountKind = "StorageV2",
                    AccountTier = "Standard",
                    AccountReplicationType = "LRS",
                }, opts));
            });

            var container = createIfUndefined(args.Container, () =>
            {
                return(new Container(makeSafeName(StorageContainerNameCleanerRegex, name, 63 - 8), new ContainerArgs
                {
                    StorageAccountName = account.Name,
                    ContainerAccessType = "private",
                }, opts));
            });

            var zipBlob = new Blob(name, new BlobArgs
            {
                StorageAccountName   = account.Name,
                StorageContainerName = container.Name,
                Type   = "Block",
                Source = args.Archive
            }, opts);

            var functionArgs = new FunctionAppArgs
            {
                ResourceGroupName = resourceGroupName,
                Location          = args.Location,

                ClientAffinityEnabled = args.ClientAffinityEnabled,
                EnableBuiltinLogging  = args.EnableBuiltinLogging,
                Enabled    = args.Enabled,
                SiteConfig = args.SiteConfig,
                Identity   = args.Identity,
                Name       = args.Name,
                //AuthSettings = args.AuthSettings,

                HttpsOnly               = args.HttpsOnly,
                AppServicePlanId        = plan.Id,
                StorageConnectionString = account.PrimaryConnectionString,
                Version = getOrDefault(args.Version, FUNCTION_APP_STABLE_RUNTIME_VERSION),

                AppSettings = combineAppSettings(zipBlob, account, args),
            };

            if (args.ConnectionStrings != null)
            {
                functionArgs.ConnectionStrings = args.ConnectionStrings;
            }
            if (args.Tags != null)
            {
                functionArgs.Tags = args.Tags;
            }

            var routePrefix = args.HostSettings?.Extensions?.Http?.RoutePrefix;
            var rootPath    = Output.Format($"{ routePrefix ?? "api" }/");

            return(new FunctionAppParts(account, container, zipBlob, plan, functionArgs, rootPath));
        }