Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services Amazon-Lambda函数中随机散列的生成_Amazon Web Services_Amazon S3_Aws Lambda - Fatal编程技术网

Amazon web services Amazon-Lambda函数中随机散列的生成

Amazon web services Amazon-Lambda函数中随机散列的生成,amazon-web-services,amazon-s3,aws-lambda,Amazon Web Services,Amazon S3,Aws Lambda,每次将视频上传到S3存储桶时,我都试图在函数中生成YouTube样式的id 我已经设置了一个Lambda函数,并准备在每次发生这种情况时运行它。它包括以下生成哈希的代码: var ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; var ID_LENGTH = 10; function generatehash() { var rtn = ''; for (var i = 0; i

每次将视频上传到S3存储桶时,我都试图在函数中生成YouTube样式的id

我已经设置了一个Lambda函数,并准备在每次发生这种情况时运行它。它包括以下生成哈希的代码:

var ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

var ID_LENGTH = 10;

function generatehash() {
  var rtn = '';
  for (var i = 0; i < ID_LENGTH; i++) {
    rtn += ALPHABET.charAt(Math.floor(Math.random() * ALPHABET.length));
  }
  return rtn;
}

var outputhash = generatehash();

exports.handler = function(event, context) {

console.log(outputhash);

};
var ALPHABET='0123456789abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz';
变量ID_长度=10;
函数generatehash(){
var rtn='';
对于(变量i=0;i

每次触发该函数时,都会生成相同的ID。我是否误解了这些Lambda函数的工作原理?它们不是每次被调用时都动态运行吗?

您应该移动
var outputhash=generatehash()在主体中导出.handler函数。

是否尝试移动
var outputhash=generatehash()在你的
导出.handler
函数中?与你的实际问题无关,请注意,你的实现通过使用每个随机调用只生成一个字符而丢弃了很多熵。。。可能会减少此功能的最终随机性(减少碰撞阻力,增加可预测性)。您可能想看看类似的东西,它使用
加密
,可能是更好的解决方案。此外,删除字母
u
将有助于防止生成大量潜在的冒犯性词语,至少在英语中是这样。您能解释一下为什么这在函数的其他地方不起作用吗?据我所知,lambda创建了docker容器,并将其使用了一段时间,因此,您从
导出的所有代码.handler
会对每个docker容器调用一次,这基本上是正确的。处理程序在每次函数调用时被调用一次,但流程本身可能会被冻结和解冻(可能是我刚才编造的不精确的术语),以便重用,方法是再次调用其处理程序,在销毁之前的未定义的时间长度内调用未定义的次数。同一个容器和进程永远不会用于并发请求,其中一个请求在另一个请求结束之前开始——这种情况总是导致多个独立的容器和进程;否则,持久性必须是预期的,但不能保证。嗨@Michael sqlbot,如果你不介意的话,我可以问你一些离题的问题吗?我不介意。根据您问题的性质,我会监控feed中的问题,我的联系信息也会显示在我的页面上。