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

# Amazon S3 接続

> 大容量ファイルをS3から直接読み込めるように接続しましょう

## S3接続とは？

ブラウザでのアップロードが難しい大容量ファイルをAmazon S3バケットに置くと、OneS1ghtが参照時にそのファイルを直接読み込みます。ファイルはコピーして保管されないため、元のファイルを差し替えると次回の参照から即座に反映されます。

> [!NOTE]
>
> データソースの登録は\*\*管理者（Admin）\*\*権限を持つユーザーのみ行えます。AWS側の作業（ステップ1）は、該当バケットを管理する担当者が行う必要があります。

## 準備するもの

* 接続する**バケット名**と**リージョン**（例: `ap-northeast-2`）
* 以下2つの認証方式のいずれかを設定できるAWS権限

## 2つの認証方式

| 方式 | 説明 |
| - | - |
| **ロール委任**（推奨） | 自社のAWSアカウントに読み取り専用ロールを作成し、OneS1ghtに使用を委任します。**長期アクセスキーを渡しません。** |
| **アクセスキー** | 読み取り専用のアクセスキーとシークレットキーを発行して入力します。設定がよりシンプルです。 |

> [!NOTE]
>
> S3互換ストレージ（MinIO・Cloudflare R2など）はロール委任に対応していません。この場合は**アクセスキー**方式を使用してください。

## ステップ1: 読み取り専用権限の準備（AWS）

OneS1ghtが必要とする権限は、以下の2つだけです。ファイルのアップロードや削除の権限は使用しないため、付与しないでください。

| 権限 | 用途 |
| - | - |
| `s3:ListBucket` | フォルダとファイルの一覧を表示します |
| `s3:GetObject` | 選択したファイルの内容を読み込みます |

**1. ポリシーを作成**

AWSコンソールで**IAM → ポリシー → ポリシーの作成**に移動し、**JSON**タブを選択して以下の内容を貼り付けます。
`my-bucket`の2箇所を実際のバケット名に置き換えてください。

```json theme={null}
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "OneS1ghtListBucket",
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": "arn:aws:s3:::my-bucket"
    },
    {
      "Sid": "OneS1ghtReadObjects",
      "Effect": "Allow",
      "Action": ["s3:GetObject"],
      "Resource": "arn:aws:s3:::my-bucket/*"
    }
  ]
}
```

2つの項目の形が異なるのは意図的なものです。一覧取得は**バケット自体**に、ファイル読み込みは**バケット内のオブジェクト**（`/*`）に適用されます。

ポリシー名はわかりやすく`onesight-readonly`などにしてください。

このポリシーを**誰にアタッチするか**は認証方式によって異なります。以下では選択した方式のみ進めてください。

### ロール委任方式（推奨）

**1. OneS1ght画面で2つの値を確認**

コンソールで**データソース → 追加 → ストレージ → Amazon S3**を開き、認証方式を**ロール委任**に切り替えると、**Principal ARN**と**External ID**が表示されます。両方の値をコピーしておきます。

> [!WARNING]
>
> Principal ARNは**必ず画面に表示された値**を使用してください。環境によって異なるため、本ドキュメントの例をそのまま転記すると、意図しない主体を信頼することになります。

**2. ロールを作成し信頼ポリシーを指定**

**IAM → ロール → ロールを作成**で**カスタム信頼ポリシー**を選択し、以下を貼り付けます。山括弧の2箇所を前のステップでコピーした値に置き換えてください。

```json theme={null}
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": { "AWS": "<画面に表示されたPrincipal ARN>" },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": { "sts:ExternalId": "<画面に表示されたExternal ID>" }
      }
    }
  ]
}
```

`sts:ExternalId`条件は**必ず**含める必要があります。この条件がないと、ロールARNを知った第三者がOneS1ghtを経由してそのロールを使用できてしまいます。

**3. 権限をアタッチしロールARNをコピー**

権限のステップで先ほど作成した`onesight-readonly`ポリシーをアタッチし、ロールを作成します。作成されたロールの**ARN**をコピーしておきます。

> [!NOTE]
>
> External IDは**組織ごとに1つに固定**された値です。データソースを複数登録したり再登録したりしても変わらないため、信頼ポリシーは一度設定すれば有効であり続けます。

### アクセスキー方式

**1. ユーザーを作成しポリシーをアタッチ**

**IAM → ユーザー → ユーザーを作成**でOneS1ght専用のユーザーを作成し、権限設定のステップで**ポリシーを直接アタッチ**を選択して、先ほど作成したポリシーをアタッチします。

人がログインするアカウントではないため、コンソールへのログイン権限は付与しなくても構いません。

**2. アクセスキーを発行**

作成したユーザーの**セキュリティ認証情報**タブで**アクセスキーを作成**を選択し、使用事例として**AWSの外部で実行されるアプリケーション**（サードパーティサービス）を選びます。

発行された**アクセスキー**と**シークレットキー**を安全な場所にコピーして保管してください。

> [!WARNING]
>
> シークレットキーは発行時に**一度だけ**表示されます。その後は再確認できないため、必ず安全な場所に保管してください。紛失した場合は、新しいキーを発行する必要があります。

## ステップ2: OneS1ghtに接続

**1. ストレージを選択**

**データソース → 追加 → ストレージ → Amazon S3**を選択します。

**2. 接続情報を入力して接続**

ステップ1で選択した**認証方式**を選び、以下の項目を入力したうえで接続を確認します。

| 項目 | 説明 |
| - | - |
| ロールARN | *ロール委任方式* — ステップ1で作成したロールのARN |
| アクセスキー / シークレットキー | *アクセスキー方式* — ステップ1で発行したキー |
| リージョン | バケットがあるリージョン（例: `ap-northeast-2`） |
| バケット | 接続するバケット名 |
| エンドポイント | S3互換ストレージを使う場合のみ入力します（下記参照） |
| パス | 特定のフォルダのみ探索する場合に入力します（任意） |

アクセスキー方式で入力したシークレットキーは登録時に**AES-256-GCM方式で暗号化されて保存**され、画面に再表示されることはありません。ロール委任方式では保存される長期シークレットはありません。

**3. ファイルを選択**

フォルダをクリックして移動し、使用するファイルを選択します。SQLite（`.db`）ファイルの場合は、続けて参照する**テーブル**を選びます。

**4. 確認して登録**

プレビューでデータを確認し、自動で提案されたマッピングを確認したうえで、名前を指定して登録します。

## S3互換ストレージ

MinIO、Cloudflare R2、Wasabi、NAVER・NHN・KTクラウドなどのS3互換ストレージも同じ方法で接続できます。**エンドポイント**にそのストレージのアドレスを入力し、必要に応じて**path-style**オプションを有効にしてください。NASにMinIOを構築して使用している場合もこれに該当します。

ロール委任はAWS固有の機能のため、S3互換ストレージでは利用できません。**アクセスキー**方式で接続してください。

> [!WARNING]
>
> エンドポイントは**外部から接続できるアドレス**である必要があります。社内ネットワークやVPN内でのみ開かれているアドレスは、セキュリティポリシーによりブロックされます。

## 対応ファイル形式とサイズ制限

| 形式 | サイズ制限 |
| - | - |
| CSV | 制限なし — ファイルの先頭4MBまで読み込みます |
| Excel（`.xlsx`、`.xls`） | 32MB |
| JSON | 32MB |
| SQLite（`.db`） | 256MB |

Excel・JSON・SQLiteは形式の特性上、ファイル全体を取得しないと開けないためサイズ制限があります。制限を超えると、登録ステップで案内メッセージが表示されます。

## 次のステップ

> **[SFTP 接続](/ja/console/data-sources/sftp)**
>
> SFTPサーバーのファイルを接続します

> **[お問い合わせ](/ja/console/inquiries)**
>
> 接続できない場合はお問い合わせください


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.