

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# EMR Studio를 통해 EMR Serverless에서 대화형 워크로드 실행
<a name="interactive-workloads"></a>

EMR Serverless 대화형 애플리케이션을 사용하면 EMR Studio에서 호스팅되는 노트북을 사용해 EMR Serverless에서 Spark에 대한 대화형 워크로드를 실행할 수 있습니다.

## 개요
<a name="interactive-overview"></a>

*대화형 애플리케이션*은 대화형 기능이 활성화된 EMR Serverless 애플리케이션입니다. Amazon EMR Serverless 대화형 애플리케이션을 사용하면 Amazon EMR Studio에서 관리하는 Jupyter Notebook을 사용하여 대화형 워크로드를 실행할 수 있습니다. 이를 통해 데이터 엔지니어, 데이터 과학자 및 데이터 분석가는 EMR Studio를 사용하여 Amazon S3 및 Amazon DynamoDB와 같은 데이터 저장소의 데이터세트로 대화형 분석을 실행할 수 있습니다.

EMR Serverless의 대화형 애플리케이션에 대한 사용 사례로 다음이 포함됩니다.
+ 데이터 엔지니어는 EMR Studio에서 IDE 환경을 사용하여 ETL 스크립트를 생성합니다. 스크립트는 온프레미스에서 데이터를 수집하고, 분석을 위해 데이터를 변환하며, Amazon S3에 데이터를 저장합니다.
+ 데이터 과학자는 노트북을 사용하여 데이터세트를 탐색하고 데이터세트에서 이상을 감지하도록 기계 학습(ML) 모델을 훈련합니다.
+ 데이터 분석가는 데이터세트를 탐색하고 비즈니스 대시보드와 같은 애플리케이션을 업데이트하기 위해 일일 보고서를 생성하는 스크립트를 생성합니다.

## 사전 조건
<a name="interactive-prereqs"></a>

EMR Serverless에서 대화형 워크로드를 사용하려면 다음 요구 사항을 충족합니다.
+ EMR Serverless 대화형 애플리케이션은 Amazon EMR 6.14.0 이상에서 지원됩니다.
+ 대화형 애플리케이션에 액세스하고, 제출하는 워크로드를 실행하며, EMR Studio에서 대화형 노트북을 실행하려면 특정 권한과 역할이 필요합니다. 자세한 정보는 [대화형 워크로드에 필요한 권한](#interactive-permissions) 섹션을 참조하세요.

## 대화형 워크로드에 필요한 권한
<a name="interactive-permissions"></a>

[EMR Serverless에 액세스하는 데 필요한 기본 권한](setting-up.md#setting-up-iam) 외에도 IAM 자격 증명 또는 역할에 대한 추가 권한을 구성합니다.

**대화형 애플리케이션에 액세스하는 방법**  
EMR Studio에 대한 사용자 및 워크스페이스 권한을 설정합니다. 자세한 내용은 **Amazon EMR 관리 안내서의 [인스턴스 플릿 구성](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-user-permissions.html)을 참조하세요.

**EMR Serverless에서 제출하는 워크로드를 실행하는 방법**  
작업 런타임 역할 설정. 자세한 정보는 [작업 런타임 역할 생성](getting-started.md#gs-runtime-role) 섹션을 참조하세요.

**EMR Studio에서 대화형 노트북을 실행하는 방법**  
다음 추가 권한을 EMR Studio 사용자의 IAM 정책에 추가합니다.  
+ **`emr-serverless:AccessInteractiveEndpoints`** - `Resource`로 지정한 대화형 애플리케이션에 액세스하고 연결할 수 있는 권한을 부여합니다. 이 권한은 EMR Studio Workspace에서 EMR Serverless 애플리케이션에 연결하는 데 필요합니다.
+ **`iam:PassRole`** - 애플리케이션에 연결할 때 사용할 IAM 실행 역할에 액세스할 수 있는 권한을 부여합니다. EMR Studio Workspace에서 EMR Serverless 애플리케이션에 연결하려면 적절한 `PassRole` 권한이 필요합니다.  
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "EMRServerlessInteractiveAccess",
      "Effect": "Allow",
      "Action": [
        "emr-serverless:AccessInteractiveEndpoints"
      ],
      "Resource": [
        "arn:aws:emr-serverless:*:123456789012:/applications/*"
      ]
    },
    {
      "Sid": "EMRServerlessRuntimeRoleAccess",
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/EMRServerlessInteractiveRole"
      ],
      "Condition": {
        "StringLike": {
          "iam:PassedToService": "emr-serverless.amazonaws.com"
        }
      }
    }
  ]
}
```

## 대화형 애플리케이션 구성
<a name="interactive-configure"></a>

다음의 개략적인 단계를 사용하여 AWS Management Console의 Amazon EMR Studio에서 대화형 기능을 통해 EMR Serverless 애플리케이션을 생성합니다.

1. [Amazon EMR Serverless 시작하기](getting-started.md)의 단계를 수행하여 애플리케이션을 생성합니다.

1. 그런 다음, EMR Studio에서 워크스페이스를 시작하고 컴퓨팅 옵션으로 EMR Serverless 애플리케이션에 연결합니다. 자세한 내용은 [EMR Serverless 시작하기](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/getting-started.html#gs-job-run-console) 설명서의 2단계에 있는 **대화형 워크로드** 탭을 참조하세요.

Studio Workspace에 애플리케이션을 연결하면 아직 실행되지 않은 경우 애플리케이션 시작이 자동으로 트리거됩니다. 애플리케이션을 사전에 시작하고 워크스페이스에 연결하기 전에 준비할 수도 있습니다.

## 대화형 애플리케이션에서의 고려 사항
<a name="interactive-considerations"></a>
+ EMR Serverless 대화형 애플리케이션은 Amazon EMR 6.14.0 이상에서 지원됩니다.
+ EMR Studio는 EMR Serverless 대화형 애플리케이션과 통합된 유일한 클라이언트입니다. 워크스페이스 협업, SQL 탐색기 및 노트북의 프로그래밍 방식 실행과 같은 EMR Studio 기능은 EMR Serverless 대화형 애플리케이션에서 지원되지 않습니다.
+ 대화형 애플리케이션은 Spark 엔진에서만 지원됩니다.
+ 대화형 애플리케이션은 Python 3, PySpark 및 Spark Scala 커널을 지원합니다.
+ 단일 대화형 애플리케이션에서 최대 25개의 동시 노트북을 실행할 수 있습니다.
+ 대화형 애플리케이션에서 자체 호스팅 Jupyter Notebook을 지원하는 엔드포인트 또는 API 인터페이스는 없습니다.
+ 최적화된 시작 환경을 위해 드라이버 및 실행기에 대해 사전 초기화된 용량을 구성하고 애플리케이션을 사전에 시작하는 것이 좋습니다. 애플리케이션을 사전에 시작하는 경우 워크스페이스에 연결할 준비가 되었는지 확인합니다.

  ```
  aws emr-serverless start-application \ 
  --application-id your-application-id
  ```
+ 기본적으로 `autoStopConfig`는 애플리케이션에 대해 활성화됩니다. 그러면 30분의 유휴 시간 후에 애플리케이션이 종료됩니다. `create-application` 또는 `update-application` 요청의 일부로 이 구성을 변경할 수 있습니다.
+ 대화형 애플리케이션을 사용하는 경우 노트북을 실행하도록 커널, 드라이버 및 실행기의 사전 초기화된 용량을 구성하는 것이 좋습니다. 각 Spark 대화형 세션에는 커널 하나와 드라이버 하나가 필요하므로 EMR Serverless는 사전 초기화된 모든 드라이버에 대해 사전 초기화된 커널 작업자를 유지 관리합니다. 기본적으로 EMR Serverless는 드라이버에 대해 사전 초기화된 용량을 지정하지 않더라도 전체 애플리케이션 전체에서 커널 작업자 1개의 사전 초기화된 용량을 유지 관리합니다. 각 커널 작업자는 4개의 vCPU와 16GB의 메모리를 사용합니다. 현재 요금 정보는 [Amazon EMR 요금](https://aws.amazon.com/emr/pricing/) 페이지를 참조하세요.
+ 대화형 워크로드를 실행 AWS 계정 하려면에 충분한 vCPU 서비스 할당량이 있어야 합니다. Lake Formation 지원 워크로드를 실행하지 않는 경우 최소 24개의 vCPU를 사용하는 것이 좋습니다. 이 경우 28개 이상의 vCPU를 사용하는 것이 좋습니다.
+ 60분 넘게 유휴 상태인 경우 EMR Serverless는 노트북에서 커널을 자동으로 종료합니다. EMR Serverless는 노트북 세션 중에 완료된 마지막 활동의 커널 유휴 시간을 계산합니다. 현재 커널 유휴 제한 시간 설정은 수정할 수 없습니다.
+ 대화형 워크로드로 Lake Formation을 활성화하려면 [EMR Serverless 애플리케이션을 생성](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/getting-started.html)할 때 `runtime-configuration` 객체의 `spark-defaults` 분류에 따라 `spark.emr-serverless.lakeformation.enabled` 구성을 `true`로 설정합니다. 자세한 내용은 [Amazon EMR에서 Lake Formation 활성화](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/emr-serverless-lf-enable.html#emr-serverless-lf-enable-config)를 참조하세요.

# Apache Livy 엔드포인트를 통해 EMR Serverless에서 대화형 워크로드 실행
<a name="interactive-workloads-livy-endpoints"></a>

Amazon EMR 릴리스 6.14.0 이상을 사용하면 EMR Serverless 애플리케이션을 생성할 때 Apache Livy 엔드포인트를 생성 및 활성화하고 자체 호스팅 노트북 또는 사용자 지정 클라이언트를 통해 대화형 워크로드를 실행할 수 있습니다. Apache Livy 엔드포인트는 다음과 같은 이점을 제공합니다.
+ Jupyter Notebook을 통해 Apache Livy 엔드포인트에 안전하게 연결하고 Apache Livy의 REST 인터페이스를 사용하여 Apache Spark 워크로드를 관리할 수 있습니다.
+ Apache Spark 워크로드의 데이터를 사용하는 대화형 웹 애플리케이션에 대해 Apache Livy REST API 작업을 사용합니다.

## 사전 조건
<a name="interactive-workloads-livy-endpoints-prereqs"></a>

EMR Serverless에서 Apache Livy 엔드포인트를 사용하려면 다음 요구 사항을 충족합니다.
+ [Amazon EMR Serverless 시작하기](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/getting-started.html)의 단계를 완료합니다.
+ Apache Livy 엔드포인트를 통해 대화형 워크로드를 실행하려면 특정 권한과 역할이 필요합니다. 자세한 내용은 [대화형 워크로드에 필요한 권한](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/interactive-workloads.html#interactive-permissions)을 참조하세요.

## 필수 권한
<a name="interactive-workloads-livy-endpoints-permissions"></a>

EMR Serverless에 액세스하는 데 필요한 권한 외에도 Apache Livy 엔드포인트에 액세스하고 애플리케이션을 실행하려면 IAM 역할에 다음 권한도 추가합니다.
+ `emr-serverless:AccessLivyEndpoints` - `Resource`로 지정한 Livy 지원 애플리케이션에 액세스하고 연결할 수 있는 권한을 부여합니다. Apache Livy 엔드포인트에서 사용할 수 있는 REST API 작업을 실행하려면 이 권한이 필요합니다.
+ `iam:PassRole` - Apache Livy 세션을 생성할 때 IAM 실행 역할에 액세스할 수 있는 권한을 부여합니다. EMR Serverless는 이 역할을 사용하여 워크로드를 실행합니다.
+ `emr-serverless:GetDashboardForJobRun` - Spark Live UI 및 드라이버 로그 링크를 생성할 수 있는 권한을 부여하고 Apache Livy 세션 결과의 일부로 로그에 대한 액세스를 제공합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "EMRServerlessInteractiveAccess",
      "Effect": "Allow",
      "Action": [
        "emr-serverless:AccessLivyEndpoints"
      ],
      "Resource": [
        "arn:aws:emr-serverless:*:123456789012:/applications/*"
      ]
    },
    {
      "Sid": "EMRServerlessRuntimeRoleAccess",
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/EMRServerlessExecutionRole"
      ],
      "Condition": {
        "StringLike": {
          "iam:PassedToService": "emr-serverless.amazonaws.com"
        }
      }
    },
    {
      "Sid": "EMRServerlessDashboardAccess",
      "Effect": "Allow",
      "Action": [
        "emr-serverless:GetDashboardForJobRun"
      ],
      "Resource": [
        "arn:aws:emr-serverless:*:123456789012:/applications/*"
      ]
    }
  ]
}
```

------

## 시작하기
<a name="interactive-workloads-livy-endpoints-getting-started"></a>

Apache Livy 지원 애플리케이션을 생성하고 실행하려면 다음 단계를 수행합니다.

1. Apache Livy 지원 애플리케이션을 생성하려면 다음 명령을 실행합니다.

   ```
    aws emr-serverless create-application \
   --name my-application-name \ 
   --type 'application-type' \
    --release-label <Amazon EMR-release-version>
   --interactive-configuration '{"livyEndpointEnabled": true}'
   ```

1. EMR Serverless에서 애플리케이션을 생성한 후 애플리케이션을 시작하여 Apache Livy 엔드포인트를 사용할 수 있도록 합니다.

   ```
    aws emr-serverless start-application \
    --application-id application-id
   ```

   다음 명령을 사용하여 애플리케이션의 상태를 확인합니다. `STARTED` 상태가 되면 Apache Livy 엔드포인트에 액세스합니다.

   ```
   aws emr-serverless get-application \
   --region <AWS_REGION> --application-id >application_id>
   ```

1. 다음 URL을 사용하여 엔드포인트에 액세스합니다.

   ```
   https://_<application-id>_.livy.emr-serverless-services._<AWS_REGION>_.amazonaws.com
   ```

엔드포인트가 준비되면 사용 사례에 따라 워크로드를 제출합니다. [SIGv4 프로토콜](https://docs.aws.amazon.com/IAM/latest/UserGuide/create-signed-request.html)을 사용하여 엔드포인트에 대한 모든 요청에 서명하고 권한 부여 헤더에서 전달해야 합니다. 다음 방법을 사용하여 워크로드를 실행할 수 있습니다.
+ HTTP 클라이언트 - 사용자 지정 HTTP 클라이언트를 사용하여 Apache Livy 엔드포인트 API 작업을 제출합니다.
+ Sparkmagic 커널 - sparkmagic 커널을 로컬로 실행하고 Jupyter Notebook에서 대화형 쿼리를 제출합니다.

### HTTP 클라이언트
<a name="interactive-workloads-livy-endpoints-getting-started-http"></a>

Apache Livy 세션을 생성하려면 요청 본문의 `conf` 파라미터에서 `emr-serverless.session.executionRoleArn`을 제출합니다. 다음 예제는 `POST /sessions` 요청 샘플입니다.

```
{    
    "kind": "pyspark",
    "heartbeatTimeoutInSecond": 60, 
    "conf": {
        "emr-serverless.session.executionRoleArn": "<executionRoleArn>"
    }
}
```

다음 표에서는 사용 가능한 모든 Apache Livy API 작업을 설명합니다.


| API 작업 | 설명 | 
| --- | --- | 
| GET /sessions | 모든 활성 대화형 세션의 목록을 반환합니다. | 
| POST /sessions | spark 또는 pyspark를 통해 새 대화형 세션을 생성합니다. | 
| GET /sessions/<sessionId> | 세션 정보를 반환합니다. | 
| GET /sessions/<sessionId>/state | 세션 상태를 반환합니다. | 
| DELETE /sessions/<sessionId> | 세션을 중지하고 삭제합니다. | 
| GET /sessions/<sessionId>/statements | 세션의 모든 명령문을 반환합니다. | 
| POST /sessions/<sessionId>/statements | 세션에서 명령문을 실행합니다. | 
| GET /sessions/<sessionId>/statements/<statementId> | 세션에서 지정된 명령문의 세부 정보를 반환합니다. | 
| POST /sessions/<sessionId>/statements/<statementId>/cancel | 이 세션에서 지정된 명령문을 취소합니다. | 

#### Apache Livy 엔드포인트로 요청 전송
<a name="interactive-workloads-livy-endpoints-getting-started-http-send-requests"></a>

HTTP 클라이언트에서 Apache Livy 엔드포인트로 직접 요청을 전송할 수도 있습니다. 그러면 노트북 외부에서 사용 사례에 대한 코드를 원격으로 실행할 수 있습니다.

엔드포인트로 요청 전송을 시작하기 전에 다음 라이브러리를 설치했는지 확인합니다.

```
pip3 install botocore awscrt requests
```

다음은 HTTP 요청을 엔드포인트로 직접 전송하는 Python 스크립트 샘플입니다.

```
from botocore import crt
import requests 
from botocore.awsrequest import AWSRequest
from botocore.credentials import Credentials
import botocore.session
import json, pprint, textwrap

endpoint = 'https://<application_id>.livy.emr-serverless-services.<AWS_REGION>.amazonaws.com'
headers = {'Content-Type': 'application/json'}

session = botocore.session.Session()
signer = crt.auth.CrtS3SigV4Auth(session.get_credentials(), 'emr-serverless', '<AWS_REGION>')


### Create session request

data = {'kind': 'pyspark', 'heartbeatTimeoutInSecond': 60, 'conf': { 'emr-serverless.session.executionRoleArn': 'arn:aws:iam::123456789012:role/role1'}}

request = AWSRequest(method='POST', url=endpoint + "/sessions", data=json.dumps(data), headers=headers)

request.context["payload_signing_enabled"] = False

signer.add_auth(request)

prepped = request.prepare()

r = requests.post(prepped.url, headers=prepped.headers, data=json.dumps(data))

pprint.pprint(r.json())


### List Sessions Request

request = AWSRequest(method='GET', url=endpoint + "/sessions", headers=headers)

request.context["payload_signing_enabled"] = False

signer.add_auth(request)

prepped = request.prepare()

r2 = requests.get(prepped.url, headers=prepped.headers)
pprint.pprint(r2.json())


### Get session state

session_url = endpoint + r.headers['location']

request = AWSRequest(method='GET', url=session_url, headers=headers)

request.context["payload_signing_enabled"] = False

signer.add_auth(request)

prepped = request.prepare()

r3 = requests.get(prepped.url, headers=prepped.headers)

pprint.pprint(r3.json())


### Submit Statement

data = {
      'code': "1 + 1"
}

statements_url = endpoint + r.headers['location'] + "/statements"

request = AWSRequest(method='POST', url=statements_url, data=json.dumps(data), headers=headers)

request.context["payload_signing_enabled"] = False

signer.add_auth(request)

prepped = request.prepare()

r4 = requests.post(prepped.url, headers=prepped.headers, data=json.dumps(data))

pprint.pprint(r4.json())

### Check statements results

specific_statement_url = endpoint + r4.headers['location']

request = AWSRequest(method='GET', url=specific_statement_url, headers=headers)

request.context["payload_signing_enabled"] = False

signer.add_auth(request)

prepped = request.prepare()

r5 = requests.get(prepped.url, headers=prepped.headers)

pprint.pprint(r5.json())


### Delete session


session_url = endpoint + r.headers['location']

request = AWSRequest(method='DELETE', url=session_url, headers=headers)

request.context["payload_signing_enabled"] = False

signer.add_auth(request)

prepped = request.prepare()

r6 = requests.delete(prepped.url, headers=prepped.headers)

pprint.pprint(r6.json())
```

### Sparkmagic 커널
<a name="interactive-workloads-livy-endpoints-getting-started-sparkmagic"></a>

sparkmagic을 설치하기 전에 sparkmagic을 설치하려는 인스턴스에 AWS 자격 증명을 구성했는지 확인합니다.

1. [설치 단계](https://github.com/jupyter-incubator/sparkmagic?tab=readme-ov-file#installation)에 따라 sparkmagic을 설치합니다. 처음 4단계만 수행하면 됩니다.

1. sparkmagic 커널은 사용자 지정 인증자를 지원하므로, 모든 요청이 SIGv4로 서명되도록 인증자를 sparkmagic 커널과 통합할 수 있습니다.

1. EMR Serverless 사용자 지정 인증자를 설치합니다.

   ```
   pip install emr-serverless-customauth
   ```

1. 이제 sparkmagic 구성 json 파일에 사용자 지정 인증자 및 Apache Livy 엔드포인트 URL의 경로를 제공합니다. 다음 명령을 사용하여 구성 파일을 엽니다.

   ```
   vim ~/.sparkmagic/config.json
   ```

   다음은 샘플 `config.json` 파일입니다.

   ```
   {
   "kernel_python_credentials" : {
       "username": "",
       "password": "",
       "url": "https://<application-id>.livy.emr-serverless-services.<AWS_REGION>.amazonaws.com",
       "auth": "Custom_Auth"
     },
   
     "kernel_scala_credentials" : {
       "username": "",
       "password": "",
       "url": "https://<application-id>.livy.emr-serverless-services.<AWS_REGION>.amazonaws.com",
       "auth": "Custom_Auth"
     },
     "authenticators": {
       "None": "sparkmagic.auth.customauth.Authenticator",
       "Basic_Access": "sparkmagic.auth.basic.Basic",
       "Custom_Auth": "emr_serverless_customauth.customauthenticator.EMRServerlessCustomSigV4Signer"
     },
     "livy_session_startup_timeout_seconds": 600,
     "ignore_ssl_errors": false
   }
   ```

1. Jupyter 랩을 시작합니다. 마지막 단계에서 설정한 사용자 지정 인증을 사용해야 합니다.

1. 그리고 다음 노트북 명령과 코드를 실행하여 시작할 수 있습니다.

   ```
   %%info //Returns the information about the current sessions.
   ```

   ```
   %%configure -f //Configure information specific to a session. We supply executionRoleArn in this example. Change it for your use case.
   {
       "driverMemory": "4g",
       "conf": {
             "emr-serverless.session.executionRoleArn": "arn:aws:iam::123456789012:role/JobExecutionRole"
       }
   }
   ```

   ```
   <your code>//Run your code to start the session
   ```

내부적으로 각 명령은 구성된 Apache Livy 엔드포인트 URL을 통해 각 Apache Livy API 작업을 직접 호출합니다. 그런 다음, 사용 사례에 따라 지침을 작성할 수 있습니다.

## 고려 사항
<a name="interactive-workloads-livy-endpoints-considerations"></a>

Apache Livy 엔드포인트를 통해 대화형 워크로드를 실행하는 경우 다음 사항을 고려합니다.
+ EMR Serverless는 직접 호출자 위탁자를 사용하여 세션 수준 격리를 유지 관리합니다. 세션을 생성하는 직접 호출자 위탁자는 해당 세션에 액세스할 수 있는 유일한 위탁자입니다. 보다 세분화된 격리를 위해 자격 증명을 가정할 때 소스 자격 증명을 구성할 수 있습니다. 이 경우 EMR Serverless는 직접 호출자 위탁자와 소스 자격 증명을 기반으로 세션 수준 격리를 적용합니다. 소스 자격 증명에 대한 자세한 내용은 [위임된 역할로 수행한 작업 모니터링 및 제어](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor.html#id_credentials_temp_control-access_monitor-specify-sourceid)를 참고하세요.
+ Apache Livy 엔드포인트는 EMR Serverless 릴리스 6.14.0 이상에서 지원됩니다.
+ Apache Livy 엔드포인트는 Apache Spark 엔진에서만 지원됩니다.
+ Apache Livy 엔드포인트는 Scala Spark 및 PySpark를 지원합니다.
+ 기본적으로 `autoStopConfig`는 애플리케이션에서 활성화됩니다. 즉, 15분의 유휴 상태 이후에 애플리케이션이 종료됩니다. `create-application` 또는 `update-application` 요청의 일부로 이 구성을 변경할 수 있습니다.
+ 단일 Apache Livy 엔드포인트 지원 애플리케이션에서 최대 25개의 동시 세션을 실행할 수 있습니다.
+ 최상의 시작 경험을 위해 드라이버 및 실행기에 대해 사전 초기화된 용량을 구성하는 것이 좋습니다.
+ Apache Livy 엔드포인트에 연결하기 전에 애플리케이션을 수동으로 시작해야 합니다.
+ Apache Livy 엔드포인트를 사용하여 대화형 워크로드를 실행 AWS 계정 하려면에 충분한 vCPU 서비스 할당량이 있어야 합니다. 최소 24개의 vCPU를 권장합니다.
+ 기본 Apache Livy 세션의 제한 시간은 1시간입니다. 명령문을 1시간 동안 실행하지 않으면 Apache Livy는 세션을 삭제하고 드라이버 및 실행기를 해제합니다. 릴리스 emr-7.8.0부터는 `2h`(시간), `120m`(분), `7200s`(초), `7200000ms`(밀리초)와 같이 `ttl` 파라미터를 Livy `/sessions POST` 요청의 일부로 지정하여 이 값을 설정할 수 있습니다.
**참고**  
emr-7.8.0 이전의 경우 이 구성을 변경할 수 없습니다. 다음은 `POST /sessions` 요청 본문입니다.

  ```
  {    
      "kind": "pyspark",
      "heartbeatTimeoutInSecond": 60, 
      "conf": {
          "emr-serverless.session.executionRoleArn": "executionRoleArn"
      },
      "ttl": "2h"
  }
  ```
+ Amazon EMR 릴리스 emr-7.8.0부터 Lake Formation을 통한 세분화된 접근 제어 기능을 지원하는 애플리케이션의 경우, 세션별로 해당 설정을 비활성화할 수 있습니다. EMR Serverless 애플리케이션에 대한 세분화된 액세스 제어를 활성화하는 방법에 대한 자세한 내용은 [세분화된 액세스 제어 방법](emr-serverless-lf-enable.html#emr-serverless-lf-enable-config)을 참조하세요.
**참고**  
애플리케이션에 대해 Lake Formation이 활성화되지 않은 경우 세션에 대해 활성화할 수 없습니다. 다음은 `POST /sessions` 요청 본문입니다.

  ```
  {    
      "kind": "pyspark",
      "heartbeatTimeoutInSecond": 60, 
      "conf": {
          "emr-serverless.session.executionRoleArn": "executionRoleArn"
      },
      "spark.emr-serverless.lakeformation.enabled" : "false"
  }
  ```
+ 활성 세션만 Apache Livy 엔드포인트와 상호 작용할 수 있습니다. 세션이 완료, 취소 또는 종료되면 Apache Livy 엔드포인트를 통해 액세스할 수 없습니다.