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