aws cli и awcli драйвер в python: как установить конечную точку? - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь использовать Tensorflow с бэкэндом S3, используя локальный сервер S3 (работает minio).Кажется, он использует драйвер awscli для связи по s3, поэтому я более подробно рассмотрел интерфейс командной строки aws.Прямо сейчас я мог бы выполнить необходимую настройку (в cacerts и .aws / config и .aws / credentials) для запуска aws таким образом

aws --endpoint-url https://my-minio-server:9000 s3 ls 

Я бы хотел, чтобы aws спросил этот сервер по умолчанию, чтобыЯ мог бы просто сделать

aws s3 ls

без дальнейшей возможности.Как мне это настроить?

1 Ответ

0 голосов
/ 09 апреля 2019

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

Вот взломщик bash, который работает, если .bashrc (или .bash_profile) получен, что обычно имеет место.Если это не имеет смысла, быстрый поиск чего-то вроде bash_profile and bashrc shell initialization должен дать вам более подробную информацию, которую я могу вам дать.

В любом случае, я уверен, что есть много способов улучшить это.но идея здесь заключается в том, чтобы просто вызвать похожую функцию с именем, отличным от обычной команды aws CLI.Новая функция добавляет URL-адрес конечной точки, если вы вызываете s3 команды.

# ~/.bashrc
# can be called using same args as AWS CLI
awsep () {
    # show help message if no params are passed
    if [ "$1" == "s3" ]; then
        aws --endpoint-url="<your url>" "${@:-help}"
    else
        aws "${@:-help}"
    fi
}

, и теперь вы можете вызывать ее после того, как убедитесь, что поставили файл, к которому добавили функцию;например,

$ . ~/.bashrc && awsep s3 ls

И если вам не нравится или вы не можете использовать какую-то случайно созданную вами новую функцию, вы всегда можете просто использовать подобный хак, что кажется еще более гетто.Цель состоит в том, чтобы обернуть обычную команду aws CLI.Способ сделать это будет почти идентичным первой функции, которую вы прочитали выше.Единственное отличие состоит в том, что вы называете свою функцию aws вместо имени, которое вы придумали, и ссылаетесь на real aws CLI изнутри вашей функции.

# ~/.bashrc
# can be called using same args as AWS CLI
aws () {
    # show help message if no params are passed
    if [ "$1" == "s3" ]; then
        /path/to/your/real/aws-cli --endpoint-url="<your url>" "${@:-help}"
    else
        /path/to/your/real/aws-cli "${@:-help}"
    fi
}

Myaws-cli, случается, что-то вроде /Users/me/.pyenv/shims/aws, потому что я установил AWS CLI с pip, и я использую pyenv для управления моими питонами.Ваш может быть в другом месте, но вы всегда можете найти его, запустив что-то вроде which aws, прежде чем создавать эту функцию в вашем .bashrc или .bash_profile

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

Надеюсь, это поможет.

...