小编HOK*_*HOK的帖子

将 S3 操作与 Promise 链接时“无法读取未定义的属性‘推送’”

我想不通这个。任何帮助表示赞赏。

我有一个 lambda,它基本上将 HTML 文件从一个 S3 存储桶复制到另一个 S3 存储桶,其中包括一些“魔法”(重用其他 HTML 文件的部分)。

我已经在nodes.js 10中启动并运行了它

exports.handler = async (event, context, callback) => { }
Run Code Online (Sandbox Code Playgroud)

与回调。切换到node.js 12

exports.handler = async (event) => { }
Run Code Online (Sandbox Code Playgroud)

我不得不从回调切换到承诺。

生成的代码适用于 60% 的情况。

exports.handler = async (event) => {
for (var record of event.Records) {
    if(record.s3.object.key.indexOf(".") != -1){
        if (record.s3.object.key.localeCompare("website/") != 0) {
            const objectCopied = await s3.putObject( { Body: (await generateHTML( (await s3.getObject({ Bucket: record.s3.bucket.name, Key: record.s3.object.key }).promise()).Body.toString('utf-8'), record.s3.bucket.name )), Bucket: DestBucket, Key: record.s3.object.key.slice("website/".length), ACL: 'public-read',  ContentType: …
Run Code Online (Sandbox Code Playgroud)

javascript amazon-s3 amazon-web-services node.js aws-lambda

6
推荐指数
0
解决办法
2210
查看次数

JS Web 工作者和安全

我想在用户登录后使用专用的 Web Worker(而不是共享 Worker)在后台从 S3 加载文件。为了获得对 s3 文件的访问权限,我需要对用户进行身份验证 (AWS Cognito)。

在创建经过身份验证的 s3 对象后,我尝试像这样从浏览器的 js 调用 Web Worker。

    async function softSyncPlaground(oFoldersInSync, localS3Object){
        var worker = new Worker('js/worker_syncPlayground.js');
         worker.addEventListener('message', function(e) {
            console.log('Worker said: ', e.data);
        }, false);
        worker.postMessage([oFoldersInSync, localS3Object]);
    } 
Run Code Online (Sandbox Code Playgroud)

但它不起作用,因为无法将具有功能的对象提交给网络工作者。

因此,我的后备方案是将凭证发布到 Web Worker 中并在那里生成经过身份验证的 s3 对象。

    async function softSyncPlaground(oFoldersInSync, sIdentityPoolId, oLogins){
        var worker = new Worker('js/worker_syncPlayground.js');
         worker.addEventListener('message', function(e) {
            console.log('Worker said: ', e.data);
        }, false);
        worker.postMessage([oFoldersInSync, sIdentityPoolId, oLogins]);
    }
Run Code Online (Sandbox Code Playgroud)

然而,发送凭证让我在安全方面感到不安。

  • “worker.postMessage()”可以被拦截吗?
  • 如果我想稍后切换到共享工作人员(我有一个“很好”的用例),这会影响安全性吗?

对这个话题有什么想法吗?

javascript security amazon-s3 amazon-web-services web-worker

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