При выполнении сценария, который должен загрузить резервную копию базы данных в корзину S3, происходит сбой с ошибкой «Не удается найти учетные данные»
AWS, правильно настроенный в контейнере машины:
oot@19e1ed41f9e9 /]# aws configure list
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************YJBG shared-credentials-file
secret_key ****************HJ1g shared-credentials-file
region us-east-2 config-file ~/.aws/config
Код сценария:
#/bin/bash
DATE=$(date +%H-%M-%S)
BACKUP=db-$DATE.sql
DB_HOST=$1
DB_PASSWORD=$2
DB_NAME=$3
AWS_SECRET=$4
BUCKET_NAME=$5
mysqldump -u root -h $DB_HOST -p$DB_PASSWORD $DB_NAME > /tmp/$BACKUP && \
export AWS_ACCESS_KEY=AKIA5PJHRGVMJTI6YJBG && \
export AWS_SECRET_ACCESS_KEY=$AWS_SECRET && \
echo "Uploading $BACKUP" && \
aws s3 cp /tmp/db-$DATE.sql s3://$BUCKET_NAME/$BACKUP
AWS_SECRET - это ключ, извлекаемый из «секретного текста» на Jenkins
Команда в оболочке на Jenkins:
/tmp/script.sh $MYSQL_HOST $MYSQL_PASS $DATABASE_NAME $AWS_SECRET $AWS_BUCKET_NAME
Ожидаемый результат - успешная загрузка, которая работает при запуске сценария непосредственно внутри контейнера машины:
[root@19e1ed41f9e9 tmp]# ./script.sh db-host XXX testdb XXX study2019john
Uploading db-07-28-59.sql
upload: ./db-07-28-59.sql to s3://study2019john/db-07-28-59.sql
Вывод на консоль сборки:
Running as SYSTEM
Building in workspace /var/jenkins_home/workspace/backup-to-aws
[SSH] script:
MYSQL_HOST="db-host"
MYSQL_PASS=**********
DATABASE_NAME="testdb"
AWS_BUCKET_NAME="study2019john"
AWS_SECRET=**********
/tmp/script.sh $MYSQL_HOST $MYSQL_PASS $DATABASE_NAME $AWS_SECRET $AWS_BUCKET_NAME
[SSH] executing...
upload failed: ../../tmp/db-07-00-10.sql to s3://study2019john/db-07-00-10.sql Unable to locate credentials
Uploading db-07-00-10.sql
[SSH] completed
[SSH] exit-status: 1
Build step 'Execute shell script on a remote host using ssh' marked build as failure
Finished: FAILURE
Заранее