> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nami.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# S3互換性が重要な理由

> AWS S3や他のクラウドプロバイダーからの移行をゼロコード変更で実現するNami CloudのS3互換API

<Note>
  Nami CloudのS3互換APIは、AWS S3や他のクラウドプロバイダーからの移行をゼロコード変更で実現し、Web2の親しみやすさをWeb3インフラストラクチャにもたらします。
</Note>

## S3互換性が重要な理由

Web2からWeb3に移行する際の最大の障害の一つは互換性です。Nami Cloudは、**完全にS3互換のAPI**を提供することで、この障壁を取り除き、従来のクラウドプロバイダーで使用しているのと同じツールやワークフローを使って分散ストレージに接続できるようにします。

### S3互換性の利点

* **ゼロ学習曲線**: おなじみのAWS SDK、CLIコマンド、サードパーティツールを使用
* **即時移行**: エンドポイントの設定変更だけでAWS S3から移行
* **コードの書き換え不要**: 既存のアプリケーションは変更なしで動作
* **業界標準**: 最も広く採用されているオブジェクトストレージAPIを活用

## サポートされているS3オペレーション

Nami Storageは、すべての標準S3オペレーションをすぐに利用できます。

### バケットオペレーション

<CardGroup cols={2}>
  <Card title="バケットの作成" icon="plus">
    `PUT /{bucket}`
  </Card>

  <Card title="バケットの削除" icon="trash">
    `DELETE /{bucket}`
  </Card>

  <Card title="バケットの一覧" icon="list">
    `GET /`
  </Card>

  <Card title="バケットの場所" icon="location-dot">
    `GET /{bucket}?location`
  </Card>
</CardGroup>

### オブジェクトオペレーション

<CardGroup cols={2}>
  <Card title="オブジェクトのアップロード" icon="upload">
    `PUT /{bucket}/{key}`
  </Card>

  <Card title="オブジェクトの取得" icon="download">
    `GET /{bucket}/{key}`
  </Card>

  <Card title="オブジェクトの削除" icon="trash">
    `DELETE /{bucket}/{key}`
  </Card>

  <Card title="オブジェクトの一覧" icon="list">
    `GET /{bucket}`
  </Card>

  <Card title="オブジェクトのヘッダー" icon="info">
    `HEAD /{bucket}/{key}`
  </Card>

  <Card title="オブジェクトのコピー" icon="copy">
    `PUT /{bucket}/{key}` with copy headers
  </Card>
</CardGroup>

## 移行ガイド

### AWS S3からの移行

AWS S3からの移行は、エンドポイントの設定を変更するだけで簡単に行えます。

<CodeGroup>
  ```javascript AWS SDK v3 theme={null}
  import { S3Client } from "@aws-sdk/client-s3";

  const s3Client = new S3Client({
  region: "us-east-1",
  endpoint: "https://your-bucket.storage.nami.cloud",
  credentials: {
  accessKeyId: "your-access-key",
  secretAccessKey: "your-secret-key"
  },
  forcePathStyle: false
  });
  ```

  ```python Boto3 theme={null}
  import boto3

  s3_client = boto3.client(
      's3',
      endpoint_url='https://your-bucket.storage.nami.cloud',
      aws_access_key_id='your-access-key',
      aws_secret_access_key='your-secret-key',
      region_name='us-east-1'
  )
  ```

  ```bash AWS CLI theme={null}
  aws configure set aws_access_key_id your-access-key
  aws configure set aws_secret_access_key your-secret-key
  aws configure set default.region us-east-1

  # カスタムエンドポイントを使用
  aws s3 ls --endpoint-url https://your-bucket.storage.nami.cloud
  ```

  ```go Go SDK theme={null}
  import (
      "github.com/aws/aws-sdk-go/aws"
      "github.com/aws/aws-sdk-go/aws/credentials"
      "github.com/aws/aws-sdk-go/aws/session"
      "github.com/aws/aws-sdk-go/service/s3"
  )

  sess := session.Must(session.NewSession(&aws.Config{
      Region:           aws.String("us-east-1"),
      Endpoint:         aws.String("https://your-bucket.storage.nami.cloud"),
      Credentials:      credentials.NewStaticCredentials("access-key", "secret-key", ""),
      S3ForcePathStyle: aws.Bool(false),
  }))

  s3Client := s3.New(sess)
  ```
</CodeGroup>

### 移行チェックリスト

<Steps>
  <Step title="エンドポイントの更新">
    S3エンドポイントを`https://{bucket}.storage.nami.cloud`に変更
  </Step>

  <Step title="認証情報の更新">
    AWSの認証情報をNami Cloudのアクセスキーに置き換え
  </Step>

  <Step title="オペレーションのテスト">
    一覧、アップロード、ダウンロードなどの基本的なオペレーションが動作することを確認
  </Step>

  <Step title="本番環境の更新">
    エンドポイントの変更を本番環境にデプロイ
  </Step>
</Steps>

## AWS S3との主な違い

Nami Storageは完全にS3互換ですが、分散ストレージ特有のいくつかの強化があります。

### 強化された機能

| 機能        | AWS S3        | Nami Storage          |
| --------- | ------------- | --------------------- |
| **分散化**   | なし            | Walrusネットワーク全体にデータを分散 |
| **検閲耐性**  | なし            | 単一の制御ポイントなし           |
| **自動暗号化** | 手動設定          | AES-256暗号化が組み込まれている   |
| **自動更新**  | 該当なし          | 自動ストレージエポック管理         |
| **加速**    | CloudFrontが必要 | 組み込みのRailgun加速（ベータ版）  |

### パフォーマンス最適化

* **100ms未満のレイテンシ**: Railgun加速（ベータ版）は従来のCDNよりも高速なアクセスを提供
* **グローバルエッジネットワーク**: 世界中のエッジロケーションで自動的にキャッシュ
* **スマートルーティング**: 最適化されたデータパスにより転送時間を短縮
* **圧縮**: サポートされているファイルタイプの自動圧縮

## 認証とセキュリティ

### アクセス制御

Nami Storageは標準のS3認証方法をサポートしています。

* **アクセスキーとシークレットキー**: 標準のAWSスタイルの認証情報
* **署名バージョン4**: 業界標準のリクエスト署名
* **バケットポリシー**: 詳細なアクセス制御（近日公開）
* **ACL**: オブジェクトレベルのアクセス制御リスト（近日公開）

### 強化されたセキュリティ

標準のS3セキュリティを超えて、Nami Storageは以下を提供します。

* **エンドツーエンド暗号化**: デフォルトでAES-256暗号化
* **分散型検証**: データ整合性の暗号証明
* **ベンダーロックインなし**: Namiがオフラインになってもデータにアクセス可能

## 一般的なユースケース

<CardGroup cols={2}>
  <Card title="静的ウェブサイトホスティング" icon="globe">
    分散型の信頼性でウェブサイトをホスト
  </Card>

  <Card title="バックアップとアーカイブ" icon="archive">
    自動更新付きの長期ストレージ
  </Card>

  <Card title="メディアストレージ" icon="image">
    画像や動画の迅速な配信
  </Card>

  <Card title="データレイク" icon="database">
    Web3の保証付きの分析データ
  </Card>

  <Card title="APIデータストレージ" icon="server">
    グローバルに利用可能なアプリケーションデータ
  </Card>

  <Card title="コンテンツ配信" icon="share-nodes">
    Railgun（ベータ版）によるグローバルコンテンツ配信
  </Card>
</CardGroup>

## ベストプラクティス

### 名称規則

* DNS互換のバケット名を使用
* SSL互換のためにバケット名にピリオドを避ける
* オブジェクトのS3命名ガイドラインに従う

### パフォーマンス最適化

* テキストベースのファイルに対して圧縮を有効にする
* 大きなファイル（>100MB）にはマルチパートアップロードを使用
* よくアクセスされるコンテンツにはRailgun（ベータ版）キャッシュを活用
* ホットスポットを避けるためにオブジェクトキーを構造化

### コスト最適化

* 可能な限り小さなファイルをバンドル（自動バンドル近日公開）
* データアーカイブのためにライフサイクルポリシーを使用
* Nami Cloudダッシュボードを通じて使用状況を監視

## 始めるには

移行を開始する方法は以下の通りです。

1. **[アカウントを作成](https://nami.cloud)** - Nami Cloudにサインアップ
2. **認証情報を生成** - S3互換のアクセスキーを作成
3. **移行をテスト** - 最初にテストバケットで移行を試す
4. **完全移行** - すべてのアプリケーションをNami Storageを使用するように更新

## ヘルプが必要ですか？

* [認証ガイド](/api-reference/storage/authentication.jp) - 認証情報の設定
* [APIリファレンス](/api-reference/storage/create-bucket.jp) - 完全なAPIドキュメント
* [コード例](/api-reference/storage/put-object#code-examples.jp) - 複数の言語での動作例

S3のシンプルさで分散ストレージの力を体験してください。あなたのデータはより安全で、より利用可能で、真にあなたのものになります。
