# Amazon S3

Amazon Simple Storage Service (Amazon S3) は、業界をリードするスケーラビリティ、データ可用性、セキュリティ、パフォーマンスを提供するオブジェクト ストレージ サービスです。

## 認証の準備

データにアクセスするには、アカウント資格情報を使用して接続を認証する必要があります。

情報メモ使用するアカウントに、フェッチするテーブルへのアクセス権があることを確認してください。

Amazon S3 に接続するには、ポリシーの作成、ロールの作成、ロールへのポリシーのアタッチを許可する AWS Identity Access Management (IAM) のアクセス許可が必要です。このアクセス許可は、S3 バケットに承認を付与するために必要です。

* [IMA ポリシーの作成](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/Connecting-Amazon-S3.htm#Creating)。
* [IAM ロールの作成](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/Connecting-Amazon-S3.htm#Creating2)。

### IMA ポリシーの作成

[IAM ポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json)は、バケット リソースへのアクセス許可を管理するための JSON ベースのアクセスポリシー言語です。

Amazon S3 の権限

| 権限名 | 演算 | 説明 |
| --- | --- | --- |
| **s3:GetObject** | **[GET オブジェクト](http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html)** | Amazon S3 からオブジェクトを取得できます。 |
| **s3:GetObject** | **[HEAD オブジェクト](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html)** | オブジェクト自体を返すことなく、オブジェクトからメタデータを取得できます。 |
| **s3:ListBucket** | **[GET バケット (リスト オブジェクト)](http://docs.aws.amazon.com/AmazonS3/latest/API/v2-RESTBucketGET.html)** | バケット内のオブジェクトの一部またはすべて (最大 1,000 個) を返すことができます。 |
| **s3:ListBucket** | **[HEAD バケット](http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketHEAD.html)** | バケットが存在し、アクセスが許可されているかどうかを判断するために使用されます。 |

IAM ポリシーを作成するには、次を実行します。

1. AWS で、[IAM サービスに移動する](https://console.aws.amazon.com/iam/home#/home)ために、 **サービス** メニューをクリックして「IAM」と入力します。
2. 結果に [IAM] が表示されたらクリックします。
3. ページの左側にあるメニューで [ポリシー] をクリックします。
4. [Create Policy] (ポリシーの作成) をクリックします。
5. [ポリシーの作成] ページで、 [JSON] タブをクリックします。
6. 現在テキスト フィールドにあるものをすべて選択して削除します。
7. テキスト フィールドに次の JSON を貼り付け、`MyBucketName` をバケットの名前に置き換えます。
   ```
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Sid": "",
               "Effect": "Allow",
               "Action": [
               "s3:GetObject",
               "s3:ListBucket"
               ],
               "Resource": [
               "arn:aws:s3:::MyBucketName",
               "arn:aws:s3:::MyBucketName/*"
               ]
           }
       ]
   }
   ```
8. [Review policy] (ポリシーのレビュー) をクリックします。
9. [Review policy] (ポリシーのレビュー) ページで、ポリシーに名前を付けます。例: `qlik_amazon_s3`。
10. [ポリシーの作成] をクリックします。

### IAM ロールの作成

情報メモ

このステップを完了するには、`CreateRole` および `AttachRolePolicy` の AWS IAM 権限が必要です詳細については、「[Amazon のドキュメント](https://docs.aws.amazon.com/IAM/latest/APIReference/API_Operations.html)」を参照してください。

複数の Amazon S3 統合を作成する場合は、接続する統合ごとにこのステップを完了する必要があります。

1. AWS で、 [[IAM ロール](https://console.aws.amazon.com/iam/home#/roles)] ページに移動します。
2. [Create Role] (ロールを作成) をクリックします。
3. [Create Role] (ロールを作成) ページで、次を実行します。
   1. [Select type of trusted entity] (信頼できるエンティティのタイプを選択) セクションで、 [Another AWS account] (別の AWS アカウント) オプションをクリックします。

   2. [アカウント ID] 項目に、`338144066592` を貼り付けます。

   3. [オプション] セクションで、 [Require external ID] (必要な外部 ID) チェックボックスを選択します。

   4. 表示される [外部 ID] 項目に、`qlik_connection_<tenant-id>` を貼り付け、`<tenant-id>` をテナントIDに置き換えます。

      テナント ID を見つけるには、「[テナント情報の検索](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Admin/qcs-account-information.htm)」を参照してください。

   5. [Next: Permissions] (次へ: 権限) をクリックします。
4. [Attach permissions] (権限を添付) ページで、次を実行します。
   1. 「[IAM ポリシーの作成](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/Connecting-Amazon-S3.htm#Creating)」で作成したポリシーを検索します。
   2. ポリシーを見つけたら、表の隣にあるチェック ボックスにチェックを入れます。
   3. [Next: Tags] (次へ: タグ) をクリックします。
5. タグを入力する場合は、 [タグを追加] ページで入力します。追加しない場合は、 [Next: Review] (次へ: レビュー) をクリックします。
6. [レビュー] ページで、次を実行します。
   1. [ロール名] 項目に `qlik_s3_<tenant-id>` を貼り付け、`<tenant-id>` をテナント ID に置き換えます。

      テナント ID を見つけるには、「[テナント情報の検索](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Admin/qcs-account-information.htm)」を参照してください。

   2. [Role Description] (ロールの説明) 項目に説明を入力します。例: `Qlik role for Amazon S3 integration.`

   3. [Create Role] (ロールを作成) をクリックします。

### 検索パターンの定義

[検索パターン] 項目は、Qlik がファイルの選択とレプリケーションに使用する検索基準を定義します。この項目は正規表現を受け入れ、単一のファイルまたは複数のファイルを含めるために使用できます。

検索パターンを作成するときは、次の点に注意してください。

* 1 つのテーブルに複数のファイルを含める場合、各ファイルのヘッダー行の値は同一である必要があります。
* ピリオド (`.`) などの特殊文字は、正規表現では特別な意味を持ちます。正確に一致させるには、エスケープする必要があります。例: `.\`
* Qlik は正規表現に Python を使用しますが、その構文は他の種類とは異なる場合があります。統合を保存する前に、[PyRegex](http://www.pyregex.com/) を使用して数式をテストしてみてください。
* Parquet (`.parquet`) および Arvo (`.arvo`) の検索パターンもサポートしています。
* 検索パターンでは、ファイル内のデータが更新される方法を考慮する必要があります。次の例を考えてみましょう。

| **シナリオ** | 単一ファイル、定期更新 | 複数のファイル、毎日生成 |
| --- | --- | --- |
| **更新方法** | 単一の JSONL ファイルは、新規および更新された顧客データで定期的に更新されます。 | 新規および更新された顧客データを含む、新しい CSV ファイルが毎日作成されます。古いファイルは作成後に更新されることはありません。 |
| **ファイル名** | `customers.jsonl` | `customers-[STRING].csv` (`[STRING]` は一意のランダムな文字列) |
| **検索パターン** | ファイルは 1 つだけであるため、S3 バケットにファイルの正確な名前を入力できます。<br><br>```<br>customers\.jsonl<br>```<br><br>`customers\.jsonl`customers\.\.jsonl | 新しいファイルと更新されたファイルが確実に識別されるようにするには、ファイル名の文字列に関係なく、`customers` で始まるすべてのファイルに一致する検索パターンを入力します。<br><br>```<br>(customers-).*\.csv<br>```<br><br>`(customers-).*\.csv`((customers-)).\*\*\.\.csv |
| **一致** | `customer.jsonl` (正確に) | <ul> <li><code>customers-reQDSwNG6U.csv</code> </li> <li><code>customers-xaPTXfN4tD.csv</code> </li> <li><code>customers-MBJMhCbNCp.csv</code> </li> <li>などの対応するプロパティで構造化パーツを指定します。</li> </ul> |

### ファイル要件

| 1 行目のヘッダー (CSV ファイルのみ) | <ul> <li>すべてのファイルには、列名を含む 1 行目のヘッダーが必要です。ファイルの 1 行目はヘッダー行と見なされ、これらの値は選択可能な列として表示されます。 </li> <li>テーブルに複数のファイルが含まれている場合、1 行目のヘッダー値が同じであるファイル。<span>Amazon S3</span> 統合により、複数のファイルを単一のターゲット テーブルにマッピングできます。ヘッダー行の値は、テーブルのスキーマを決定するために使用されます。最良の結果を得るには、各ファイルのヘッダー行の値が同一である必要があります。 <p>これは複数のテーブルを構成することとは異なります。例については、「<a href="https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/Connecting-Amazon-S3.htm#Defining">検索パターンの定義</a>」を参照してください。</p></li> </ul> |
| --- | --- |
| ファイルの種類 | <ul> <li>CSV (<code>.csv</code>)</li> <li>Text (<code>.txt</code>)</li> <li>JSONL (<code>.jsonl</code>)</li> <li>Parquet (<code>.parquet</code>)</li> <li>Arvo (<code>.arvo</code>) 						<p>Arvo ファイルをサポートするには、スキーマを含める必要があります。</p></li> </ul> |
| 圧縮の種類 | これらのファイルが正しく圧縮されていない場合、解凍時にエラーが発生します。<br><br><ul> <li>gzip 圧縮ファイル (<code>.gz</code>)</li> </ul> |
| 区切り記号（CSV ファイルのみ） | <ul> <li>カンマ (<code>,</code>)</li> <li>タブ (<code>/t</code>)</li> <li>パイプ (<code>\|</code>)</li> <li>セミコロン (<code>;</code>)</li> </ul> |
| 文字エンコーディング | UTF-8 (`.csv`、`.txt`、`.jsonl` のみ)<br><br>情報メモ`.parquet` および `.arvo` ファイルは生のバイナリ ファイルです。 |

## 接続の作成

詳細については、「[SaaSアプリケーションへの接続](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Landing/connecting-web-applications.htm)」を参照してください。

1. 必要な接続プロパティを入力します。

2. 接続名に接続の名前を入力します。

3. 接続メタデータを開くを選択して、作成時の接続のメタデータを定義します。

4. [作成] をクリックします。

接続の設定

| 設定 | 説明 |
| --- | --- |
| データ ゲートウェイ | ユース ケースに応じて Data Movement gateway を選択します。<br><br>情報メモ<br><br>Qlik Talend Cloud スターター サブスクリプションでは Data Movement gateway をサポートしていないため、この項目は使用できません。別のサブスクリプション ティアを利用しており、Data Movement gateway を使用しない場合は、 [None] (なし) を選択します。<br><br>Data Movement gateway の利点とそれを必要とするユース ケースの詳細については、「[Qlik データ ゲートウェイ - データ移動](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/replication-gateway.htm)」を参照してください。 |
| 開始日 | ソースからターゲットにデータをレプリケートする必要がある日付を `MM/DD/YYYY` 形式で入力します。 |
| S3 バケット | S3 バケットの名前。 |
| AWS アカウント ID | バケットが存在するアカウントの AWS アカウント ID。<br><br>AWS アカウント ID は、AWS 管理コンソールの [アカウント詳細] で確認できます。 |
| 検索パターン | テーブルに含めるファイルを入力します。単一のファイル名または正規表現を入力できます。<br><br>例: `users\*.csv``products\*.jsonl`。 |
| [Directory] (ディレクトリー) | このディレクトリ パス内の検索を制限します。定義されると、この場所にあるファイルのみが検索され、検索パターンに一致するファイルが選択されます。正規表現は使用できません。<br><br>例: csv-exports-folder または employee\_jsonl\_exports。 |
| テーブルの構成<br><br>含めるファイルを指定してテーブルを構成します。<br><br>複数のテーブルを構成できます。 |  |
| [Table name] (テーブル名) | テーブルの名前です。<br><br>各ターゲットには、テーブルの命名方法に関する独自のルールがあります。たとえば、Amazon Redshift テーブル名は 127 文字を超えることはできません。 |
| [Primary key] (プライマリキー) | 一意の行またはレコードを識別するための主キーを入力します。複数のキーを入力する場合は、値をコンマで区切ります。<br><br><ul><li>CSV ファイルの場合は、ヘッダー フィールドまたは列名を入力します。</li><li>JSONL ファイルの場合は、属性名またはオブジェクト キーを入力します。</li></ul><br><br>例: id、name。 |
| 日時項目の指定 | テーブルに文字列ではなく日時として表示される必要がある値を入力します。<br><br>例: created\_at、modified\_at。 |
| 区切り記号 | ドロップダウン リストから区切り記号を選択します。 |