AWS Glue 開発エンドポイントの作成または接続に関する問題をトラブルシューティングする方法を教えてください。

最終更新日: 2019 年 9 月 24 日

AWS Glue 開発エンドポイントの作成または接続中に問題が発生しています。

簡単な説明

AWS Glue 開発エンドポイントに関するほとんどの問題は、次のカテゴリのいずれかに分類されます。次の順序でトラブルシューティングを行います。

  1. AWS Identity and Access Management (IAM) のロールとアクセス権限
  2. ネットワーキング
  3. SSH キー

解決方法

IAM ロールとアクセス権限

  1. AWSGlueServiceRole が IAM ポリシーにアタッチされていること、およびポリシーにより AWS Glue がこのロール (「svc:glue.amazonaws.com」) を引き受けることを許可していることを確認してください。
  2. VPC で開発エンドポイントを作成できない場合は、IAM ポリシーで次のアクションが許可されていることを確認してください。
    ec2:DescribeVpcAttribute
    ec2:DescribeSubnets
    ec2:DescribeSecurityGroups
    ec2:DescribeNetworkInterfaces
    ec2:DeleteNetworkInterface
    ec2:CreateNetworkInterface
    ec2:DescribeRouteTables
    ec2:DescribeVpcEndpoints
  3. 開発エンドポイントがソースとターゲットに Amazon Simple Storage Service (Amazon S3) を使用している場合、IAM ポリシーで次のアクションが許可されていることを確認します。
    s3:ListBucket
    s3:GetObject
    s3:ListBucket
    s3:PutObject
    s3:DeleteObject
  4. Python ライブラリと依存する jar に Amazon S3 パスを指定した場合、IAM ポリシーが両方のパスへのアクセスを許可していることを確認します。
  5. AWS Glue Data Catalog を Apache Hive メタストアとして使用している場合、IAM ポリシーで「glue:CreateDatabase」アクションが許可され、明示的な拒否が含まれていないことを確認してください。詳細については、「リクエストがアカウント内で許可または拒否されているかを判断する」を参照してください。

それでも開発エンドポイントに接続できない場合は、ネットワーク設定をトラブルシューティングします。

ネットワーキング

VPC で開発エンドポイントを作成した場合:

  1. カスタム DNS を使用している場合は、サブネットで使用可能な各 IP アドレスに A レコードPTR レコードがあることを確認してください。
  2. enableDnsHostnames 属性と enableDnsSupport 属性が true に設定されていることを確認してください。詳細については、「VPC での DNS のセットアップ」を参照してください。

以下に従い、エンドポイントのサブネットに関連付けられているルートテーブルとセキュリティグループを確認します。

  1. ルートテーブルに Amazon S3 エンドポイントへのルートがあることを確認します。
  2. ルートテーブルにインターネットゲートウェイへのルートがあることを確認します。これは、ローカルマシンから開発エンドポイントにアクセスするために必要です。
  3. セキュリティグループに、すべての TCP ポートの自己参照インバウンドルールがあることを確認します。
  4. セキュリティグループに、すべてのトラフィックを許可するアウトバウンドルール、または自己参照セキュリティグループへのアウトバウンドルールがあることを確認します。詳細については、「開発エンドポイントのネットワークのセットアップ」を参照してください。

SSH を使用して開発エンドポイントへ接続する際に問題が発生する場合:

  1. セキュリティグループに、接続に使用しているマシンのポート 22 を許可するインバウンドルールがあることを確認してください。
  2. VPC で開発エンドポイントを起動すると、AWS Glue はプライベートアドレスを使用します。VPC の外部から SSH を使用してエンドポイントに接続しようとすると、サブネットにインターネットゲートウェイとルートがある場合でも接続は失敗します。この問題を解決するには、Elastic IP アドレスを開発エンドポイントに関連付けます
    注意: Elastic IP アドレスを使用して接続するには、サブネットにインターネットゲートウェイへのルートが必要です。プライベートサブネットの開発エンドポイントに接続するには、まず SSH を使用して Bastion ホストに接続します。次に、SSH を使用して開発エンドポイントに接続します。

SSH を使用しても開発エンドポイントに接続できない場合は、SSH キーを確認してください。

SSH キー

次の手順は、SSH キーの問題をトラブルシューティングするためのものです。SSH を使用して開発エンドポイントに接続できない場合は、この記事の「ネットワーキング」のセクションを参照してください。

  1. プライベートキーに .pem 拡張子があることを確認します。たとえば、キーファイルが id_rsa の場合、名前を id_rsa.pem に変更します。プライベートキーに .pem 拡張子がない場合は、次のエラーが表示されます。「サーバーはパブリックキー認証のみを許可しているため、接続がブロックされました。ネットワーク管理者に連絡してください」。
  2. .ppk ファイルを .pem に変換できない場合は、「Windows および Linux で、.pem ファイルと .ppk ファイル間の変換を行うにはどうすればいいですか?」の手順に従ってください。
  3. 開発エンドポイントの作成に問題がある場合は、パブリックキーに空白や改行文字が含まれていないことを確認してください。PuTTYgen で生成されたパブリックキーには、多くの場合、これらの文字が含まれています。この問題を解決するには、パブリックキーをテキストエディタにコピーします。次に、空白と改行文字を削除します。これを行うと、SSH キー全体が 1 行になります。変更したキーを使用して、開発エンドポイントを作成します。