Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.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
Node.js 信息:';桶策略不存在';,代码:';无此政策';,_Node.js_Amazon Web Services_Amazon S3_Sts - Fatal编程技术网

Node.js 信息:';桶策略不存在';,代码:';无此政策';,

Node.js 信息:';桶策略不存在';,代码:';无此政策';,,node.js,amazon-web-services,amazon-s3,sts,Node.js,Amazon Web Services,Amazon S3,Sts,我们正在尝试在aws中附加会话策略,但收到以下错误 还是不知道为什么会出现这个错误 我们正在使用S3 bucket和安全令牌服务 注意:我们正在获取临时凭据,但策略未附加到角色 错误NoSuchBucketPolicy:bucket策略不存在 这是我们的代码示例 var AWS = require('aws-sdk'); const s3 = new AWS.S3(); var sts = new AWS.STS({ apiVersion: '2011-06-15' }); var acces

我们正在尝试在aws中附加会话策略,但收到以下错误 还是不知道为什么会出现这个错误

我们正在使用S3 bucket和安全令牌服务

注意:我们正在获取临时凭据,但策略未附加到角色

错误NoSuchBucketPolicy:bucket策略不存在

这是我们的代码示例

var AWS = require('aws-sdk');
const s3 = new AWS.S3();
var sts = new AWS.STS({ apiVersion: '2011-06-15' });

var access_key, secret_access_key, session_token;


const bucketpolicy=
{
 
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1608525393608",
      "Effect": "Allow",
      "Action": "s3:*",
     
      "Resource":"arn:aws:s3:::temp.bucket2/user_id/*"
     
    }
  ]

};
// var myJSON = JSON.stringify(bucketpolicy);
const role = {
  RoleArn: 'arn:aws:iam::xxxxxxxx:role/webClientRole',
  Policy: JSON.stringify(bucketpolicy),
  RoleSessionName: 'my-test-roles',
  DurationSeconds: 3600
};
sts.assumeRole(role, (err, data) => {
  if (err) {

    console.log(err.message);
    return
  }
  console.log(data)
  access_key = data.Credentials.AccessKeyId,
    secret_access_key = data.Credentials.SecretAccessKey,
    session_token = data.Credentials.SessionToken
  console.log(access_key)
  console.log(secret_access_key,)
  console.log(session_token)
  AWS.Credentials({
    region: 'ap-southeast-1',
    accessKeyId: access_key,
    secretAccessKey: secret_access_key,
    sessionToken: session_token
  });
  AWS.config.update({
    region: 'ap-southeast-1',
    accessKeyId: access_key,
    secretAccessKey: secret_access_key,
    sessionToken: session_token
  }
  );
})
 
// call S3 to retrieve policy for selected bucket
s3.getBucketPolicy({Bucket: "bucket_name"}, function(err, data) {
  if (err) {
    console.log("Error", err);
  } else if (data) {
    console.log("Success", data.Policy);
  }
});

您正在尝试检索不存在的bucket策略。在应用策略之前,bucket没有策略。您可以使用以下方法执行此操作:


哪一行代码抛出了该错误?仅供参考,所有SDK方法都有一个
.promise()
变量。实际上,您没有使用
bucketpolicy
变量。另外,如果您打算将其用作S3 bucket策略,而不是IAM策略,那么它实际上不是一个有效的bucket策略-bucket策略必须有一个。@MarkB getBucketpolicy给出的错误基本上是这一行的console.log(“error”,err);
var bucketName = "your_bucket_name";

var bucketPolicy = { 
  "Version": "2012-10-17",
  "Statement": [{
    ...
  }]
};

var params = {
  Bucket: BucketName, 
  Policy: bucketPolicy
};

s3.putBucketPolicy(params, function(err, data) {
  if (err) {
    console.log("Error", err);
  } else if (data) {
    console.log("Success", data);
  }
});

// Now s3.getBucketPolicy() should return the applied policy