English | 日本語
XeFM は AWS S3 とネイティブに連携しており、ターミナルの画面から直接 S3 バケット内のファイルをブラウズ、移動、管理できます。S3 のパスはローカルのディレクトリと同じように扱われるので、クラウドストレージを違和感なく扱えます。
S3 対応は組み込みです。boto3 は XeFM に同梱されているので、設定が必要なのは認証情報だけです。
次のいずれかの方法で AWS の認証情報を設定してください。
aws configure
これで、アクセスキーを記録した ~/.aws/credentials が作成されます。
export AWS_ACCESS_KEY_ID="your-access-key"
export AWS_SECRET_ACCESS_KEY="your-secret-key"
export AWS_DEFAULT_REGION="us-east-1"
AWS のインフラ上で実行している場合は、IAM ロールを使います(設定は不要です)。
AWS の認証情報をテストします。
aws s3 ls
これが動けば、XeFM も S3 にアクセスできます。
XeFM を起動して S3 バケットに移動します。
xefm s3://my-bucket-name/
または XeFM の中から S3 に移動します。
jump_to_path)を開きますs3://my-bucket-name/ と入力しますS3 のパスは次の形式です。
s3://bucket-name/prefix/path/to/file.txt
例:
s3://my-bucket/ - バケットのルートs3://my-bucket/documents/ - documents プレフィックスs3://my-bucket/photos/2024/ - 入れ子になったプレフィックスs3://my-bucket/file.txt - 特定のファイルS3 バケットはローカルのディレクトリと同じように移動できます。
S3 はプレフィックスを使ってディレクトリを模倣します。
s3://my-bucket/
├── documents/ (prefix, acts like directory)
│ ├── report.pdf
│ └── notes.txt
├── photos/ (prefix, acts like directory)
│ └── vacation.jpg
└── readme.txt (object)
XeFM はプレフィックスをディレクトリとして扱うので、自然に移動できます。
利用できるすべてのバケットを見るには、次のようにします。
s3://(ルート)に移動しますXeFM は、アクティブなペインで選択したファイルを、反対側のペインの現在のディレクトリへ直接コピーします。クリップボードに入れて貼り付けるといった別の手順はありません。
copy_files)を使うと、反対側(ローカル)のペインにコピーされますs3://my-bucket/uploads/)を開きますcopy_files)を使うと、S3 のペインにコピーされますキーはキーマッププリセットによって異なります。キーマッププリセットを参照してください。
両方のペインを S3 のパスにして、上と同じようにします。片方のペインで選択し、copy_files で反対側にコピーします。
移動はコピーと同じように動作し、選択項目を反対側のペインのディレクトリに送ります。
move_files を実行します注意: S3 とローカルストレージの間の移動は、コピーと削除によって行われます。
S3 のオブジェクトを削除します。
delete_files、Delete キーでも実行できます)を使います。S3 にはゴミ箱がないので、完全に削除されます警告: バケットでバージョニングが有効になっていない限り、削除した S3 のオブジェクトは復元できません。
S3 のファイルの内容を表示します。
view_file)を使います注意: 大きなファイルはダウンロードに時間がかかることがあります。
XeFM はパフォーマンスを高めるために S3 API の応答をキャッシュします。
キャッシュは ~/.xefm/config.py で設定します。
# S3 cache TTL in seconds (how long directory listings are cached)
S3_CACHE_TTL = 60
XeFM を通じて行った変更(アップロード、新しいディレクトリ、削除、名前変更)は、影響を受ける一覧をすぐに無効にするので、次に描画したときに反映されます。待つ必要はありません。
XeFM の外で行われた変更(別のクライアントやプロセスによるバケットへの書き込み)は、S3_CACHE_TTL の期限が切れたときに反映されます。既定では最大 60 秒です。
edit_file)はローカルのコピーを編集し、保存のたびにアップロードします(リモート編集を参照)。保存のたびにオブジェクト全体が書き直されます必要な S3 の権限:
s3:ListBucket - バケットの内容の一覧表示s3:GetObject - ファイルのダウンロードs3:PutObject - ファイルのアップロードs3:DeleteObject - ファイルの削除s3:GetObjectMetadata - ファイルの詳細の表示問題: S3 のパスにアクセスすると XeFM がエラーを表示します。
解決策:
pip list | grep boto3aws s3 ls問題: S3 の操作がとても遅いです。
解決策:
問題: バケットにアクセスすると “Access Denied” エラーが出ます。
解決策:
aws sts get-caller-identity問題: バケットの一覧にファイルが表示されません。
解決策:
S3_CACHE_TTL の経過後にも自動的に無効になります)aws s3 ls s3://bucket-name/s3:ListBucket の権限があることを確かめます問題: S3 からファイルをダウンロードできません。
解決策:
s3:GetObject の権限があることを確かめますXeFM はどの AWS リージョンのバケットにも対応しています。
s3://us-east-bucket/file.txt
s3://eu-west-bucket/file.txt
注意: リージョンをまたぐ転送は遅くなることがあり、データ転送料金がかかります。
大きなファイルについては次のとおりです。
XeFM はバケットポリシーに従います。
XeFM はすべての S3 ストレージクラスで動作します。
注意: Glacier のオブジェクトは、アクセスする前に復元しておく必要があります。
~/.xefm/config.py で次のように設定します。
# Enable S3 support
S3_ENABLED = True
# S3 cache TTL in seconds
S3_CACHE_TTL = 60
# Multipart upload threshold (bytes)
S3_MULTIPART_THRESHOLD = 5 * 1024 * 1024 # 5MB
# Multipart chunk size (bytes)
S3_MULTIPART_CHUNKSIZE = 5 * 1024 * 1024 # 5MB
# Start XeFM
xefm
# Open the local directory in one pane and s3://my-backup-bucket/ in the other
# Select files in the local pane, then run copy_files to copy them to the S3 pane
# Start XeFM with S3 path
xefm s3://my-bucket/downloads/
# Open the S3 directory in one pane and the local destination in the other
# Select files, then run copy_files to copy them to the local pane
# Navigate to s3://my-bucket/
# Select files to move
# Run move_files
# Navigate to s3://my-bucket/organized/
# Confirm move
XeFM の S3 対応は AWS S3 と違和感なく連携し、ターミナルから直接クラウドストレージを管理できるようにします。賢いキャッシュ、仮想ディレクトリの移動、すべてのファイル操作への対応により、XeFM では S3 をローカルのファイルと同じくらい自然に扱えます。
最適なパフォーマンスを得るには、AWS の認証情報を適切に設定し、キャッシュをうまく使い、S3 のオブジェクトをわかりやすいプレフィックスの構造で整理してください。