

# CEV 생성
<a name="custom-cev.create"></a>

AWS Management Console 또는 AWS CLI를 사용하여 CEV를 생성할 수 있습니다. 멀티테넌트 또는 비 멀티테넌트 아키텍처를 지정합니다. 자세한 내용은 [멀티테넌트 아키텍처 고려 사항](custom-creating.md#custom-creating.overview) 단원을 참조하십시오.

일반적으로 CEV 생성에는 약 2시간이 소요됩니다. CEV를 만든 후 이를 사용하여 RDS Custom DB 인스턴스를 만들 수 있습니다. 자세한 내용은 [RDS Custom for Oracle DB 인스턴스 생성](custom-creating.md#custom-creating.create) 및 [RDS Custom for Oracle DB 인스턴스 업그레이드](custom-upgrading-modify.md) 단원을 참조하세요.

**참고**  
DB 인스턴스가 현재 Oracle Linux 7.9를 사용하는 경우 Oracle Linux 8을 사용하는 최신 AMI를 사용하는 새 CEV를 만듭니다. 그런 다음 새 CEV를 사용하도록 인스턴스를 수정합니다.

CEV 생성에 대해 다음과 같은 요구 사항 및 제한 사항에 유의합니다.
+ 단, 설치 파일이 포함된 Amazon S3 버킷이 CEV와 동일한 AWS 리전에 있어야 하며, 그렇지 않으면 생성 프로세스가 실패합니다.
+ CEV 이름은 `major-engine-version.customized_string`과 같은 `19.cdb_cev1` 형식이어야 합니다.
+ CEV 이름은 1\$150개의 영숫자, 밑줄, 대시 또는 마침표를 포함해야 합니다.
+ CEV 이름에는 `19..cdb_cev1`에서와 같이 연속된 마침표를 포함할 수 없습니다.

## 콘솔
<a name="custom-cev.create.console"></a>

**CEV를 생성하는 방법**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 AWS Management Console에 로그인한 후 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **사용자 지정 엔진 버전(Custom engine versions)**을 선택합니다.

   **사용자 지정 엔진 버전(Custom engine versions)** 페이지에는 현재 존재하는 모든 CEV가 표시됩니다. CEV를 생성한 적이 없으면 페이지가 비어 있습니다.

1. **사용자 지정 엔진 버전 생성(Create custom engine version)**을 선택합니다.

1. **엔진 옵션**에서 다음을 수행합니다.

   1. **엔진 유형(Engine type)**으로 **Oracle**을 선택합니다.

   1. **아키텍처 설정**에서 필요에 따라 **멀티테넌트 아키텍처**를 선택하여 DB 엔진 `custom-oracle-ee-cdb` 또는 `custom-oracle-se2-cdb`를 사용하는 Oracle 멀티테넌트 CEV를 생성합니다. 멀티테넌트 CEV가 있는 RDS Custom for Oracle CDB만 생성할 수 있습니다. 이 옵션을 선택하지 않는 경우 CEV는 엔진 `custom-oracle-ee` 또는 `custom-oracle-se2`를 사용하는 비CDB입니다.
**참고**  
선택한 아키텍처는 CEV의 영구적인 특성입니다. 나중에 다른 아키텍처를 사용하도록 CEV를 수정할 수 없습니다.

   1. 다음 옵션 중 하나를 선택합니다.
      + **새 CEV 생성** - 처음부터 CEV를 생성합니다. 이 경우 데이터베이스 바이너리를 지정하는 JSON 매니페스트를 지정해야 합니다.
      + **소스에서 CEV 생성** - **복사할 CEV 지정**에서 소스 CEV로 사용할 기존 CEV를 선택합니다. 이 경우 새 Amazon Machine Image(AMI)를 지정할 수 있지만 다른 데이터베이스 바이너리를 지정할 수는 없습니다.

   1. **엔진 버전**에서 메이저 엔진 버전을 선택합니다.

1. **버전 세부 정보**에서 다음을 수행합니다.

   1. **사용자 지정 엔진 버전 이름**에 유효한 이름을 입력합니다. 예를 들어, **19.cdb\$1cev1**을 이름으로 입력할 수 있습니다.

   1. (선택 사항) CEV에 대한 설명을 입력합니다.

1. **설치 미디어**에서 다음을 수행합니다.

   1. (선택 사항) **AMI ID**의 경우 필드를 비워 최신 서비스 제공 AMI를 사용하거나 이전에 CEV를 생성할 때 사용한 AMI를 입력합니다. 유효한 AMI ID를 가져오려면 다음 방법 중 하나를 사용합니다.
      + 콘솔의 왼쪽 탐색 창에서 **사용자 지정 엔진 버전**을 선택하고 CEV 이름을 선택합니다. CEV에서 사용하는 AMI ID는 **구성** 탭에 표시됩니다.
      + AWS CLI에서 `describe-db-engine-versions` 명령을 사용합니다. `ImageID`에 대한 출력을 검색합니다.

   1. **매니페스트 파일의 S3 위치(S3 location of manifest files)**에서 [3단계: Amazon S3에 설치 파일 업로드](custom-cev.preparing.md#custom-cev.preparing.s3)에 지정한 대로 Amazon S3 버킷의 위치를 입력합니다. 예를 들면 **s3://my-custom-installation-files/123456789012/cev1/**를(을) 입력합니다.
**참고**  
CEV를 생성하는 AWS 리전은 S3 버킷과 동일한 리전이어야 합니다.

   1. (새 CEV 생성의 경우만 해당) **CEV 매니페스트**의 경우 [CEV 매니페스트 생성](custom-cev.preparing.md#custom-cev.preparing.manifest.creating)에서 생성한 JSON 매니페스트를 입력합니다.

1. **KMS 키** 섹션에서 **키 ARN 입력**을 선택하여 사용 가능한 AWS KMS 키를 나열합니다. 그런 다음 목록에서 KMS 키를 선택합니다.

   AWS KMS 키는 RDS Custom에 필수입니다. 자세한 내용은 [1단계: 대칭 암호화 AWS KMS 키 생성 또는 재사용](custom-setup-orcl.md#custom-setup-orcl.cmk) 단원을 참조하십시오.

1. (선택 사항) **새 태그 추가**를 선택하여 CEV의 키-값 페어를 생성합니다.

1. **Create custom engine version**(사용자 지정 엔진 버전 생성)을 선택합니다.

   JSON 매니페스트의 형식이 잘못되면 콘솔에 **CEV 매니페스트를 검증하는 중 오류 발생** 메시지가 표시됩니다. 문제를 해결한 후 다시 시도해 주세요.

**사용자 지정 엔진 버전(Custom engine versions)** 페이지가 표시됩니다. CEV가 상태가 **생성 중(Creating)**으로 표시됩니다. CEV를 생성하는 데 약 2시간이 소요됩니다.

## AWS CLI
<a name="custom-cev.create.CEV"></a>

AWS CLI를 사용하여 CEV를 생성하려면 [create-custom-db-engine-version](https://docs.aws.amazon.com/cli/latest/reference/rds/create-custom-db-engine-version.html) 명령을 실행합니다.

다음 옵션이 필요합니다.
+ `--engine` - 엔진 유형을 지정합니다. CDB에서 `custom-oracle-ee-cdb` 또는 `custom-oracle-se2-cdb`를 지정합니다. 비CDB에서 `custom-oracle-ee` 또는 `custom-oracle-se2`를 지정합니다. CDB는 `custom-oracle-ee-cdb` 또는 `custom-oracle-se2-cdb`로 생성한 CEV에서만 생성할 수 있습니다. 비CDB는 `custom-oracle-ee` 또는 `custom-oracle-se2`로 생성한 CEV에서만 생성할 수 있습니다.
+ `--engine-version` - 엔진 버전을 지정합니다. 형식은 *major-engine-version*.*customized\$1string*입니다. CEV 이름은 1\$150개의 영숫자, 밑줄, 대시 또는 마침표를 포함해야 합니다. CEV 이름에는 `19..cdb_cev1`에서와 같이 연속된 마침표를 포함할 수 없습니다.
+ `--kms-key-id` - AWS KMS key을 지정합니다.
+ `--manifest` - `manifest_json_string` 또는 `--manifest file:file_name`을 지정합니다. `manifest_json_string`에서 줄 바꿈 문자는 허용되지 않습니다. 백슬래시(\$1)를 접두사에 부여하여 JSON 코드에서 큰 따옴표(")를 이스케이프해야 합니다.

  다음 예제에서는 [5단계: CEV 매니페스트 준비](custom-cev.preparing.md#custom-cev.preparing.manifest)의 19c에 대한 `manifest_json_string`을 보여줍니다. 이 예제에는 Oracle base, Oracle home, UNIX/Linux 사용자 및 그룹의 ID와 이름의 새 값을 설정합니다. 이 문자열을 복사하는 경우 명령에 붙여넣기 전에 모든 줄 바꿈 문자를 삭제하세요.

  `"{\"mediaImportTemplateVersion\": \"2020-08-14\",\"databaseInstallationFileNames\": [\"V982063-01.zip\"],\"opatchFileNames\": [\"p6880880_190000_Linux-x86-64.zip\"],\"psuRuPatchFileNames\": [\"p32126828_190000_Linux-x86-64.zip\"],\"otherPatchFileNames\": [\"p29213893_1910000DBRU_Generic.zip\",\"p29782284_1910000DBRU_Generic.zip\",\"p28730253_190000_Linux-x86-64.zip\",\"p29374604_1910000DBRU_Linux-x86-64.zip\",\"p28852325_190000_Linux-x86-64.zip\",\"p29997937_190000_Linux-x86-64.zip\",\"p31335037_190000_Linux-x86-64.zip\",\"p31335142_190000_Generic.zip\"]\"installationParameters\":{ \"unixGroupName\":\"dba\", \ \"unixUname\":\"oracle\", \ \"oracleHome\":\"/home/oracle/oracle.19.0.0.0.ru-2020-04.rur-2020-04.r1.EE.1\", \ \"oracleBase\":\"/home/oracle/\"}}"`
+ `--database-installation-files-s3-bucket-name` - [3단계: Amazon S3에 설치 파일 업로드](custom-cev.preparing.md#custom-cev.preparing.s3)에서 지정한 것과 동일한 버킷 이름을 지정합니다. `create-custom-db-engine-version`을 실행하는 AWS 리전은 Amazon S3 버킷과 동일한 리전이어야 합니다.

다음 옵션도 지정할 수 있습니다.
+ `--description` - CEV에 대한 설명을 지정합니다.
+ `--database-installation-files-s3-prefix` - [3단계: Amazon S3에 설치 파일 업로드](custom-cev.preparing.md#custom-cev.preparing.s3)에서 지정한 폴더 이름을 지정합니다.
+ `--image-id` - 재사용할 AMI ID를 지정합니다. 유효한 ID를 찾으려면 `describe-db-engine-versions` 명령을 실행한 다음 `ImageID`의 출력을 검색하세요. 기본적으로 RDS Custom for Oracle은 가장 최신 AMI를 사용합니다.

다음 예시에서는 `19.cdb_cev1`이라는 Oracle 멀티테넌트 CEV를 생성합니다. 예제에서는 사용 가능한 최신 AMI를 사용하는 대신 기존 AMI를 재사용합니다. CEV의 이름이 주요 엔진 버전 번호로 시작하는지 확인하세요.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
1. aws rds create-custom-db-engine-version \
2.     --engine custom-oracle-se2-cdb \
3.     --engine-version 19.cdb_cev1 \
4.     --database-installation-files-s3-bucket-name us-east-1-123456789012-custom-installation-files \
5.     --database-installation-files-s3-prefix 123456789012/cev1 \
6.     --kms-key-id my-kms-key \
7.     --description "test cev" \
8.     --manifest manifest_string \
9.     --image-id ami-012a345678901bcde
```
Windows의 경우:  

```
1. aws rds create-custom-db-engine-version ^
2.     --engine custom-oracle-se2-cdb ^
3.     --engine-version 19.cdb_cev1 ^
4.     --database-installation-files-s3-bucket-name us-east-1-123456789012-custom-installation-files ^
5.     --database-installation-files-s3-prefix 123456789012/cev1 ^
6.     --kms-key-id my-kms-key ^
7.     --description "test cev" ^
8.     --manifest manifest_string ^
9.     --image-id ami-012a345678901bcde
```

**Example**  
`describe-db-engine-versions` 명령을 사용하여 CEV에 대한 세부 정보를 확인합니다.  

```
1. aws rds describe-db-engine-versions \
2.     --engine custom-oracle-se2-cdb \
3.     --include-all
```
다음 부분 샘플 출력은 엔진, 파라미터 그룹, 매니페스트 및 기타 정보를 보여줍니다.  

```
 1. {
 2.     "DBEngineVersions": [
 3.         {
 4.             "Engine": "custom-oracle-se2-cdb",
 5.             "EngineVersion": "19.cdb_cev1",
 6.             "DBParameterGroupFamily": "custom-oracle-se2-cdb-19",
 7.             "DBEngineDescription": "Containerized Database for Oracle Custom SE2",
 8.             "DBEngineVersionDescription": "test cev",
 9.             "Image": {
10.                 "ImageId": "ami-012a345678901bcde",
11.                 "Status": "active"
12.             },
13.             "ValidUpgradeTarget": [],
14.             "SupportsLogExportsToCloudwatchLogs": false,
15.             "SupportsReadReplica": true,
16.             "SupportedFeatureNames": [],
17.             "Status": "available",
18.             "SupportsParallelQuery": false,
19.             "SupportsGlobalDatabases": false,
20.             "MajorEngineVersion": "19",
21.             "DatabaseInstallationFilesS3BucketName": "us-east-1-123456789012-custom-installation-files",
22.             "DatabaseInstallationFilesS3Prefix": "123456789012/cev1",
23.             "DBEngineVersionArn": "arn:aws:rds:us-east-1:123456789012:cev:custom-oracle-se2-cdb/19.cdb_cev1/abcd12e3-4f5g-67h8-i9j0-k1234l56m789",
24.             "KMSKeyId": "arn:aws:kms:us-east-1:732027699161:key/1ab2345c-6d78-9ef0-1gh2-3456i7j89k01",
25.             "CreateTime": "2023-03-07T19:47:58.131000+00:00",
26.             "TagList": [],
27.             "SupportsBabelfish": false,
28. ...
```

## CEV 생성 실패
<a name="custom-cev.create.failure"></a>

CEV 생성이 실패하면 RDS Custom에서 `Creation failed for custom engine version major-engine-version.cev_name` 메시지와 함께 `RDS-EVENT-0198` 오류가 발생하며, 실패 관련 세부 정보가 표시됩니다. 예를 들어, 이벤트는 누락된 파일을 인쇄합니다.

실패한 CEV는 수정할 수 없습니다. 삭제하고 나서 실패 원인을 수정한 후에 CEV를 다시 만들 수 있습니다. CEV 생성에 실패한 이유 문제 해결에 대한 자세한 내용은 [Oracle용 RDS Custom에 대한 사용자 지정 엔진 버전 생성 문제 해결](custom-troubleshooting.md#custom-troubleshooting.cev) 섹션을 참조하세요.