AWSコマンドでEC2インスタンス一覧を作成

--queryで欲しい情報を指定する。今回はインスタンスID、インスタンスタイプ、名前が付いていたら名前を取得。
--outputで出力したい形式を指定する。デフォルトはJSON。textかtableが人間には読みやすい。

aws ec2 describe-instances --query "Reservations[*].Instances[*].{Id:InstanceId,Type:InstanceType,Name:Tags[?Key==`Name`]|[0].Value}" --output table

AWS EC2のインスタンスからアクティブモードしか受け付けていないFTPサーバーと通信する。

今時FTPなんて使うのかって話ありますが、まだあるようです。
という訳でこの時の問題がEC2インスタンスというのは直接グローバルIPが割り当てられている訳ではないこと。
FTPの通信をtcpdumpでキャプチャしてみたところ、相手に自分のポートを伝えるPORTコマンドの時にプライベートIPを伝えている。
で、AWS側は勝手にうまくやってくれる…訳ではなく、そのまま通信が途切れてしまう。
標準のFTPコマンドではこれに対応できないようなのでlftpというクライアントを入れる。
単純にyumでインストールできる。

その後、lftpで接続

# hoge.example.jpに接続
lftp hoge.example.jp
# userコマンドでユーザー指定
user hoge
# passwordを聞かれるので入力

この後にFTPの通信の設定をする。

# パッシブモードをoff (アクティブモードに)
set ftp:passive-mode off
# ここで外に出て行くときのグローバルIPを指定
set ftp:port-ipv4 xxx.xxx.xxx.xxx

この後は普通に操作が可能なはず。

truffleでデプロイ先のネットワークを指定

truffle migrate --network <ネットワーク名>

という感じ。 例えば

truffle migrate --network hoge

ただしこのネットワークは事前にコンフィグで設定しないといけない。

rbenvでglobalが効かなかった場合(fish使用)

~/.config/fish/config.fish
に以下を追加することでちゃんと動く。

eval (rbenv init -|source)

細かくは以下のページとfishに関しての理解を深めた方が良さそう

zariganitosh.hatenablog.jp

docker-compose up -d したらno basic auth credentialsと出てイメージをpullできなくなった

AWS ECRにイメージをpushしておいて、それを使う時。
久しぶりに使おうと思って

docker-compose up -d

したらタイトルのような現象
もちろん

eval (aws ecr get-login --no-include-email --region ap-northeast-1)

は実行しているのだけど(fishなので eval)

で、結論としては
~/.docker/config.json を変更。

{
    "auths": {
        "XXXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com": {}
    },
    "credsStore": "osxkeychain"
}

こんな感じのを

{
    "auths": {},
    "credsStore": "osxkeychain"
}

に変更したら無事にpull出来た。

参考にしたページ
https://www.bountysource.com/issues/50077954-no-basic-auth-credentials-when-using-docker-compose-build

ただの今日のメモ

Ganache

ローカルで動作するEthereumプライベートブロックチェーン。 公式サイトからインストーラーがダウンロード出来る

Truffle

なんかEthereum開発で便利なフレームワーク 初期化(必要なファイルとか作ってくれる)

truffle init

コンパイル

truffle compile

デプロイ

truffle migrate

truffle-config.js にデプロイするネットワークの情報が書いてある。