クイックスタート: 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 ドキュメントの「バケットの作成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. [次へ] をクリックします。

    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. https://console.aws.amazon.com/sagemaker/ の 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. ロール名でロールを検索します。

      注記

      で ARN を分割'/'し、最後の要素を取ることで、Amazon リソースネーム (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

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

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

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

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

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

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

  4. Athena のデフォルト接続を有効にします。

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

    2. データ検出 を選択します。

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

    4. JupyterLab アプリケーションで、左側のナビゲーションペイン SQL extension icon. のアイコンを選択して 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 エディタ「」を参照してください。