# 演習 7-3: Amazon S3バケットからTiDB CloudへのCSVデータのインポート

## 概要
+ この演習では、Amazon S3バケットからTiDB CloudクラスタにCSVデータをインポートします。

## ノート
+ このタスクを行う前に、Amazon S3を使用できることを確認し、バケット内にサンプルCSVデータファイルを配置しておくことをお忘れなきます。

## 所要時間
+ この演習は、あなたが完了するのに約15分かかるはずです。

## ステップ
1. `Clusters`ページで、クラスタの名前をクリックして、クラスタの`Overview`ページに入ります。
<img src="./diagram/GoDedicatedTierOverview_aa_001_20230111.png" width="50%" align="top"/>

2. 左のナビゲーションペインで`Import`をクリックします。

3. `Import`ページで、`import data from S3`をクリックします。もしあなたのクラスタが`Dedicated Tier`なら、`Import Data`をクリックします。もしあなたのクラスタが`Serverless Tier`なら、`Import Data`をクリックします。

4. クラスタの`TiDB Cloud account ID`と`TiDB Cloud External ID`を取得するには、`Guide for getting the required Role-ARN`をクリックします。 
<img src="./diagram/ch09-2-02.png" width="50%" align="top"/>

5. [Amazon S3 コンソール](https://console.aws.amazon.com/s3/)を開いて、その後`Buckets`をクリックしてください。
<img src="./diagram/ch09-2-03.png" width="50%" align="top"/>
  
6. `Copy ARN`をクリックして、S3バケットARNを取得します。
<img src="./diagram/ch09-2-04.png" width="50%" align="top"/>

7. [IAM コンソール](https://console.aws.amazon.com/iam/)を開いて、その後`Policies`をクリックします
<img src="./diagram/ch09-2-05.png" width="50%" align="top"/>

8. `Create Policy`をクリックします。
<img src="./diagram/ch09-2-06.png" width="50%" align="top"/>

9. `Create policy`ページでは、`Visual editor`タブをクリックするか、`JSON`タブをクリックするかを選択できます。
<img src="./diagram/ch09-2-07.png" width="50%" align="top"/>

`JSON`タブを選択してアクセスポリシーを作成する場合は、以下のテンプレートを参照できます。
<img src="./diagram/ch09-2-08.png" width="50%" align="top"/>

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": "<Your S3 bucket ARN>/universe-csv/*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Resource": "<Your S3 bucket ARN>"
        }
    ]
}
```
  
10. `Next:Tags`をクリックして、タグを追加して、そして`Next:Review`をクリックします。
<img src="./diagram/ch09-2-09.png" width="50%" align="top"/>
    
11. 次のページで、ポリシー`Name`と`description`を設定し、その後`Create policy`をクリックします。
<img src="./diagram/ch09-2-10.png" width="50%" align="top"/>   
 
12. [IAM コンソール](https://console.aws.amazon.com/iam/)を開き、その後`Roles`をクリックします。
<img src="./diagram/ch09-2-11.png" width="50%" align="top"/> 

13. `Create role`をクリックします。
<img src="./diagram/ch09-2-12.png" width="50%" align="top"/> 
  
14. `Trusted entity type`セクションで、`AWS account`を選択します。次に、`An AWS account`セクションで`Another AWS account`を選択し、`TiDB Cloud account ID`を`Account ID`に入力します。`Options`セクションで、`Require external ID (Best practice when a third party will assume this role)`をクリックし、`TiDB Cloud External ID`を`External ID`に入力します。`Next`をクリックします。
<img src="./diagram/ch09-2-13.png" width="50%" align="top"/> 

15. 役割のポリシーを選択して、その後、`Next`をクリックします。
<img src="./diagram/ch09-2-14.png" width="50%" align="top"/>

16. `Role details`セクションで、`Role name`と`Description`を設定し、その後`Create role`をクリックします。
<img src="./diagram/ch09-2-15.png" width="50%" align="top"/>

17. `Roles`ページで、あなたが作成した役割の名前をクリックします。
<img src="./diagram/ch09-2-16.png" width="50%" align="top"/>

18. `ARN`の値を注意してください。書き留めておいてください、後で必要になります。
<img src="./diagram/ch09-2-17.png" width="50%" align="top"/>

19.  [TiDB Cloud コンソール](https://tidbcloud.com/console/clusters)へ戻り、クラスタの名前をクリックして、クラスタの`Overview`ページに入りましょいます。
<img src="./diagram/GoDedicatedTierOverview_aa_001_20230111.png" width="50%" align="top"/>

20.  左のナビゲーションペインで`Import`をクリックします。

21.  `Import`ページで、`import data from S3`をクリックします。もしあなたのクラスタが`Dedicated Tier`なら、`Import Data`をクリックします。もしあなたのクラスタが`Serverless Tier`なら、`Import Data`をクリックします。

22.  `Source`セッションで、`Data format`セクションで`CSV`を選択し、その後、あなたの例のCSVデータの`Bucket URI`を入力し、先ほど取得した`Role ARN`を入力します。`Next`をクリックします。
<img src="./diagram/ImportCSVData_aa_001_20230202.png" width="50%" align="top"/>

23.  次のページで、ファイルパターンを変更し、必要ならテーブルフィルターのルールを追加してから、`Next`をクリックします。
<img src="./diagram/ModifyPatternsAndAddFilter_aa_001_20230202.png" width="50%" align="top"/>

24.  `Preview`ページで、インポートするデータを確認してから、`Start Import`をクリックします。
<img src="./diagram/Preview_aa_001_20230202.png" width="50%" align="top"/>

25.  データインポートタスクが終了するのを待ちましょいます。

26.  TiDB Cloudクラスタに接続し、データがインポートされたことを確認します。
<img src="./diagram/ch09-2-21.png" width="50%" align="top"/>
