AWS Storage Gatewayを使ってAI基盤を構築してみた

# はじめに
少し前になるがAI基盤を構築PJがあったのでAWSを利用して実現できないかPoCがてら色々検討していてそのうちストレージとしてStorage Gatewayを利用することにした。

# Amazon Web Services (AWS) Storage Gatewayとは
ChatGPTが適切に答えてくれた

>Amazon Web Services (AWS) Storage Gatewayは、AWSが提供するクラウドストレージサービスです。この>サービスを使用すると、企業が既存のデータストレージインフラストラクチャとAWSのクラウドストレージを統>合することができます。これにより、企業はローカルデータをクラウドにバックアップしたり、クラウド上の>データをローカルデータセンターにキャッシュしたりすることができます。また、Storage Gatewayを使用する>と、AWSのクラウドストレージサービスと同様に、データを安全かつ効率的に管理することができます。 >Storage Gatewayの主な機能は次のとおりです。
>ローカルデータをAWSのクラウドストレージにバックアップする
>AWSのクラウドストレージからデータをローカルデータセンターにキャッシュする
>ローカルデータセンターとAWSクラウドストレージの間でデータをやり取りする
>AWSクラウドストレージの使用状況を管理する
>AWSクラウドストレージのデータをセキュリティで保護する
>Storage Gatewayを使用することで、企業はローカルデータストレージインフラストラクチャを維持しつつ、>AWSクラウドストレージの柔軟性とスケーラビリティを活用することができます。 AWS Storage Gatewayを使>用することで、企業はデータストレージコストを削減したり、データの保存と管理をより効率的に行うことが>できます。

Storage Gatewayはオンプレで保管しているデータをAWSに移行することでQCDの質を上げるためのソリューションというのがわかる。（ストレージの運用は非常に大変）

GPTの回答は上記になるがもう少し別観点で質問したら別のソリューションを提案してきた。
>AWS Storage Gatewayは、AWSのクラウドストレージサービスであるAmazon Simple Storage Service (Amazon S3)やAmazon Elastic File System (Amazon EFS)と統合することができます。

>S3とEFSの併用でAWS Storage Gatewayを使用することで、企業は次のようなメリットを得ることができます。

>   ローカルデータをS3とEFSの両方にバックアップすることができる S3とEFSの両方にデータをバックアップすることで、データの損失や破壊からより強固にデータを保護することができます。また、S3とEFSの両方に保存されたデータを使用して、データリカバリも容易に行うことができます。
    
> S3とEFSを使用して、異なるタイプのデータを効率的に管理することができる S3はオブジェクトストレージサービスであり、大量のデータを格納したり、複数のアプリケーションから共有したりすることができます。一方、EFSはファイルシステムサービスであり、複数の EC2インスタンスから同時にアクセスできるようにすることができます。 Storage Gatewayを使用することで、S3とEFSを統合することができるため、異なるタイプのデータを効率的に管理することができます。
    
>  S3とEFSを使用して、ローカルデータを高速かつ安全にアクセスすることができる Storage Gatewayを使用することで、ローカルデータセンターからS3やEFSにアクセスすることができます。これにより、ローカルデータを高速かつ安全にアクセスすることができます。また、S3やEFSからローカルデータセンターにデータをキャッシュしたり、ローカルデータセンターとS3やEFSの間でデータをやり取りすることもできます。

実はこれが今回利用したSGWの使い方である。

# 構成図

![Ai基盤.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187693/982b29a5-fb1d-e87f-e9ad-5afbdc0ddc9d.png)

SageMakerで利用するデータはS3格納
作業環境兼踏み台はWindowsで構成されており、NAS(SMB)のような形で
生データをSageMakerのS3に格納したかったためそれを実現したいためぴったりなサービスがSGWだったわけだ。（後で気づいたが、SageMakerのストレージはS3必須ではなくなったらしいことを後日知った）

# Storage Gatewayのメリデメ

メリット

:::note info
・ストレージサービスを気にすることなく利用できる
・オンプレ - AWS間におけるデータストレージサービスとしては最強なサービス。セキュリティに厳しい会社でなければログ保管やバックアップデータなどStorage Gatewayに保存とか良さそう
:::

デメリット

:::note warn
・実態はon EC2なのでコスト高になったりEC2運用も加味しないといけない
・オンプレ - AWS間ソリューションを実現するためにGWをオンプレ上に構築する必要があるがHA機能がデフォルトで使えなかったりと敷居がやや高い
:::


上記を踏まえて、適切にサービスを利用する必要性はある


## Storage Gateway実例

SageMakerから
```
[root@ip-xxx-xxx-xxx-xxx ~]# df -h
Filesystem                               Size  Used Avail Use% Mounted on
devtmpfs                                 1.9G     0  1.9G   0% /dev
tmpfs                                    1.9G     0  1.9G   0% /dev/shm
tmpfs                                    1.9G  628K  1.9G   1% /run
tmpfs                                    1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/nvme0n1p1                           140G   87G   54G  62% /
/dev/nvme1n1                             4.8G  1.9G  2.7G  41% /home/ec2-user/SageMaker
tmpfs                                    387M     0  387M   0% /run/user/1000
tmpfs                                    387M     0  387M   0% /run/user/1002
tmpfs                                    387M     0  387M   0% /run/user/1001
 xx.xx.xx.xxx:/sagemaker-xx  8.0E     0  8.0E   0% /home/ec2-user/SageMaker/xxxxx・・・★
```
Eはエクサバイトでほぼ無限大といえる値

◆SageMaker上（CLI)
```
[root@ip-xxx-xxx-xxx-xxx ~]# dd if=/dev/zero of=testtest.txt bs=10M count=1024
[root@ip-xxx-xxx-xxx-xxx ~]# ls |grep test
testtest.txt
```
◆Windows
![Photokako-mosaic-S9rGdyv3BJhfaXL5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187693/462424b3-fe4a-7f83-4338-371a6766273b.png)

ddで作成した、testtestが作成されていることが確認できる

◆SSHでアクセスすると下記が表示される
```


        AWS Storage Gateway - Configuration

        #######################################################################
        ##  Currently connected network adapters:
        ##
        ##  eth0: xxx.xxx.xxx.xxx
        #######################################################################

        1: HTTP/SOCKS Proxy Configuration
        2: Network Configuration
        3: Test Network Connectivity
        4: View System Resource Check (0 Errors)
        5: License Information
        6: Command Prompt

        Press "x" to exit session

        Enter command: 
```

## おわりに
S3をOSに依存することなく利用できるサービスでもある。
大量のデータを保管するときはこのような使い方をするとコストパフォーマンスがよい場合もある
（EBSやEFSだとコスト増）