aws 云平台常见操作

S3

s3 配置跨域

当使用 aws 的 cloudfront 或其他第三方 cdn (如 cdn77)为域名加速,资源是回源到 aws s3 的情况下,一般都需要配置 允许跨域,此种情况需要在 aws s3 存储桶中配置允许跨域 [1]

配置步骤如下:

  1. 定位到目标 s3 桶,进入 权限 管理页面

  2. 找到 CORS 配置,配置以下 JSON 格式内容,允许所有源的跨域

    [
    {
    "AllowedHeaders": [
    "*"
    ],
    "AllowedMethods": [
    "POST",
    "GET"
    ],
    "AllowedOrigins": [
    "*"
    ],
    "ExposeHeaders": []
    }
    ]

  3. Cloudfront 中,回源到此 S3 的加速域名配置中,行为 按照下图配置,主要为开启 OPTIONS 缓存,并在响应标头策略中选择: CORS-with-preflight-and-SecurityHeadersPolicy [2]

    此配置为可选配置,可以解决客户端偶尔会遇到的因跨域问题而导致的资源获取失败问题。

存储桶同步数据

Data Transfer Hub 数据在线传输解决方案

  1. 海外账号选择 从亚马逊云科技海外区域控制台中启动方案
  2. 弹出页面中点击下一步,在 指定堆栈详细信息 页面配置 堆栈名称 以及 AdminEmail后面登陆 Potal 需要发送到邮箱的初始密码,要确保邮箱可登录
  3. 后面步骤使用默认选项,一直下一步,直到点击 提交
  4. 等待 5-10 分钟后,全部资源创建完成,点击刚刚创建的堆栈的 输出 页面,其中有 数据在线传输 配置的 Potal 链接(PortalUrl),点击此 url,使用堆栈配置的邮箱中的密码登陆,第一次登陆后需要改密码。
  5. 登陆后,创建迁移任务。任务创建并运行后,可以在监控页面看到迁移时的相关监控数据

如果同步目标存储桶中的数据量太大,建议关闭 是否需要数据比对 选项,开启此选项,执行真正的数据同步前,需要完成对目标存储桶中数据的扫描,数据量越大,耗时越久


此同步工具会产生费用

Cloudfront

Cloudfront 配置 referer 校验

referer 校验 是一种常用的基础的防盗链手段,可以限制非法的 Referer 来源请求资源。参考配置步骤如下:

  1. 登陆 aws 帐号后,定位到 Cloudfront --> 函数(Function) 页面

  2. 点击 Create function(创建函数),为函数命名,例如 CheckRefererFunction

  3. 编辑函数代码

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

    // 获取 Referer 头,如果不存在,则设置为空
    var referer = headers.referer ? headers.referer.value : "";

    // 定义允许的 Referer 列表
    var allowedReferers = [
    "https://example.com/",
    "https://example.com"
    ];

    // 检查 Referer 是否在允许列表中
    var isAllowed = allowedReferers.some(function(allowedReferer) {
    return referer.startsWith(allowedReferer);
    });

    if (!isAllowed) {
    // 如果 Referer 不被允许,返回 403 Forbidden 响应
    return {
    statusCode: 403,
    statusDescription: "Forbidden",
    headers: {
    "content-type": { value: "text/plain" }
    },
    body: "Access denied"
    };
    }

    // 如果 Referer 合法,允许请求继续
    return request;
    }

  4. 在测试页面添加自定义 Header 进行测试,看函数是否按照预期工作,函数功能正常后 Publish (发布)函数

  5. 定位到 Cloudfront --> Distributes(分配) 页面,选择要关联函数的 Distribute。找到 Actions(行为) 进行编辑

  6. Function associations 中配置关联 CloudFront 函数。

脚注