SQUIDにS3 APIを利用してファイル転送する方法として、「S3 Data Service」の環境を用意しています。アプリケーションなどから、S3 APIを呼び出しSQUIDとデータ通信することが可能です。S3 Data Service を経由して保存したファイルは、SQUIDの/sqfs/s3/(UUID)/(バケット名)/(オブジェクト名)に保存され、フロントエンド環境や計算環境から利用することが可能です。
ファイル転送を行う際の認証には、ユーザIDの代わりにアクセスキー/シークレットキーを使用しますので、共同研究者にキーを配布することで、スムーズなファイル共有が可能です。
対応しているS3APIについては、こちらをご参照ください。
利用方法
SQUIDでの事前準備
S3APIを利用するためには、事前にSQUIDのフロントエンドサーバでアクセスキーを発行する必要があります。アクセスキーの操作はフロントエンド上でs3dskeyコマンドにて行います。
アクセスキーの発行
-
アクセスキーの発行は、以下のコマンドを実行します。
$ s3dskey create --group=(グループ名)
グループ名が不明な場合は、groupsコマンドを実行することで確認可能です。
% groups ocean G12345 (一般利用者の場合、oceanの後にグループ名が表示されます) % groups hpci hp12345 (HPCI利用者やJHPCN利用者の場合、hpciの後にグループ名が表示されます) % groups |
実行に成功すると、次のような出力が返り、アクセスキーが発行されます。accesskey、secretkeyはファイル転送に必要となります。
1 2 3 4 5 6 7 8 9 |
+-----------+------------------------------------------+ | accesskey | AKIA7X1KXXXYYYZZZ000 | | enabled | True | | fspaths | None | | fsuid | 60101:10 | | secretkey | **************************************** | | tag | (連番):(ユーザ名):(グループ名) | | uuid | ea60f00a60hufaweofapo12813nfawe9506e1216 | +-----------+------------------------------------------+ |
accesskey | S3 APIアクセス時に提示するキー |
---|---|
secretkey | アクセスキーに紐づくパスワード情報 |
tag | アクセスキーを所有するユーザ名、グループ名を含むタグ情報 |
uuid | キーの一意識別子。ファイルシステムとしてアクセスする際に使用 |
アクセスキーの操作
-
アクセスキーの操作は、s3dskey コマンドにサブコマンドを指定してください。操作がわからない場合は、コマンドヘルプをご参照ください。
サブコマンド、オプションの一覧は以下の通りです。
s3dskey list | 作成済みアクセスキーの一覧表示 |
---|---|
s3dskey create | アクセスキーの新規作成 |
s3dskey disable | アクセスキーの無効化 |
s3dskey enable | アクセスキーの有効化 |
s3dskey reset | シークレットキーの初期化 |
s3dskey --help | コマンドヘルプの表示 |
バケットの作成
-
S3 API を通して、オブジェクト(ファイル)をアップロード/ダウンロードするためには、バケットと呼ばれるオブジェクトの管理単位を作成する必要があります。
$ s3dsbucket create --key=(アクセスキー) --bucket=(バケット名)
--key : 事前発行したアクセスキーの指定
--bucket : 作成するバケット名の指定
※ バケット名は、下記の命名規則に従って指定してください。
・ 4 文字以上、255 文字未満であること
・ 英大文字(A-Z)、英小文字(a-z)、数字(0-9)、ピリオド(.)、ハイフン(-)、アンダースコア(_)のみ指定可能
・ バケット名はユニークであり、自身や他ユーザによって作成済みのバケット名と重複できない
※ バケット作成は、S3 API の PUT BUCKET メソッドでも可能です。ただし、フロントエンドでファイルを直接操作した内容が S3 API に同期できないため、s3dsbucket コマンドでの作成を推奨します。
バケットの操作
-
バケットの操作は、s3dsbucket コマンドのサブコマンドで行います。サブコマンドの一覧は以下の通りです。
s3dsbucket list | 作成済みバケットの一覧表示 |
---|---|
s3dsbucket create | バケットの新規作成 |
s3dsbucket sync | ファイルシステムのファイルと S3 API のオブジェクトを同期する |
s3dsbucket delete | バケットの削除 ※バケット内にオブジェクトが無い場合のみ可能 |
s3dsbucket --help | コマンドヘルプの表示 |
SQUIDのファイルシステムから、バケットにファイルを置いた場合は、s3dsbucket syncを使用してください。
例
1. SQUIDのファイルシステム上にあるtest.fileをバケットに相当するディレクトリに移動
mv test.file /sqfs/s3/(UUID)/(バケット名)/
2. S3クライアントソフトでtest.fileを確認
aws --endpoint-url https://squidgw.hpc.cmc.osaka-u.ac.jp/ s3 ls s3://(バケット名)
→test.fileを確認できません。
3. SQUIDのファイルシステムにてs3dsbucket syncを実行
s3dsbucket sync -k (アクセスキー) -b (バケット名)
4. S3クライアントソフトでtest.fileを確認
aws --endpoint-url https://squidgw.hpc.cmc.osaka-u.ac.jp/ s3 ls s3://(バケット名)
→test.fileを確認できます。
転送元での操作
-
ファイルの転送元となるPCやサーバから、S3API対応のアプリケーションやコマンドを使って、ファイルを転送します。以下での動作を確認しております。
AWS CLI
s3curl
S3 Browser
本項では、s3curlを使ったファイル転送を解説します。AWS CLIでの操作はこちらをご参照ください。
対応しているS3APIについては、こちらをご参照ください。
s3curl:S3でのファイル転送
-
1. Githubからs3curlを取得します。
git clone https://github.com/rtdp/s3curl.git
2. s3curlの設定ファイルを作成します。
vi ~/.s3curl
.s3curlファイルには以下を記述してください。 usernameは任意のもので構いません。
1 2 3 4 5 6 7 8 |
%awsSecretAccessKeys = ( username => { id => 's3dskeyコマンドで発行したAccess Key', key => 's3dskeyコマンドで発行したSecret Key', }, ); push(@endpoints, 'squidgw.hpc.cmc.osaka-u.ac.jp') |
3. s3curlでSQUID上にバケットを作成します。
以下では「username-test-bucket」という名称のバケットを作成しています。バケット名は、全ユーザで一意の名前を取得する必要があるため、簡単なバケット名は作成に失敗するケースがあります。
LANG=C
s3curl.pl --id username --createBucket -- -s https://squidgw.hpc.cmc.osaka-u.ac.jp/username-test-bucket
4. s3curlでSQUID上のバケットにファイル(オブジェクト)をアップロードします。
以下では「username-test-bucket」に対して、ファイル「test」をアップロードしています。
s3curl.pl --id username --put test -- -s -v https://squidgw.hpc.cmc.osaka-u.ac.jp/username-test-bucket/test
5. アップロードしたファイル(オブジェクト)は、SQUIDの以下のパスに置かれます。
/sqfs/s3/[s3dskeyで発行したuuid]/[バケット名]/