要将AWS CloudFront重写到外部URL,可以通过以下步骤实现:
打开AWS管理控制台并导航到CloudFront服务。
创建一个新的分配。在“分配页面”上,点击“创建分配”。
在“创建分配”页面上,填写相关信息,如分配名称、源域名等。
在“缓存行为”部分,选择“自定义缓存策略”。
在“默认缓存策略”下,点击“新建缓存策略”。
在“新建缓存策略”页面上,填写缓存策略的名称,并选择“自定义”作为缓存策略的类型。
在“行为”标签页上,点击“新增行为”。
在“目标路径”字段中,输入要重写到的外部URL。
在“路径模式”字段中,输入要匹配的路径模式,例如“/images/*”。
点击“新增行为”按钮,然后点击“创建缓存策略”。
在“缓存行为”部分,选择刚创建的自定义缓存策略。
完成其他设置,并点击“创建分配”。
以下是一个基于Node.js的代码示例,用于创建CloudFront分配并设置重写规则:
const AWS = require('aws-sdk');
const cloudfront = new AWS.CloudFront({apiVersion: '2019-03-26'});
const createDistribution = async () => {
const params = {
DistributionConfig: {
CallerReference: 'your-unique-caller-reference',
Comment: 'Your distribution comment',
DefaultCacheBehavior: {
TargetOriginId: 'your-target-origin-id',
ForwardedValues: {
QueryString: false,
},
ViewerProtocolPolicy: 'https-only',
AllowedMethods: {
Quantity: 2,
Items: ['GET', 'HEAD'],
},
CachedMethods: {
Quantity: 2,
Items: ['GET', 'HEAD'],
},
LambdaFunctionAssociations: {
Quantity: 0,
Items: [],
},
TrustedSigners: {
Enabled: false,
Quantity: 0,
},
DefaultTTL: 86400,
MinTTL: 3600,
},
DefaultRootObject: '',
Enabled: true,
HttpVersion: 'http2',
IPV6Enabled: true,
Origins: {
Quantity: 1,
Items: [
{
DomainName: 'your-origin-domain-name',
Id: 'your-target-origin-id',
CustomOriginConfig: {
HTTPPort: 80,
HTTPSPort: 443,
OriginProtocolPolicy: 'https-only',
},
},
],
},
PriceClass: 'PriceClass_100',
ViewerCertificate: {
ACMCertificateArn: 'your-acm-certificate-arn',
SSLSupportMethod: 'sni-only',
},
Restrictions: {
GeoRestriction: {
RestrictionType: 'none',
Quantity: 0,
Items: [],
},
},
WebACLId: '',
},
};
try {
const result = await cloudfront.createDistribution(params).promise();
console.log('Distribution created successfully:', result);
} catch (error) {
console.error('Error creating distribution:', error);
}
};
createDistribution();
请注意,上述代码示例中的参数值需要根据实际情况进行替换。