Skip to content

Commit

Permalink
ssr-site: do not deploy CDN in dev mode
Browse files Browse the repository at this point in the history
  • Loading branch information
fwang committed Jul 5, 2024
1 parent 26519ba commit 099263d
Show file tree
Hide file tree
Showing 10 changed files with 168 additions and 342 deletions.
80 changes: 23 additions & 57 deletions pkg/platform/src/components/aws/astro.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {
Plan,
SsrSiteArgs,
createBucket,
createDevServer,
createServersAndDistribution,
prepare,
useCloudFrontFunctionHostHeaderInjection,
Expand Down Expand Up @@ -319,9 +320,9 @@ const BUILD_META_FILE_NAME: BuildMetaFileName = "sst.buildMeta.json";
* ```
*/
export class Astro extends Component implements Link.Linkable {
private cdn: Output<Cdn>;
private assets: Bucket;
private server: Output<Function>;
private cdn?: Output<Cdn>;
private assets?: Bucket;
private server?: Output<Function>;

constructor(
name: string,
Expand All @@ -331,10 +332,22 @@ export class Astro extends Component implements Link.Linkable {
super(__pulumiType, name, args, opts);

const parent = this;
const { sitePath, partition, region } = prepare(args, opts);
const { sitePath, partition } = prepare(args, opts);

if ($dev) {
this.registerOutputs({
_metadata: {
mode: "placeholder",
path: sitePath,
server: createDevServer(parent, name, args).arn,
},
});
return;
}

const { access, bucket } = createBucket(parent, name, partition, args);
const outputPath = buildApp(name, args, sitePath);
const { buildMeta } = loadBuildOutput();
const buildMeta = loadBuildMetadata();
const plan = buildPlan();
const { distribution, ssrFunctions, edgeFunctions } =
createServersAndDistribution(
Expand All @@ -352,37 +365,18 @@ export class Astro extends Component implements Link.Linkable {
this.cdn = distribution;
this.server = serverFunction;
this.registerOutputs({
_hint: $dev
? undefined
: all([this.cdn.domainUrl, this.cdn.url]).apply(
([domainUrl, url]) => domainUrl ?? url,
),
_hint: all([this.cdn.domainUrl, this.cdn.url]).apply(
([domainUrl, url]) => domainUrl ?? url,
),
_metadata: {
mode: $dev ? "placeholder" : "deployed",
mode: "deployed",
path: sitePath,
url: distribution.apply((d) => d.domainUrl ?? d.url),
edge: plan.edge,
server: serverFunction.arn,
},
});

function loadBuildOutput() {
const cache = new Cache(
`${name}BuildOutput`,
{
data: $dev ? loadBuildMetadataPlaceholder() : loadBuildMetadata(),
},
{
parent,
ignoreChanges: $dev ? ["*"] : undefined,
},
);

return {
buildMeta: cache.data as ReturnType<typeof loadBuildMetadata>,
};
}

function loadBuildMetadata() {
return outputPath.apply((outputPath) => {
const filePath = path.join(outputPath, "dist", BUILD_META_FILE_NAME);
Expand All @@ -397,34 +391,6 @@ export class Astro extends Component implements Link.Linkable {
});
}

function loadBuildMetadataPlaceholder() {
return {
deploymentStrategy: "regional",
responseMode: "buffer",
outputMode: "server",
pageResolution: "directory",
trailingSlash: "ignore",
serverBuildOutputFile: "dist/server/entry.mjs",
clientBuildOutputDir: "dist/client",
clientBuildVersionedSubDir: "_astro",
routes: [
{
route: "/_image",
type: "endpoint",
pattern: "/^\\/_image$/",
prerender: false,
},
{
route: "/",
type: "page",
pattern: "/^\\/$/",
prerender: false,
},
],
serverRoutes: [],
};
}

function buildPlan() {
return all([outputPath, buildMeta]).apply(([outputPath, buildMeta]) => {
const isStatic = buildMeta.outputMode === "static";
Expand Down Expand Up @@ -603,7 +569,7 @@ export class Astro extends Component implements Link.Linkable {
* Otherwise, it's the autogenerated CloudFront URL.
*/
public get url() {
return all([this.cdn.domainUrl, this.cdn.url]).apply(
return all([this.cdn?.domainUrl, this.cdn?.url]).apply(
([domainUrl, url]) => domainUrl ?? url,
);
}
Expand Down
25 changes: 1 addition & 24 deletions pkg/platform/src/components/aws/function.ts
Original file line number Diff line number Diff line change
Expand Up @@ -781,10 +781,6 @@ export interface FunctionArgs {
*/
logGroup?: Transform<cloudwatch.LogGroupArgs>;
};
/**
* @internal
*/
_ignoreCodeChanges?: boolean;
/**
* @internal
*/
Expand Down Expand Up @@ -1116,17 +1112,6 @@ export class Function extends Component implements Link.Linkable, AWSLinkable {

function buildHandler() {
return dev.apply((dev) => {
if (args._ignoreCodeChanges) {
return {
bundle: path.join(
$cli.paths.platform,
"functions",
"empty-function",
),
handler: "index.handler",
};
}

if (dev) {
return {
handler: "bootstrap",
Expand Down Expand Up @@ -1398,9 +1383,6 @@ export class Function extends Component implements Link.Linkable, AWSLinkable {
},
{
parent,
ignoreChanges: args._ignoreCodeChanges
? ["key", "source"]
: undefined,
retainOnDelete: true,
},
);
Expand Down Expand Up @@ -1456,12 +1438,7 @@ export class Function extends Component implements Link.Linkable, AWSLinkable {
transformed.architectures = all([transformed.architectures, dev]).apply(
([architectures, dev]) => (dev ? ["x86_64"] : architectures!),
);
return new lambda.Function(`${name}Function`, transformed, {
parent,
ignoreChanges: args._ignoreCodeChanges
? ["code", "handler"]
: undefined,
});
return new lambda.Function(`${name}Function`, transformed, { parent });
}

function createUrl() {
Expand Down
Loading

0 comments on commit 099263d

Please sign in to comment.