如何指定 AWS CloudFront 访问日志保留多长时间?
How to specify how long AWS CloudFront Access Logs are kept?
我们正在使用 AWS CDK(AWS 云开发工具包)来创建我们的 Cloudfront Distribution。我们正在创建启用访问日志记录的 CloudFront 分发并指定 Amazon S3 存储桶来存储访问日志。
访问日志默认保存多长时间?如何指定它们保存多长时间?
我感觉它与管理日志的存储生命周期有关。
我看过的一部分文档(虽然我可能漏掉了一些东西):
- https://docs.aws.amazon.com/cdk/api/latest/docs/aws-cloudfront-readme.html
- https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cloudfront.DistributionProps.html
- https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html
另请参阅 https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-objects.html,其中显示“您可以设置生命周期规则以自动删除日志文件等对象。”
var staticContentCFDistribution = new cloudfront.Distribution(this, `IDSTRINGWASHERE`, {
defaultBehavior: {
origin: new S3Origin(staticContentBucket),
cachePolicy: CachePolicy.CACHING_OPTIMIZED,
allowedMethods: AllowedMethods.ALLOW_GET_HEAD,
cachedMethods: AllowedMethods.ALLOW_GET_HEAD,
viewerProtocolPolicy: ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
compress: true
},
domainNames: [ domainName ],
comment: `CHANGEDTHISFORTHISPOST`,
enableLogging: true,
logBucket: logBucket,
webAclId: webAclId,
<CLIP>
我用谷歌搜索了许多不同的东西,例如:
- 云端访问日志生命周期
- 云端访问日志保留 cdk
我将 运行 保留在 CloudWatch 文档中,而不是 CloudFront 访问日志文档中,我可以在其中指定保留访问日志的时间。
日志的生命周期是 S3 的 属性,而不是 CloudFront。因此,如果您将访问日志存储在 s3 中,则可以按照 Managing your storage lifecycle.
中的说明在 S3 中设置它们的生命周期
同理还有retention rules for CloudWatch Logs.
在这两种情况下,这些设置都与 cloudfront.Distribution
无关。它们是 S3 和 CloudWatch 的属性。
默认情况下,日志将无限期地保存在 S3 中,或者按照您的建议,可以使用生命周期规则进行管理。
在下面的示例中,您可以创建一个 S3 存储桶并将其用作 CloudFront 分配的一部分(或导入现有存储桶),然后在 30 天后自动删除日志。您可能希望在删除之前将文件向下移动到可用的 S3 存储层,但这是个人偏好。
const logBucket = new s3.Bucket(this, `${id}-log-bucket`)
logBucket.addLifecycleRule({
enabled: true,
expiration: Duration.days(30),
id: 'rule',
});
new cloudfront.Distribution(this, `${id}-cf-distribution`, {
logBucket,
…
etc
})
我们正在使用 AWS CDK(AWS 云开发工具包)来创建我们的 Cloudfront Distribution。我们正在创建启用访问日志记录的 CloudFront 分发并指定 Amazon S3 存储桶来存储访问日志。
访问日志默认保存多长时间?如何指定它们保存多长时间? 我感觉它与管理日志的存储生命周期有关。
我看过的一部分文档(虽然我可能漏掉了一些东西):
- https://docs.aws.amazon.com/cdk/api/latest/docs/aws-cloudfront-readme.html
- https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cloudfront.DistributionProps.html
- https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html
另请参阅 https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-objects.html,其中显示“您可以设置生命周期规则以自动删除日志文件等对象。”
var staticContentCFDistribution = new cloudfront.Distribution(this, `IDSTRINGWASHERE`, {
defaultBehavior: {
origin: new S3Origin(staticContentBucket),
cachePolicy: CachePolicy.CACHING_OPTIMIZED,
allowedMethods: AllowedMethods.ALLOW_GET_HEAD,
cachedMethods: AllowedMethods.ALLOW_GET_HEAD,
viewerProtocolPolicy: ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
compress: true
},
domainNames: [ domainName ],
comment: `CHANGEDTHISFORTHISPOST`,
enableLogging: true,
logBucket: logBucket,
webAclId: webAclId,
<CLIP>
我用谷歌搜索了许多不同的东西,例如:
- 云端访问日志生命周期
- 云端访问日志保留 cdk
我将 运行 保留在 CloudWatch 文档中,而不是 CloudFront 访问日志文档中,我可以在其中指定保留访问日志的时间。
日志的生命周期是 S3 的 属性,而不是 CloudFront。因此,如果您将访问日志存储在 s3 中,则可以按照 Managing your storage lifecycle.
中的说明在 S3 中设置它们的生命周期同理还有retention rules for CloudWatch Logs.
在这两种情况下,这些设置都与 cloudfront.Distribution
无关。它们是 S3 和 CloudWatch 的属性。
默认情况下,日志将无限期地保存在 S3 中,或者按照您的建议,可以使用生命周期规则进行管理。
在下面的示例中,您可以创建一个 S3 存储桶并将其用作 CloudFront 分配的一部分(或导入现有存储桶),然后在 30 天后自动删除日志。您可能希望在删除之前将文件向下移动到可用的 S3 存储层,但这是个人偏好。
const logBucket = new s3.Bucket(this, `${id}-log-bucket`)
logBucket.addLifecycleRule({
enabled: true,
expiration: Duration.days(30),
id: 'rule',
});
new cloudfront.Distribution(this, `${id}-cf-distribution`, {
logBucket,
…
etc
})