Настройка переменных среды в скрипте Bash для использования с AWS CLI - PullRequest
1 голос
/ 27 марта 2019

Я пытаюсь установить переменные среды, необходимые для отправки запросов к AWS через интерфейс командной строки AWS в терминале Ubuntu 18.04, запустив скрипт bash, вместо того, чтобы вручную устанавливать переменные среды с помощью экспорта в оболочке.

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

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

#!/bin/bash
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
file="/path/to/accessKeys.csv"
cnt=0
 export AWS_DEFAULT_REGION=us-east-1
 export AWS_DEFAULT_OUTPUT=text
while IFS=, read var1 var2  
do 

      if [ $cnt = 1 ]
      then 
        echo $cnt
        export AWS_ACCESS_KEY_ID=$var1
        export AWS_SECRET_ACCESS_KEY=$var2
      fi

      cnt=$(($cnt + 1))

done < $file

, когда я запускаю AWS configure list, я получаюследующий вывод

:~$ aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************C4JA              env    
              env    **********6YS
    region                us-east-1              env    AWS_DEFAULT_REGION

Когда я запускаю env для просмотра переменных среды, AWS_SECRET_ACCESS_KEY кажется правильным, хотя вывод, который я ожидаю из списка конфигурации AWS (вывод, который я получаю, когда я вручную устанавливаю переменную с помощью экспорта в оболочке)

~$ aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************C4JA              env    
secret_key     ****************j6YS              env    
    region                us-east-1              env    AWS_DEFAULT_REGION

Вывод из AWS configure list | tr -d '\r'

:~$ aws configure list | tr -d '\r'
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************C4JA              env    
secret_key     ****************6YS              env    
    region                us-east-1              env    AWS_DEFAULT_REGION

, но это приводит к ошибке SignatureDoesNotMatch.

Буду признателен за любую помощь или указатели по этому вопросу.

1 Ответ

0 голосов
/ 27 марта 2019

Ваш file="/path/to/accessKeys.csv" в формате Windows (с \r).
Секретный ключ был установлен на *****j6YS\r.

Вы можете заменить последнюю строку done < $file на

done < <(tr -d '\r' < "${file}" )

или получить только вторую строку с

done < <(sed -n '2s/\r*//p' "${file}" )

Вам не нужен цикл

IFS=, read -d'' -r AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY < <(sed -n '2s/\r*//p' "${file}" )
...