aws Lambda 使 CloudFront 在 S3 上传时失效
aws Lambda to invalidate CloudFront on S3 upload
我同时上传了 10-50 个文件。 Lambda 为每个更新的文件触发一个事件(如果文件大小发生变化)。
因此,我不想让 50 倍的一个一个失效,而是希望在上传结束时 运行 通配符 “*”
字符一次。
任何人都可以阐明如何做到这一点?谢谢!
在您的 Lambda 函数中,使用 AWS SDK for CloudFront 使使用单通配符“/*”的分配无效。
var params = {
DistributionId: 'STRING_VALUE', /* required */
InvalidationBatch: { /* required */
CallerReference: 'STRING_VALUE', /* required */
Paths: { /* required */
Quantity: 0, /* required */
Items: [
'STRING_VALUE',
/* more items */
]
}
}
};
cloudfront.createInvalidation(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
注意:确保附加到 Lambda 函数的 IAM 角色具有执行无效操作所需的权限。
如果我对你的问题的理解正确,你的 lambda 函数知道 CloudFront 是否应该失效,但不知道应该在什么时候发生。
在这种情况下,您可以 return 一个布尔标志(例如,mustInvalidate
)作为响应的一部分,以指示应创建无效请求。然后,您的应用程序(或任何发起批量上传请求的应用程序)可以在批量上传完成后立即创建 /target-location/*
失效请求。
我同时上传了 10-50 个文件。 Lambda 为每个更新的文件触发一个事件(如果文件大小发生变化)。
因此,我不想让 50 倍的一个一个失效,而是希望在上传结束时 运行 通配符 “*”
字符一次。
任何人都可以阐明如何做到这一点?谢谢!
在您的 Lambda 函数中,使用 AWS SDK for CloudFront 使使用单通配符“/*”的分配无效。
var params = {
DistributionId: 'STRING_VALUE', /* required */
InvalidationBatch: { /* required */
CallerReference: 'STRING_VALUE', /* required */
Paths: { /* required */
Quantity: 0, /* required */
Items: [
'STRING_VALUE',
/* more items */
]
}
}
};
cloudfront.createInvalidation(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
注意:确保附加到 Lambda 函数的 IAM 角色具有执行无效操作所需的权限。
如果我对你的问题的理解正确,你的 lambda 函数知道 CloudFront 是否应该失效,但不知道应该在什么时候发生。
在这种情况下,您可以 return 一个布尔标志(例如,mustInvalidate
)作为响应的一部分,以指示应创建无效请求。然后,您的应用程序(或任何发起批量上传请求的应用程序)可以在批量上传完成后立即创建 /target-location/*
失效请求。