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コマンドの実行例

        % groups
        ocean G12345
        (一般利用者の場合、oceanの後にグループ名が表示されます)
         
        % groups
        hpci hp12345
        (HPCI利用者やJHPCN利用者の場合、hpciの後にグループ名が表示されます)
         

        % groups
        hpci hp12345 jh67890 G34567
        (複数のグループや課題に参加している場合は、全て表示されます)
         

        実行に成功すると、次のような出力が返り、アクセスキーが発行されます。accesskey、secretkeyはファイル転送に必要となります。

        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 コマンドヘルプの表示
        s3dsbucket syncを使用するタイミング

        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は任意のもので構いません。

         
        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]/[バケット名]/