クイックスタート: Amazon S3 でデータをクエリする - Amazon SageMaker

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

クイックスタート: Amazon S3 でデータをクエリする

ユーザーは、 SQL拡張機能を使用して JupyterLab ノートブックからSQLクエリを実行することで、Amazon S3 に保存されているデータを分析できます。拡張機能は Athena と統合され、いくつかの追加ステップで Amazon S3 内のデータの機能を有効にします。

このセクションでは、Amazon S3 から Athena にデータをロードし、そのデータを SQL拡張機能 JupyterLab を使用してクエリする手順について説明します。Athena データソースと AWS Glue クローラを作成して Amazon S3 データのインデックスを作成し、Athena JupyterLab へのアクセスを有効にするための適切なIAMアクセス許可を設定し、Athena JupyterLab に接続してデータをクエリします。これらのいくつかのステップでは、 JupyterLab ノートブックの SQL 拡張機能を使用して Amazon S3 データを分析できます。

前提条件
  • 管理者アクセス許可を持つ AWS Identity and Access Management (IAM) ユーザーアカウントを使用して、 AWS マネジメントコンソールにサインインします。アカウントにサインアップ AWS し、管理アクセス権を持つユーザーを作成する方法については、「」を参照してくださいAmazon の SageMaker 前提条件を完了する

  • SageMaker Studio にアクセスするための SageMaker ドメインとユーザープロファイルがある。 SageMaker 環境の設定方法については、「」を参照してくださいAmazon のクイックセットアップを使用する SageMaker

  • SageMaker 環境と同じ AWS リージョンとアカウントを使用して、Athena クエリ結果を保存する Amazon S3 バケットとフォルダを用意します。Amazon S3 でバケットを作成する方法については、Amazon S3 ドキュメントの「バケットの作成」を参照してください。このバケットとフォルダは、クエリの出力場所になるように設定します。

ステップ 1: Amazon S3 データの Athena データソースと AWS Glue クローラを設定する

Amazon S3 でデータのインデックスを作成し、Athena でテーブルを作成するには、次の手順に従います。

注記

異なる Amazon S3 ロケーションのテーブル名間の衝突を回避するには、ロケーションごとに個別のデータソースとクローラーを作成します。各データソースは、プレフィックスが付いていない限り、それらを含むフォルダにちなんで という名前のテーブルを作成します。

  1. クエリ結果の場所を設定する

    1. Athena コンソールに移動します。 https://console.aws.amazon.com/athena/

    2. 左側のメニューから、ワークグループ を選択します。

    3. primary ワークグループのリンクに従って、編集 を選択します。

    4. クエリ結果設定セクションで、出力ディレクトリの Amazon S3 パスを入力し、変更の保存 を選択します。

  2. Amazon S3 データの Athena データソースを作成する

    1. Athena コンソールの左側のメニューから、データソース を選択し、データソース を作成します

    2. S3 - AWS Glue Data Catalog を選択し、次に次へ を選択します。

    3. AWS Glue このアカウント にデフォルトのデータカタログを残し、 でクローラーを作成する AWS Glue を選択し、 で作成する AWS Glueを選択します。これにより、 AWS Glue コンソールが開きます。

  3. AWS Glue を使用してデータソースをクロールする

    1. 新しいクローラーの名前と説明を入力し、次へ を選択します。

    2. データソース で、データソースの追加 を選択します。

      1. データを含む Amazon S3 バケットが SageMaker 環境とは異なる AWS アカウントにある場合は、S3 データの場所別のアカウントで を選択します。

      2. Amazon S3 でデータセットへのパスを入力します。例:

        s3://dsoaws/nyc-taxi-orig-cleaned-split-parquet-per-year-multiple-files/ride-info/year=2019/
      3. 他のデフォルト値をすべて保持し、Amazon S3 データソースの追加 を選択します。データソーステーブルに新しい Amazon S3 データソースが表示されます。

      4. [Next (次へ)] を選択します。

    3. データにアクセスするためのクローラのIAMロールを設定します。

      注記

      各ロールは、指定したデータソースにスコープダウンされます。ロールを再利用する場合は、JSONポリシーを編集して、このデータソースへのアクセスを許可する新しいリソースを追加するか、新しいロールを作成します。

      1. 新しいIAMロールの作成 を選択します。

      2. ロールの名前を入力し、次へ を選択します。

  4. テーブルのデータベースを作成または選択する

    1. Athena に既存のデータベースがない場合は、データベースを追加 を選択し、新しいデータベースを作成します

    2. 前のクローラー作成タブに戻るには、出力設定 更新ボタンを選択します。これで、新しく作成されたデータベースがリストに表示されます。

    3. データベースを選択し、テーブル名のプレフィックスにオプションのプレフィックスを追加し、次へ を選択します。

      注記

      データが にある前の例ではs3://dsoaws/nyc-taxi-orig-cleaned-split-parquet-per-year-multiple-files/ride-info/year=2019/、プレフィックスを追加すると、 という名前のテーブルtaxi-ride-が作成されますtaxi-ride-year_2019。プレフィックスを追加すると、複数のデータロケーションに同じ名前のフォルダがある場合にテーブル名の衝突を防ぐことができます。

  5. クローラーの作成 を選択します。

  6. クローラーを実行してデータをインデックス化します。クローラーの実行が Completed ステータスになるまで待ちます。これには数分かかる場合があります。

新しいテーブルが作成されていることを確認するには、 の左側のメニューに移動 AWS Glue し、データベース、テーブル を選択します。これで、データを含む新しいテーブルが表示されるはずです。

ステップ 2: Athena へのアクセス許可を Studio に付与する

次の手順では、Athena にアクセスするアクセス許可をユーザープロファイルの実行ロールに付与します。

  1. ユーザープロファイルに関連付けられた実行ロールARNの を取得する

    1. で SageMaker コンソールに移動https://console.aws.amazon.com/sagemaker/し、左側のメニューでドメインを選択します。

    2. ドメイン名の名前に従います。

    3. ユーザープロファイルリストで、ユーザープロファイルの名前に従います。

    4. ユーザーの詳細ページで、実行ロールARNの をコピーします。

  2. 実行ロールのポリシーを更新する

    1. コンソールの右上で AWS リージョンとアカウント ID を見つけます SageMaker。これらの値とデータベース名を使用して、テキストエディタで次のJSONポリシーのプレースホルダーを更新します。

      { "Version": "2012-10-17", "Statement": [ { "Sid": "GetS3AndDataSourcesMetadata", "Effect": "Allow", "Action": [ "glue:GetDatabases", "glue:GetSchema", "glue:GetTables", "s3:ListBucket", "s3:GetObject", "s3:GetBucketLocation", "glue:GetDatabase", "glue:GetTable", "glue:ListSchemas", "glue:GetPartitions" ], "Resource": [ "arn:aws:s3:::*", "arn:aws:glue:region:account-id:catalog", "arn:aws:glue:region:account-id:database/db-name" ] }, { "Sid": "ExecuteAthenaQueries", "Effect": "Allow", "Action": [ "athena:ListDataCatalogs", "athena:ListDatabases", "athena:ListTableMetadata", "athena:StartQueryExecution", "athena:GetQueryExecution", "athena:RunQuery", "athena:StartSession", "athena:GetQueryResults", "athena:ListWorkGroups", "s3:ListMultipartUploadParts", "s3:ListBucket", "s3:GetBucketLocation", "athena:GetDataCatalog", "s3:AbortMultipartUpload", "s3:GetObject", "s3:PutObject", "athena:GetWorkGroup" ], "Resource": [ "arn:aws:s3:::*" ] }, { "Sid": "GetGlueConnectionsAndSecrets", "Effect": "Allow", "Action": [ "glue:GetConnections", "glue:GetConnection" ], "Resource": [ "*" ] } ] }
    2. IAM コンソールに移動https://console.aws.amazon.com/iam/し、左側のメニューでロールを選択します。

    3. ロール名でロールを検索します。

      注記

      Amazon リソースネーム (ARN) から実行ロール名を取得するには、 ARN で を分割'/'し、最後の 要素を取ります。例えば、次の ARN の例ではarn:aws:iam::112233445566:role/SageMakerStudio-SQLExtension-ExecutionRole、実行ロールの名前は ですSageMakerStudio-SQLExtension-ExecutionRole

    4. ロールのリンクに従います。

    5. アクセス許可タブで、アクセス許可の追加 を選択し、インラインポリシーの作成 を選択します。

    6. ポリシーエディタセクションでJSON形式を選択します。

    7. 上記のポリシーをコピーし、次へ を選択します。すべての account-id、、region-nameおよび をそれらの値db-nameに置き換えたことを確認します。

    8. ポリシーの名前を入力し、ポリシーの作成 を選択します。

ステップ 3: で Athena のデフォルト接続を有効にする JupyterLab

次の手順では、default-athena-connection JupyterLab アプリケーションで を有効にします。デフォルトの Athena 接続では JupyterLab、Athena で から直接SQLクエリを実行できます。接続を手動で作成する必要はありません。

デフォルトの Athena 接続を有効にするには

  1. で SageMaker コンソールに移動https://console.aws.amazon.com/sagemaker/し、左側のメニューで Studio を選択します。ドメインとユーザープロファイルを使用して、Studio を起動します。

  2. JupyterLab アプリケーションを選択します。

  3. JupyterLab アプリケーションのスペースを作成していない場合は、 JupyterLab スペースの作成 を選択します。スペースの名前を入力し、スペースをプライベート として保持し、スペースの作成 を選択します。ディストリビューションイメージの SageMaker最新バージョンを使用してスペースを実行します。

    それ以外の場合は、スペースでスペースを実行するを選択して JupyterLab アプリケーションを起動します。

  4. Athena のデフォルト接続を有効にする:

    1. JupyterLab アプリケーションで、上部ナビゲーションバーの設定メニューに移動し、設定エディタメニューを開きます。

    2. Data Discovery を選択します。

    3. デフォルトの Athena 接続を有効にする のチェックボックスをオンにします。

    4. JupyterLab アプリケーションで、左側のナビゲーションペインのSQL拡張機能アイコン ( Purple circular icon with a clock symbol representing time or scheduling. ) を選択してSQL拡張機能を開きます。

    5. データ検出パネルの下部にある更新ボタンを選択します。接続のリストdefault-athena-connectionに が表示されます。

ステップ 4: SQL拡張機能を使用して JupyterLab ノートブックから Amazon S3 のデータをクエリする

JupyterLab ノートブックSQLで を使用してデータをクエリする準備ができました。

  1. 接続を開きdefault-athena-connection、次に を開きますAWS DataCatalog

  2. データベースに移動し、右側の 3 つのドットアイコン ( SQL extension three dots icon. ) を選択します。ノートブック でクエリ を選択します。

    これにより、 のノートブックセル JupyterLab に、データソースに接続するための関連する%%sm_sqlマジックコマンドが自動的に入力されます。また、すぐにクエリを開始するのに役立つサンプルSQLステートメントも追加されます。

    注記

    SQL クエリを実行する前に、必ず上部セルに拡張機能をロードしてください。

    拡張機能の自動完了機能と強調表示機能を使用して、SQLクエリをさらに絞り込むことができます。SQL 拡張機能SQLエディタの使用の詳細についてはSQL JupyterLab SQL拡張機能のエディタ機能、「」を参照してください。