基于CloudFront导入Amazon S3数据

更新时间:
复制为 MD 格式

背景

为满足数据分析、审计及监控业务需求,我们将 Amazon S3 存储的文件数据同步至 SLS(Simple Log Service)系统进行统一处理与检索。然而,随着数据吞吐量的持续增长,AWS S3 直接出站流量费用已成为运营成本的主要压力点。尤其在跨云或大文件传输场景下,S3 直连不仅单价较高,而且在高并发拉取时易受网络波动影响,导致传输效率不稳定。

本文介绍通过 Amazon CloudFront 来优化数据传输链路。通过将 S3 配置为 CloudFront 源站,并将 SLS 数据拉取端点切换至 CloudFront 域名,利用其边缘分发能力替代直连。基于 CloudFront 更优的流量阶梯定价及全球网络特性,在降低带宽成本的同时,提升文件下载的成功率与吞吐性能,实现成本与稳定性的双重优化。这里我们仅使用 CloudFront 来获取文件数据,仍使用原模式(通过 SQS 或直连 S3)来获取文件元数据。若有安全需求,可以使用 CloudFront 提供的函数功能来对请求进行鉴权。接下来将依次介绍:1. 鉴权函数配置;2. CloudFront 详细配置;3. Distribution 关联函数;4. S3 导入任务的创建。

重要

本文档为阿里云原创,知识产权归阿里云所有。由于本文档旨在介绍阿里云与第三方产品交互的服务能力,因此可能会提及第三方公司或其产品名称。

鉴权函数配置

步骤一:创建函数

CloudFront中函数页创建函数,Runtime使用cloudfront-js-2.0image.png

image.png

步骤二:编辑鉴权函数并发布

使用以下代码,修改Token后构建函数并保存。测试后发布。

function handler(event) {
    var request = event.request;
    var headers = request.headers;

    // 定义你的 Token(请替换为一个随机生成的强密码字符串)
    var expectedToken = 'xxxxxx';

    // 校验 X-CF-Token Header
    if (!headers['x-cf-token'] || headers['x-cf-token'].value !== expectedToken) {
        return {
            statusCode: 403,
            statusDescription: 'Forbidden',
            body: {
                encoding: 'text',
                data: 'Access Denied'
            }
        };
    }

    // 校验通过,继续转发请求
    return request;
}

image.png

image

CloudFront详细配置

步骤一:创建Distribution

CloudFront中分配页创建分配,并选择合适的plan。image

image.png

步骤二:命名Distribution

Distribution Options 中设置Distribution name,设置Distribution typeSingle website or app后进入下一步。

image.png

步骤三:源配置为S3

  1. Origin type选择 Amazon S3类型,然后点击Browse S3按钮,浏览选择目标Bucket。image.png

  2. Origin settings保持默认。Cache settings选择自定义然后缓存策略选择CachingDisabled。

    image.png

步骤四:安全防护按需开启

按照自己的安全需求选择是否开启安全防护。image.png

步骤五:检查配置并创建

检查配置并创建,最后等待部署完成。部署状态变为时间戳,即表示部署完成。image.png

重要

创建导入任务时,需要获取这里的Domain name。

Distribution关联函数

步骤一:点击Distribution进行配置

在分配列表中选择CloudFront详细配置创建的Distribution,在行为页中创建行为。image.png

image.png

步骤二:关联函数

下拉至页面底部,函数类型选择CloudFront Functions,选择鉴权函数配置定义的函数,最后点击创建。image.png

创建S3导入任务

步骤一:进入任务管理并开始创建导入任务

  1. 登录日志服务控制台。单击Project名称,进入目标Project。

  2. 单击左侧导航栏的任务管理,在任务管理页单击数据导入,单击创建数据导入任务

步骤二:开始接入

在弹出框单击 S3-数据导入立即接入,然后选择需要接入的目标LogStore。

步骤三:配置任务信息

填写表单信息,开启是否使用CloudFront 按钮,并填入上述步骤获取的cloudFront domain name以及Token,预览查看是否符合预期,最后点击下一步即可。image.png

说明

此处主要介绍CloudFront相关配置,详细配置参考导入Amazon S3文件