mcpField
S
spaces

spaces

github.com/digitalocean-labsクラウド・DevOps3891 回インストール4 日前に更新
リポジトリ

spaces について

DigitalOcean App Platform 向けの Spaces オブジェクトストレージスキルです。S3 互換ストレージを扱う開発者向けに、doctl でのキー管理と AWS CLI でのバケット・オブジェクト操作を分け、セットアップスクリプトと手順を提供します。

主な機能

  1. 01Spaces キーの作成とローテーション
  2. 02AWS CLI によるバケット管理
  3. 03オブジェクトのアップロードとダウンロード
  4. 04バケットの CORS とログ設定
  5. 05アクセスログの有効化
  6. 06SDK 設定リファレンス

活用シーン

  1. 01アプリ用の Spaces バケットを作成
  2. 02ストレージ認証情報をローテーション
  3. 03バケットの CORS やアクセスログを設定
  4. 04ストレージのアクセスログを確認・ダウンロード

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/digitalocean-labs/do-app-platform-skills --skill spaces

インストール後、Claude Code で/spacesを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
reference/
access-logging.md
aws-cli-operations.md
key-management.md
sdk-configuration.md
troubleshooting.md
scripts/
_lib.sh
bootstrap_app_spaces.sh
enable_bucket_logging.sh
rotate_spaces_key.sh
view_access_logs.sh
templates/
bucket-logging.json

詳細

Spaces スキル

App Platform アプリケーション向けの S3 互換オブジェクトストレージです。

ツールの使い分け(重要)

┌─────────────────────────────────────────────────────────────────┐
│  doctl: KEYS ONLY          │  aws CLI: EVERYTHING ELSE          │
│  • doctl spaces keys create│  • Bucket create/delete            │
│  • doctl spaces keys list  │  • Object upload/download          │
│  • doctl spaces keys delete│  • CORS, logging, lifecycle        │
└─────────────────────────────────────────────────────────────────┘

理由: doctl の Spaces サポートはキー管理に限られています。バケット操作には S3 互換ツールが必要です。


すぐに判断するには

┌─────────────────────────────────────────────────────────────────┐
│              What do you need to do with Spaces?                 │
└─────────────────────────────────────────────────────────────────┘
                              │
        ┌─────────────────────┼─────────────────────┐
        │                     │                     │
   Create key            Create bucket         Upload/download
   or rotate             set CORS/logging      objects
        │                     │                     │
        ▼                     ▼                     ▼
┌───────────────┐    ┌───────────────┐    ┌───────────────┐
│    doctl      │    │   aws CLI     │    │   aws CLI     │
│ spaces keys   │    │   s3api       │    │   s3 cp/sync  │
└───────────────┘    └───────────────┘    └───────────────┘

前提条件

doctl auth init          # One-time DO API auth
aws --version            # AWS CLI v2
jq --version             # JSON processor

クイックスタート

1. 環境を設定する
# Choose region matching your App Platform app (see shared/regions.yaml)
export DO_SPACES_REGION="syd1"
export DO_SPACES_ENDPOINT="https://${DO_SPACES_REGION}.digitaloceanspaces.com"
export APP_NAME="myapp"
export BUCKET="${APP_NAME}-uploads"
export DO_SPACES_KEY_NAME="${APP_NAME}-spaces-key"
2. キーを作成する(doctl)
KEY_JSON=$(doctl spaces keys create "${DO_SPACES_KEY_NAME}" --output json)
export AWS_ACCESS_KEY_ID=$(echo "$KEY_JSON" | jq -r '.[0].access_key')
export AWS_SECRET_ACCESS_KEY=$(echo "$KEY_JSON" | jq -r '.[0].secret_key')

# IMPORTANT: Secret shown only once - save it now!
3. バケットを作成する(aws CLI)
aws --endpoint-url "$DO_SPACES_ENDPOINT" s3api create-bucket --bucket "$BUCKET"
4. App Spec
services:
  - name: api
    envs:
      - key: SPACES_BUCKET
        value: myapp-uploads
      - key: SPACES_REGION
        value: ${SPACES_REGION}           # Your bucket's region
      - key: SPACES_ENDPOINT
        value: ${SPACES_ENDPOINT}         # e.g., https://syd1.digitaloceanspaces.com
      - key: SPACES_ACCESS_KEY
        scope: RUN_TIME
        type: SECRET
        value: ${SPACES_ACCESS_KEY}
      - key: SPACES_SECRET_KEY
        scope: RUN_TIME
        type: SECRET
        value: ${SPACES_SECRET_KEY}

SPACES_ACCESS_KEY と SPACES_SECRET_KEY は GitHub Secrets に保存してください。


リージョン

Spaces では App Platform とは異なるスラッグを使用します。shared/regions.yaml を参照してください。

App PlatformSpacesエンドポイント
nycnyc3https://nyc3.digitaloceanspaces.com
sfosfo3https://sfo3.digitaloceanspaces.com
amsams3https://ams3.digitaloceanspaces.com
lonlon1https://lon1.digitaloceanspaces.com
frafra1https://fra1.digitaloceanspaces.com
tortor1https://tor1.digitaloceanspaces.com
sgpsgp1https://sgp1.digitaloceanspaces.com
blrblr1https://blr1.digitaloceanspaces.com
sydsyd1https://syd1.digitaloceanspaces.com
atlatl1https://atl1.digitaloceanspaces.com

よく使う操作

doctl(キーのみ)
doctl spaces keys list
doctl spaces keys create "myapp-key" --output json
doctl spaces keys delete <key-id>
aws CLI(バケットとオブジェクト)
EP="--endpoint-url https://syd1.digitaloceanspaces.com"

# Buckets
aws $EP s3 ls
aws $EP s3api create-bucket --bucket myapp-uploads
aws $EP s3 rb s3://myapp-uploads

# Objects
aws $EP s3 cp ./file.txt s3://myapp-uploads/path/file.txt
aws $EP s3 cp s3://myapp-uploads/path/file.txt ./file.txt
aws $EP s3 ls s3://myapp-uploads/ --recursive
aws $EP s3 sync ./local-dir/ s3://myapp-uploads/prefix/

スクリプト(AI 向け)

スクリプト用途
scripts/bootstrap_app_spaces.shセットアップ全般:キー、バケット、ロギング
scripts/enable_bucket_logging.shロギングの有効化/確認(冪等)
scripts/view_access_logs.shアクセスログの一覧表示/ダウンロード
scripts/rotate_spaces_key.sh認証情報を安全にローテーション
# Set env vars then run
./scripts/bootstrap_app_spaces.sh

参考ファイル

ファイル内容
aws-cli-operations.mdaws CLI の完全なリファレンス
key-management.mdアプリごとのキー、ローテーションのワークフロー
access-logging.mdバケットのロギング設定
sdk-configuration.mdNode.js、Python、Go SDK の設定
troubleshooting.mdよくあるエラーと解決方法

URL の形式

種類形式
標準https://<bucket>.<region>.digitaloceanspaces.com/<key>
CDNhttps://<bucket>.<region>.cdn.digitaloceanspaces.com/<key>

トラブルシューティング(クイックガイド)

エラー解決方法
BucketAlreadyExists (409)一意のプレフィックスを使用します:mycompany-myapp-uploads
Access Denied (403)キーを確認し、エンドポイントがバケットのリージョンと一致することを確認します
CORS erroraws s3api put-bucket-cors で設定します
SignatureDoesNotMatchhttps:// プレフィックスを使用し、末尾にスラッシュを付けないでください

詳しくは troubleshooting.md を参照してください。


インテグレーション

  • → designer:アプリの設計時に Spaces の環境変数を含めます
  • → deployment:認証情報は GitHub Secrets に保存されます
  • → devcontainers:MinIO により Spaces と同等のローカル環境を利用できます

コメント