【问题标题】:aws Lambda to invalidate CloudFront on S3 uploadaws Lambda 在 S3 上传时使 CloudFront 无效
【发布时间】:2018-02-08 16:18:13
【问题描述】:

我同时上传了 10-50 个文件。 Lambda 为每个更新的文件触发一个事件(如果文件大小发生变化)。

因此,我想在上传结束时运行一次通配符 “*” ,而不是一一失效 50x。

任何人都可以阐明如何做到这一点?谢谢!

【问题讨论】:

    标签: amazon-web-services amazon-s3 lambda amazon-cloudfront invalidation


    【解决方案1】:

    如果我正确理解了您的问题,您的 lambda 函数知道 CloudFront 是否应该使无效,但不知道何时应该准确发生。

    在这种情况下,您可以返回一个布尔标志(例如,mustInvalidate)作为响应的一部分,以指示应该创建一个失效请求。然后,您的应用程序(或任何发起批量上传请求的程序)可以在上传批量完成后立即创建 /target-location/* 失效请求。

    【讨论】:

      【解决方案2】:

      在您的 Lambda 函数中,使用 AWS SDK for CloudFront 使用 sing 通配符“/*”使分配无效。

      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 角色具有执行无效操作所需的权限。

      【讨论】:

      • 是的,但这不会被称为 50x 吗?
      猜你喜欢
      • 2018-07-12
      • 2019-08-18
      • 2021-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-18
      • 2018-05-17
      • 1970-01-01
      相关资源
      最近更新 更多