Дубликат Deja / резервное копирование Boto S3 получение 403 с допустимыми учетными данными

Я использую Дубликат Deja для резервного копирования моего ноутбука к S3. Это работало на многие резервные копии, но с 20 дней назад прекратил работать.

Traceback (most recent call last):
  File "/usr/bin/duplicity", line 1532, in <module>
    with_tempdir(main)
  File "/usr/bin/duplicity", line 1526, in with_tempdir
    fn()
  File "/usr/bin/duplicity", line 1364, in main
    action = commandline.ProcessCommandLine(sys.argv[1:])
  File "/usr/lib/python2.7/dist-packages/duplicity/commandline.py", line 1108, in ProcessCommandLine
    globals.backend = backend.get_backend(args[0])
  File "/usr/lib/python2.7/dist-packages/duplicity/backend.py", line 223, in get_backend
    obj = get_backend_object(url_string)
  File "/usr/lib/python2.7/dist-packages/duplicity/backend.py", line 209, in get_backend_object
    return factory(pu)
  File "/usr/lib/python2.7/dist-packages/duplicity/backends/_boto_single.py", line 161, in __init__
    self.resetConnection()
  File "/usr/lib/python2.7/dist-packages/duplicity/backends/_boto_single.py", line 194, in resetConnection
    raise e
S3ResponseError: S3ResponseError: 403 Forbidden

Я проверил, что пользовательские политики корректны. Я проверил их в тестере политики AWS, а также использовал их с CLI AWS для списка блоков, читаю из резервного блока и пишу в резервный блок.

Резервные копии на моем рабочем столе все еще работают, и они используют те же учетные данные. Рабочий стол и резервные копии ноутбука не входят в тот же блок, но те же удостоверения пользователя используются.

Мое время машин не вне синхронизации.

Я проверил, что настройки дубликата deja корректны и в UI и в dconf редакторе.

Я использую свой ноутбук больше, чем мой рабочий стол, таким образом, возможно, что это получило некоторое обновление, которое, возможно, испортило вещи, но я не уверен что.

Закапывание в течение нескольких часов теперь и в замешательстве. Я хотел бы это резервное копирование прежде, чем попытаться обновить до 18,04 в ближайшем будущем.

информация о версии: aws-cli/1.15.79 Python/2.7.12 Linux/4.15.0-30-generic botocore/1.10.78 boto 2.49.0
botocore 1.10.78

Править: Вышеупомянутое было с Ubuntu 16. Я недавно обновил до Ubuntu 18, и все еще испытываю проблему. Я думаю, что это - та же проблема, но журналы несколько отличаются. Вот то, что они находятся на Ubuntu 18:

DUPLICITY: ERROR 30 S3ResponseError
DUPLICITY: . Traceback (innermost last):
DUPLICITY: .   File "/usr/bin/duplicity", line 1555, in <module>
DUPLICITY: .     with_tempdir(main)
DUPLICITY: .   File "/usr/bin/duplicity", line 1541, in with_tempdir
DUPLICITY: .     fn()
DUPLICITY: .   File "/usr/bin/duplicity", line 1380, in main
DUPLICITY: .     action = commandline.ProcessCommandLine(sys.argv[1:])
DUPLICITY: .   File "/usr/lib/python2.7/dist-packages/duplicity/commandline.py", line 1127, in ProcessCommandLine
DUPLICITY: .     globals.backend = backend.get_backend(args[0])
DUPLICITY: .   File "/usr/lib/python2.7/dist-packages/duplicity/backend.py", line 223, in get_backend
DUPLICITY: .     obj = get_backend_object(url_string)
DUPLICITY: .   File "/usr/lib/python2.7/dist-packages/duplicity/backend.py", line 209, in get_backend_object
DUPLICITY: .     return factory(pu)
DUPLICITY: .   File "/usr/lib/python2.7/dist-packages/duplicity/backends/_boto_single.py", line 166, in __init__
DUPLICITY: .     self.resetConnection()
DUPLICITY: .   File "/usr/lib/python2.7/dist-packages/duplicity/backends/_boto_single.py", line 191, in resetConnection
DUPLICITY: .     location=self.my_location)
DUPLICITY: .   File "/home/aaronloes/.local/lib/python2.7/site-packages/boto/s3/connection.py", line 628, in create_bucket
DUPLICITY: .     response.status, response.reason, body)
DUPLICITY: .  S3ResponseError: S3ResponseError: 403 Forbidden
DUPLICITY: . <?xml version="1.0" encoding="UTF-8"?>
DUPLICITY: . <Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message><AWSAccessKeyId>XXXXXCENSORXXXXX</AWSAccessKeyId><StringToSign>PUT

Я убрал свой ключ в журналах, но я проверил, что это - корректный ключ. Я не уверен, как я могу заставить duplicity/dejadup предлагать мне мой секрет AWS снова, потому что, возможно, который кэшировался плохо так или иначе?

awscli 1.15.79
Python 2.7.15rc1 4.15.0-38-универсальный boto 2.49.0
botocore 1.10.78

Редактирование смогло заставить deja-дубликат предлагать мне новые учетные данные и все еще никакое различие. Я знаю без любого сомнения, что двуличность использует соответствующие учетные данные, и я знаю без сомнения, что учетные данные хороши.

2
задан 7 November 2018 в 09:27

2 ответа

Итак, я наконец понял это. Это заняло некоторое время, потому что я перестал использовать рассматриваемый компьютер в качестве основного. Недавно мне нужно было использовать его, и я решил попробовать еще раз, и ответ пришел ко мне.

В какой-то момент либо boto (маловероятно), либо duplicity/deja-dup перестали использовать учетные данные, которые я указал в его конфигурации, и начали использовать учетные данные, которые я установил в переменных среды. Предполагается, что Boto принимает предоставленные учетные данные, прежде чем искать среду, поэтому я предполагаю, что это как-то связано с двуличностью/дежа-дублированием. Я знаю, что произошли изменения, потому что я настроил резервное копирование и эти переменные среды в тот день, когда получил этот компьютер.

Я удалил переменные среды, и резервное копирование снова заработало.

Загадка наконец раскрыта.

0
ответ дан 28 June 2020 в 01:22

Попробуйте переустановить дублирование. Большинство подобных проблем можно решить с помощью простой переустановки. В противном случае используйте tar для создания резервной копии диалогового окна / with и следующего кода:

#!/bin/sh
# Backup all files under / directory
# Display message with option to cancel
dialog --title "Backup" --msgbox "Time for backup! Press <Enter> to start backup or <Esc> to cancel." 0 0
# Return status of non-zero indicates cancel
if [ "$?" != "0" ]
then
  dialog --title "Backup" --msgbox "Backup was canceled at your request." 0 0
else
  tarlocation=$(dialog --inputbox "Where would you like to save the TAR file?" 0 0)
  dialog --title "Backup" --infobox "Backup in progress..." 0 0
  cd ~
  # Backup using tar; redirect any errors to a
  # temporary file      
  tar -czf $tarlocation 0 0 >|/tmp/ERRORS$ 2>&1
  # zero status indicates backup was successful
  if [ "$?" = "0" ]
  then
    dialog --title "Backup" --msgbox "Backup completed successfully." 0 0
  else
    # Backup failed, display error log
    dialog --title "Backup" --msgbox "Backup failed -- Press <Enter> to see error log." 0 0
    dialog --title "Error Log" --textbox /tmp/ERRORS$ 0 0
  fi
fi
rm -f /tmp/ERRORS$
clear

Спасибо!

0
ответ дан 2 December 2019 в 06:51

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

Похожие вопросы: