用于 CDK CloudFront 图书馆的 CloudFront 出处
AWS CDK v1在2023-06-01上达到了支持结束. 此软件包不再更新,用户应该迁移到 AWS CDK v2.
关于如何移徙的更多信息,请参见: 移动到 AWS CDK v2 指南。 。 。 .
这个库包含用于定义 CloudFront 发行源的方便方法. 您可以使用此库创建起源于 S3桶,弹性负载平衡 v2负载平衡器,或任何其他域名.
S3 弹匣
一个S3桶可以被添加为来源. 如果将桶配置为网站端点, 分发会使用 S3 重定向和 S3 自定义错误 文档.
const myBucket = new s3.Bucket(this, 'myBucket');
new cloudfront.Distribution(this, 'myDist', {
defaultBehavior: { origin: new origins.S3Origin(myBucket) },
});
以上将基于下列情况对桶作不同的处理: IBucket.isWebsite 是否设定。 如果桶被配置为网站,桶就是
作为 HTTP 源处理,可以使用内置的 S3 重定向和出错页面. 否则,桶作为桶的来源处理
CloudFront的重定向和错误处理将被使用. 在后一种情况下,起源地将建立来源地身份,并允许其接触
下个桶 这可以和不公开的桶一起使用,以要求用户使用 CloudFront 访问您的内容
URL而不是直接的S3 URL. 或者,可以将自定义来源的获取身份传递给财产中的S3来源.
添加自定义信头
您可以配置 CloudFront 以添加自定义标题到它向您源头发送的请求 。 这些自定义信头使您能够发送和收集您无法从通常的观众请求中获得的信息。 这些信头甚至可以为每个来源定制. CloudFront支持自定义和Amazon S3源头的自定义头.
const myBucket = new s3.Bucket(this, 'myBucket');
new cloudfront.Distribution(this, 'myDist', {
defaultBehavior: { origin: new origins.S3Origin(myBucket, {
customHeaders: {
Foo: 'bar',
},
})},
});
ELBv2 负载平衡器
弹性负载平衡(ELB)v2负载平衡器可用作出产地. 使负载平衡器作为来源,必须公开
无障碍(internetFacing ) (中文(简体). 应用程序和网络负荷平衡器都得到支持.
import * as ec2 from '@aws-cdk/aws-ec2';
import * as elbv2 from '@aws-cdk/aws-elasticloadbalancingv2';
declare const vpc: ec2.Vpc;
// Create an application load balancer in a VPC. 'internetFacing' must be 'true'
// for CloudFront to access the load balancer and use it as an origin.
const lb = new elbv2.ApplicationLoadBalancer(this, 'LB', {
vpc,
internetFacing: true,
});
new cloudfront.Distribution(this, 'myDist', {
defaultBehavior: { origin: new origins.LoadBalancerV2Origin(lb) },
});
原出地还可以被定制,在不同端口上响应,具有不同的连接属性等.
import * as elbv2 from '@aws-cdk/aws-elasticloadbalancingv2';
declare const loadBalancer: elbv2.ApplicationLoadBalancer;
const origin = new origins.LoadBalancerV2Origin(loadBalancer, {
connectionAttempts: 3,
connectionTimeout: Duration.seconds(5),
readTimeout: Duration.seconds(45),
keepaliveTimeout: Duration.seconds(45),
protocolPolicy: cloudfront.OriginProtocolPolicy.MATCH_VIEWER,
});
注意 readTimeout 财务报告和审定财务报表 keepaliveTimeout 属性只有在对 CloudFront 源响应请求限制增加时, 其值才能超过60秒
目标账户中已批准了配额;否则,超过60秒的值会在部署时产生错误。 考虑这个值是
仍限于180秒的最高值,这是该配额的硬性限制.
从 HTTP 端点
起源也可以从其他HTTP端点创建,考虑到域名,也可以选择其他起源属性.
new cloudfront.Distribution(this, 'myDist', {
defaultBehavior: { origin: new origins.HttpOrigin('www.example.com') },
});
见文件 @aws-cdk/aws-cloudfront 更多信息.
失败起源( 奥里金组)
您可以设置 CloudFront , 对于需要高可用度的假想设置源故障 .
要开始,你创建了一个起源组,有两个起源:一级和二级.
如果主源不可用,或返回显示失败的 HTTP 响应状态代码,
CloudFront自动切换到二级源.
使用 OriginGroup 类 :
const myBucket = new s3.Bucket(this, 'myBucket');
new cloudfront.Distribution(this, 'myDist', {
defaultBehavior: {
origin: new origins.OriginGroup({
primaryOrigin: new origins.S3Origin(myBucket),
fallbackOrigin: new origins.HttpOrigin('www.example.com'),
// optional, defaults to: 500, 502, 503 and 504
fallbackStatusCodes: [404],
}),
},
});
来自 API 网关 REST API
起源可以从一个API Gateway REST API创建. 建议使用 区域 API 在这种情况下.
declare const api: apigateway.RestApi;
new cloudfront.Distribution(this, 'Distribution', {
defaultBehavior: { origin: new origins.RestApiOrigin(api) },
});
出处路径会自动被设定为艺名.