Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2914

5年たったらAWS CLIの薄いラッパーコマンドが出来ていた

$
0
0

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でリストして、選択したバージョンをダウンロードする。

s3getobjectbyversionid.mov.gif

ec2

list-instances

EC2インスタンスのリストを pecoでリストする。
単体では使わない。他のコマンド内部でよく使う。

ec2listinstances.mov.gif

kinesis

list-shards

Kinesis Streamのシャードを pecoでリストする。
2 < 32 < 4はシャード 2 から 3 と 4 にsplitしたということ。
お察しの通り 3+4 > 5はシャード 3 と 4 を 5 としてmergeしたということ。
CLOSEDなシャードは読み込み限定になり、しばらくして削除されたと思う。
うろ覚え・・・

kinesislistshards.png

split-shard

pecoで選択したシャードをsplitする。

kinesissplitshards.mov.gif

merge-shards

pecoで選択した2つのシャードをmergeする。
隣接したシャードしかmergeできないのはKinesisの仕様通り。
Ctrl+spaceで複数選択できる(pecoの機能)。

kinesismergeshards.mov.gif

ssm

start-ssh-session

一時キーペアを作成しEC2 Instance Connectで公開鍵を転送した後、Session Manager経由でEC2インスタンスにSSH接続する。キーペアは切断時に破棄される。
--forwardパラメータでポートフォワーディングが出来る。
--forward remoteでリモートポートフォワーディング。
--forward localでローカルポートフォワーディング。
今のところ接続先を経由してRDSに接続したりは出来ない。localhost固定になっているところを動的にすればすぐできるかも。

ssmstartsshsession.mov.gif

lambda

exec-local

AWS SAMがなかった頃にローカルでLambdaの開発がしたくて作ったコマンド。
Lambdaの設定をAWSから取得してくるので、コードなしでもファンクションが存在しないと動作しない。設定が取得できたら割り当てられたIAMロールをAssumeRoleして実際のファンクションの権限でコードを実行する。

lambdaexeclocal.png

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しか使ってない。

などなど。


Viewing all articles
Browse latest Browse all 2914

Trending Articles