【发布时间】:2020-12-30 18:46:48
【问题描述】:
我遇到了从 AWS Lambda 创建 Cloudfront 失效的问题。
我的案例非常基本:我设置了一个 Lambda 处理程序,由特定 S3 对象的创建和删除触发,以便在我的 Cloudfront 分发版上执行缓存版本的失效。这是函数代码,用nodejs写的:
const AWS = require('aws-sdk');
exports.handler = async function (event, context) {
const cloudFront = new AWS.CloudFront();
const invalidationParams = {
DistributionId: "XXXX",
InvalidationBatch: {
CallerReference: Date.now().toString(),
Paths: {
Quantity: 2,
Items: [
"/index.html",
"/service-worker.js"
]
}
}
};
cloudFront.createInvalidation(invalidationParams, (error, data) => {
if (error) {
console.log(error, error.stack);
} else {
console.log("Invalidation results", data);
}
});
};
如您所见,没什么太复杂的。 现在,大多数情况下,处理程序执行时不执行任何操作,我正在查看日志,除了请求 ID 和开始和结束时间戳之外什么都没有打印,甚至没有 Cloudfront 错误,这让我想知道发生了什么。 在连续执行四到五次手动测试后,会正确创建失效,但日志不会报告它。再次触发它,然后打印上一次运行的失效结果。我觉得这非常奇怪和令人困惑。
从上下文和 Lambda 代码来看,我可能遗漏了什么吗?
谢谢。
【问题讨论】:
标签: amazon-s3 aws-lambda amazon-cloudfront aws-sdk-js