В загрузочной вики (https://github.com/boot-clj/boot/wiki/S3-Repositories), он указывает, что вы можете встроить учетные данные AWS для использования S3 в качестве репозитория Maven. Это неоптимально с точки зрения безопасности, потому что я не хочу проверять учетные данные AWS, даже если у них ограниченные разрешения.
В leiningen с s3-wagon-private вы можете указать ключ доступа и секретный ключ через переменные среды с помощью:
{:url "s3p://acme/repo/"
:username :env
:passphrase :env}
Или из определенных переменных env с помощью:
{:url "s3p://acme/repo/"
:username :env/aws_access_key_id
:passphrase :env/aws_secret_access_key}
Или с зашифрованным GPG файлом ~/.lein/credentials.clj.gpg
с:
{:url "s3p://acme/repo/"
:creds :gpg}
Задача push
при загрузке поддерживает зашифрованные учетные данные GPG для развертывания в Clojars (https://github.com/boot-clj/boot/wiki/Deploying-with-Boot) в $BOOT_HOME/credentials.clj.gpg
. Так что в целом boot поддерживает GPG вроде бы.
Когда я пробую любой из подходов к переменной среды, я получаю следующую ошибку, предполагающую, что эта форма учетных данных не поддерживается:
java.lang.IllegalArgumentException: No matching ctor found for class org.sonatype.aether.repository.Authentication
...
cemerick.pomegranate.aether/set-authentication aether.clj: 165
cemerick.pomegranate.aether/make-repository aether.clj: 185
cemerick.pomegranate.aether/resolve-dependencies*/fn aether.clj: 712
...
Подход GPG, похоже, не может получить учетные данные и приводит к ошибке 403 от S3.
Я мог бы использовать (System/getenv "AWS_ACCESS_KEY_ID")
для прямого чтения переменных env на карте репозитория, я полагаю, но я бы предпочел использовать поддерживаемый механизм, если он есть. Учетные данные, зашифрованные с помощью GPG, были бы для нас идеальным решением, если бы этого можно было достичь как с точки зрения безопасности, так и с помощью настройки нескольких вагонов S3 без манипулирования переменными среды.
Я использую последнюю версию Boot (2.4.2) на OS X El-Capitan. GPG может успешно расшифровать учетные данные в командной строке даже в тихом режиме (работает gpg --quiet --batch --decrypt ~/.boot/credentials.clj.gpg
). Помещение учетных данных непосредственно в карту репозитория работает, и тот же файл credentials.clj.gpg
работает из lein. Я новичок в Boot, поэтому, возможно, я упускаю что-то очевидное!