当前位置: 首页 > 知识库问答 >
问题:

尝试在NodeJS中使用aws sdk在S3中创建文件夹时访问被拒绝

冯星阑
2023-03-14

我试图从节点使用AWS-SDK在s3桶中创建文件夹。我可以完全访问相应的桶,但是我总是得到“当我运行代码创建文件夹时拒绝访问”。

 function init() {
  if (s3Instance === null) {
    AWS.config.update({
      accessKeyId: S3_ACCESS_KEY_ID,
      secretAccessKey: S3_SECRET_ACCESS_KEY,
      region: S3_REGION
    });

    if (HTTP_PROXY) {
      AWS.config.update({
        httpOptions: { agent: proxy(HTTP_PROXY) }
      });
    }

    // s3Instance = new AWS.S3();
    s3Instance = new AWS.S3({ apiVersion: "2006-03-01" });
  }
}

function createFolder(folderKey) {
  return new Promise((resolve, reject) => {
    var params = {
      Bucket: S3_BUCKET,
      Key: `${folderKey}/`,
      Body: "body does not matter"
    };
    s3Instance.upload(params, function (err, data) {
      if (err) {
        console.log(err, err.stack);
        reject(err);

      } else {
        console.log("Successfully created a folder on S3");
        resolve("Successfully created a folder on S3");
      }
    });
  });
}

空:错误:在Request.extract拒绝访问错误(c:\用户\sunny.bogawat\Workspace\oms-myPorter\网关\app\node_modules\aws-sdk\lib\service\s3.js:837: 35)在Request.call监听器(c:\用户\<--plhd--4#########################################################################################################################################################plhd--9/>(c:\用户\sunny.bogawat\Workspace\oms-myPorter\网关\app\node_modules\aws-sdk\lib\request.js:688: 14)在Request.transition(c:\用户\sunny.bogawat\Workspace\oms-myPorter\网关\app\node_modules\aws-sdk\lib\request.js:22: 10)在接受器状态achine.run到(c:\用户\sunny.bogawat\工作区\oms-myPorter\网关\应用程序\node_modules\AWS-sdk\lib\state_machine.js:14: 12)在c:\用户\sunny.bogawat\工作区\oms-myPorter\网关\应用程序\node_modules\aws-sdk\lib\state_machine.js:26: 10在请求。(c:\用户\sunny. bogawat\Workspace\oms-myporter\网关\应用程序\node_modules\aws-sdk\lib\请求. js: 38:9)在请求。(c:\用户\sunny. bogawat\Workspace\oms-myporter\网关\应用程序\node_modules\aws-sdk\lib\请求. js: 690:12)在在请求. emit(c:\用户\sunny. bogawat\Workspace\oms-myPorter\网关\app\node_modules\aws-sdk\lib\sequential_executor. js: 116:18)在请求. emit(c:\用户\sunny. bogawat\Workspace\oms-myPorter\网关\app\node_modules\aws-sdk\lib\sequential_executor. js: 78:10)在请求. emit(c:\用户\sunny. bogawat\Workspace\oms-myPorter\网关\appnode_modules\aws-sdk\lib\要求. js: 688:14)在请求.过渡(c:\用户\sunny. bogawat\Workspace\oms-myporter\网关\app\node_modules\aws-sdk\lib\要求. js: 22:10)在接受器StateMachine. runTo(c:\用户\sunny. bogawat\Workspace\oms-myporter\网关\app\node_modules\aws-sdk\lib\state_machine. js: 14:12)在c:\用户\sunny. bogawat\Workspace\oms-myporter\网关\应用\node_modules\aws-sdk\lib\state_machine. js: 26:10在请求。(c:\用户\sunny. bogawat\Workspace\oms-myPorter\网关\app\node_modules\aws-sdk\lib\请求。js: 38:9)在请求。(c:\用户\sunny. bogawat\Workspace\oms-myPorter\网关\app\node_modules\aws-sdk\lib\请求。js: 690:12)在请求。用户\sunny. bogawat\Workspace\oms-myPorter\网关\app\node_modules\aws-sdk\lib\sequential_executor. js: 116:18)在IncomingMessage. onend(c:\用户\sunny. bogawat\Workspace\oms-myPorter\网关\app\node_modules\aws-sdk\lib\sequential_executor. js: 96:12)(c:\用户\sunny. bogawat\Workspace\oms-myPorter\网关\app\node_modules\aws-sdk\lib\event_listeners. js: 313:13)在IncomingMessage. emit(

共有1个答案

端木昱
2023-03-14

我认为您应该使用putObject并尝试像这样创建s3对象。

s3 = new S3({
    credentials: {
        region: process.env.AWS_REGION,
        accessKeyId: process.env.AWS_ACCESS_KEY_ID,
        secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
    }
});

    const uploadObject = async (bucket, key, body) => {
    try {

        const params = {
            Bucket: bucket,
            Key: key,
            Body: body//,
            //ContentType: "application/pdf"
        }

        var data = await s3.putObject(params).promise();

        return { message: data.error || 'Successfull' };



    } catch (err) {
        console.log(err)
        return { message: err.toString() || 'Failed' };
    }

};
 类似资料:
  • lambda执行角色具有对51个函数的s3访问权限,包括ListBuckets和所有其他读操作。 我的S3 bucket有一个允许从lambda角色访问的策略。(反正是在同一个帐户中,所以我不认为这是必需的)。 我甚至只是为了好玩才让桶公共访问。 这是λ码。我不知道为什么bucket.objects.all()无法访问S3。 Lambda执行角色策略

  • 我是亚马逊和java的新手。我在这里尝试两件事。 第一-我试图在我的Amazon S3存储桶中创建一个文件夹,我已经创建并获得了凭据。 第二-我正在尝试将文件上传到这个存储桶。 根据我的理解,我可以使用putObjectRequest()方法来完成这两个任务。 用于上传文件。 我不确定我是否应该使用这种方法 仅用于创建文件夹。我正在努力学习InputSteam和ObjectMetadata。我不知

  • 我启动了一个ec2实例并为该实例创建了一个具有完整S3访问策略的角色。我在其上安装了awscli并配置了用户的访问密钥。我的用户也有管理员访问权限和完整的S3访问策略。我可以看到aws控制台中的存储桶,但当我尝试在它返回的实例上运行时,它返回了。 我还需要做些什么才能正确地向角色或我的用户添加权限,以便能够在S3和实例之间列出和同步对象?

  • 问题内容: 我有一个Java应用程序,用户可以使用以下代码创建文本文件并将其保存在计算机上的任意位置: 但是许多使用Windows 7的用户报告说,将文件保存到 “ C:\”时 ,会出现“ 访问被拒绝 ”错误。我发现这是因为他们需要管理员权限才能在Win7中的此类路径中保存文件。 而不是向用户显示警告消息:“ 您无法在此路径中保存文件 ”,我可以以某种方式在该路径中保存文件,例如是否可以通过Jav

  • 我有一个lambda函数,它使用一个具有以下策略摘录的角色 我的桶策略如下所示 我在角色和bucket策略上都允许使用GetObject和ListBucket。但是,当我的函数运行时 我明白了 [错误]ClientError:调用GetObject操作时发生错误(AccessDenied):拒绝访问 我还需要添加哪些权限?对象就在那里,当我使用管理员角色在本地运行代码时,我可以得到它。 最新消息

  • 问题内容: 我在FoxPro 6.0命令窗口中使用SQL命令,并遇到“文件访问被拒绝”。 我的SQL命令是: 情况: Windows 7专业版 FoxPro 6.0 main.dbf被共享给许多用户。 main.dbf不是 隐藏的 ,也不是 只写 任何意见将不胜感激! 问题答案: 此DBF文件位于共享驱动器上吗?如果是这样,则另一个用户可能使文件打开了“排他”,或者您正试图打开文件“排他”。默认状