Skip to content
GitHubXDiscordRSS

VpcOrigin

Learn how to create, update, and manage AWS CloudFront VpcOrigins using Alchemy Cloud Control.

The VpcOrigin resource allows you to manage AWS CloudFront VpcOrigins for serving content from Amazon VPC endpoints.

Create a basic VpcOrigin with the required properties and a common optional tag.

import AWS from "alchemy/aws/control";
const vpcOrigin = await AWS.CloudFront.VpcOrigin("myVpcOrigin", {
VpcOriginEndpointConfig: {
endpoint: "my-vpc-endpoint.amazonaws.com",
originPath: "/path/to/content",
customOriginConfig: {
httpPort: 80,
httpsPort: 443,
originProtocolPolicy: "https-only"
}
},
Tags: [
{
Key: "Environment",
Value: "Production"
}
]
});

Customize the VpcOrigin with additional settings for performance and security.

const advancedVpcOrigin = await AWS.CloudFront.VpcOrigin("advancedVpcOrigin", {
VpcOriginEndpointConfig: {
endpoint: "secure-vpc-endpoint.amazonaws.com",
originPath: "/secure-content",
customOriginConfig: {
httpPort: 80,
httpsPort: 443,
originProtocolPolicy: "match-viewer",
originSslProtocols: {
items: ["TLSv1.2"],
quantity: 1
}
}
},
Tags: [
{
Key: "Project",
Value: "MyProject"
}
],
adopt: true
});

Define IAM policies to control access to your VpcOrigin.

const vpcOriginWithPolicy = await AWS.CloudFront.VpcOrigin("securedVpcOrigin", {
VpcOriginEndpointConfig: {
endpoint: "protected-vpc-endpoint.amazonaws.com",
originPath: "/protected-content",
customOriginConfig: {
httpPort: 80,
httpsPort: 443,
originProtocolPolicy: "https-only"
}
},
Tags: [
{
Key: "Access",
Value: "Restricted"
}
],
adopt: false
});
// Example IAM Policy
const iamPolicy = {
Version: "2012-10-17",
Statement: [
{
Effect: "Allow",
Action: "cloudfront:GetDistribution",
Resource: "*"
}
]
};

Set up multiple VpcOrigins for different content sources.

const primaryVpcOrigin = await AWS.CloudFront.VpcOrigin("primaryVpcOrigin", {
VpcOriginEndpointConfig: {
endpoint: "primary-vpc-endpoint.amazonaws.com",
originPath: "/primary-content"
}
});
const secondaryVpcOrigin = await AWS.CloudFront.VpcOrigin("secondaryVpcOrigin", {
VpcOriginEndpointConfig: {
endpoint: "secondary-vpc-endpoint.amazonaws.com",
originPath: "/secondary-content"
}
});