

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 標準ストレージクラスの S3 アーカイブオブジェクトを読み取る
<a name="read-s3-standard-storage-class"></a>

**AWS Glue を使用する**

MySQL から Amazon S3 にオフロードしたデータでは、リレーショナルデータベース管理システム (RDBMS) に典型的な構造剛性と一貫性が保持されます。

[AWS Glue クローラー](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html)は、S3 オブジェクトをクロールして、データ型を推測し、テーブルメタデータを外部テーブル DDL として作成します。クローラージョブの設定時には、Amazon S3 をソースに使用し、すべてのデータファイルが作成されている、S3 プレフィックスの場所を指定します。設定には、以下のような項目が含まれます。
+ クローラー実行オプション
+ オプションのテーブルプレフィックス設定
+ テーブル作成のためのターゲットデータベース
+ 必要なアクセス許可を持つ IAM ロール

ジョブを呼び出すと、クローラーが、データをスキャンしてスキーマを推測し、[AWS Glue データカタログ](https://docs.aws.amazon.com/glue/latest/dg/catalog-and-crawler.html)に [AWS Glue テーブル](https://docs.aws.amazon.com/glue/latest/dg/tables-described.html)として保存します。AWS Glue テーブルは基本的に外部テーブルであり、[Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) の [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html)、[Amazon Redshift Spectrum](https://docs.aws.amazon.com/redshift/latest/dg/c-getting-started-using-spectrum.html)、Apache Hive などの分析サービスを使用して、通常のデータベーステーブルに実行するクエリと同様、SQL ステートメントでクエリできます。クローラーの詳細については、[AWS Glue ドキュメント](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html)を参照してください。

.csv ファイルで列ヘッダーを指定済みの場合、結果的に作成されるテーブル列名には、そのヘッダーと同じフィールド名が反映されます。データ型は、データオブジェクトの値に基づいて推測されます。

Parquet ファイルの場合、スキーマはデータそのものに保持されており、結果的に作成されるテーブルには、そのファイルと同じフィールド名とデータ型が反映されます。

あるいは、Athena 内で DDL を手動で実行して、必要な列名とデータ型を持つテーブル定義を作成することもできます。これにより、データカタログ内にテーブル定義が作成されます。Athena テーブル作成の詳細については、[Amazon Athena ドキュメント](https://docs.aws.amazon.com/athena/latest/ug/creating-tables.html)を参照してください。

**注:** CSV ファイルにヘッダー行がない場合は、汎用的な c\$10、c\$11、c\$12 というフィールド名が作成されます。

**Amazon S3 Select の使用**

Amazon S3 Select では、SQL 式を使用したプログラムによって、S3 オブジェクトを読み取ることができます。この API オペレーションを呼び出すには、AWS CLI コマンドの `select-object-content` を使用するか、Boto3 などの SDK を使用して Python から `select_object_content` オペレーションを呼び出すと良いでしょう。

この API オペレーションでは SQL ステートメントをパラメータとして使用できるため、JSON 型と Parquet 型のファイルのみを読み取ることが可能です。その結果は、出力ファイルとしてリダイレクトすることができます。

こうしたオペレーションは、S3 オブジェクトごとに呼び出されるため、ファイルが複数ある場合は、オペレーションを再帰的に実行します。

AWS CLI を使用した、オペレーションの実行方法は、[AWS CLI ドキュメント](https://docs.aws.amazon.com/cli/latest/reference/s3api/select-object-content.html)で詳しく確認できます。Python SDK Boto3 を使用した、S3 Select の実行方法は、[Boto3 ドキュメント](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.select_object_content)で詳しく確認できます。