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

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

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出来た。

ただの今日のメモ

Ganache

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

Truffle

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

truffle init

コンパイル

truffle compile

デプロイ

truffle migrate

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

ターミナルでセッションマネージャーを使ってインスタンスに接続する

セッションマネージャー、sshの鍵など考えなくていいので楽ですね。
ターミナルから使うことで使い勝手も良くなるのでかなり好み。

aws ssm start-session --target <インスタンスID>

これで普段使っているiTerm2などから接続出来ます。
プロファイル指定も出来るので複数アカウント使っていても問題ないですね。

aws ssm start-session --target <インスタンスID> --profile <プロファイル名>