S3にあるテキストファイルを編集したいとき、都度ダウンロードして編集してアップロードするのは手間だし、ローカルにコピーがあるとローカルとS3上とでどっちが最新だったかわからなくなるときがあるし、S3を無理やりマウントする方法もありそうだけどそこまでしたくない場合です。
以下のワンライナーでできます。これでviが立ち上がります。
$ aws s3 cp s3://S3_BUCKET/S3_KEY - | vipe | aws s3 cp - S3_BUCKET/S3_KEY
vipeというコマンドを使っています。S3とのファイルやりとりはawscliを使っています。
S3のパスを2回書くのがダサい場合は、次のようにもできます。
$ S3_PATH=s3://S3_BUCKET/S3_KEY bash -c "aws s3 cp \$S3_PATH - | vipe | aws s3 cp - \$S3_PATH"
vipeコマンドはパイプの中にエディタを入れて、パイプを流れるデータをその場でエディタで編集できるものです。標準入力からデータをすべて読み込んだらそのデータを編集するエディタを起動し、エディタが終了したら編集結果を標準出力に流します。エディタはvimなどの環境変数 EDITOR
で定義されたものが使用されるようです。
以下のように使用すると、command1が標準出力を出し切ったらエディタが立ち上がり、command1の出力内容を編集できる画面になり、エディタを終了すると編集結果がcommand2の標準入力として取り込まれます。
$ command1 | vipe | command2
vipeコマンドはmoreutils
というパッケージでインストールできます。
$ sudo apt install moreutils
CentOSでもたぶんmoreutils
という名前でインストールできるんじゃないかと思います。
既存のファイルを編集するつもりでS3のパスを間違えた場合に、間違えたパスに新規ファイルを生成してしまうことに注意です。