https://s3-blob.squarecloud.app で S3 API に対応しています。カスタム endpoint を設定できるツールであれば動作します: aws-cli、boto3、AWS SDK for JavaScript、rclone、Cyberduck、およびほとんどのバックアップツールです。
認証情報
S3 ツールはアクセスキーのペアでリクエストに署名します。ペアは S3 認証情報から取得します。blob:read のみを持つキーからは読み取り専用のペアが得られます。
API キーが変わらない限りペアも変わらないため、一度取得してシークレットマネージャーまたは環境変数に保管してください。起動のたびにこのルートを呼び出さないでください: 受け付けるのは 1 時間に 10 リクエストです。
バケット
アカウントからは 3 つの固定バケットが見えます。バケットの作成や削除はできません。public または private バケット内のキーは、ユーザー id を含まないオブジェクトのパスです。public バケット内の images/logo.png は、REST API 上のオブジェクト pub/<user_id>/images/logo.png にあたります。S3 経由で書き込んだファイルは REST API とダッシュボードに表示され、その逆も同様です。
設定
boto3 で署名付き URL を生成するには
signature_version="s3v4" が必要です。指定しないと、generate_presigned_url は古い SigV2 で署名し、ゲートウェイはそれを受け付けません。署名付き URL の有効期間は最大 7 日 (604800 秒) です。サポートされる操作
バケットポリシー、CORS、ライフサイクル、ウェブサイト、暗号化、オブジェクトロック、バージョン、ログ記録、通知、レプリケーション、ACL とタグの書き込み、
partNumber による GET、ブラウザの POST フォームによるアップロードは 501 NotImplemented を返します。ライフサイクルルールにはアカウント設定を使用してください。
キー
- キーはリテラルなパスです。キーの長さは約 1000 バイトまでです: 1024 バイトの上限にはアカウントのプレフィックスも含まれます。それより長いキーには
KeyTooLongErrorが返され、そのメッセージに使用できる正確なバイト数が示されます。セグメントを空、.、..にすることはできません。 /で終わる 0 バイトのキーはフォルダーマーカーであり、AWS コンソールがフォルダーを作成する方法と同じです。- 配信される
Content-Typeは、REST API と同様に拡張子から決定されます。実行ファイルはInvalidArgumentで拒否され、.html、.svg、.xmlはダウンロードとして配信されます。
メタデータ、キャッシュ、有効期限
x-amz-meta-*ヘッダーは Pro と Enterprise で保持されます (最大 5 キー、512 バイト。超えるとMetadataTooLarge)。その他のプランでは破棄されます。Cache-ControlとContent-Dispositionは保持されます。キャッシュしないCache-Control(no-cache、no-store、max-age=0) は、Enterprise 以外ではAccessDeniedで拒否されます。- プレフィックスごとのルールは、自動削除を含め、S3 経由で書き込まれたオブジェクトにも適用されます。ルールの
max_sizeとextensionsは、REST のアップロードにのみ適用されます。
制限
制限を超えると、ゲートウェイは
SlowDown (HTTP 503) を返し、AWS SDK は自動的にバックオフして再試行します。S3 リクエストはプランの API リクエスト制限にカウントされません。
ループで再試行する前に、キーペアを確認してください。無効な認証情報を送信しすぎた IP は数分間ブロックされます。
パートサイズ
マルチパート対応のツールは大きなファイルを自動的に分割します。各パートは 80 MB 以下にしてください。AWS CLI (8 MB) と rclone (5 MB) のデフォルトはすでにこの範囲内です。legacy バケットでは、書き込みは AccessDenied を返します。ストレージ枠は REST API と同様に適用されます。

