Managed AddonsObject Storage (S3)

Managed Object Storage

Lizard (lizard.build) の Managed Object Storage は、アップロード、アセット、バックアップ向けの S3互換ストレージです。lizard add s3 を実行すると、default という名前のプライベートバケット と、S3_ENDPOINT から S3_REGION までの 5 つの変数が作成されます。これらの変数は、パス形式のアドレス指定を使う任意の AWS SDK で利用できます。各 Managed Object Storage アドオンは最大 16 GiB まで保存でき、保存したバイト数に対して料金を支払います。認証なしでファイルを配信するには、ダッシュボードの S3 browser からバケットを公開状態にしてください。概要と料金については、Managed Object Storage のページ を参照してください。

プロビジョニング

lizard add s3

最初の S3 アドオンの名前は s3 なので、${{s3.S3_ENDPOINT}} などもすぐに使えます。

環境変数

変数説明
S3_ENDPOINTS3互換エンドポイント URL
S3_DEFAULT_BUCKET自動作成されるバケット名 (default)
S3_ACCESS_KEY_IDアクセスキー
S3_SECRET_ACCESS_KEYシークレットキー
S3_REGIONリージョン

サービスを接続

lizard secrets set \
  S3_ENDPOINT='${{s3.S3_ENDPOINT}}' \
  S3_DEFAULT_BUCKET='${{s3.S3_DEFAULT_BUCKET}}' \
  S3_ACCESS_KEY_ID='${{s3.S3_ACCESS_KEY_ID}}' \
  S3_SECRET_ACCESS_KEY='${{s3.S3_SECRET_ACCESS_KEY}}' \
  S3_REGION='${{s3.S3_REGION}}' \
  --service api
lizard redeploy --service api

AWS SDKを使用する

エンドポイントは S3互換です。path-style アドレッシングを設定してください:

import { S3Client } from "@aws-sdk/client-s3";
 
const s3 = new S3Client({
  endpoint: process.env.S3_ENDPOINT,
  region: process.env.S3_REGION,
  forcePathStyle: true, // required
  credentials: {
    accessKeyId: process.env.S3_ACCESS_KEY_ID!,
    secretAccessKey: process.env.S3_SECRET_ACCESS_KEY!,
  },
});

公開ファイル

バケットはデフォルトでプライベートです。公開した バケット内のオブジェクトは、認証なしで次の 2 つの方法で配信されます:

  1. Gateway URL (ダッシュボードに表示):
    https://s3-<region>.onlizard.com/<addonId>/<bucket>/<key>
    <region> は S3_REGION の値 (eu-west-1 または us-east-1) です。
  2. Platform proxy (ダッシュボードのホスト。長期間有効な immutable キャッシュヘッダー付き):
    <dashboard-host>/api/s3/<addonId>/public/<bucket>/<key>

default バケットを公開状態にすると、そのオブジェクトは次の URL で配信されます:

<dashboard-host>/api/s3/<addonId>/public/default/<key>

S3 browser には、バケットごとに 2 つのスイッチがあります。公開表示 (Public view) をオンにすると、誰でもオブジェクトを読めます。公開編集 (Public edit) をオンにすると、誰でもオブジェクトをアップロード・削除できます。誰が変更してもよいバケットだけでオンにしてください。

プライベートバケットのオブジェクトを一定期間だけ共有するには、一時リンクを発行します。リンクは期限が切れるまで認証情報なしで使えます (デフォルトは 1 時間、最長 7 日):

lizard s3 url report.pdf --expires 86400

AWS SDK で作成した presigned URL も使えます。

オブジェクトの参照

ダッシュボードで S3 browser (lizard open) を開くと、オブジェクトのアップロードと削除、フォルダーの作成、バケットの public/private の切り替えを行えます。CLI では、lizard s3 upload <file> でファイルをアップロードし、lizard s3 list でオブジェクトを一覧表示し、lizard s3 url <key> で一時リンクを発行できます。lizard s3 を参照してください。

Bucket ACL の変更 (バケットを public/private にすること) はまだ CLI ではできません:ダッシュボードから管理してください。

ストレージの上限

各 Managed Object Storage アドオンは、default バケットと作成した他のバケットを合わせて最大 16 GiB のオブジェクトを保存できます。別のアドオン (lizard add s3) には別に 16 GiB があります。料金は予約したサイズではなく、保存したバイト数に対して発生します。lizard scale --storage ではこの上限は変わりません。

関連項目

更新日