gpt4 book ai didi

amazon-web-services - 使用 AWS CDK Pipelines 使 Cloudfront 缓存失效

转载 作者:行者123 更新时间:2023-12-03 07:10:27 24 4
gpt4 key购买 nike

作为 CDK 中 CodePipeline 的一部分,我希望最后一步使 Cloudfront 缓存失效。

这是我当前的部署操作步骤:

{
stageName: 'Deploy',
actions: [
new codepipelineActions.S3DeployAction({
actionName: 'S3Deploy',
bucket: frontendCodeBucket, // See bucket config below
input: buildOutput, // Output from Build step
}),
]
}

这是我的代码桶和 CF 分布:

const frontendCodeBucket = new s3.Bucket(this, 'FrontendBucketStaging', {
websiteIndexDocument: 'index.html',
encryption: s3.BucketEncryption.S3_MANAGED,
blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL,
bucketName: 'something',
removalPolicy: RemovalPolicy.DESTROY,
});


const distribution = new cloudfront.CloudFrontWebDistribution(this, 'FrontendCloudfrontStaging', {
originConfigs: [
{
s3OriginSource: {
s3BucketSource: frontendCodeBucket,
originAccessIdentity: oai,
},
behaviors : [ {isDefaultBehavior: true}]
}
],

我找不到任何方法通过 S3DeployAction 使缓存失效。这似乎是使用静态网站和 Cloudfront 时最常见的事情之一。难道这根本不可能吗?

如果不是的话。有解决方法吗?例如,在非管道进程中,类似的东西应该有效(我读过的):

new s3deploy.BucketDeployment(this, 'DeployWithInvalidation', {
sources: [<some assets>],
destinationBucket: bucket,
distribution,
distributionPaths: ['/*'],
});

有没有办法在管道中添加这样一个步骤,而不是“操作”?

非常高兴获得任何帮助或指点。我对 CDK 还很陌生,但这感觉就像是有人想做的一件常见的事情,所以我希望我只是在这里遗漏了一些东西。除了最后一步之外,管道运行良好。

最佳答案

我最终在 S3DeployAction 之后添加了另一个 CodeBuildAction 步骤,其唯一目的是运行此 AWS CLI 命令:

aws cloudfront create-invalidation --distribution-id ${CLOUDFRONT_ID} --paths "/*"

也许不是最漂亮的解决方案,但它有效:)如果失效是 S3DeployAction 中的一个选项,那就太好了

引用:https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_codepipeline_actions-readme.html#invalidating-the-cloudfront-cache-when-deploying-to-s3

关于amazon-web-services - 使用 AWS CDK Pipelines 使 Cloudfront 缓存失效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65286352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com