python os.environ ['SECRET_NAME'] не может получить значение "SECRET_VALUE" из контейнера aws codebuild ecr - PullRequest
2 голосов
/ 13 марта 2019

Как Python может получить всю ОС env?

мой скрипт на python не может получить все переменные env внутри работающего контейнера ubuntu 16 в aws codebuild

for item, value in os.environ.items():
    print('{}: {}'.format(item, value))

Это переменные env, которые получил скрипт python:

SUDO_UID: 0
USER: root
HOME: /root
SUDO_USER: root
PATH: 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
SUDO_COMMAND: /usr/bin/python3 get-env.py
SHELL: /bin/bash
USERNAME: root
TERM: xterm
LANG: C.UTF-8
HOSTNAME: 53f187197b9e
LC_ALL: C.UTF-8
MAIL: /var/mail/root
LOGNAME: root

и они являются частью переменных env, которые команда printenv получила:

MAVEN_OPTS=-Dmaven.wagon.httpconnectionManager.maxPerRoute=2
CODEBUILD_LAST_EXIT=0
CODEBUILD_START_TIME=1552450745205
CODEBUILD_AGENT_ENDPOINT=http://127.0.0.1:7831
HOSTNAME=53f187197b9e
SHLVL=1
HOME=/root
AWS_EXECUTION_ENV=AWS_ECS_EC2
FPM_MAX_CHILDREN=32
NGINX_LOG_PATH=/var/log/nginx
COMPOSER_HOME=/root/composer
VERSION=0.7.0
COMPOSER_ALLOW_SUPERUSER=1
TERM=xterm
FPM_MAX_REQUEST=1024
.....

Я пытался использовать команду export , но она не работала

Ответы [ 3 ]

1 голос
/ 19 марта 2019

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

Мы можем видеть это в примере с переменной конвейера bitbucket.

https://www.youtube.com/watch?v=RVwkT4oHDd8

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

Мне интересно, является ли это результатом выполнения команды с sudo на основе переменных среды, которые вы показываете.

если это так, пытались ли вы запустить его с sudo -E, чтобы передать среду пользователя в команду, запускаемую sudo?

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

Если у вас есть переменные в файле, скажем file.sh, вы можете попробовать экспортировать . file.sh или лучше, вы можете попробовать dotenv , хорошо работает

...