AWSを使い始めた頃からAWS CLIのコマンドを打つのが面倒になると作成していたスクリプトがある。自分のMacでしか動かすつもりがなかったが、Macを交換するタイミングでGitHubに上げた。
今どき使わない機能もあるが1年に1,2つくらい追加してきた感じ。出来はよくないが面倒だと思った時に追加してきたので面倒がなくなった。面倒なときにしか追加されないのでほとんどのawsコマンドが網羅されていない。
同じようなコマンドが同じ名前で存在したのでネーミングセンスがないっぽい。
左手で完結したかっただけなんだ・・・
特徴
- awsコマンドと同じような使い方
- bashで書かれている
- コピペ駆動開発なので作り方を思い出す必要がない
- エラー処理が雑で
Ctrl-Cで止まらないことがある - 自分のことしか考えていないので他人のPCで動かない可能性がある
-
.docにヘルプが書けるが自作なので見ない - コンプリーターがある(bashのみ)
- aws-cli, jq, pecoに極度の依存。コマンドによってはnode.jsとssh-keygenに依存。
コマンド
この中からいくつか紹介。
ディレクトリとファイルがそのままサービスとコマンドになっている。
$ saw
Usage: saw <service> <command>
dynamodb
└── count-table
ec2
├── list-instances
└── login-instance
iam
└── assume-role
kinesis
├── list-shards
├── list-streams
├── merge-shards
└── split-shard
lambda
├── exec-local
├── invoke-function
└── update-function
s3
├── get-object-by-version-id
└── list-object-versions
ssm
├── start-session
└── start-ssh-session
waf
└── list-ip-sets
s3
get-object-by-version-id
指定したS3オブジェクトのバージョンを peco でリストして、選択したバージョンをダウンロードする。
ec2
list-instances
EC2インスタンスのリストを peco でリストする。
単体では使わない。他のコマンド内部でよく使う。
リストは60分間キャッシュされるので2回目以降は速い。
--no-cache オプションを付けると最新のリストを取得し、キャッシュを更新する。
キャッシュの場所が ~/.saw 以下なので、~/.cache/saw 以下にしたほうがいいのかも。
kinesis
list-shards
Kinesis Streamのシャードを peco でリストする。
2 < 3 や 2 < 4 はシャード 2 から 3 と 4 にsplitしたということ。
お察しの通り 3+4 > 5 はシャード 3 と 4 を 5 としてmergeしたということ。
CLOSED なシャードは読み込み限定になり、しばらくして削除されたと思う。うろ覚え・・・
最後の巨大な数字2つは、キーの下限と上限。この2つが連続していないとmergeできない。
split-shard
peco で選択したシャードをsplitする。
merge-shards
peco で選択した2つのシャードをmergeする。
隣接したシャードしかmergeできないのはKinesisの仕様通り。
Ctrl+space で複数選択できる(peco の機能)。
ssm
start-ssh-session
一時キーペアを作成しEC2 Instance Connectで公開鍵を転送した後、Session Manager経由でEC2インスタンスにSSH接続する。キーペアは切断時に破棄される。
--forward パラメータでポートフォワーディングが出来る。
--forward remote でリモートポートフォワーディング。
--forward local でローカルポートフォワーディング。
今のところ接続先を経由してRDSに接続したりは出来ない。localhost固定になっているところを動的にすればすぐできるかも。
lambda
exec-local
AWS SAMがなかった頃にローカルでLambdaの開発がしたくて作ったコマンド。
Lambdaの設定をAWSから取得してくるので、コードなしでもファンクションが存在しないと動作しない。設定が取得できたら割り当てられたIAMロールをAssumeRoleして実際のファンクションの権限でコードを実行する。
iam
assume-role
AWS CLIにAssumeRoleしてくれる機能が実装されてなかった頃に作ったコマンド。
↓こちらの記事で書いたやつだったと思う。
MacからAWSにアクセスする時はAssumeRoleすることにした
その他のコマンド
-
dynamodb count-table
セグメントごとにレコードをカウントして加算しているようだが並列処理になってない気がする。なんのために作ったのか思い出せない。 -
ec2 login-instance
インスタンスをpecoでリストして、選択したインスタンスに指定したキーペアでログインする。もう使う機会がなくなった。 -
ssm start-session
Session Manager単体でEC2インスタンスにアクセスする。最近はstart-ssh-sessionしか使ってない。
などなど。







