Зависает загрузка конвейера Дженкинса S3Upload

#amazon-web-services #jenkins #amazon-s3 #upload #jenkins-pipeline

#amazon-веб-сервисы #дженкинс #amazon-s3 #загрузка #дженкинс-конвейер

Вопрос:

У меня есть конвейер, который зависает при попытке загрузить файл в s3:

 def get_temp_credentials() {
        credentials_json = sh(returnStdout: true, script: "curl 169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI -ss | python -mjson.tool").trim()
        def c = readJSON text: credentials_json
        return c
    }
    
    def AWS_ACCESS_KEY_ID
    def AWS_SECRET_ACCESS_KEY
    def AWS_SECRET_ACCESS_TOKEN
    
    pipeline {
        agent none
        stages {
            stage('GetMasterCredentials') {
                agent { label 'master' }
                steps {
                    script {
                        AWS_ACCESS_KEY_ID=get_temp_credentials()['AccessKeyId']
                        AWS_SECRET_ACCESS_KEY=get_temp_credentials()['SecretAccessKey']
                        AWS_SECRET_ACCESS_TOKEN=get_temp_credentials()['Token']
                        echo "Master AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}"
                    }
                }
            }
            stage('BUILD') {
                agent { label 'macOS' }
                steps {
                    echo "Mac AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}"
                    sh 'mkdir -p js'
                    sh 'echo "not a artifact file" > js/build.js'
                    sh 'echo "artifact file" > js/build.min.js'
    
                    sh 'mkdir -p css'
                    sh 'echo "not a artifact file" > css/build.css'
                    sh 'echo "artifact file" > css/build.min.css'
                    withEnv([
                        "AWS_ACCESS_KEY_ID=" "${AWS_ACCESS_KEY_ID}",
                        "AWS_SECRET_ACCESS_KEY=" "${AWS_SECRET_ACCESS_KEY}",
                        "AWS_SECRET_ACCESS_TOKEN=" "${AWS_SECRET_ACCESS_TOKEN}",
                        "AWS_DEFAULT_REGION=us-east-2"]) {
                        s3Upload bucket:"build-artifacts", path:'Test/js/build.min.js', file: 'js/build.min.js'
                    }
                }
            }
    
        }
    }
 

В этом примере можно перемещать учетные данные с узла AWS EC2 на узел on premisse.

Единственное, что он зависает при загрузке, нет сообщения об ошибке обратной связи, просто время ожидания задания.

Комментарии:

1.Где выполняется эта работа? указанный вами IP 169.254.170.2 -адрес — это конечная точка метаданных IAM, которая действительна для экземпляра EC2 (некоторых других ресурсов AWS), и если вы используете его в AWS / EC2, почему бы не использовать роли IAM для аутентификации? Кроме того, ваша работа, похоже, заключается в загрузке откуда угодно на S3

2. @SathyajithBhat, может быть, я выразился недостаточно ясно, извини. У меня есть главный узел, который находится в AWS, и подчиненный узел, который находится на локальном сервере в центре обработки данных. Я хочу загрузить на S3 с локального сервера, и, согласно документации, s3upload использует учетные данные главного узла, если мы не используем опцию «useNode». Дело в том, что у меня нет никаких отзывов, и задания просто зависают при загрузке файла.

3. Это определенно проблема аутентификации / сети / брандмауэра, и вам необходимо выполнить тестирование изолированного доступа следующим образом. Можете ли вы вручную войти в систему on-prem slave ? Если да, пожалуйста, войдите на подчиненный хост, запустите s3 upload команду и поделитесь выводом. Кроме того macos , echo "Mac AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}" правильно ли выведено значение в выводе консоли jenkins?

4. Что вы имеете в виду под сетевой ошибкой? Учетные данные, используемые для выполнения загрузки, получены от ведущего устройства, согласно документации плагина, в подчиненном устройстве нет $ {AWS_ACCESS_KEY_ID}, по крайней мере, явно. Что сейчас исследуется, так это то, должен ли подчиненный иметь доступ к ведущему устройству (инициировать какое-либо соединение) для выполнения загрузки. Если это так, то это может быть проблемой, поскольку мастер не разрешает инициированный сетью трафик из центра обработки данных