Как запустить AWS ecs-cli на Raspbian OS - Raspberry Pi 3 B + - PullRequest
0 голосов
/ 29 апреля 2018

Я использую Raspbian OS на Raspberry Pi 3 B + и пытаюсь использовать его вместе с AWS ecs-cli для управления моими контейнерами ECS путем их масштабирования. Я планирую использовать Lambda в будущем, но на данный момент я стараюсь поддерживать низкие показатели в CloudWatch, чтобы оставаться на бесплатном уровне и не получать плату (отдельная тема).

Я пытался установить ecs-cli в соответствии с инструкциями AWS для Linux здесь

$ sudo curl -o /usr/local/bin/ecs-cli https://s3.amazonaws.com/amazon-ecs-cli/ecs-cli-linux-amd64-latest
$ sudo chmod +x /usr/local/bin/ecs-cli
$ ecs-cli

Очевидно, что бинарный файл предназначен для ОС x86-64. У меня ошибка:

-bash: / usr / local / bin / ecs-cli: невозможно выполнить двоичный файл: ошибка формата Exec

Дальнейшая проверка файла показывает, что ecs-cli не скомпилирован в архитектуре для raspbian:

$ file ecs-cli
ecs-cli: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped
$ dpkg --print-architecture
armhf

Я попытался найти в Google компиляцию ecs-cli, к сожалению, без удачи. Есть идеи?

Я нашел исходный код ecs-cli на GitHub , поэтому я попытался его клонировать и скомпилировать.

$ pwd
/home/pi
$ git clone https://github.com/aws/amazon-ecs-cli.git
Cloning into 'amazon-ecs-cli'...
..., done.
$ cd amazon-ecs-cli
$ make
./scripts/build_binary.sh ./bin/local
./scripts/build_binary.sh: line 28: go: command not found
./scripts/build_binary.sh: line 32: go: command not found
Makefile:30: recipe for target 'bin/local/ecs-cli' failed
make: *** [bin/local/ecs-cli] Error 127

Ошибка указывает на то, что мне не хватает установки Golang на моей Raspbian OS.

Установите Golang 1.9 (или выше от здесь ) и Godep на Raspbian OS:

$ cd ~
$ wget https://storage.googleapis.com/golang/go1.9.linux-armv6l.tar.gz
$ sudo tar -C /usr/local -xzf go1.9.linux-armv6l.tar.gz
$ export PATH=$PATH:/usr/local/go/bin
$ go version
go version go1.9 linux/arm
$ go get -u github.com/tools/godep
$ export GOPATH=~/go
$ export PATH=$GOPATH/bin:$PATH
$ godep version
godep v80 (linux/arm/go1.9)
#Add paths into profile file;
$ echo "export GOPATH=~/go" >> $HOME/.profile
$ echo "export PATH=/usr/local/go/bin:\$GOPATH/bin:\$PATH" >> $HOME/.profile

Компиляция ecs-cli

$ cd ~/amazon-ecs-cli
$ make
./scripts/build_binary.sh ./bin/local
ecs-cli/main.go:29:2: cannot find package "github.com/cihub/seelog" in any of:
    /usr/local/go/src/github.com/cihub/seelog (from $GOROOT)
    /home/pi/go/src/github.com/cihub/seelog (from $GOPATH)
...

Похоже, что GO ожидает, что все будет клонировано в /usr/local/go/src/github.com (Обратите внимание, что команда make может быть интенсивно загружать процессор, я рекомендую останавливать любые другие ресурсоемкие процессы, чтобы избежать зависания Raspberry Pi)

$ mkdir -p /usr/local/go/src/github.com/aws/
$ cd /usr/local/go/src/github.com/aws/
$ git clone https://github.com/aws/amazon-ecs-cli.git
..., done
$ cd /usr/local/go/src/github.com/aws/amazon-ecs-cli
$ make
./scripts/build_binary.sh ./bin/local
Built ecs-cli

Скопируйте в целевое местоположение и запустите его!

$ sudo cp /usr/local/go/src/github.com/aws/amazon-ecs-cli/bin/local/ecs-cli /usr/local/bin/
$ sudo chmod +x /usr/local/bin/ecs-cli
$ ecs-cli --version
ecs-cli version 1.5.0 (*UNKNOWN)

Теперь я могу запустить ecs-cli на Raspbian OS. Надеюсь, это поможет всем, кто будет искать похожие ошибки. Но есть ли более простой способ?

...