Как использовать учетные данные ECS с AWS JS SDK

#javascript #amazon-s3 #aws-sdk #amazon-ecs

Вопрос:

Я пытаюсь получить доступ к корзине S3 с помощью SDK AWS JS, но безуспешно.

У меня есть определение задачи, в котором используется роль задачи под названием Foo . Эта роль задачи как вложенная политика для доступа к корзине S3:

 {
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject"
      ],
      "Resource": "arn:aws:s3:::foo-bucket"
    }
  ]
}
 

В документации AWS о загрузке учетных данных из ролей IAM для EC2 говорится, что я должен настроить свой экземпляр для использования ролей IAM. Но я ничего не могу найти об этом в документации AWS.

Я попытался определить credentials , используя AWS.ECSCredentials class :

 const options = {
  apiVersion: '2006-03-01',
  region: bucketSettings.region,
  credentials: new AWS.ECSCredentials({
    httpOptions: { timeout: 5000 }, // 5 second timeout
    maxRetries: 10, // retry 10 times
    retryDelayOptions: { base: 200 }, // see AWS.Config for information
  })
};

this.s3Instance = new AWS.S3(options);
 

Когда я пытаюсь получить доступ к файлу в корзине S3:

 const document = await this.s3Instance
  .getObject({ Bucket: bucketSettings.name, Key: key })
  .promise();

return document;
 

У меня все еще есть

доступ запрещен

Есть идеи, чего мне там не хватает?

Ответ №1:

В политике доступа к корзине S3 произошла ошибка (обратите внимание /* в конце ресурса).:

 {
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject"
      ],
      "Resource": "arn:aws:s3:::foo-bucket/*"
    }
  ]
}
 

Кроме того, credentials опция, предоставляемая в SDK AWS, не требуется:

 const options = {
  apiVersion: '2006-03-01',
  region: bucketSettings.region,
};

this.s3Instance = new AWS.S3(options);
 

Комментарии:

1. Я пытаюсь сделать то же самое, однако, когда я оставляю учетные данные, я получаю сообщение об ошибке «Отсутствуют учетные данные», и если я добавляю учетные данные, я получаю сообщение об ошибке «ECSCredentials не является конструктором». Есть какие-нибудь советы ?