it-swarm.com.ru

Доступ запрещен s3cmd с компьютера EC2

Я пытаюсь использовать конфигурацию ротации журналов для моего сервера nginx, который я использую в качестве обратного прокси-сервера, расположенного на экземпляре EC2 Ubuntu.

Я хочу сохранить эти журналы в корзине S3 после ротации, но я получаю только "доступ запрещен, вы уверены, что у ваших ключей есть ошибки разрешений ListAllMyBuckets", когда я пытаюсь настроить инструменты s3cmd.

Я почти уверен, что мои учетные данные правильно настроены в IAM, пробовал по крайней мере пять различных учетных данных (даже root) с одинаковым результатом. Хорошо работает перечисление всех моих корзин с моего локального компьютера с помощью инструментов aws cli с теми же учетными данными, поэтому меня удивляет, что у меня нет доступа только к моему экземпляру EC2.

это то, что я бегу:

which s3cmd
/usr/local/bin/s3cmd

s3cmd --configure --debug

Access Key: **************
Secret Key: *******************************
Encryption password: 
Path to GPG program: /usr/bin/gpg
Use HTTPS protocol: False
HTTP Proxy server name:
HTTP Proxy server port: 0

и это результат

...
DEBUG: ConnMan.put(): connection put back to pool (http://s3.amazonaws.com#1)
DEBUG: S3Error: 403 (Forbidden)
DEBUG: HttpHeader: x-amz-id-2: nMI8DF+............
DEBUG: HttpHeader: server: AmazonS3
DEBUG: HttpHeader: transfer-encoding: chunked
DEBUG: HttpHeader: x-amz-request-id: 5912737605BB776C
DEBUG: HttpHeader: date: Wed, 23 Apr 2014 13:16:53 GMT
DEBUG: HttpHeader: content-type: application/xml
DEBUG: ErrorXML: Code: 'AccessDenied'
DEBUG: ErrorXML: Message: 'Access Denied'
DEBUG: ErrorXML: RequestId: '5912737605BB776C'
DEBUG: ErrorXML: HostId: 'nMI8DF+............
ERROR: Test failed: 403 (AccessDenied): Access Denied
ERROR: Are you sure your keys have ListAllMyBuckets permissions?

Единственное, что находится перед моим сервером nginx, - это балансировщик нагрузки, но я не понимаю, почему это может помешать моему запросу. Могло ли это быть что-то еще, что я пропустил?

6
Sam

Я нашел решение своих проблем, удалив все установки s3cmd. Затем удостоверился, что apt-get обновлен, и снова установил его из apt-get. После моей конфигурации (так же, как и раньше) все получилось просто отлично!

0
Sam

Пожалуйста, проверьте, что разрешение пользователя IAM, какие ключи вы используете

Шаги будут

  • Консоль AWS перейдет на панель IAM
  • IAM пользователь> Выберите, что Пользователь> в нижней вкладке 2-й вкладки разрешение
  • прикрепить политику пользователя

    {
    "Version": "2012-10-17",
    "Statement": [
     {
      "Effect": "Allow",
      "Action": ["s3:ListAllMyBuckets"],
      "Resource": "arn:aws:s3:::*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetBucketLocation"
      ],
      "Resource": "arn:aws:s3:::YOU-Bucket-Name"
    
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::YOU-Bucket-Name/*"
    
    
    }
    ]
    }
    

Дайте мне знать, как оно идет

8
abaid778

Пожалуйста, не доверяйте ключу --configure:

я столкнулся с той же проблемой. он показывал 403 в --configure, но в конце я сохранил настройки и попытался:

ОШИБКА: тест не пройден: 403 (AccessDenied): доступ запрещен
Повторить попытку настройки? [Да/Нет] n
Сохранить настройки? [y/N] y
Конфигурация сохранена в '/root/.s3cfg'

# s3cmd put MyFile s3://MyBucket/

& это сработало..

7
Mr. Pundir

s3cmd создает файл с именем .s3cfg в вашем домашнем каталоге, когда вы его настраиваете. Я хотел бы убедиться, что вы поместите этот файл где-нибудь, где ваш скрипт logrotate сможет это прочитать, и используете флаг -c.

Например, чтобы загрузить файл logfile.txt в ведро logbucket:

/ usr/local/bin/s3cmd -c /home/ubuntu/.s3cfg put logfile.txt s3: // logbucket

6
user3566750

Какую версию s3cmd вы используете?

Я пробовал использовать s3cmd 1.1, кажется, s3cmd 1.1 не работает с ролями IAM.

Но кто-то говорит, что s3cmd 1.5 alpha2 поддерживает роли IAM. ( http://t1983.file-systems-s3-s3tools.file-systemstalk.info/s3cmd-1-5-0-alpha2-iam-roles -supportincluded-t1983.html )

Я пробовал s3cmd 1.5 beta1 ( https://github.com/s3tools/s3cmd/archive/v1.5.0-beta1.tar.gz ), он отлично работает с ролями IAM.

Таким образом, есть два способа получить доступ к корзине s3 из s3cmd:

  1. Использование ключа доступа и секретного ключа `

    вам нужно установить конфигурационный файл в /root/.s3cfg(default path) как показано ниже

    access_key = xxxxxxxx secret_key = xxxxxxxxxxxxxxxxxxxx

    Обратите внимание, что просто установите два значения ключа в .s3cfg, другие ключи не нужны.

    `
  2. Используя IAM, добавьте политику s3 с s3cmd> 1.5 alph2. `

    вам нужно добавить IAM в экземпляр ec2, эта роль может иметь следующую политику

    {"Эффект": "Разрешить", "Действие": ["s3: "], "Ресурс": ""} `
1
user3567113

У меня тоже была похожая проблема. Даже после связывания моего экземпляра EC2 с ролью IAM с помощью политики полного доступа s3 мой s3cmd не работал, поскольку в нем не было файла .s3cfg. Я исправил, обновив версию моего s3cmd.

Sudo pip install s3cmd == 1.6.1

Сделал трюк!

0
Selvaram G