AWSを使い始めた頃からAWS CLIのコマンドを打つのが面倒になると作成していたスクリプトがある。自分のMacでしか動かすつもりがなかったが、Macを交換するタイミングでGitHubに上げた。
今どき使わない機能もあるが1年に1,2つくらい追加してきた感じ。出来はよくないが面倒だと思った時に追加してきたので面倒がなくなった。面倒なときにしか追加されないのでほとんどのawsコマンドが網羅されていない。
同じようなコマンドが同じ名前で存在したのでネーミングセンスがないっぽい。
左手で完結したかっただけなんだ・・・
https://github.com/ryo0301/saw
特徴
- 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でリストする。
単体では使わない。他のコマンド内部でよく使う。
kinesis
list-shards
Kinesis Streamのシャードを pecoでリストする。2 < 3や 2 < 4はシャード 2 から 3 と 4 にsplitしたということ。
お察しの通り 3+4 > 5はシャード 3 と 4 を 5 としてmergeしたということ。CLOSEDなシャードは読み込み限定になり、しばらくして削除されたと思う。
うろ覚え・・・
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しか使ってない。
などなど。






