LoginSignup
5
6

More than 3 years have passed since last update.

S3にあるテキストファイルをサクッと編集するには

Posted at

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のパスを間違えた場合に、間違えたパスに新規ファイルを生成してしまうことに注意です。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6