小编Yve*_* M.的帖子

AWS S3 - 减速:请降低您的请求率

SO上有足够多的类似问题和答案。然而很少提到前缀。首先,不再需要前缀的随机化,请参见此处

这种 S3 请求速率性能提升消除了任何先前的指导,即随机化对象前缀以实现更快的性能。这意味着您现在可以在 S3 对象命名中使用逻辑或顺序命名模式,而不会对性能产生任何影响。

现在回到我的问题。我仍然得到“SlowDown”,我不明白为什么。
我所有的对象分布如下:

/foo/bar/baz/node_1/folder1/file1.bin
/foo/bar/baz/node_1/folder1/file2.bin
/foo/bar/baz/node_1/folder2/file1.bin
/foo/bar/baz/node_2 /folder1/file1.bin
/foo/bar/baz/node_2/folder1/file2.bin

每个节点都有自己的前缀,然后是“文件夹”名称,然后是“文件”名称。每个“文件夹”中大约有 40 个“文件”。假设我有大约 20 个节点,每个节点下大约有 200 个“文件夹”,每个文件夹下有 40 个“文件”。在这种情况下,前缀由公共部分“/foo/bar/baz”、节点和文件夹组成,所以即使我并行上传所有40个文件,单个前缀的压力也是40,对吗?即使我从所有节点向每个“文件夹”上传 40 个文件,每个前缀的压力仍然是 40 个。那是对的吗?如果是,我怎么会得到“SlowDown”?如果没有我应该如何照顾它?定制RetryStrategy?为什么DefaultRetryStrategy采用指数退避不能解决这个问题?

EDIT001: 这里解释前缀的含义

amazon-s3 amazon-web-services aws-sdk

3
推荐指数
1
解决办法
1981
查看次数

如何向 CloudFront 响应添加标头?

我使用https://observatory.mozilla.org/analyze测试我的网站,我得到了 F 分数。

原因是:

Content Security Policy (CSP) header not implemented
X-XSS-Protection header not implemented 
X-Frame-Options (XFO) header not implemented    
...
Run Code Online (Sandbox Code Playgroud)

我使用 CloudFront 为我的网站提供服务。

我将那些丢失的标头放在 CloudFront 的何处?

在此处输入图片说明

amazon-web-services amazon-cloudfront

3
推荐指数
3
解决办法
2811
查看次数

Node.js - 使用Cheerio的回调函数

我在Node中构建一个scraper,它使用requestcheerio来加载页面并解析它们.

重要的是我只在请求和Cheerio完成加载页面后才进行回调.我正在尝试使用async扩展,但我不完全确定在哪里放回调.

request(url, function (err, resp, body) {
    var $;
    if (err) {
        console.log("Error!: " + err + " using " + url);
    } else {
        async.series([
            function (callback) {
                $ = cheerio.load(body);
                callback();
            },
            function (callback) {
               // do stuff with the `$` content here
            }
        ]);
    }
});
Run Code Online (Sandbox Code Playgroud)

我一直在阅读,cheerio documentation并且无法找到任何内容加载时的回调示例.

最好的方法是什么?当我在脚本上抛出50个URL时,它会在cheerio正确加载内容之前过早地开始移动,而我正试图通过异步加载来控制任何错误.

我对异步编程和回调都很陌生,所以如果我在这里缺少一些简单的东西请告诉我.

asynchronous node.js cheerio

2
推荐指数
1
解决办法
3533
查看次数

使用25个字符或更少的字符在MATLAB中创建特定的矩阵

什么matlab命令或命令组合(使用25个字符或更少)可用于创建以下矩阵?

1   0   0   1   0   0   1   0   0   1   0   0   1   0   0
1   1   0   1   1   0   1   1   0   1   1   0   1   1   0
1   1   1   1   1   1   1   1   1   1   1   1   1   1   1
1   0   0   1   0   0   1   0   0   1   0   0   1   0   0
1   1   0   1   1   0   1   1   0   1   1   0   1   1   0
1   1   1   1 …
Run Code Online (Sandbox Code Playgroud)

matlab matrix

2
推荐指数
1
解决办法
858
查看次数

Json Diff 补丁 Javascript - extjs

好吧,我付出了很大的努力来解决我的问题,所以最后我终于在这里发布了一个问题

我想在下面的给定链接中显示我的 JSON 差异 https://neil.fraser.name/software/diff_match_patch/svn/trunk/demos/demo_diff.html

这是给定库的文档 https://code.google.com/p/google-diff-match-patch/

任何人都知道如何使用 Sencha Extjs 来显示两个 JSON 对象之间的差异

javascript git json extjs node.js

2
推荐指数
1
解决办法
2883
查看次数

用于在 HTTP url 中检索文件扩展名的正则表达式

我正在研究 ELK 堆栈,作为 Logstash 数据转换的一部分,我正在转换 Apache 访问日志中的数据。

所需的指标之一是获取不同内容类型(aspx、php、gif 等)的统计信息。

从日志文件中,我试图检索请求 url,然后推断文件类型,因为 ex/c/dataservices/online.jsp?callBack是请求,我将.aspx使用正则表达式 \.\w{3,4}

我的正则表达式不适用于请求,说/etc/designs/design/libs.min.1253.css这将我.min作为扩展返回。

我正在尝试获得最后一个扩展名,但它不起作用。请建议其他方法。

regex

2
推荐指数
1
解决办法
6119
查看次数

对所有永远不会改变的变量使用const是否有意义?

鉴于这样的事情:

const audio = React.findDOMNode(this.refs.audio);
const seeker = React.findDOMNode(this.refs.seeker);
const {left, right} = seeker.getBoundingClientRect();
const seekToPerc = (event.clientX - left) / (right - left);

audio.currentTime = this.props.totalRunTime * seekToPerc;
Run Code Online (Sandbox Code Playgroud)

这是否过度使用const?我应该let在这里使用吗?

const ecmascript-6

2
推荐指数
1
解决办法
1307
查看次数

从Node.js模块中的Buffer实例逐行读取字符串

我有一个Node.js模块,它导出两个函数init(data),其中数据是Buffer,而test(word),其中word是一个字符串.

我想在test()函数中逐行读取数据Buffer实例中的行.

我没有Node.js的经验,只有JS.我从这个堆栈中了解到的是如何从Node.js模块中导出多个函数.

到目前为止这是函数声明.:

module.exports = {
    init: function(data) {

    },
    test: function(word) {

    }
}
Run Code Online (Sandbox Code Playgroud)

javascript node.js

2
推荐指数
1
解决办法
8337
查看次数

使用 Lambda@Edge 的单页应用程序

所以我有一个由 AWS Cloudfront 从 AWS S3 提供的 SPA。我已经配置了以下错误页面行为:

404: Not Found->/index.html带有 HTTP 代码200

这是在客户端处理路由所必需的。

现在我有一个 Lambda@Edge 函数,它由viewer-responseCloudfront 中的事件触发并设置一些自定义标头,如 HSTS 和 X-Frame。该函数正在被调用并按预期在除实际/index.html. 我倾向于认为这是因为它由 Cloudfront 中的上述错误页面行为处理,因为对 html 的实际 GET 请求由 Cloudfront 中的错误页面配置处理。

解决这个问题的实用方法是什么?

我不确定为什么重定向不会触发 lambda 函数。有什么方法可以实现与 lambda@edge 中的错误页面配置相同的逻辑吗?

amazon-cloudfront aws-lambda aws-lambda-edge

2
推荐指数
1
解决办法
1888
查看次数

Aws Appsync $util.error:数据和错误信息始终为空

我正在使用 AWS AppSync。当请求失败时,我正在尝试使用解析器响应映射模板中的$util.error()帮助程序(此处记录)输出一些错误详细信息。无论我做什么,我都无法让 AppSync 输出输出中的dataerrorInfo字段error

这是我拥有的 Lambda。

exports.handler = (event, context, callback) => {

  callback(null, {
    data: {
      name: "Test",
    },
    errorMessage: "Some error Message",
    errorType: "SomeErrorType",
    errors: {
      "foo": "bar",
      "bazz": "buzz",
    }
  })
};
Run Code Online (Sandbox Code Playgroud)

如您所见,它非常简单。我只是用返回一个对象dataerrorserrorMessageerrorType属性。

这是我的响应映射模板

$utils.error($context.result.errorMessage, $context.result.errorType, $context.result.data, $context.result.errors)
Run Code Online (Sandbox Code Playgroud)

再次,非常直接。我只是直接使用来自 Lambda 的字段抛出错误。

但是当我执行查询时,我得到了这个:

{
  "data": {
    "myField": null
  },
  "errors": [
    {
      "path": [
        "myField"
      ],
      "data": null,
      "errorType": …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-appsync

2
推荐指数
1
解决办法
2447
查看次数