

# インターフェイス VPC エンドポイントを使用して Amazon Spark セッションに接続する
<a name="athena-spark-vpc-endpoint"></a>

[Apache Spark バージョン 3.5](https://docs.aws.amazon.com/athena/latest/ug/notebooks-spark-release-versions.html#notebooks-spark-release-versions-spark-35) を使用するワークグループの場合、インターネット経由で接続するのではなく、Virtual Private Cloud (VPC) のインターフェイス VPC エンドポイント (AWS PrivateLink) を使用して Athena Spark セッションに直接接続できます。インターフェイス VPC エンドポイントを使用すると、VPC と Athena Spark セッションエンドポイントの間の通信のすべてが AWS ネットワーク内で行われます。

各 VPC エンドポイントは、VPC サブネット内のプライベート IP アドレスを持つ 1 つ以上の Elastic Network Interfaces (ENI) で表されます。VPC の ENI は、パブリック IP アドレスがなくても Athena Spark セッションエンドポイントと通信できます。

VPC 経由で Athena Spark セッションエンドポイントを使用するには、VPC 内にあるインスタンスから接続するか、(Site-to-Site VPN) または AWS Direct Connect を使用してプライベートネットワークを VPC に接続する必要があります。

## サポートされているエンドポイント
<a name="athena-spark-vpc-endpoint-supported"></a>

次の Athena Spark セッションエンドポイントは、AWS PrivateLink を介したプライベートアクセスをサポートしています。


****  

| Endpoint | 説明 | サービス名 | 
| --- | --- | --- | 
| Spark Connect | リモート Spark ワークロード実行用の gRPC エンドポイント | com.amazonaws.{{region}}.athena.sessions | 
| ライブ UI | ブラウザベースのリアルタイム Spark タスクモニタリング | com.amazonaws.{{region}}.athena.dashboard | 
| 永続 UI | 完了したセッションの Spark History Server | com.amazonaws.{{region}}.athena.persistent-dashboard | 

## 考慮事項
<a name="athena-spark-vpc-endpoint-considerations"></a>
+ セッションエンドポイント URL に VPC 内からのみアクセスできるようにするには、Athena API VPC エンドポイントを介して `GetSessionEndpoint` (Spark Connect) または `GetResourceDashboard` (ライブ UI と永続 UI) を呼び出す必要があります。Athena は元の VPC をアクセストークンに埋め込み、エンドポイントが同じ VPC からアクセスされることを強制します。
+ VPC 内から生成されたセッションエンドポイント URL には、同じ VPC またはパブリックインターネットからアクセスできますが、別の VPC からはアクセスできません。これにより、VPC 内からプログラムでトークンが生成され、生成されたダッシュボード URL がローカルブラウザで開かれる一般的なワークフローがサポートされます。
+ パブリックインターネットから生成されたセッションエンドポイント URL は、VPC 内からアクセスできません。
+ VPC エンドポイントポリシーは、Athena Spark Connect、Live UI、または永続 UI エンドポイントではサポートされていません。
+ VPC エンドポイントポリシーは Athena API エンドポイントでサポートされます。Athena API エンドポイントを呼び出すことができる IAM プリンシパルを制御するには、VPC エンドポイントポリシーを Athena API VPC エンドポイント (`com.amazonaws.{{region}}.athena`) に適用します。

## Athena Spark セッションエンドポイントの VPC エンドポイントを作成する
<a name="athena-spark-vpc-endpoint-create"></a>

AWS マネジメントコンソール または AWS CLI を使用して VPC エンドポイントを作成できます。

AWS CLI を使用してエンドポイントを作成するには:

```
aws ec2 create-vpc-endpoint \
  --vpc-id <your-vpc-id> \
  --service-name com.amazonaws.<region>.athena.sessions \
  --vpc-endpoint-type Interface \
  --subnet-ids <subnet-id> \
  --security-group-ids <security-group-id> \
  --private-dns-enabled
```

エンドポイントを作成してプライベート DNS を有効にすると、Spark Connect セッション URL は VPC エンドポイントに自動的に解決されます。SparkConnect クライアント設定に変更を加える必要はありません。詳細については、「*AWS PrivateLink ドキュメント*」の「[インターフェイスエンドポイントの作成](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)」を参照してください。

## Athena Spark セッションエンドポイントの VPC エンドポイントポリシーを作成する
<a name="athena-spark-vpc-endpoint-policy"></a>

VPC エンドポイントポリシーは、Athena Spark Connect、Live UI、または永続 UI エンドポイントではサポートされていません。

アクセスを制御するには、VPC エンドポイントポリシーを Athena API エンドポイント (`com.amazonaws.{{region}}.athena`) にアタッチします。セッションエンドポイント URL は生成された VPC にバインドされるため、API エンドポイントを介して `GetSessionEndpoint` または `GetResourceDashboard` を呼び出すことができるユーザーを制御することで、対応するセッションエンドポイントへのアクセスを効果的に制御できます。

詳細については、「[VPC エンドポイントによるサービスのアクセスコントロール](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)」を参照してください。

次の例では、特定の IAM ロールのみがセッションエンドポイント URL を生成できます。

```
{
  "Statement": [
    {
      "Action": [
        "athena:GetSessionEndpoint",
        "athena:GetResourceDashboard"
      ],
      "Effect": "Allow",
      "Resource": "*",
      "Principal": {
        "AWS": "arn:aws:iam::<account-id>:role/<role-name>"
      }
    }
  ]
}
```