sparse-intern-71089
12/07/2022, 9:33 PMcold-motherboard-88215
12/07/2022, 9:38 PMcold-motherboard-88215
12/07/2022, 9:40 PMimport * as storage from "@pulumi/azure-native/storage";
import * as pulumi from "@pulumi/pulumi";
import * as cdn from "@pulumi/azure-native/cdn";
import * as network from "@pulumi/azure-native/network";
import * as resources from "@pulumi/azure-native/resources";
import {cdnProfile} from './food-cdn';
import {dnsZone} from './food-dns-zone';
import { resourceGroup, managedIdentity } from './food-resource-group'
const domain = 'food';
const stack = pulumi.getStack();
const subscriptionId = 'XXX';
const resourceName = 'frontend';
const getId = (id: string) => {
const dict: { [key: string]: object } = {};
dict[id] = {};
return dict;
}
export const storageAccount = new storage.StorageAccount(`${stack}-sa-${resourceName}-${domain}`, {
enableHttpsTrafficOnly: true,
accountName: `${stack}${resourceName}${domain}`,
resourceGroupName: resourceGroup.name,
identity: {
type: resources.ManagedServiceIdentityType.UserAssigned,
userAssignedIdentities: managedIdentity.id.apply(id => getId(id))
},
kind: storage.Kind.StorageV2,
sku: {
name: storage.SkuName.Standard_LRS
},
tags: {
environment: stack,
domain
}
}, {
dependsOn: [resourceGroup, managedIdentity]
});
// enable static website support
export const staticWebsite = new storage.StorageAccountStaticWebsite(`${resourceName}${domain}${stack}`, {
accountName: storageAccount.name,
resourceGroupName: resourceGroup.name,
indexDocument: "index.html",
error404Document: "index.html",
}, {
dependsOn: [storageAccount]
});
export const staticEndpoint = storageAccount.primaryEndpoints.web;
export const endpointOrigin = storageAccount.primaryEndpoints.apply(ep => ep.web.replace("https://", "").replace("/", ""));
export const endpoint = new cdn.Endpoint(`${stack}-cdn-${resourceName}-${domain}`, {
endpointName: storageAccount.name.apply(sa => `${stack}-cdn-frontend-${domain}`),
isHttpAllowed: false,
isHttpsAllowed: true,
originHostHeader: endpointOrigin,
origins: [{
hostName: endpointOrigin,
httpsPort: 443,
name: storageAccount.name,
}],
profileName: cdnProfile.name,
queryStringCachingBehavior: cdn.QueryStringCachingBehavior.NotSet,
resourceGroupName: resourceGroup.name,
tags: {
environment: stack,
domain
}
}, {
dependsOn: [staticWebsite, cdnProfile]
});
const cNameRecord = new network.RecordSet(`${stack}-cname-${resourceName}-${domain}`, {
cnameRecord: {
cname: endpoint.hostName,
},
recordType: "CNAME",
relativeRecordSetName: `${resourceName}-${domain}`, // frontend-test
resourceGroupName: resourceGroup.name,
ttl: 3600,
zoneName: dnsZone.name,
}, {
dependsOn: [dnsZone]
});
const customDomainFriendlyName = `${resourceName}-${domain}-${stack}-XXX-com`;
// create custom domain
const customDomain = new cdn.CustomDomain(`${stack}-custom-domain-${domain}`, {
customDomainName: customDomainFriendlyName,
endpointName: endpoint.name,
hostName: `${resourceName}-${domain}.${stack}.<http://XXX.com|XXX.com>`,
profileName: cdnProfile.name,
resourceGroupName: resourceGroup.name,
}, {
dependsOn: [],
});
// enable ssl certificate not working
export const azureCliScript = new resources.AzureCliScript(`${stack}-cli-enable-ssl-${resourceName}-${domain}`, {
resourceGroupName: resourceGroup.name,
identity: {
type: resources.ManagedServiceIdentityType.UserAssigned,
userAssignedIdentities: managedIdentity.id.apply(id => getId(id))
},
azCliVersion: "2.42.0",
kind: "AzureCLI",
retentionInterval: "P1D",
scriptContent: pulumi.interpolate `az cdn custom-domain enable-https --resource-group="${resourceGroup.name}" --profile-name="${cdnProfile.name}" --endpoint-name="${endpoint.name}" --name="${customDomainFriendlyName}"`,
tags: {
environment: stack,
domain
}
}, {
dependsOn: [storageAccount, customDomain]
});
icy-doctor-13719
12/07/2022, 10:04 PMicy-doctor-13719
12/07/2022, 10:05 PMcold-motherboard-88215
12/08/2022, 3:35 AMicy-doctor-13719
12/08/2022, 3:50 AMcold-motherboard-88215
12/08/2022, 3:59 AMicy-doctor-13719
12/08/2022, 5:41 AMAzureNative.Cdn.Profile
with the SKU Standard_AzureFrontDoor
icy-doctor-13719
12/08/2022, 5:42 AMcold-motherboard-88215
12/08/2022, 11:27 AMcold-motherboard-88215
12/08/2022, 11:29 AMcold-motherboard-88215
12/08/2022, 11:47 AMicy-doctor-13719
12/08/2022, 4:57 PMAzureNative.Cdn.AFDEndpoint
AzureNative.Cdn.AFDOriginGroup
AzureNative.Cdn.AFDOrigin
AzureNative.Cdn.AFDCustomDomain
AzureNative.Cdn.Route
AzureNative.Network.RecordSet
AzureNative.Cdn.AFDCustomDomain (domain) -> domain.ValidationProperties.Apply(v=>v.ValidationToken)
icy-doctor-13719
12/08/2022, 4:57 PMcold-motherboard-88215
12/08/2022, 4:59 PMicy-doctor-13719
12/08/2022, 5:00 PMcold-motherboard-88215
12/08/2022, 5:00 PMcold-motherboard-88215
12/09/2022, 9:32 AMcold-motherboard-88215
12/09/2022, 9:32 AMicy-doctor-13719
12/09/2022, 3:04 PMCustomDomains
array when you create AzureNative.Cdn.Route
No matter how you like to participate in developer communities, Pulumi wants to meet you there. If you want to meet other Pulumi users to share use-cases and best practices, contribute code or documentation, see us at an event, or just tell a story about something cool you did with Pulumi, you are part of our community.
Powered by