

# 인터페이스 VPC 엔드포인트를 사용하여 Athena 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)를 사용하는 워크그룹의 경우 인터넷을 통해 연결하는 대신 가상 프라이빗 클라우드(VPC) 내의 인터페이스 VPC 엔드포인트(AWS PrivateLink)를 사용하여 Athena Spark 세션에 직접 연결할 수 있습니다. 인터페이스 VPC 엔드포인트를 사용하는 경우 VPC와 Athena Spark 세션 엔드포인트 사이의 통신은 모두 AWS 네트워크에서 수행됩니다.

각 VPC 엔드포인트는 하나 이상의 탄력적 네트워크 인터페이스(ENI) 및 VPC 서브넷의 프라이빗 IP 주소로 표현됩니다. 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를 통한 프라이빗 액세스를 지원합니다.


****  

| 엔드포인트 | 설명 | 서비스 이름 | 
| --- | --- | --- | 
| Spark Connect | 원격 Spark 워크로드 실행을 위한 gRPC 엔드포인트 | com.amazonaws.{{region}}.athena.sessions | 
| Live UI | 브라우저 기반 실시간 Spark 태스크 모니터링 | com.amazonaws.{{region}}.athena.dashboard | 
| 영구 UI | 완료된 세션을 위한 Spark 기록 서버 | com.amazonaws.{{region}}.athena.persistent-dashboard | 

## 고려 사항
<a name="athena-spark-vpc-endpoint-considerations"></a>
+ VPC 내에서만 세션 엔드포인트 URL에 액세스할 수 있게 하려면 Athena API VPC 엔드포인트를 통해 `GetSessionEndpoint`(Spark Connect) 또는 `GetResourceDashboard`(Live UI 및 Persistent UI)를 직접적으로 호출해야 합니다. Athena는 액세스 토큰에 원래 VPC를 포함하고 동일한 VPC에서만 엔드포인트에 액세스하도록 제한합니다.
+ VPC 내에서 생성된 세션 엔드포인트 URL은 동일한 VPC 또는 퍼블릭 인터넷에서 액세스할 수 있지만 다른 VPC에서는 액세스할 수 없습니다. VPC 내에서 프로그래밍 방식으로 토큰이 생성되고 결과 대시보드 URL이 로컬 브라우저에서 열리는 일반적인 워크플로를 지원합니다.
+ 퍼블릭 인터넷에서 생성된 세션 엔드포인트 URL은 VPC 내에서 액세스할 수 없습니다.
+ Athena Spark Connect, Live UI 또는 Persistent UI 엔드포인트에서 VPC 엔드포인트 정책이 지원되지 않습니다.
+ VPC 엔드포인트 정책은 Athena API 엔드포인트에서 지원됩니다. Athena API 엔드포인트를 간접적으로 호출할 수 있는 IAM 위탁자를 제어하려면 Athena API VPC 엔드포인트(`com.amazonaws.{{region}}.athena`)에 VPC 엔드포인트 정책을 적용합니다.

## Athena Spark 세션 엔드포인트를 위한 VPC 엔드포인트 생성
<a name="athena-spark-vpc-endpoint-create"></a>

AWS Management Console 또는 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>

Athena Spark Connect, Live UI 또는 Persistent UI 엔드포인트에서 VPC 엔드포인트 정책이 지원되지 않습니다.

액세스를 제어하려면 Athena API 엔드포인트(`com.amazonaws.{{region}}.athena`)에 VPC 엔드포인트 정책을 연결하세요. 세션 엔드포인트 URL은 해당 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>"
      }
    }
  ]
}
```