Amazon web services Amazon-Lambda函数中随机散列的生成
每次将视频上传到S3存储桶时,我都试图在函数中生成YouTube样式的id 我已经设置了一个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
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中的问题,我的联系信息也会显示在我的页面上。