Загрузка на S3 через Jenkins не удалась - PullRequest
0 голосов
/ 16 мая 2019

При выполнении сценария, который должен загрузить резервную копию базы данных в корзину 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

Заранее

Ответы [ 2 ]

0 голосов
/ 18 мая 2019

Извините за трату времени, но в скрипте я экспортировал AWS_ACCESS_KEY вместо AWS_ACCESS_KEY_ID, что приводит к тому, что ключ не найден.

10 часов отладки за эту добрую ошибку .... ме

Спасибо в любом случае

0 голосов
/ 16 мая 2019

Если это работает для вас локально, но не из jenkins run, я могу поспорить, что вы успешно загрузили, используя своего пользователя root, который, вероятно, хорошо настроен aws_cli.попробуйте запустить скрипт как пользователь jenkins для отладки

...