Сообщение: «Политика корзины не существует», код: «NoSuchBucketPolicy»,

Мы пытаемся подключить политику сеанса в aws, но получаем следующую ошибку и до сих пор не могу понять, почему эта ошибка

Мы используем корзину S3 и сервис Secure Token.

Примечание. Мы получаем временные учетные данные, но политика не привязывается к роли.

Error NoSuchBucketPolicy: The bucket policy does not exist

Вот пример нашего кода

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.info(err.message);
    return
  }
  console.info(data)
  access_key = data.Credentials.AccessKeyId,
    secret_access_key = data.Credentials.SecretAccessKey,
    session_token = data.Credentials.SessionToken
  console.info(access_key)
  console.info(secret_access_key,)
  console.info(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.info("Error", err);
  } else if (data) {
    console.info("Success", data.Policy);
  }
});

Какая строка кода выдает эту ошибку?

Mark B 21.12.2020 16:10

К вашему сведению, у всех методов SDK есть вариант .promise().

jarmod 21.12.2020 17:56

На самом деле вы ни для чего не используете переменную bucketpolicy. Кроме того, если вы собираетесь использовать это как политику корзины S3, а не как политику IAM, то на самом деле это недействительная политика корзины — политики корзины должны иметь принципала.

jarmod 21.12.2020 18:00

@MarkB getBucketpolicy выдает ошибку в основном в этой строке console.info("Error", err);

int main 21.12.2020 19:39
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
1 927
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы пытаетесь получить несуществующую политику корзины. У корзин нет политики, пока вы ее не примените. Вы можете сделать это с помощью putBucketPolicy():

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.info("Error", err);
  } else if (data) {
    console.info("Success", data);
  }
});

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

Другие вопросы по теме