diff --git a/build.js b/build.js index 1092990f..b3e069f2 100644 --- a/build.js +++ b/build.js @@ -30,47 +30,47 @@ const allConfigs = [ { engine: 'mysql', env: 'public', - exclusionDocs: [] + exclusionDocs: ['api-guide-v3.0', 'api-guide-v4.0'] }, { engine: 'mysql', env: 'gov', - exclusionDocs: [] + exclusionDocs: ['api-guide-v3.0', 'api-guide-v4.0'] }, { engine: 'mysql', env: 'ncgn', - exclusionDocs: [] + exclusionDocs: ['api-guide-v3.0', 'api-guide-v4.0'] }, { engine: 'mysql', env: 'ninc', - exclusionDocs: ['api-guide-v2.0'] + exclusionDocs: ['api-guide-v2.0', 'api-guide-v3.0', 'api-guide-v4.0'] }, { engine: 'mysql', env: 'ngovc', - exclusionDocs: ['api-guide-v2.0'] + exclusionDocs: ['api-guide-v2.0', 'api-guide-v3.0', 'api-guide-v4.0'] }, { engine: 'mysql', env: 'ngoic', - exclusionDocs: ['api-guide-v2.0'] + exclusionDocs: ['api-guide-v2.0', 'api-guide-v3.0', 'api-guide-v4.0'] }, { engine: 'mysql', env: 'ngsc', - exclusionDocs: ['api-guide-v2.0'] + exclusionDocs: ['api-guide-v2.0', 'api-guide-v3.0', 'api-guide-v4.0'] }, { engine: 'mariadb', env: 'public', - exclusionDocs: [] + exclusionDocs: ['api-guide-v4.0'] }, { engine: 'mariadb', env: 'gov', - exclusionDocs: [] + exclusionDocs: ['api-guide-v4.0'] } ]; diff --git a/ko/api-guide-v3.0-gov.md b/ko/api-guide-v3.0-gov.md index 244818ff..e88464a3 100644 --- a/ko/api-guide-v3.0-gov.md +++ b/ko/api-guide-v3.0-gov.md @@ -1,39 +1,40 @@ -## Database > RDS for MySQL > API 가이드 +## Database > RDS for MySQL > API v3.0 가이드 + ## RDS for MySQL API 공통 정보 ### API 엔드포인트 -| 리전 | 엔드포인트 | -|-----------|-----------------------------------------------| + +| 리전 | 엔드포인트 | +|------|----------| | 한국(판교) 리전 | https://kr1-rds-mysql.api.gov-nhncloudservice.com | + ### 인증 및 권한 RDS for MySQL API를 사용하려면 User Access Key가 필요합니다. User Access Key는 NHN Cloud 계정 또는 IAM 계정을 기반으로 발급되는 인증 키로, Secret Access Key와 함께 사용하여 API 요청에 대한 인증 수단으로 활용됩니다. User Access Key와 Secret Access Key는 콘솔의 **API 보안 설정**에서 발급할 수 있습니다. User Access Key 발급 및 사용에 대한 자세한 내용은 [User Access Key](/nhncloud/ko/public-api/user-access-key)를 참고하세요. - 생성된 Key는 Appkey와 함께 요청 Header에 포함해야 합니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------------|--------|--------|----|-------------------------------------------------------------| -| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | -| X-TC-AUTHENTICATION-ID | Header | String | O | API 보안 설정 메뉴의 User Access Key ID | -| X-TC-AUTHENTICATION-SECRET | Header | String | O | API 보안 설정 메뉴의 Secret Access Key | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | +| X-TC-AUTHENTICATION-ID | Header | String | O | API 보안 설정 메뉴의 User Access Key ID | +| X-TC-AUTHENTICATION-SECRET | Header | String | O | API 보안 설정 메뉴의 Secret Access Key | +또한 프로젝트 권한에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER` 역할에는 아래처럼 기본 권한이 부여돼 있고 프로젝트 내 역할 그룹 관리 메뉴에서 필요한 권한만 부여할 수 있습니다. -또한 프로젝트 멤버 역할에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER`로 구분하여 권한을 부여할 수 있습니다. - -* `RDS for MySQL ADMIN` 권한은 모든 기능을 사용 가능합니다. -* `RDS for MySQL VIEWER` 권한은 정보를 조회하는 기능만 사용 가능합니다. +* `RDS for MySQL ADMIN` 역할은 API 실행에 필요한 모든 권한이 부여됩니다. +* `RDS for MySQL VIEWER` 역할은 정보를 조회하는 권한만 부여됩니다. * DB 인스턴스를 생성, 수정, 삭제하거나, DB 인스턴스를 대상으로 하는 어떠한 기능도 사용할 수 없습니다. - * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용 가능합니다. + * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용할 수 있습니다. API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같은 오류가 발생합니다. -| resultCode | resultMessage | 설명 | -|------------|---------------|-------------| -| 80401 | Unauthorized | 인증에 실패했습니다. | -| 80403 | Forbidden | 권한이 없습니다. | +| resultCode | resultMessage | 설명 | +|------------|---------------|-----| +| 80401 | Unauthorized | 인증에 실패했습니다. | +| 80403 | Forbidden | 권한이 없습니다. | ### 응답 공통 정보 @@ -51,52 +52,50 @@ API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같 ``` #### 필드 -| 이름 | 형식 | 설명 | -|---------------|---------|-----------------------------------------| -| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | -| resultMessage | String | 결과 메시지 | -| isSuccessful | Boolean | 성공 여부 | - - +| 이름 | 형식 | 설명 | +|-----|-----|-----| +| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | +| resultMessage | String | 결과 메시지 | +| isSuccessful | Boolean | 성공 여부 | ### DB 엔진 유형 -| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 정보 | -|--------------|----------|-----------------|--------| -| MYSQL\_V5633 | X | X | NATIVE | -| MYSQL\_V5715 | O | O | NATIVE | -| MYSQL\_V5719 | O | O | NATIVE | -| MYSQL\_V5726 | O | O | NATIVE | -| MYSQL\_V5731 | X | X | NATIVE | -| MYSQL\_V5733 | O | X | NATIVE, SHA256 | -| MYSQL\_V5737 | O | O | NATIVE, SHA256 | -| MYSQL\_V8018 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8023 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8028 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8032 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8033 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8034 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8044 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8045 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8405 | O | O | CACHING_SHA2 | -| MYSQL_V8406 | O | O | CACHING_SHA2 | -| MYSQL_V8407 | O | O | CACHING_SHA2 | -| MYSQL_V8408 | O | O | CACHING_SHA2 | +| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 | +|------------|----------|------------------|------------| +| MYSQL_V5633 | X | X | NATIVE | +| MYSQL_V5715 | O | O | NATIVE | +| MYSQL_V5719 | O | O | NATIVE | +| MYSQL_V5726 | O | O | NATIVE | +| MYSQL_V5731 | X | X | NATIVE | +| MYSQL_V5733 | O | X | NATIVE, SHA256 | +| MYSQL_V5737 | O | O | NATIVE, SHA256 | +| MYSQL_V8018 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8023 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8028 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8032 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8033 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8034 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8044 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8045 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8405 | O | O | CACHING_SHA2 | +| MYSQL_V8406 | O | O | CACHING_SHA2 | +| MYSQL_V8407 | O | O | CACHING_SHA2 | +| MYSQL_V8408 | O | O | CACHING_SHA2 | * ENUM 타입의 dbVersion 필드에 대해 해당 값을 사용할 수 있습니다. * 버전에 따라 생성 또는 복원이 불가능한 경우가 있을 수 있습니다. ## 프로젝트 정보 -### 리전 목록 보기 +### 프로젝트 멤버 목록 보기 ```http -GET /v3.0/project/regions +GET /v3.0/project/members ``` #### 요청 @@ -105,11 +104,13 @@ GET /v3.0/project/regions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------|------|---------|----------------------------------------------------------------------------| -| regions | Body | Array | 리전 목록 | -| regions.regionCode | Body | Enum | 리전 코드
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| members.memberName | Body | String | 프로젝트 멤버의 이름 | +| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | +| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 |
예시

@@ -121,31 +122,26 @@ GET /v3.0/project/regions "resultMessage": "SUCCESS", "isSuccessful": true }, - "regions": [ - { - "regionCode": "KR1", - "isEnabled": true - }, - { - "regionCode": "KR2", - "isEnabled": true - }, + "members": [ { - "regionCode": "JP1", - "isEnabled": true + "memberId": "550e8400-e29b-41d4-a716-446655440000", + "memberName": "memberName-example", + "emailAddress": "emailAddress-example", + "phoneNumber": "phoneNumber-example" } ] } ``` +

--- -### 프로젝트 멤버 목록 보기 +### 리전 목록 보기 ```http -GET /v3.0/project/members +GET /v3.0/project/regions ``` #### 요청 @@ -154,13 +150,11 @@ GET /v3.0/project/members #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|--------|-----------------| -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| members.memberName | Body | String | 프로젝트 멤버의 이름 | -| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | -| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| regions | Body | Array | 리전 목록 | +| regions.regionCode | Body | Enum | 리전 코드
- KR1: `한국(판교)` | +| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 |
예시

@@ -172,12 +166,10 @@ GET /v3.0/project/members "resultMessage": "SUCCESS", "isSuccessful": true }, - "members": [ + "regions": [ { - "memberId": "1b1d3627-507a-49ea-8cb7-c86dfa9caa58", - "memberName": "홍길동", - "emailAddress": "gildong.hong@nhn.com", - "phoneNumber": "+821012345678" + "regionCode": "KR1", + "isEnabled": false } ] } @@ -202,13 +194,13 @@ GET /v3.0/db-flavors #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------| -| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | -| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | -| dbFlavors.ram | Body | Number | 메모리 용량(MB) | -| dbFlavors.vcpus | Body | Number | CPU 코어 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | +| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | +| dbFlavors.ram | Body | Number | 메모리 용량(MB) | +| dbFlavors.vcpus | Body | Number | CPU 코어 수 |

예시

@@ -222,9 +214,9 @@ GET /v3.0/db-flavors }, "dbFlavors": [ { - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbFlavorName": "m2.c1m2", - "ram": 2048, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbFlavorName": "dbFlavorName-example", + "ram": 1, "vcpus": 1 } ] @@ -250,14 +242,14 @@ GET /v3.0/network/subnets #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|---------|------------------| -| subnets | Body | Array | 서브넷 목록 | -| subnets.subnetId | Body | UUID | 서브넷의 식별자 | -| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | -| subnets.subnetCidr | Body | String | 서브넷의 CIDR | -| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | -| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| subnets | Body | Array | 서브넷 목록 | +| subnets.subnetId | Body | UUID | 서브넷의 식별자 | +| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnets.subnetCidr | Body | String | 서브넷의 CIDR | +| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | +| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 |

예시

@@ -271,11 +263,11 @@ GET /v3.0/network/subnets }, "subnets": [ { - "subnetId": "1b2a9b23-0725-4b92-8c78-35db66b8ad9f", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/24", - "usingGateway": true, - "availableIpCount": 240 + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example", + "usingGateway": false, + "availableIpCount": 1 } ] } @@ -300,11 +292,11 @@ GET /v3.0/db-versions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|---------|-----------------------| -| dbVersions | Body | Array | DB 엔진 목록 | -| dbVersions.dbVersion | Body | String | DB 엔진 유형 | -| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbVersions | Body | Array | DB 엔진 목록 | +| dbVersions.dbVersion | Body | String | DB 엔진 유형 | +| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | | dbVersions.restorableFromObs | Body | Boolean | 오브젝트 스토리지로부터 복원 가능 여부 |

예시 @@ -319,9 +311,9 @@ GET /v3.0/db-versions }, "dbVersions": [ { - "dbVersion": "MYSQL_V8028", - "dbVersionName": "MySQL 8.0.28", - "restorableFromObs": true + "dbVersion": "MYSQL_V8036", + "dbVersionName": "dbVersionName-example", + "restorableFromObs": false } ] } @@ -334,7 +326,7 @@ GET /v3.0/db-versions ## 데이터 스토리지 -### 데이터 스토리지 타입 목록 보기 +### 스토리지 타입 목록 보기 ```http GET /v3.0/storage-types @@ -346,9 +338,9 @@ GET /v3.0/storage-types #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|-------|----------------| -| storageTypes | Body | Array | 데이터 스토리지 타입 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageTypes | Body | Array | 스토리지 타입 목록 |
예시

@@ -360,10 +352,7 @@ GET /v3.0/storage-types "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageTypes": [ - "General SSD", - "General HDD" - ] + "storageTypes": [] } ``` @@ -372,7 +361,7 @@ GET /v3.0/storage-types --- -### 데이터 스토리지 목록 보기 +### 스토리지 목록 보기 ```http GET /v3.0/storages @@ -384,9 +373,9 @@ GET /v3.0/storages #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------|------|-------|-------------| -| storages | Body | Array | 데이터 스토리지 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storages | Body | Array | 스토리지 목록 |

예시

@@ -398,10 +387,7 @@ GET /v3.0/storages "resultMessage": "SUCCESS", "isSuccessful": true }, - "storages": [ - "General SSD", - "General HDD" - ] + "storages": [] } ``` @@ -439,21 +425,21 @@ GET /v3.0/jobs/{jobId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------|-----|------|----|---------| -| jobId | URL | UUID | O | 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| jobId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------|------|----------|-----------------------------------| -| jobId | Body | UUID | 작업의 식별자 | -| jobStatus | Body | Enum | 작업의 현재 상태 | -| resourceRelations | Body | Array | 연관 리소스 목록 | -| resourceRelations.resourceType | Body | Enum | 연관 리소스 유형 | -| resourceRelations.resourceId | Body | UUID | 연관 리소스의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | +| jobStatus | Body | Enum | 작업의 현재 상태
- DELETED
- CANNOT_PROGRESS
- FAILED
- ERROR
- CANCELED
- INTERRUPTED
- COMPLETED
- RUNNING
- PREPARING
- READY
- CREATED
- FAIL_TO_READY
- REGISTERED
- FAIL_TO_REGISTER
- WAIT_TO_REGISTER | +| resourceRelations | Body | Array | 연관 리소스 목록 | +| resourceRelations.resourceType | Body | String | 연관 리소스 유형 | +| resourceRelations.resourceId | Body | String | 연관 리소스의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -465,16 +451,16 @@ GET /v3.0/jobs/{jobId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "jobId": "0ddb042c-5af6-43fb-a914-f4dd0540eb7c", - "jobStatus": "RUNNING", + "jobId": "550e8400-e29b-41d4-a716-446655440000", + "jobStatus": "DELETED", "resourceRelations": [ { - "resourceType": "DB_INSTANCE", - "resourceId": "56b39dcf-65eb-47ec-9d4f-09f160ba2266" + "resourceType": "resourceType-example", + "resourceId": "resourceId-example" } ], - "createdYmdt": "2023-02-22T20:47:12+09:00", - "updatedYmdt": "2023-02-22T20:49:46+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -497,13 +483,13 @@ GET /v3.0/db-instance-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------|------|----------|--------------------------------------------------------------------------| -| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | -| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | +| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -517,10 +503,10 @@ GET /v3.0/db-instance-groups }, "dbInstanceGroups": [ { - "dbInstanceGroupId": "05de0746-89fd-49c8-94f9-9c5b1df97009", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", - "createdYmdt": "2023-02-13T17:35:20+09:00", - "updatedYmdt": "2023-02-13T17:35:20+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -541,22 +527,22 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|-----------------| -| dbInstanceGroupId | URL | UUID | O | DB 인스턴스 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -568,17 +554,17 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbInstanceGroupId": "36617a8e-0df8-4b16-b6ea-6306019e95da", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", "dbInstances": [ { - "dbInstanceId": "6d2db0ef-fe9b-4ed4-97b1-d97fcb4cf1b8", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE" + "dbInstanceStatus": "BEFORE_CREATE" } ], - "createdYmdt": "2023-03-03T17:38:14+09:00", - "updatedYmdt": "2023-03-03T17:38:14+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -611,8 +597,8 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} | `BACKING_UP` | 백업 중 | | `CANCELING` | 취소 중 | | `CREATING` | 생성 중 | -| `CREATING_SCHEMA` | DB 스키마 생성 중 | -| `CREATING_USER` | 사용자 생성 중 | +| `CREATING_SCHEMA` | DB 스키마 생성 중 | +| `CREATING_USER` | 사용자 생성 중 | | `DELETING` | 삭제 중 | | `DELETING_SCHEMA` | DB 스키마 삭제 중 | | `DELETING_USER` | 사용자 삭제 중 | @@ -631,8 +617,8 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} | `STARTING` | 시작 중 | | `STOPPING` | 정지 중 | | `SYNCING_SCHEMA` | DB 스키마 동기화 중 | -| `SYNCING_USER` | 사용자 동기화 중 | -| `UPDATING_USER` | 사용자 수정 중 | +| `SYNCING_USER` | 사용자 동기화 중 | +| `UPDATING_USER` | 사용자 수정 중 | ### DB 인스턴스 목록 보기 @@ -646,20 +632,20 @@ GET /v3.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstances | Body | Array | DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | -| dbInstances.dbPort | Body | Number | DB 포트 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태 | -| dbInstances.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstances.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstances | Body | Array | DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | +| dbInstances.dbPort | Body | Number | DB 포트 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbInstances.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstances.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -673,17 +659,17 @@ GET /v3.0/db-instances }, "dbInstances": [ { - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", + "dbInstanceStatus": "BEFORE_CREATE", "progressStatus": "NONE", - "createdYmdt": "2023-01-23T12:03:13+09:00", - "updatedYmdt": "2023-02-02T17:20:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -694,83 +680,6 @@ GET /v3.0/db-instances --- -### DB 인스턴스 상세 보기 - -```http -GET /v3.0/db-instances/{dbInstanceId} -``` - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| dbPort | Body | Number | DB 포트 | -| dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| progressStatus | Body | Enum | DB 인스턴스의 현재 작업 진행 상태 | -| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | -| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | -| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | -| supportAuthenticationPlugin | Body | Boolean | 인증 플러그인 지원 여부 | -| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | -| needMigration | Body | Boolean | 마이그레이션 필요 여부 | -| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", - "progressStatus": "NONE", - "dbFlavorId": "e9ed4ef6-78d7-46fa-ace9-32481e97f3b7", - "parameterGroupId": "b03e8b13-de27-4d04-a488-ff5689589372", - "dbSecurityGroupIds": ["01908c35-d2c9-4852-baf0-17f06ec42c03"], - "notificationGroupIds": ["83a62a33-ddbf-4a04-8653-e54463d5b1ac"], - "useDeletionProtection": false, - "supportAuthenticationPlugin": true, - "needToApplyParameterGroup": false, - "needMigration": false, - "supportDbVersionUpgrade": true, - "createdYmdt": "2022-11-23T12:03:13+09:00", - "updatedYmdt": "2022-12-02T17:20:17+09:00" -} -``` - -

-
- ---- - ### DB 인스턴스 생성하기 ```http @@ -779,61 +688,67 @@ POST /v3.0/db-instances #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|------|---------|----|---------------------------------------------------------------------| -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbUserName | Body | String | O | DB 사용자 계정명 | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 ||network|Body|Object|O|네트워크 정보 객체| -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- 기본값: `NATIVE`(미지원 시 `CACHING_SHA2`)
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| authenticationPlugin | Body | Enum | X | 인증 Plugin
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | TLS Option
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE", "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, "availabilityZone": "kr-pub-a" }, "storage": { @@ -841,11 +756,15 @@ POST /v3.0/db-instances "storageSize": 20 }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 1800, + "replicationRegion": "KR1", + "useBackupLock": true, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR" + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" } ] } @@ -857,45 +776,124 @@ POST /v3.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### DB 인스턴스 수정하기 +### 오브젝트 스토리지를 이용한 DB 인스턴스 복원 ```http -PUT /v3.0/db-instances/{dbInstanceId} +POST /v3.0/db-instances/restore-from-obs ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|------|---------|----|--------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbPort | Body | Number | X | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbVersion | Body | Enum | X | DB 엔진 유형 | -| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
기본값: `false` | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | X | DB 포트 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| imageId | Body | UUID | X | 이미지의 식별자 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | +| restore.username | Body | String | O | NHN Cloud 계정 혹은 IAM 멤버 ID | +| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | +| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | +| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` |
예시

```json { - "dbInstanceName": "db-instance2", - "description": "description2", - "dbPort": 10001, + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "dbVersion": "MYSQL_V8036", + "useHighAvailability": false, + "imageId": "550e8400-e29b-41d4-a716-446655440000", + "pingInterval": 3, + "storage": { + "storageType": "General SSD", + "storageSize": 20 + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "backup": { + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR1", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + }, + "restore": { + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" + }, + "useDefaultNotification": false, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", "dbSecurityGroupIds": [], - "executeBackup": true + "userGroupIds": [], + "useDeletionProtection": false } ``` @@ -904,9 +902,7 @@ PUT /v3.0/db-instances/{dbInstanceId} #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- @@ -920,54 +916,15 @@ DELETE /v3.0/db-instances/{dbInstanceId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 인스턴스 재시작하기 - -```http -POST /v3.0/db-instances/{dbInstanceId}/restart -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- -### DB 인스턴스 강제 재시작하기 -```http -POST /v3.0/db-instances/{dbInstanceId}/force-restart -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |

예시

@@ -978,108 +935,136 @@ POST /v3.0/db-instances/{dbInstanceId}/force-restart "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- ---- - -### DB 인스턴스 시작하기 - -```http -POST /v3.0/db-instances/{dbInstanceId}/start -``` - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### DB 인스턴스 정지하기 +### DB 인스턴스 상세 보기 ```http -POST /v3.0/db-instances/{dbInstanceId}/stop +GET /v3.0/db-instances/{dbInstanceId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| dbPort | Body | Number | DB 포트 | +| dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | +| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | +| supportAuthenticationPlugin | Body | Boolean | 인증 plugin 지원 여부 | +| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | +| needMigration | Body | Boolean | 마이그레이션 필요 여부 | +| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 | -### DB 인스턴스 백업하기 +
예시 +

-```http -POST /v3.0/db-instances/{dbInstanceId}/backup +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbInstanceType": "MASTER", + "dbInstanceStatus": "BEFORE_CREATE", + "progressStatus": "NONE", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "notificationGroupIds": [], + "useDeletionProtection": false, + "supportAuthenticationPlugin": false, + "needToApplyParameterGroup": false, + "needMigration": false, + "supportDbVersionUpgrade": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" +} ``` -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|--------|----|-----------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| backupName | Body | String | O | 백업을 식별할 수 있는 이름 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### DB 인스턴스 백업 후 내보내기 +### DB 인스턴스 수정하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/backup-to-object-storage +PUT /v3.0/db-instances/{dbInstanceId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|-----------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbPort | Body | Number | X | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbVersion | Body | Enum | X | DB 엔진 버전 코드 | +| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
- 기본값: `false` | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` |
예시

```json { - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "backups/backup_file" + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbPort": 1, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "useDummy": false, + "dbSecurityGroupIds": [], + "executeBackup": false, + "useOnlineFailover": false, + "waitReplicationDelay": false, + "useReadOnly": false } ``` @@ -1088,172 +1073,71 @@ POST /v3.0/db-instances/{dbInstanceId}/backup-to-object-storage #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 인스턴스 복제하기 - -```http -POST /v3.0/db-instances/{dbInstanceId}/replicate -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbPort | Body | Number | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록
- 기본값: 원본 DB 인스턴스 값 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: 원본 DB 인스턴스 값 | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전
- 기본값: 원본 DB 인스턴스 값 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각
- 예시: `00:00:00`
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간
- 기본값: 원본 DB 인스턴스 값 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |

예시

```json { - "dbInstanceName": "db-instance-replicate", - "description": "description", - "dbPort": 11000, - "network": { - "availabilityZone": "kr-pub-a" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true }, - "storage": { - "stroageSize": 100 - } + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### DB 인스턴스 승격하기 +### DB 인스턴스 백업하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/promote +POST /v3.0/db-instances/{dbInstanceId}/backup ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| backupName | Body | String | O | 백업을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | ---- - -### 복원 정보 조회 +
예시 +

-```http -GET /v3.0/db-instances/{dbInstanceId}/restoration-info +```json +{ + "backupName": "backupName" +} ``` -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------------|------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| oldestRestorableYmdt | Body | DateTime | 가장 오래된 복원 가능한 시각 | -| latestRestorableYmdt | Body | DateTime | 가장 최신의 복원 가능한 시각 | -| restorableBackups | Body | Array | 복원 가능한 백업 목록 | -| restorableBackups.backup | Body | Object | 백업 정보 객체 | -| restorableBackups.backup.backupId | Body | UUID | 백업의 식별자 | -| restorableBackups.backup.backupName | Body | String | 백업 이름 | -| restorableBackups.backup.useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| restorableBackups.backup.backupSize | Body | Number | 백업 크기 | -| restorableBackups.backup.backupType | Body | Enum | 백업 유형
- `AUTO`: 자동
- `MANUAL`: 수동 | -| restorableBackups.backup.backupStatus | Body | Enum | 백업 상태
- `BACKING_UP`: 백업 중인 경우
- `COMPLETED`: 백업이 완료된 경우
- `DELETING`: 백업이 삭제 중인 경우
- `DELETED`: 백업이 삭제된 경우
- `ERROR`: 오류가 발생한 경우 | -| restorableBackups.backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| restorableBackups.backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | -| restorableBackups.backup.dbVersion | Body | String | DB 엔진 유형 | -| restorableBackups.backup.failoverCount | Body | Number | 장애 조치 횟수 | -| restorableBackups.backup.binLogFileName | Body | String | 바이너리 로그 파일 이름 | -| restorableBackups.backup.binLogPosition | Body | Number | 바이너리 로그 파일 위치 | -| restorableBackups.backup.createdYmdt | Body | DateTime | 백업 생성 일시 | -| restorableBackups.backup.updatedYmdt | Body | DateTime | 백업 갱신 일시 | -| restorableBackups.restorableBinLogs | Body | Array | 해당 백업을 이용하여 복원 가능한 바이너리 로그 이름 목록 | - - +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "oldestRestorableYmdt": "2023-07-09T16:33:33+09:00", - "latestRestorableYmdt": "2023-07-10T15:44:44+09:00", - "restorableBackups": [ - { - "backup": { - "backupId": "145d889a-fe08-474f-8f58-bde576ff96a9", - "backupName": "example-backup-name", - "backupStatus": "COMPLETED", - "dbInstanceId": "dba1be25-9429-4589-9716-7fb6daad7cb9", - "dbInstanceName": "original-db-instance-name", - "dbVersion": "MYSQL_V8028", - "backupType": "MANUAL", - "backupSize": 8299904, - "useBackupLock": true, - "failoverCount": 0, - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 367916037, - "createdYmdt": "2023-07-10T15:44:44+09:00", - "updatedYmdt": "2023-07-10T15:46:07+09:00" - }, - "restorableBinLogs": [ - "mysql-bin.000001" - ] - } - ] + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1262,39 +1146,32 @@ GET /v3.0/db-instances/{dbInstanceId}/restoration-info --- -### 복원될 마지막 쿼리 조회 +### 백업 정보 보기 ```http -GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query +GET /v3.0/db-instances/{dbInstanceId}/backup-info ``` -#### 공통 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|------|----|-----------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restoreType | Query | Enum | O | 복원 타입 종류
- `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
- `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입 | - -#### restoreType이 `TIMESTAMP`인 경우 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-------|----------|----|-------------------------------------------| -| restoreYmdt | Query | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +#### 요청 -#### restoreType이 `BINLOG`인 경우 +이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------|-------|--------|----|--------------------| -| backupId | Query | UUID | O | 복원에 사용할 백업의 식별자 | -| binLogFileName | Query | String | O | 복원에 사용할 바이너리 로그 이름 | -| binLogPosition | Query | Number | O | 복원에 사용할 바이너리 로그 위치 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|----------|--------------------------------------| -| executedYmdt | Body | DateTime | 쿼리 수행 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| lastQuery | Body | String | 마지막 수행 쿼리 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| backupPeriod | Body | Number | 백업 보관 기간(일) | +| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | +| backupRetryCount | Body | Number | 백업 재시도 횟수 | +| replicationRegion | Body | Enum | 백업 복제 리전
- KR1: `한국(판교)` | +| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration
- HALF_AN_HOUR
- ONE_HOUR
- ONE_HOUR_AND_HALF
- TWO_HOURS
- TWO_HOURS_AND_HALF
- THREE_HOURS |

예시

@@ -1306,8 +1183,17 @@ GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query "resultMessage": "SUCCESS", "isSuccessful": true }, - "executedYmdt": "2023-03-17T14:02:29+09:00", - "lastQuery": "INSERT INTO `test`.`test`SET @1='0123'" + "backupPeriod": 1, + "ftwrlWaitTimeout": 1, + "backupRetryCount": 1, + "replicationRegion": "KR1", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] } ``` @@ -1316,303 +1202,100 @@ GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query --- -### 복원 +### 백업 정보 수정하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/restore -``` - -#### 공통 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------|------|---------|----|------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restore | Body | Object | O | 복원 정보 객체 | -| restore.restoreType | Body | Enum | O | 복원 타입 종류
- `TIMESTAMP`: 복원 가능 시간 범위 내의 특정 시각으로 시점 복원
- `BINLOG`: 복원 가능한 바이너리 로그 위치를 지정하여 시점 복원
- `BACKUP`: 기존에 생성한 백업을 이용하여 스냅숏 복원 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
기본값: `false` | - -#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|----------|----|------------------------------------------------------------------------------------------------| -| restore.restoreYmdt | Body | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD)
복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능하다. | - - -

예시 -

- -```json -{ - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "TIMESTAMP", - "restoreYmdt": "2023-07-10T15:44:44+09:00" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } -} +PUT /v3.0/db-instances/{dbInstanceId}/backup-info ``` -

-
- -#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------------|------|--------|----|--------------------| -| restore.backupId | Body | UUID | O | 복원에 사용할 백업의 식별자 | -| restore.binLog | Body | Object | O | 바이너리 로그 정보 객체 | -| restore.binLog.binLogFileName | Body | String | O | 복원에 사용할 바이너리 로그 이름 | -| restore.binLog.binLogPosition | Body | Number | O | 복원에 사용할 바이너리 로그 위치 | - -* 바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. +#### 요청 +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BINLOG", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36", - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 1234567 - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "backupPeriod": 0, + "ftwrlWaitTimeout": 0, + "backupRetryCount": 0, + "replicationRegion": "KR1", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] } ```

-#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|------|------------------------------|-----------------| -| restore.backupId | Body | UUID | O(restoreType이 `BACKUP`인 경우) | 복원에 사용할 백업의 식별자 | - +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BACKUP", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - - --- -### 오브젝트 스토리지로부터 복원 +### DB 인스턴스 오브젝트 스토리지로 백업 ```http -POST /v3.0/db-instances/restore-from-obs +POST /v3.0/db-instances/{dbInstanceId}/backup-to-object-storage ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------|------|---------|----|---------------------------------------------------------------------| -| restore | Body | Object | O | 복원 정보 객체 | -| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | -| restore.username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | -| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | -| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | - - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 계정 혹은 IAM 회원 ID | +| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbVersion": "MYSQL_V8028", - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "tenantId":"tenant-id", - "username":"username", - "password":"password", - "targetContainer":"targetContainer", - "objectPath":"objectPath" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" } ``` @@ -1621,30 +1304,9 @@ POST /v3.0/db-instances/restore-from-obs #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - - ---- - - -### DB 인스턴스 삭제 보호 설정 변경하기 - -```http -PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |

예시

@@ -1655,7 +1317,8 @@ PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1664,137 +1327,146 @@ PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection --- -### 고가용성 수정하기 +### 테스트 용 DB 이미지 메타 변경 ```http -PUT /v3.0/db-instances/{dbInstanceId}/high-availability +PUT /v3.0/db-instances/{dbInstanceId}/change-image-meta ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|---------|----|------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 고가용성 다시 시작하기 +### DB 스키마 목록 보기 ```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/resume +GET /v3.0/db-instances/{dbInstanceId}/db-schemas ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSchemas | Body | Array | DB 스키마 목록 | +| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | +| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | +| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- STABLE
- CREATING
- SYNCING
- DELETING
- DELETED | +| dbSchemas.createdYmdt | Body | DateTime | 생성 일시 | -### 고가용성 일시 중지하기 +

예시 +

-```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/pause +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSchemas": [ + { + "dbSchemaId": "550e8400-e29b-41d4-a716-446655440000", + "dbSchemaName": "dbSchemaName-example", + "dbSchemaStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 고가용성 복구하기 +### DB 스키마 생성하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/repair +POST /v3.0/db-instances/{dbInstanceId}/db-schemas ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbSchemaName | Body | String | O | DB 스키마 이름
- 최대 길이: `64`
- 영문 시작, 영문/숫자/_ 허용, 1~64자, MySQL 예약어 불가 | -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### 고가용성 분리하기 +
예시 +

-```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/split +```json +{ + "dbSchemaName": "dbSchemaName-example" +} ``` -#### 요청 +

+
-이 API는 요청 본문을 요구하지 않습니다. +#### 응답 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -#### 응답 +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 데이터 스토리지 정보 보기 +### DB 스키마 삭제하기 ```http -GET /v3.0/db-instances/{dbInstanceId}/storage-info +DELETE /v3.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbSchemaId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------|------|--------|--------------------------------------------------------------------------------------| -| storageType | Body | Enum | 데이터 스토리지 타입 | -| storageSize | Body | Number | 데이터 스토리지 크기(GB) | -| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- `DETACHED`: 부착되지 않음
- `ATTACHED`: 부착됨
- `DELETED`: 삭제됨 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -1806,66 +1478,43 @@ GET /v3.0/db-instances/{dbInstanceId}/storage-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageType": "General SSD", - "storageSize": 20, - "storageStatus": "ATTACHED" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- --- -### 데이터 스토리지 정보 수정하기 - -```http -PUT /v3.0/db-instances/{dbInstanceId}/storage-info -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: 현재값
- 최댓값: `2048` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### 백업 정보 보기 +### DB 사용자 목록 보기 ```http -GET /v3.0/db-instances/{dbInstanceId}/backup-info +GET /v3.0/db-instances/{dbInstanceId}/db-users ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|---------|----------------| -| backupPeriod | Body | Number | 백업 보관 기간(일) | -| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | -| backupRetryCount | Body | Number | 백업 재시도 횟수 | -| replicationRegion | Body | Enum | 백업 복제 리전 | -| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | -| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbUsers | Body | Array | DB 사용자 목록 | +| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | +| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | +| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | +| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- STABLE
- CREATING
- UPDATING
- SYNCING
- DELETING
- DELETED | +| dbUsers.createdYmdt | Body | DateTime | 생성 일시 | +| dbUsers.updatedYmdt | Body | DateTime | 수정 일시 | +| dbUsers.authenticationPlugin | Body | Enum | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| dbUsers.tlsOption | Body | Enum | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |
예시

@@ -1877,15 +1526,17 @@ GET /v3.0/db-instances/{dbInstanceId}/backup-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "backupPeriod": 1, - "ftwrlWaitTimeout": 1800, - "backupRetryCount": 0, - "replicationRegion": null, - "useBackupLock": false, - "backupSchedules": [ + "dbUsers": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" + "dbUserId": "550e8400-e29b-41d4-a716-446655440000", + "dbUserName": "dbUserName-example", + "host": "host-example", + "authorityType": "CUSTOM", + "dbUserStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" } ] } @@ -1894,42 +1545,37 @@ GET /v3.0/db-instances/{dbInstanceId}/backup-info

- --- -### 백업 정보 수정하기 +### DB 사용자 생성하기 ```http -PUT /v3.0/db-instances/{dbInstanceId}/backup-info +POST /v3.0/db-instances/{dbInstanceId}/db-users ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------------------------|------|---------|----|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | -| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | -| replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| host | Body | String | O | DB 사용자 계정의 호스트명
- 최대 길이: `45` | +| authorityType | Body | Enum | O | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |
예시

```json { - "backupPeriod": 5, - "useBackupLock": true, - "backupSchedules": [ - { - "backupWndBgnTime": "01:00:00", - "backupWndDuration": "TWO_HOURS" - } - ] + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "host": "host-example", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" } ``` @@ -1938,39 +1584,9 @@ PUT /v3.0/db-instances/{dbInstanceId}/backup-info #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### 네트워크 정보 보기 - -```http -GET /v3.0/db-instances/{dbInstanceId}/network-info -``` - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------------------------------------------------------------------------------------------------------------------------------| -| availabilityZone | Body | Enum | DB 인스턴스를 생성할 가용성 영역 | -| subnet | Body | Object | 서브넷 객체 | -| subnet.subnetId | Body | UUID | 서브넷의 식별자 | -| subnet.subnetName | Body | UUID | 서브넷을 식별할 수 있는 이름 | -| subnet.subnetCidr | Body | UUID | 서브넷의 CIDR | -| endPoints | Body | Array | 접속 정보 목록 | -| endPoints.domain | Body | String | 도메인 | -| endPoints.ipAddress | Body | String | IP 주소 | -| endPoints.endPointType | Body | Enum | 접속 정보 타입
-`EXTERNAL`: 외부 접속 도메인
-`INTERNAL`: 내부 접속 도메인
-`PUBLIC`: (Deprecated) 외부 접속 도메인
-`PRIVATE`: (Deprecated) 내부 접속 도메인 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |

예시

@@ -1982,19 +1598,7 @@ GET /v3.0/db-instances/{dbInstanceId}/network-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "availabilityZone": "kr-pub-a", - "subnet": { - "subnetId": "bd453789-34ae-416c-9f78-05b9e43a46be", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/16" - }, - "endPoints": [ - { - "domain": "ea548a78-d85f-43b4-8ddf-c88d999b9905.internal.kr1.mysql.rds.nhncloudservice.com", - "ipAddress": "192.168.0.2", - "endPointType": "INTERNAL" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2003,55 +1607,26 @@ GET /v3.0/db-instances/{dbInstanceId}/network-info --- -### 네트워크 정보 수정하기 - -```http -PUT /v3.0/db-instances/{dbInstanceId}/network-info -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 사용자 목록 보기 +### DB 사용자 삭제하기 ```http -GET /v3.0/db-instances/{dbInstanceId}/db-users +DELETE /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbUserId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|-----------------------------------------------------------------------------------------------------------------------------| -| dbUsers | Body | Array | DB 사용자 목록 | -| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | -| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | -| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | -| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `UPDATING`: 수정 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbUsers.authenticationPlugin | Body | Enum | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| dbUsers.tlsOption | Body | Enum | TLS Option
- NONE
- SSL
- X509 | -| dbUsers.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbUsers.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |

예시

@@ -2063,19 +1638,7 @@ GET /v3.0/db-instances/{dbInstanceId}/db-users "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbUsers": [ - { - "dbUserId": "4b3d530b-fd02-4d59-a620-83d019a67bbb", - "dbUserName": "db-user", - "host": "%", - "authorityType": "DDL", - "dbUserStatus": "STABLE", - "authenticationPlugin": "NATIVE", - "tlsOption": "NONE", - "createdYmdt": "2023-03-17T14:02:29+09:00", - "updatedYmdt": "2023-03-17T14:02:31+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2084,36 +1647,30 @@ GET /v3.0/db-instances/{dbInstanceId}/db-users --- -### DB 사용자 생성하기 +### DB 사용자 수정하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/db-users +PUT /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserName | Body | String | O | DB 사용자 계정 이름
- 최소 길이: `1`
- 최대 길이: `32` | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | -| host | Body | String | O | DB 사용자 계정의 호스트명
- 예시: `1.1.1.%` | -| authorityType | Body | Enum | O | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- 기본값: `NATIVE`(미지원 시 `CACHING_SHA2`)
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | - -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 설정할 수 있습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbUserId | URL | UUID | O | | +| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| authorityType | Body | Enum | X | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |

예시

```json { - "dbUserName": "db-user", - "dbPassword": "password", - "host": "1.1.1.%", - "authorityType": "CRUD", + "dbPassword": "dbPassword", + "authorityType": "CUSTOM", "authenticationPlugin": "NATIVE", "tlsOption": "NONE" } @@ -2124,99 +1681,931 @@ POST /v3.0/db-instances/{dbInstanceId}/db-users #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 사용자 수정하기 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -```http -PUT /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} -``` +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 인스턴스 삭제 보호 설정 변경 + +```http +PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | + +
예시 +

+ +```json +{ + "useDeletionProtection": false +} +``` + +

+
+ +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### DB 인스턴스 강제 재시작하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/force-restart +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 고가용성 수정하기 + +```http +PUT /v3.0/db-instances/{dbInstanceId}/high-availability +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | + +
예시 +

+ +```json +{ + "useHighAvailability": false, + "pingInterval": 1 +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 일시 중지하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/pause +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 복구하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/repair +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 다시 시작하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/resume +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 분리하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/split +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 로그 파일 목록 보기 + +```http +GET /v3.0/db-instances/{dbInstanceId}/log-files +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| logFiles | Body | Array | 로그 파일 목록 | +| logFiles.logFileName | Body | String | 로그 파일 이름 | +| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- ERROR
- BINLOG
- GENERAL
- SLOW_QUERY
- AUDIT
- BACKUP | +| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | +| logFiles.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "logFiles": [ + { + "logFileName": "logFileName-example", + "logFileType": "ERROR", + "logFileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### 로그 파일 내보내기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/log-files/export +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| logFileNames | Body | Array | O | 로그 파일 이름 목록 | +| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 회원 또는 IAM 멤버 ID | +| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | + +
예시 +

+ +```json +{ + "logFileNames": [], + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 네트워크 정보 보기 + +```http +GET /v3.0/db-instances/{dbInstanceId}/network-info +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| availabilityZone | Body | String | DB 인스턴스를 생성할 가용성 영역 | +| subnet | Body | Object | 서브넷 객체 | +| subnet.subnetId | Body | UUID | 서브넷의 식별자 | +| subnet.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnet.subnetCidr | Body | String | 서브넷의 CIDR | +| endPoints | Body | Array | 접속 정보 목록 | +| endPoints.domain | Body | String | 도메인 | +| endPoints.ipAddress | Body | String | IP 주소 | +| endPoints.endPointType | Body | String | 접속 정보 타입 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "availabilityZone": "kr-pub-a", + "subnet": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example" + }, + "endPoints": [ + { + "domain": "domain-example", + "ipAddress": "ipAddress-example", + "endPointType": "endPointType-example" + } + ] +} +``` + +

+
+ +--- + +### 네트워크 정보 수정하기 + +```http +PUT /v3.0/db-instances/{dbInstanceId}/network-info +``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | -| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | -| authorityType | Body | Enum | X | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 수정할 수 있습니다. -> `authenticationPlugin`의 값은 `dbPassword`와 동시에 수정을 해야 합니다. +
예시 +

+ +```json +{ + "usePublicAccess": false +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

```json { - "authorityType": "DDL" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

+--- + +### DB 인스턴스 승격하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/promote +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### DB 사용자 삭제하기 +### DB 인스턴스 복제하기 ```http -DELETE /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +POST /v3.0/db-instances/{dbInstanceId}/replicate +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부 | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | X | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | X | 데이터 스토리지 타입 | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| backup | Body | Object | X | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +
예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDefaultNotification": false, + "useDeletionProtection": false, + "network": { + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "storage": { + "storageType": "General SSD", + "storageSize": 20 + }, + "backup": { + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 0, + "replicationRegion": "KR1", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + } +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 인스턴스 재시작하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/restart +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` | + +
예시 +

+ +```json +{ + "useOnlineFailover": false, + "executeBackup": false, + "waitReplicationDelay": false, + "useReadOnly": false +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 인스턴스 복원 정보 조회 + +```http +GET /v3.0/db-instances/{dbInstanceId}/restoration-info +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 복원될 마지막 쿼리 조회 + +```http +GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| executedYmdt | Body | DateTime | 쿼리 수행 일시 | +| lastQuery | Body | String | 마지막 수행 쿼리 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "executedYmdt": "2023-12-31T15:00:00+09:00", + "lastQuery": "lastQuery-example" +} +``` + +

+
+ +--- + +### DB 인스턴스 복원 + +```http +POST /v3.0/db-instances/{dbInstanceId}/restore +``` + +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | X | DB 포트 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| imageId | Body | UUID | X | 이미지의 식별자 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.restoreType | Body | Enum | O | 복원 타입
- TIMESTAMP: `복원 가능한 시간 이내의 시간을 이용한 시점 복원`
- BINLOG: `복원 가능한 바이너리 로그 위치를 이용한 시점 복원`
- BACKUP: `기존에 생성한 백업을 이용한 스냅숏 복원` | +| restore.binLog.binLogFileName | Body | String | X | 복원에 사용할 바이너리 로그 이름 | +| restore.binLog.binLogPosition | Body | Object | X | 복원에 사용할 바이너리 로그 위치 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | + +#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.restoreYmdt | Body | DateTime | X | DB 인스턴스 복원 일시 | + +복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능합니다. + +#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 | +| restore.binLog | Body | Object | X | 복원에 사용할 바이너리 로그 정보 객체 | + +바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. + +#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 | + +
예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "useHighAvailability": false, + "imageId": "550e8400-e29b-41d4-a716-446655440000", + "pingInterval": 3, + "storage": { + "storageType": "General SSD", + "storageSize": 20 + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "backup": { + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR1", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + }, + "restore": { + "restoreType": "TIMESTAMP", + "binLog": { + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + } + } + }, + "useDefaultNotification": false, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDeletionProtection": false +} ``` -#### 요청 +

+
+ +#### 응답 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### DB 스키마 목록 보기 +### DB 인스턴스 시작하기 ```http -GET /v3.0/db-instances/{dbInstanceId}/db-schemas +POST /v3.0/db-instances/{dbInstanceId}/start ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|------------------------------------------------------------------------------------------------------| -| dbSchemas | Body | Array | DB 스키마 목록 | -| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | -| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | -| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbSchemas.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -2228,14 +2617,7 @@ GET /v3.0/db-instances/{dbInstanceId}/db-schemas "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSchemas": [ - { - "dbSchemaId": "7c9a94b8-86c1-435d-8af2-82a5e9d53fd4", - "dbSchemaName": "schema", - "dbSchemaStatus": "STABLE", - "createdYmdt": "2023-03-20T13:37:45+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2244,75 +2626,66 @@ GET /v3.0/db-instances/{dbInstanceId}/db-schemas --- -### DB 스키마 생성하기 +### DB 인스턴스 정지하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/db-schemas +POST /v3.0/db-instances/{dbInstanceId}/stop ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|--------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaName | Body | String | O | DB 스키마 이름 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -### DB 스키마 삭제하기 +

예시 +

-```http -DELETE /v3.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaId | URL | UUID | O | DB 스키마의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 로그 파일 목록 보기 +### 스토리지 정보 보기 ```http -GET /v3.0/db-instances/{dbInstanceId}/log-files +GET /v3.0/db-instances/{dbInstanceId}/storage-info ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|-------|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileTypes | Query | Array | X | 로그 파일 타입 종류 목록
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| logFiles | Body | Array | 로그 파일 목록 | -| logFiles.logFileName | Body | String | 로그 파일 이름 | -| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | -| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | -| logFiles.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageType | Body | Enum | 데이터 스토리지 타입 | +| storageSize | Body | Number | 데이터 스토리지 크기(GB) | +| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- DELETED: `삭제됨`
- PENDING_DELETION: `삭제 유예됨`
- DELETION_RESERVED: `삭제 예약됨 (스냅샷 정리 대기)`
- DETACHED: `해제됨`
- ATTACHED: `할당됨` |
예시

@@ -2324,14 +2697,9 @@ GET /v3.0/db-instances/{dbInstanceId}/log-files "resultMessage": "SUCCESS", "isSuccessful": true }, - "logFiles": [ - { - "logFileName": "xtra_full.log-20230317", - "logFileType": "BACKUP", - "logFileSize": 4096, - "createdYmdt": "2023-03-17T14:02:29+09:00" - } - ] + "storageType": "General SSD", + "storageSize": 1, + "storageStatus": "DELETED" } ``` @@ -2340,35 +2708,25 @@ GET /v3.0/db-instances/{dbInstanceId}/log-files --- -### 로그 파일 내보내기 +### 스토리지 정보 수정하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/log-files/export +PUT /v3.0/db-instances/{dbInstanceId}/storage-info ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|--------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileNames | Body | Array | O | 로그 파일 이름 목록
- 최소 크기: `1` | -| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최댓값: `2048` |

예시

```json { - "logFileNames": ["xtra_full.log-20230317"], - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "logs/backup" + "storageSize": 1 } ``` @@ -2377,9 +2735,26 @@ POST /v3.0/db-instances/{dbInstanceId}/log-files/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -2405,30 +2780,22 @@ GET /v3.0/backups 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|--------|----|----------------------------------------------------------| -| page | Query | Number | O | 조회할 목록의 페이지
- 최솟값: `1` | -| size | Query | Number | O | 조회할 목록의 페이지 크기
- 최솟값: `1`
- 최댓값: `100` | -| backupType | Query | Enum | X | 백업 유형
- `AUTO`: 자동
- `MANUAL`: 수동
- 기본값: 전체 | -| dbInstanceId | Query | UUID | X | 원본 DB 인스턴스의 식별자 | -| dbVersion | Query | Enum | X | DB 엔진 유형 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|-----------------------------------| -| totalCounts | Body | Number | 전체 백업 목록 수 | -| backups | Body | Array | 백업 목록 | -| backups.backupId | Body | UUID | 백업의 식별자 | -| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | -| backups.backupStatus | Body | Enum | 백업의 현재 상태 | -| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| backups.dbVersion | Body | Enum | DB 엔진 유형 | -| backups.utilVersion | Body | String | 백업에 사용된 xtrabackup 유틸리티 버전 | -| backups.backupType | Body | Enum | 백업 유형 | -| backups.backupSize | Body | Number | 백업의 크기(Byte) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 백업 목록 수 | +| backups | Body | Array | 백업 목록 | +| backups.backupId | Body | UUID | 백업의 식별자 | +| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | +| backups.backupStatus | Body | Enum | 백업의 현재 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| backups.dbVersion | Body | Enum | DB 엔진 유형 | +| backups.utilVersion | Body | String | 유틸리티 버전 | +| backups.backupType | Body | Enum | 백업 유형
- AUTO
- MANUAL | +| backups.backupSize | Body | Number | 백업의 크기(Byte) | +| backups.createdYmdt | Body | DateTime | 생성 일시 | +| backups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -2443,16 +2810,16 @@ GET /v3.0/backups "totalCounts": 1, "backups": [ { - "backupId": "0017f136-3e01-4530-94aa-20661afe6632", - "backupName": "backup", - "backupStatus": "COMPLETED", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd", - "dbVersion": "MYSQL_V8028", - "utilVersion": "8.0.28", + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "utilVersion": "utilVersion-example", "backupType": "AUTO", - "backupSize": 4996786, - "createdYmdt": "2023-02-21T00:35:00+09:00", - "updatedYmdt": "2023-02-22T00:35:32+09:00" + "backupSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -2463,6 +2830,45 @@ GET /v3.0/backups --- +### 백업 삭제하기 + +```http +DELETE /v3.0/backups/{backupId} +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + ### 백업 내보내기 ```http @@ -2471,25 +2877,25 @@ POST /v3.0/backups/{backupId}/export #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|-----------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 계정 혹은 IAM 회원 ID | +| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 |
예시

```json { - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "backups/backup_file" + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" } ``` @@ -2498,12 +2904,26 @@ POST /v3.0/backups/{backupId}/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -> [주의] -> 수동 백업의 경우 백업이 수행된 DB 인스턴스가 존재하지 않으면, 백업을 오브젝트 스토리지로 내보낼 수 없습니다. +

+
--- @@ -2515,50 +2935,56 @@ POST /v3.0/backups/{backupId}/restore #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------|------|---------|----|---------------------------------------------------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Integer | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 ||network|Body|Object|O|네트워크 정보 객체| -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json - { - "dbInstanceName": "db-instance-restore", - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbPort": 10000, - "parameterGroupId": "132d383c-38e3-468a-a826-5e9a8fff15d0", + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, "availabilityZone": "kr-pub-a" }, "storage": { @@ -2566,10 +2992,14 @@ POST /v3.0/backups/{backupId}/restore "storageSize": 20 }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 1800, + "replicationRegion": "KR1", + "useBackupLock": true, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", + "backupWndBgnTime": "backupWndBgnTime-example", "backupWndDuration": "HALF_AN_HOUR" } ] @@ -2582,31 +3012,26 @@ POST /v3.0/backups/{backupId}/restore #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -### 백업 삭제하기 +

예시 +

-```http -DELETE /v3.0/backups/{backupId} +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------|-----|------|----|---------| -| backupId | URL | UUID | O | 백업의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -2633,15 +3058,15 @@ GET /v3.0/db-security-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-----------------------------------| -| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | -| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | +| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -2655,12 +3080,12 @@ GET /v3.0/db-security-groups }, "dbSecurityGroups": [ { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", "progressStatus": "NONE", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2022-02-19T19:18:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -2671,42 +3096,59 @@ GET /v3.0/db-security-groups --- -### DB 보안 그룹 상세 보기 +### DB 보안 그룹 생성하기 ```http -GET /v3.0/db-security-groups/{dbSecurityGroupId} +POST /v3.0/db-security-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` | +| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | +| rules.direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| rules.etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| rules.port | Body | Object | O | 포트 객체 | +| rules.port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| rules.cidr | Body | String | O | CIDR | +| rules.description | Body | String | X | 보안 그룹 규칙에 대한 추가 정보 | + +

예시 +

+ +```json +{ + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example", + "rules": [ + { + "direction": "INGRESS", + "etherType": "IPV4", + "port": { + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 + }, + "cidr": "cidr-example", + "description": "description-example" + } + ] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|----------|--------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| rules | Body | Array | DB 보안 그룹 규칙 목록 | -| rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | -| rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.port | Body | Object | 포트 객체 | -| rules.port.portType | Body | Enum | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다.
- `PORT`: 지정된 포트값으로 설정됩니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | 최소 포트 범위 | -| rules.port.maxPort | Body | Number | 최대 포트 범위 | -| rules.cidr | Body | String | 허용할 트래픽의 원격 소스 | -| rules.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| rules.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 |
예시

@@ -2718,30 +3160,7 @@ GET /v3.0/db-security-groups/{dbSecurityGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSecurityGroup": { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", - "progressStatus": "NONE", - "rules": [ - { - "ruleId": "17c88ef6-95f1-4678-84f9-fee1b22e250d", - "description": "description", - "direction": "INGRESS", - "etherType": "IPV4", - "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 - }, - "cidr": "0.0.0.0/0", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } - ], - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2750,131 +3169,159 @@ GET /v3.0/db-security-groups/{dbSecurityGroupId} --- -### DB 보안 그룹 생성하기 +### DB 보안 그룹 삭제하기 ```http -POST /v3.0/db-security-groups +DELETE /v3.0/db-security-groups/{dbSecurityGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | -| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | -| rules.description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | -| rules.port | Body | Object | O | 포트 객체 | -| rules.port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. - -

예시 -

- -```json -{ - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", - "rules": [ - { - "direction": "INGRESS", - "etherType": "IPV4", - "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 - }, - "cidr": "0.0.0.0/0" - } - ] -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|------|---------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### DB 보안 그룹 수정하기 +### DB 보안 그룹 상세 보기 ```http -PUT /v3.0/db-security-groups/{dbSecurityGroupId} +GET /v3.0/db-security-groups/{dbSecurityGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|-----------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroup | Body | Object | DB 보안 그룹 | +| dbSecurityGroup.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroup.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| dbSecurityGroup.description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| dbSecurityGroup.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| dbSecurityGroup.rules | Body | Array | DB 보안 그룹 규칙 목록 | +| dbSecurityGroup.rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | +| dbSecurityGroup.rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | +| dbSecurityGroup.rules.direction | Body | Enum | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| dbSecurityGroup.rules.etherType | Body | Enum | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| dbSecurityGroup.rules.port | Body | Object | 포트 객체 | +| dbSecurityGroup.rules.port.portType | Body | Enum | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| dbSecurityGroup.rules.port.minPort | Body | Number | 최소 포트 범위 | +| dbSecurityGroup.rules.port.maxPort | Body | Number | 최대 포트 범위 | +| dbSecurityGroup.rules.cidr | Body | String | CIDR | +| dbSecurityGroup.rules.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroup.rules.updatedYmdt | Body | DateTime | 수정 일시 | +| dbSecurityGroup.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroup.updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSecurityGroup": { + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", + "progressStatus": "NONE", + "rules": [ + { + "ruleId": "550e8400-e29b-41d4-a716-446655440000", + "description": "description-example", + "direction": "INGRESS", + "etherType": "IPV4", + "port": { + "portType": "ALL", + "minPort": 1, + "maxPort": 1 + }, + "cidr": "cidr-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } } ```

-#### 응답 +--- + +### DB 보안 그룹 수정하기 + +```http +PUT /v3.0/db-security-groups/{dbSecurityGroupId} +``` + +#### 요청 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example" } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. --- -### DB 보안 그룹 삭제하기 +### DB 보안 그룹 규칙 삭제하기 ```http -DELETE /v3.0/db-security-groups/{dbSecurityGroupId} +DELETE /v3.0/db-security-groups/{dbSecurityGroupId}/rules ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleIds | Query | String | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -2885,7 +3332,8 @@ DELETE /v3.0/db-security-groups/{dbSecurityGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2902,20 +3350,17 @@ POST /v3.0/db-security-groups/{dbSecurityGroupId}/rules #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |

예시

@@ -2925,11 +3370,12 @@ POST /v3.0/db-security-groups/{dbSecurityGroupId}/rules "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "PORT", - "minPort": 10000, - "maxPort": 10000 + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -2938,9 +3384,26 @@ POST /v3.0/db-security-groups/{dbSecurityGroupId}/rules #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -2952,21 +3415,18 @@ PUT /v3.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleId | URL | UUID | O | DB 보안 그룹 규칙의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |
예시

@@ -2976,9 +3436,12 @@ PUT /v3.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "DB_PORT" + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -2987,32 +3450,26 @@ PUT /v3.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | ---- - -### DB 보안 그룹 규칙 삭제하기 +

예시 +

-```http -DELETE /v3.0/db-security-groups/{dbSecurityGroupId}/rules +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|-------|----|---------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleIds | Query | Array | O | DB 보안 그룹 규칙의 식별자 목록 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -3028,22 +3485,18 @@ GET /v3.0/parameter-groups 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------|-------|------|----|----------| -| dbVersion | Query | Enum | X | DB 엔진 유형 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-------------------------------------------------------------------| -| parameterGroups | Body | Array | 파라미터 그룹 목록 | -| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameterGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroups | Body | Array | 파라미터 그룹 목록 | +| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameterGroups.createdYmdt | Body | DateTime | 생성 일시 | +| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3057,13 +3510,13 @@ GET /v3.0/parameter-groups }, "parameterGroups": [ { - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", "parameterGroupStatus": "STABLE", - "createdYmdt": "2023-02-31T15:28:17+09:00", - "updatedYmdt": "2023-02-31T15:28:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3072,44 +3525,41 @@ GET /v3.0/parameter-groups

- --- -### 파라미터 그룹 상세 보기 +### 파라미터 그룹 생성하기 ```http -GET /v3.0/parameter-groups/{parameterGroupId} +POST /v3.0/parameter-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` | +| dbVersion | Body | Enum | O | DB 엔진 유형 | + +
예시 +

+ +```json +{ + "parameterGroupName": "parameterGroupName", + "description": "description-example", + "dbVersion": "MYSQL_V8036" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|--------------------------------------------------------------------------------------------------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameters | Body | Array | 파라미터 목록 | -| parameters.parameterId | Body | UUID | 파라미터 식별자 | -| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- `CLIENT`: client
- `MYSQL`: mysql
- `MYSQLD`: mysqld | -| parameters.parameterName | Body | String | 파라미터 이름 | -| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | -| parameters.value | Body | String | 현재 설정된 값 | -| parameters.defaultValue | Body | String | 기본값 | -| parameters.allowedValue | Body | String | 허용된 값 | -| parameters.updateType | Body | Enum | 수정 타입
- `VARIABLE`: 언제든 수정 가능
- `CONSTANT`: 수정 불가능
- `INIT_VARIABLE`: DB 인스턴스 생성 시에만 수정 가능 | -| parameters.applyType | Body | Enum | 적용 타입
- `SESSION`: 세션 적용
- `FILE`: 설정 파일 적용(재시작 필요)
- `BOTH`: 전체(재시작 필요) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |
예시

@@ -3121,91 +3571,130 @@ GET /v3.0/parameter-groups/{parameterGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", - "parameterGroupStatus": "STABLE", - "parameters": [ - { - "parameterId": "fa040b5e-f29f-46de-8f0d-bba4cb82887a", - "parameterFileGroup": "client", - "parameterName": "socket", - "fileParameterName": "socket", - "value": "/home/tcrds/db/mysql/tmp/mysql.sock", - "defaultValue": "/home/tcrds/db/mysql/tmp/mysql.sock", - "allowedValue": "", - "updateType": "CONSTANT", - "applyType": "BOTH" - } - ], - "createdYmdt": "2023-03-13T11:02:28+09:00", - "updatedYmdt": "2023-03-13T11:02:28+09:00" + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ```

+--- + +### 파라미터 그룹 삭제하기 + +```http +DELETE /v3.0/parameter-groups/{parameterGroupId} +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 생성하기 +### 파라미터 그룹 상세 보기 ```http -POST /v3.0/parameter-groups +GET /v3.0/parameter-groups/{parameterGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameters | Body | Array | 파라미터 목록 | +| parameters.parameterId | Body | UUID | 파라미터의 식별자 | +| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- CLIENT
- MYSQL
- MYSQLD | +| parameters.parameterName | Body | String | 파라미터 이름 | +| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | +| parameters.value | Body | String | 현재 설정된 값 | +| parameters.defaultValue | Body | String | 기본값 | +| parameters.allowedValue | Body | String | 허용된 값 | +| parameters.updateType | Body | Enum | 수정 타입
- VARIABLE
- CONSTANT
- INIT_VARIABLE | +| parameters.applyType | Body | Enum | 적용 타입
- BOTH
- SESSION
- FILE | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "parameterGroupName": "parameter-group", - "dbVersion": "MYSQL_V8028" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "parameterGroupStatus": "STABLE", + "parameters": [ + { + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "parameterFileGroup": "CLIENT", + "parameterName": "parameterName-example", + "fileParameterName": "fileParameterName-example", + "value": "value-example", + "defaultValue": "defaultValue-example", + "allowedValue": "allowedValue-example", + "updateType": "VARIABLE", + "applyType": "BOTH" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | - --- -### 파라미터 그룹 복사하기 +### 파라미터 그룹 수정하기 ```http -POST /v3.0/parameter-groups/{parameterGroupId}/copy +PUT /v3.0/parameter-groups/{parameterGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "parameterGroupName": "parameter-group-copy", - "description": "copy" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -3214,32 +3703,31 @@ POST /v3.0/parameter-groups/{parameterGroupId}/copy #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 수정하기 +### 파라미터 그룹 복사하기 ```http -PUT /v3.0/parameter-groups/{parameterGroupId} +POST /v3.0/parameter-groups/{parameterGroupId}/copy ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |

예시

```json { - "parameterGroupName": "parameter-group" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -3248,7 +3736,9 @@ PUT /v3.0/parameter-groups/{parameterGroupId} #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |

예시

@@ -3259,7 +3749,8 @@ PUT /v3.0/parameter-groups/{parameterGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3276,12 +3767,12 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/parameters #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------------|------|--------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | -| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | -| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | +| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | +| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 |

예시

@@ -3290,8 +3781,8 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/parameters { "modifiedParameters": [ { - "parameterId": "3abac558-7274-44e1-9f4a-f100f53f67ba", - "value": "0" + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "value": "value-example" } ] } @@ -3304,39 +3795,49 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/parameters 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

+--- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} +### 파라미터 그룹 재설정하기 + +```http +PUT /v3.0/parameter-groups/{parameterGroupId}/reset ``` -

-
+#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 재설정하기 +## 사용자 그룹 + +### 사용자 그룹 목록 보기 ```http -PUT /v3.0/parameter-groups/{parameterGroupId}/reset +GET /v3.0/user-groups ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroups.createdYmdt | Body | DateTime | 생성 일시 | +| userGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3347,7 +3848,15 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/reset "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "userGroups": [ + { + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -3356,23 +3865,39 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/reset --- -### 파라미터 그룹 삭제하기 +### 사용자 그룹 생성하기 ```http -DELETE /v3.0/parameter-groups/{parameterGroupId} +POST /v3.0/user-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록 | +| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` | + +

예시 +

+ +```json +{ + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAllYN": false +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +

+
#### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 |
예시

@@ -3383,7 +3908,8 @@ DELETE /v3.0/parameter-groups/{parameterGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "userGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3392,51 +3918,23 @@ DELETE /v3.0/parameter-groups/{parameterGroupId} --- -## 사용자 그룹 - -### 사용자 그룹 목록 보기 +### 사용자 그룹 삭제하기 ```http -GET /v3.0/user-groups +DELETE /v3.0/user-groups/{userGroupId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|-----------------------------------| -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| userGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - -

예시 -

+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "userGroups": [ - { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" - } - ] -} -``` +#### 응답 -

-
+이 API는 응답 본문을 반환하지 않습니다. --- @@ -3450,21 +3948,21 @@ GET /v3.0/user-groups/{userGroupId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|----------|-----------------------------------------------------------------------------------------------------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
`ENTIRE`: 프로젝트 멤버 전체를 포함하는 사용자 그룹
`INDIVIDUAL_MEMBER`: 특정 프로젝트 멤버를 포함하는 사용자 그룹 | -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
- ENTIRE
- INDIVIDUAL_MEMBER | +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3476,65 +3974,21 @@ GET /v3.0/user-groups/{userGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "userGroupTypeCode": "INDIVIDUAL_MEMBER", + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "userGroupTypeCode": "ENTIRE", "members": [ { - "memberId": "1321e759-2ef3-4b85-9921-b13e918b24b5" + "memberId": "550e8400-e29b-41d4-a716-446655440000" } ], - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" -} -``` - -

-
- ---- - -### 사용자 그룹 생성하기 - -```http -POST /v3.0/user-groups -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|-------------------------------------------------------------| -| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록
`selectAllYN`이 true인 경우 해당 필드 값은 무시됨 | -| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 유무
true인 경우 해당 그룹은 전체 멤버에 대해 설정됨 | - -
예시 -

- -```json -{ - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5" - ] -} -``` - -```json -{ - "userGroupName": "dev-team", - "selectAllYN":true + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` -

-
- -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------------|------|------|-------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +

+
--- @@ -3546,23 +4000,21 @@ PUT /v3.0/user-groups/{userGroupId} #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|----------------------------------------------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | -| userGroupName | Body | String | X | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | -| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 유무
true인 경우 해당 그룹은 전체 멤버에 대해 설정됨 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | +| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` |
예시

```json { - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5", - "f9064b09-2b15-442e-a4b0-3a5a2754555e" - ] + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAllYN": false } ``` @@ -3573,39 +4025,32 @@ PUT /v3.0/user-groups/{userGroupId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- -### 사용자 그룹 삭제하기 +## 알림 그룹 + +### 알림 그룹 목록 보기 ```http -DELETE /v3.0/user-groups/{userGroupId} +GET /v3.0/notification-groups ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroups | Body | Array | 알림 그룹 목록 | +| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | +| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | +| notificationGroups.createdYmdt | Body | DateTime | 생성 일시 | +| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3616,7 +4061,18 @@ DELETE /v3.0/user-groups/{userGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "notificationGroups": [ + { + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, + "notifySms": false, + "isEnabled": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -3625,30 +4081,45 @@ DELETE /v3.0/user-groups/{userGroupId} --- -## 알림 그룹 - -### 알림 그룹 목록 보기 +### 알림 그룹 생성하기 ```http -GET /v3.0/notification-groups +POST /v3.0/notification-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | +| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | + +

예시 +

+ +```json +{ + "notificationGroupName": "notificationGroupName", + "notifyEmail": true, + "notifySms": true, + "isEnabled": true, + "dbInstanceIds": [], + "userGroupIds": [] +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------------|------|----------|-----------------------------------| -| notificationGroups | Body | Array | 알림 그룹 목록 | -| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | -| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | -| notificationGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 |
예시

@@ -3660,17 +4131,7 @@ GET /v3.0/notification-groups "resultMessage": "SUCCESS", "isSuccessful": true }, - "notificationGroups": [ - { - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, - "notifySms": false, - "isEnabled": true, - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" - } - ] + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3679,6 +4140,26 @@ GET /v3.0/notification-groups --- +### 알림 그룹 삭제하기 + +```http +DELETE /v3.0/notification-groups/{notificationGroupId} +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + ### 알림 그룹 상세 보기 ```http @@ -3689,27 +4170,27 @@ GET /v3.0/notification-groups/{notificationGroupId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------------|------|----------|-----------------------------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notifySms | Body | Boolean | SMS 알림 여부 | -| isEnabled | Body | Boolean | 활성화 여부 | -| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notifySms | Body | Boolean | SMS 알림 여부 | +| isEnabled | Body | Boolean | 활성화 여부 | +| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -3721,25 +4202,25 @@ GET /v3.0/notification-groups/{notificationGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, "notifySms": false, - "isEnabled": true, + "isEnabled": false, "dbInstances": [ { - "dbInstanceId": "ed5cb985-526f-4c54-9ae0-40288593de65", - "dbInstanceName": "database" + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example" } ], "userGroups": [ { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team" + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example" } ], - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -3748,37 +4229,35 @@ GET /v3.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 생성하기 +### 알림 그룹 수정하기 ```http -POST /v3.0/notification-groups +PUT /v3.0/notification-groups/{notificationGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------------| -| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | -| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | -| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | -| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | +| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `false` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `false` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `false` | +| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 |

예시

```json { - "notificationGroupName": "dev-team-noti", + "notificationGroupName": "notificationGroupName-example", "notifyEmail": false, - "isEnable": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65" - ], - "userGroupIds": [ - "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0" - ] + "notifySms": false, + "isEnabled": false, + "dbInstanceIds": [], + "userGroupIds": [] } ``` @@ -3787,49 +4266,45 @@ POST /v3.0/notification-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|------|------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 알림 그룹 수정하기 +## 모니터링 + +### 통계 정보 조회 ```http -PUT /v3.0/notification-groups/{notificationGroupId} +GET /v3.0/metric-statistics ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부 | -| notifySms | Body | Boolean | X | SMS 알림 여부 | -| isEnabled | Body | Boolean | X | 활성화 여부 | -| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +이 API는 요청 본문을 요구하지 않습니다. -

예시 -

+#### 응답 -```json -{ - "notifyEmail": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65", - "d51b7da0-682f-47ff-b588-b739f6adc740" - ] -} +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### Metric 목록 보기 + +```http +GET /v3.0/metrics ``` -

-
+#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| metrics | Body | Array | Metric 목록 | +| metrics.measureName | Body | String | 조회 지표 유형 | +| metrics.unit | Body | String | 측정값 단위 |
예시

@@ -3840,7 +4315,13 @@ PUT /v3.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "metrics": [ + { + "measureName": "measureName-example", + "unit": "unit-example" + } + ] } ``` @@ -3849,23 +4330,38 @@ PUT /v3.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 삭제하기 +## 이벤트 + +### 이벤트 카테고리 + +이벤트는 카테고리로 분류할 수 있으며 아래와 같습니다. + +| 이벤트 카테고리 | 설명 | +|-------------|---------| +| ALL | 전체 | +| BACKUP | 백업 | +| DB_INSTANCE | DB 인스턴스 | +| JOB | 작업 | +| TENANT | 테넌트 | +| MONITORING | 모니터링 | + +### 구독 가능한 이벤트 코드 목록 보기 ```http -DELETE /v3.0/notification-groups/{notificationGroupId} +GET /v3.0/event-codes ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | - #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventCodes | Body | Array | 이벤트 코드 목록 | +| eventCodes.eventCode | Body | Enum | 이벤트 코드 | +| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT |

예시

@@ -3876,7 +4372,13 @@ DELETE /v3.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "eventCodes": [ + { + "eventCode": "ENUM_VALUE", + "eventCategoryType": "ALL" + } + ] } ``` @@ -3885,12 +4387,10 @@ DELETE /v3.0/notification-groups/{notificationGroupId} --- -## 모니터링 - -### Metric 목록 보기 +### 이벤트 목록 조회 ```http -GET /v3.0/metrics +GET /v3.0/events ``` #### 요청 @@ -3899,11 +4399,18 @@ GET /v3.0/metrics #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|--------|-----------| -| metrics | Body | Array | Metric 목록 | -| metrics.measureName | Body | Enum | 조회 지표 유형 | -| metrics.unit | Body | String | 측정값 단위 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 목록 수 | +| events | Body | Array | 이벤트 목록 | +| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | +| events.sourceId | Body | String | 이벤트 소스의 식별자 | +| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | +| events.messages | Body | Array | 이벤트 메세지 목록 | +| events.messages.langCode | Body | Enum | 언어 코드
- KO
- EN
- JA
- ZH | +| events.messages.message | Body | String | 이벤트 메세지 | +| events.eventYmdt | Body | DateTime | 이벤트 발생 일시 |

예시

@@ -3915,10 +4422,20 @@ GET /v3.0/metrics "resultMessage": "SUCCESS", "isSuccessful": true }, - "metrics": [ + "totalCounts": 1, + "events": [ { - "measureName": "CPU_USAGE", - "unit": "%" + "eventCategoryType": "ALL", + "eventCode": "ENUM_VALUE", + "sourceId": "sourceId-example", + "sourceName": "sourceName-example", + "messages": [ + { + "langCode": "KO", + "message": "message-example" + } + ], + "eventYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3929,56 +4446,65 @@ GET /v3.0/metrics --- -### 통계 정보 조회 +## 이벤트 구독 + +### 이벤트 구독 목록 조회 ```http -GET /v3.0/metric-statistics +GET /v3.0/event-subscriptions ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|----------|----|-----------------------------------| -| dbInstanceId | Query | UUID | O | DB 인스턴스의 식별자 | -| measureNames | Query | Array | O | 조회 지표 목록
- 최소 크기: `1` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| interval | Query | Number | X | 조회 간격 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|-----------|----------| -| metricStatistics | Body | Array | 통계 정보 목록 | -| metricStatistics.measureName | Body | Enum | 측정 항목 유형 | -| metricStatistics.unit | Body | String | 측정값 단위 | -| metricStatistics.values | Body | Array | 측정값 목록 | -| metricStatistics.values.timestamp | Body | Timestamp | 측정 시간 | -| metricStatistics.values.value | Body | Object | 측정값 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 구독 목록 수 | +| eventSubscriptions | Body | Array | 이벤트 구독 목록 | +| eventSubscriptions.eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 | +| eventSubscriptions.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.eventSubscriptionName | Body | String | 이벤트 구독의 식별할 수 있는 이름 | +| eventSubscriptions.enabled | Body | Boolean | 활성화 여부 | +| eventSubscriptions.notifyEmail | Body | Boolean | 이메일 발송 여부 | +| eventSubscriptions.notifySms | Body | Boolean | SMS 발송 여부 | +| eventSubscriptions.eventCodes | Body | Array | 구독할 이벤트 코드 목록 | +| eventSubscriptions.sources | Body | Array | 구독할 이벤트 소스 목록 | +| eventSubscriptions.sources.sourceId | Body | String | 이벤트 소스의 식별자 | +| eventSubscriptions.sources.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.userGroupIds | Body | Array | 이벤트 구독 중인 사용자 그룹의 식별자 목록 | +| eventSubscriptions.createdYmdt | Body | DateTime | 생성 일시 |

예시

```json { - "metricStatistics": [ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "totalCounts": 1, + "eventSubscriptions": [ { - "measureName": "MYSQL_STATUS", - "unit": "", - "values": [ - [ - 1679298540, - "1" - ], - [ - 1679298600, - "1" - ], - [ - 1679298660, - "1" - ] - ] + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ + { + "sourceId": "sourceId-example", + "eventCategoryType": "ALL" + } + ], + "userGroupIds": [], + "createdYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3989,56 +4515,56 @@ GET /v3.0/metric-statistics --- -## 이벤트 - -### 이벤트 카테고리 - -이벤트는 카테고리로 분류할 수 있으며 아래와 같습니다. - -| 이벤트 카테고리 | 설명 | -|-------------|---------| -| ALL | 전체 | -| BACKUP | 백업 | -| DB_INSTANCE | DB 인스턴스 | -| JOB | 작업 | -| TENANT | 테넌트 | -| MONITORING | 모니터링 | - -### 이벤트 목록 조회 +### 이벤트 구독 생성하기 ```http -GET /v3.0/events +POST /v3.0/event-subscriptions ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | O | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | O | 활성화 여부 | +| notifyEmail | Body | Boolean | O | 이메일 발송 여부 | +| notifySms | Body | Boolean | O | SMS 발송 여부 | +| eventCodes | Body | Array | O | 구독할 이벤트 코드 목록 | +| sources | Body | Array | O | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | O | 이벤트 구독할 사용자 그룹의 식별자 목록 | + +

예시 +

+ +```json +{ + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ + { + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" + } + ], + "userGroupIds": [] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | O | 조회할 목록의 페이지
- 최솟값: `1` | -| size | Query | Number | O | 조회할 목록의 페이지 크기
- 최솟값: `1`
- 최댓값: `100` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| eventCategoryType | Query | Enum | O | 조회할 이벤트 카테고리 유형
- `ALL`: 전체
- `INSTANCE`: DB 인스턴스
- `BACKUP`: 백업
- `DB_SECURITY_GROUP`: DB 보안 그룹
- `TENANT`: 테넌트 | -| sourceId | Query | String | X | 이벤트가 발생한 대상 리소스의 식별자 | -| keyword | Query | String | X | 이벤트 메시지에 포함된 문자열 검색어 | -| ascendingOrder | Query | Enum | X | 이벤트 메시지 정렬 순서
- `ASC`: 오름차순
- `DESC`: 내림차순
- 기본값: `DESC` | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|---------------------------------------| -| totalCounts | Body | Number | 전체 이벤트 목록 수 | -| events | Body | Array | 이벤트 목록 | -| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | -| events.sourceId | Body | String | 이벤트 소스의 식별자 | -| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | -| events.messages | Body | Array | 이벤트 메시지 목록 | -| events.messages.langCode | Body | String | 언어 코드 | -| events.messages.message | Body | String | 이벤트 메시지 | -| events.eventYmdt | Body | DateTime | 이벤트 발생 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 |
예시

@@ -4050,34 +4576,7 @@ GET /v3.0/events "resultMessage": "SUCCESS", "isSuccessful": true }, - "totalCounts": 28, - "events": [ - { - "eventCategoryType": "INSTANCE", - "eventCode": "INSTC_02_01", - "sourceId": "76f00947-356e-4a20-8922-428368cc45ed", - "sourceName": "db-instance", - "messages": [ - { - "langCode": "EN", - "message": "DB instance started" - }, - { - "langCode": "JA", - "message": "DBインスタンスの起動" - }, - { - "langCode": "KO", - "message": "DB 인스턴스 시작" - }, - { - "langCode": "ZH", - "message": "DB instance started" - } - ], - "eventYmdt": "2023-03-20T16:31:59+09:00" - } - ] + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4086,44 +4585,75 @@ GET /v3.0/events --- -### 구독 가능한 이벤트 코드 목록 보기 +### 이벤트 구독 삭제하기 ```http -GET /v3.0/event-codes +DELETE /v3.0/event-subscriptions/{eventSubscriptionId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | + #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|-------|-------------| -| eventCodes | Body | Array | 이벤트 코드 목록 | -| eventCodes.eventCode | Body | Enum | 이벤트 코드 | -| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 이벤트 구독 수정하기 + +```http +PUT /v3.0/event-subscriptions/{eventSubscriptionId} +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | +| eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | X | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | X | 활성화 여부 | +| notifyEmail | Body | Boolean | X | 이메일 발송 여부 | +| notifySms | Body | Boolean | X | SMS 발송 여부 | +| eventCodes | Body | Array | X | 구독할 이벤트 코드 목록 | +| sources | Body | Array | X | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | X | 이벤트 구독할 사용자 그룹의 식별자 목록 |

예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "eventCodes": [ + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ { - "eventCode": "INSTC_05_01", - "eventCategoryType": "INSTANCE" + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" } - ] + ], + "userGroupIds": [] } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- + diff --git a/ko/api-guide-v3.0-ncgn.md b/ko/api-guide-v3.0-ncgn.md index 593bba4f..d5adf612 100644 --- a/ko/api-guide-v3.0-ncgn.md +++ b/ko/api-guide-v3.0-ncgn.md @@ -1,39 +1,40 @@ -## Database > RDS for MySQL > API 가이드 +## Database > RDS for MySQL > API v3.0 가이드 + ## RDS for MySQL API 공통 정보 ### API 엔드포인트 -| 리전 | 엔드포인트 | -|-----------|-----------------------------------------------| + +| 리전 | 엔드포인트 | +|------|----------| | 한국(판교) 리전 | https://kr1-rds-mysql.api.gncloud.go.kr | + ### 인증 및 권한 RDS for MySQL API를 사용하려면 User Access Key가 필요합니다. User Access Key는 NHN Cloud 계정 또는 IAM 계정을 기반으로 발급되는 인증 키로, Secret Access Key와 함께 사용하여 API 요청에 대한 인증 수단으로 활용됩니다. User Access Key와 Secret Access Key는 콘솔의 **API 보안 설정**에서 발급할 수 있습니다. User Access Key 발급 및 사용에 대한 자세한 내용은 [User Access Key](/nhncloud/ko/public-api/user-access-key)를 참고하세요. - 생성된 Key는 Appkey와 함께 요청 Header에 포함해야 합니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------------|--------|--------|----|-------------------------------------------------------------| -| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | -| X-TC-AUTHENTICATION-ID | Header | String | O | API 보안 설정 메뉴의 User Access Key ID | -| X-TC-AUTHENTICATION-SECRET | Header | String | O | API 보안 설정 메뉴의 Secret Access Key | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | +| X-TC-AUTHENTICATION-ID | Header | String | O | API 보안 설정 메뉴의 User Access Key ID | +| X-TC-AUTHENTICATION-SECRET | Header | String | O | API 보안 설정 메뉴의 Secret Access Key | +또한 프로젝트 권한에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER` 역할에는 아래처럼 기본 권한이 부여돼 있고 프로젝트 내 역할 그룹 관리 메뉴에서 필요한 권한만 부여할 수 있습니다. -또한 프로젝트 멤버 역할에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER`로 구분하여 권한을 부여할 수 있습니다. - -* `RDS for MySQL ADMIN` 권한은 모든 기능을 사용 가능합니다. -* `RDS for MySQL VIEWER` 권한은 정보를 조회하는 기능만 사용 가능합니다. +* `RDS for MySQL ADMIN` 역할은 API 실행에 필요한 모든 권한이 부여됩니다. +* `RDS for MySQL VIEWER` 역할은 정보를 조회하는 권한만 부여됩니다. * DB 인스턴스를 생성, 수정, 삭제하거나, DB 인스턴스를 대상으로 하는 어떠한 기능도 사용할 수 없습니다. - * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용 가능합니다. + * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용할 수 있습니다. API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같은 오류가 발생합니다. -| resultCode | resultMessage | 설명 | -|------------|---------------|-------------| -| 80401 | Unauthorized | 인증에 실패했습니다. | -| 80403 | Forbidden | 권한이 없습니다. | +| resultCode | resultMessage | 설명 | +|------------|---------------|-----| +| 80401 | Unauthorized | 인증에 실패했습니다. | +| 80403 | Forbidden | 권한이 없습니다. | ### 응답 공통 정보 @@ -51,52 +52,50 @@ API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같 ``` #### 필드 -| 이름 | 형식 | 설명 | -|---------------|---------|-----------------------------------------| -| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | -| resultMessage | String | 결과 메시지 | -| isSuccessful | Boolean | 성공 여부 | - - +| 이름 | 형식 | 설명 | +|-----|-----|-----| +| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | +| resultMessage | String | 결과 메시지 | +| isSuccessful | Boolean | 성공 여부 | ### DB 엔진 유형 -| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 정보 | -|--------------|----------|-----------------|--------| -| MYSQL\_V5633 | X | X | NATIVE | -| MYSQL\_V5715 | O | O | NATIVE | -| MYSQL\_V5719 | O | O | NATIVE | -| MYSQL\_V5726 | O | O | NATIVE | -| MYSQL\_V5731 | X | X | NATIVE | -| MYSQL\_V5733 | O | X | NATIVE, SHA256 | -| MYSQL\_V5737 | O | O | NATIVE, SHA256 | -| MYSQL\_V8018 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8023 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8028 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8032 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8033 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8034 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8044 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8045 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8405 | O | O | CACHING_SHA2 | -| MYSQL_V8406 | O | O | CACHING_SHA2 | -| MYSQL_V8407 | O | O | CACHING_SHA2 | -| MYSQL_V8408 | O | O | CACHING_SHA2 | +| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 | +|------------|----------|------------------|------------| +| MYSQL_V5633 | X | X | NATIVE | +| MYSQL_V5715 | O | O | NATIVE | +| MYSQL_V5719 | O | O | NATIVE | +| MYSQL_V5726 | O | O | NATIVE | +| MYSQL_V5731 | X | X | NATIVE | +| MYSQL_V5733 | O | X | NATIVE, SHA256 | +| MYSQL_V5737 | O | O | NATIVE, SHA256 | +| MYSQL_V8018 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8023 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8028 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8032 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8033 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8034 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8044 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8045 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8405 | O | O | CACHING_SHA2 | +| MYSQL_V8406 | O | O | CACHING_SHA2 | +| MYSQL_V8407 | O | O | CACHING_SHA2 | +| MYSQL_V8408 | O | O | CACHING_SHA2 | * ENUM 타입의 dbVersion 필드에 대해 해당 값을 사용할 수 있습니다. * 버전에 따라 생성 또는 복원이 불가능한 경우가 있을 수 있습니다. ## 프로젝트 정보 -### 리전 목록 보기 +### 프로젝트 멤버 목록 보기 ```http -GET /v3.0/project/regions +GET /v3.0/project/members ``` #### 요청 @@ -105,11 +104,13 @@ GET /v3.0/project/regions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------|------|---------|----------------------------------------------------------------------------| -| regions | Body | Array | 리전 목록 | -| regions.regionCode | Body | Enum | 리전 코드
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| members.memberName | Body | String | 프로젝트 멤버의 이름 | +| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | +| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 |
예시

@@ -121,31 +122,26 @@ GET /v3.0/project/regions "resultMessage": "SUCCESS", "isSuccessful": true }, - "regions": [ - { - "regionCode": "KR1", - "isEnabled": true - }, - { - "regionCode": "KR2", - "isEnabled": true - }, + "members": [ { - "regionCode": "JP1", - "isEnabled": true + "memberId": "550e8400-e29b-41d4-a716-446655440000", + "memberName": "memberName-example", + "emailAddress": "emailAddress-example", + "phoneNumber": "phoneNumber-example" } ] } ``` +

--- -### 프로젝트 멤버 목록 보기 +### 리전 목록 보기 ```http -GET /v3.0/project/members +GET /v3.0/project/regions ``` #### 요청 @@ -154,13 +150,11 @@ GET /v3.0/project/members #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|--------|-----------------| -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| members.memberName | Body | String | 프로젝트 멤버의 이름 | -| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | -| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| regions | Body | Array | 리전 목록 | +| regions.regionCode | Body | Enum | 리전 코드
- KR1: `한국(판교)` | +| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 |
예시

@@ -172,12 +166,10 @@ GET /v3.0/project/members "resultMessage": "SUCCESS", "isSuccessful": true }, - "members": [ + "regions": [ { - "memberId": "1b1d3627-507a-49ea-8cb7-c86dfa9caa58", - "memberName": "홍길동", - "emailAddress": "gildong.hong@nhn.com", - "phoneNumber": "+821012345678" + "regionCode": "KR1", + "isEnabled": false } ] } @@ -202,13 +194,13 @@ GET /v3.0/db-flavors #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------| -| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | -| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | -| dbFlavors.ram | Body | Number | 메모리 용량(MB) | -| dbFlavors.vcpus | Body | Number | CPU 코어 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | +| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | +| dbFlavors.ram | Body | Number | 메모리 용량(MB) | +| dbFlavors.vcpus | Body | Number | CPU 코어 수 |

예시

@@ -222,9 +214,9 @@ GET /v3.0/db-flavors }, "dbFlavors": [ { - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbFlavorName": "m2.c1m2", - "ram": 2048, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbFlavorName": "dbFlavorName-example", + "ram": 1, "vcpus": 1 } ] @@ -250,14 +242,14 @@ GET /v3.0/network/subnets #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|---------|------------------| -| subnets | Body | Array | 서브넷 목록 | -| subnets.subnetId | Body | UUID | 서브넷의 식별자 | -| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | -| subnets.subnetCidr | Body | String | 서브넷의 CIDR | -| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | -| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| subnets | Body | Array | 서브넷 목록 | +| subnets.subnetId | Body | UUID | 서브넷의 식별자 | +| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnets.subnetCidr | Body | String | 서브넷의 CIDR | +| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | +| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 |

예시

@@ -271,11 +263,11 @@ GET /v3.0/network/subnets }, "subnets": [ { - "subnetId": "1b2a9b23-0725-4b92-8c78-35db66b8ad9f", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/24", - "usingGateway": true, - "availableIpCount": 240 + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example", + "usingGateway": false, + "availableIpCount": 1 } ] } @@ -300,11 +292,11 @@ GET /v3.0/db-versions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|---------|-----------------------| -| dbVersions | Body | Array | DB 엔진 목록 | -| dbVersions.dbVersion | Body | String | DB 엔진 유형 | -| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbVersions | Body | Array | DB 엔진 목록 | +| dbVersions.dbVersion | Body | String | DB 엔진 유형 | +| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | | dbVersions.restorableFromObs | Body | Boolean | 오브젝트 스토리지로부터 복원 가능 여부 |

예시 @@ -319,9 +311,9 @@ GET /v3.0/db-versions }, "dbVersions": [ { - "dbVersion": "MYSQL_V8028", - "dbVersionName": "MySQL 8.0.28", - "restorableFromObs": true + "dbVersion": "MYSQL_V8036", + "dbVersionName": "dbVersionName-example", + "restorableFromObs": false } ] } @@ -334,7 +326,7 @@ GET /v3.0/db-versions ## 데이터 스토리지 -### 데이터 스토리지 타입 목록 보기 +### 스토리지 타입 목록 보기 ```http GET /v3.0/storage-types @@ -346,9 +338,9 @@ GET /v3.0/storage-types #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|-------|----------------| -| storageTypes | Body | Array | 데이터 스토리지 타입 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageTypes | Body | Array | 스토리지 타입 목록 |
예시

@@ -360,10 +352,7 @@ GET /v3.0/storage-types "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageTypes": [ - "General SSD", - "General HDD" - ] + "storageTypes": [] } ``` @@ -372,7 +361,7 @@ GET /v3.0/storage-types --- -### 데이터 스토리지 목록 보기 +### 스토리지 목록 보기 ```http GET /v3.0/storages @@ -384,9 +373,9 @@ GET /v3.0/storages #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------|------|-------|-------------| -| storages | Body | Array | 데이터 스토리지 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storages | Body | Array | 스토리지 목록 |

예시

@@ -398,10 +387,7 @@ GET /v3.0/storages "resultMessage": "SUCCESS", "isSuccessful": true }, - "storages": [ - "General SSD", - "General HDD" - ] + "storages": [] } ``` @@ -439,21 +425,21 @@ GET /v3.0/jobs/{jobId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------|-----|------|----|---------| -| jobId | URL | UUID | O | 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| jobId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------|------|----------|-----------------------------------| -| jobId | Body | UUID | 작업의 식별자 | -| jobStatus | Body | Enum | 작업의 현재 상태 | -| resourceRelations | Body | Array | 연관 리소스 목록 | -| resourceRelations.resourceType | Body | Enum | 연관 리소스 유형 | -| resourceRelations.resourceId | Body | UUID | 연관 리소스의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | +| jobStatus | Body | Enum | 작업의 현재 상태
- DELETED
- CANNOT_PROGRESS
- FAILED
- ERROR
- CANCELED
- INTERRUPTED
- COMPLETED
- RUNNING
- PREPARING
- READY
- CREATED
- FAIL_TO_READY
- REGISTERED
- FAIL_TO_REGISTER
- WAIT_TO_REGISTER | +| resourceRelations | Body | Array | 연관 리소스 목록 | +| resourceRelations.resourceType | Body | String | 연관 리소스 유형 | +| resourceRelations.resourceId | Body | String | 연관 리소스의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -465,16 +451,16 @@ GET /v3.0/jobs/{jobId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "jobId": "0ddb042c-5af6-43fb-a914-f4dd0540eb7c", - "jobStatus": "RUNNING", + "jobId": "550e8400-e29b-41d4-a716-446655440000", + "jobStatus": "DELETED", "resourceRelations": [ { - "resourceType": "DB_INSTANCE", - "resourceId": "56b39dcf-65eb-47ec-9d4f-09f160ba2266" + "resourceType": "resourceType-example", + "resourceId": "resourceId-example" } ], - "createdYmdt": "2023-02-22T20:47:12+09:00", - "updatedYmdt": "2023-02-22T20:49:46+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -497,13 +483,13 @@ GET /v3.0/db-instance-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------|------|----------|--------------------------------------------------------------------------| -| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | -| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | +| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -517,10 +503,10 @@ GET /v3.0/db-instance-groups }, "dbInstanceGroups": [ { - "dbInstanceGroupId": "05de0746-89fd-49c8-94f9-9c5b1df97009", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", - "createdYmdt": "2023-02-13T17:35:20+09:00", - "updatedYmdt": "2023-02-13T17:35:20+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -541,22 +527,22 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|-----------------| -| dbInstanceGroupId | URL | UUID | O | DB 인스턴스 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -568,17 +554,17 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbInstanceGroupId": "36617a8e-0df8-4b16-b6ea-6306019e95da", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", "dbInstances": [ { - "dbInstanceId": "6d2db0ef-fe9b-4ed4-97b1-d97fcb4cf1b8", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE" + "dbInstanceStatus": "BEFORE_CREATE" } ], - "createdYmdt": "2023-03-03T17:38:14+09:00", - "updatedYmdt": "2023-03-03T17:38:14+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -611,8 +597,8 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} | `BACKING_UP` | 백업 중 | | `CANCELING` | 취소 중 | | `CREATING` | 생성 중 | -| `CREATING_SCHEMA` | DB 스키마 생성 중 | -| `CREATING_USER` | 사용자 생성 중 | +| `CREATING_SCHEMA` | DB 스키마 생성 중 | +| `CREATING_USER` | 사용자 생성 중 | | `DELETING` | 삭제 중 | | `DELETING_SCHEMA` | DB 스키마 삭제 중 | | `DELETING_USER` | 사용자 삭제 중 | @@ -631,8 +617,8 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} | `STARTING` | 시작 중 | | `STOPPING` | 정지 중 | | `SYNCING_SCHEMA` | DB 스키마 동기화 중 | -| `SYNCING_USER` | 사용자 동기화 중 | -| `UPDATING_USER` | 사용자 수정 중 | +| `SYNCING_USER` | 사용자 동기화 중 | +| `UPDATING_USER` | 사용자 수정 중 | ### DB 인스턴스 목록 보기 @@ -646,20 +632,20 @@ GET /v3.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstances | Body | Array | DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | -| dbInstances.dbPort | Body | Number | DB 포트 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태 | -| dbInstances.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstances.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstances | Body | Array | DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | +| dbInstances.dbPort | Body | Number | DB 포트 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbInstances.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstances.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -673,17 +659,17 @@ GET /v3.0/db-instances }, "dbInstances": [ { - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", + "dbInstanceStatus": "BEFORE_CREATE", "progressStatus": "NONE", - "createdYmdt": "2023-01-23T12:03:13+09:00", - "updatedYmdt": "2023-02-02T17:20:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -694,83 +680,6 @@ GET /v3.0/db-instances --- -### DB 인스턴스 상세 보기 - -```http -GET /v3.0/db-instances/{dbInstanceId} -``` - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| dbPort | Body | Number | DB 포트 | -| dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| progressStatus | Body | Enum | DB 인스턴스의 현재 작업 진행 상태 | -| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | -| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | -| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | -| supportAuthenticationPlugin | Body | Boolean | 인증 플러그인 지원 여부 | -| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | -| needMigration | Body | Boolean | 마이그레이션 필요 여부 | -| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", - "progressStatus": "NONE", - "dbFlavorId": "e9ed4ef6-78d7-46fa-ace9-32481e97f3b7", - "parameterGroupId": "b03e8b13-de27-4d04-a488-ff5689589372", - "dbSecurityGroupIds": ["01908c35-d2c9-4852-baf0-17f06ec42c03"], - "notificationGroupIds": ["83a62a33-ddbf-4a04-8653-e54463d5b1ac"], - "useDeletionProtection": false, - "supportAuthenticationPlugin": true, - "needToApplyParameterGroup": false, - "needMigration": false, - "supportDbVersionUpgrade": true, - "createdYmdt": "2022-11-23T12:03:13+09:00", - "updatedYmdt": "2022-12-02T17:20:17+09:00" -} -``` - -

-
- ---- - ### DB 인스턴스 생성하기 ```http @@ -779,61 +688,67 @@ POST /v3.0/db-instances #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|------|---------|----|---------------------------------------------------------------------| -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbUserName | Body | String | O | DB 사용자 계정명 | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 ||network|Body|Object|O|네트워크 정보 객체| -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- 기본값: `NATIVE`(미지원 시 `CACHING_SHA2`)
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| authenticationPlugin | Body | Enum | X | 인증 Plugin
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | TLS Option
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE", "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, "availabilityZone": "kr-pub-a" }, "storage": { @@ -841,11 +756,15 @@ POST /v3.0/db-instances "storageSize": 20 }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 1800, + "replicationRegion": "KR1", + "useBackupLock": true, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR" + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" } ] } @@ -857,45 +776,124 @@ POST /v3.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### DB 인스턴스 수정하기 +### 오브젝트 스토리지를 이용한 DB 인스턴스 복원 ```http -PUT /v3.0/db-instances/{dbInstanceId} +POST /v3.0/db-instances/restore-from-obs ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|------|---------|----|--------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbPort | Body | Number | X | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbVersion | Body | Enum | X | DB 엔진 유형 | -| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
기본값: `false` | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | X | DB 포트 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| imageId | Body | UUID | X | 이미지의 식별자 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | +| restore.username | Body | String | O | NHN Cloud 계정 혹은 IAM 멤버 ID | +| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | +| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | +| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` |
예시

```json { - "dbInstanceName": "db-instance2", - "description": "description2", - "dbPort": 10001, + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "dbVersion": "MYSQL_V8036", + "useHighAvailability": false, + "imageId": "550e8400-e29b-41d4-a716-446655440000", + "pingInterval": 3, + "storage": { + "storageType": "General SSD", + "storageSize": 20 + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "backup": { + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR1", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + }, + "restore": { + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" + }, + "useDefaultNotification": false, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", "dbSecurityGroupIds": [], - "executeBackup": true + "userGroupIds": [], + "useDeletionProtection": false } ``` @@ -904,9 +902,7 @@ PUT /v3.0/db-instances/{dbInstanceId} #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- @@ -920,54 +916,15 @@ DELETE /v3.0/db-instances/{dbInstanceId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 인스턴스 재시작하기 - -```http -POST /v3.0/db-instances/{dbInstanceId}/restart -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- -### DB 인스턴스 강제 재시작하기 -```http -POST /v3.0/db-instances/{dbInstanceId}/force-restart -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |

예시

@@ -978,108 +935,136 @@ POST /v3.0/db-instances/{dbInstanceId}/force-restart "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- ---- - -### DB 인스턴스 시작하기 - -```http -POST /v3.0/db-instances/{dbInstanceId}/start -``` - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### DB 인스턴스 정지하기 +### DB 인스턴스 상세 보기 ```http -POST /v3.0/db-instances/{dbInstanceId}/stop +GET /v3.0/db-instances/{dbInstanceId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| dbPort | Body | Number | DB 포트 | +| dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | +| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | +| supportAuthenticationPlugin | Body | Boolean | 인증 plugin 지원 여부 | +| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | +| needMigration | Body | Boolean | 마이그레이션 필요 여부 | +| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 | -### DB 인스턴스 백업하기 +
예시 +

-```http -POST /v3.0/db-instances/{dbInstanceId}/backup +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbInstanceType": "MASTER", + "dbInstanceStatus": "BEFORE_CREATE", + "progressStatus": "NONE", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "notificationGroupIds": [], + "useDeletionProtection": false, + "supportAuthenticationPlugin": false, + "needToApplyParameterGroup": false, + "needMigration": false, + "supportDbVersionUpgrade": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" +} ``` -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|--------|----|-----------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| backupName | Body | String | O | 백업을 식별할 수 있는 이름 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### DB 인스턴스 백업 후 내보내기 +### DB 인스턴스 수정하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/backup-to-object-storage +PUT /v3.0/db-instances/{dbInstanceId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|-----------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbPort | Body | Number | X | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbVersion | Body | Enum | X | DB 엔진 버전 코드 | +| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
- 기본값: `false` | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` |
예시

```json { - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "backups/backup_file" + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbPort": 1, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "useDummy": false, + "dbSecurityGroupIds": [], + "executeBackup": false, + "useOnlineFailover": false, + "waitReplicationDelay": false, + "useReadOnly": false } ``` @@ -1088,172 +1073,71 @@ POST /v3.0/db-instances/{dbInstanceId}/backup-to-object-storage #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 인스턴스 복제하기 - -```http -POST /v3.0/db-instances/{dbInstanceId}/replicate -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbPort | Body | Number | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록
- 기본값: 원본 DB 인스턴스 값 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: 원본 DB 인스턴스 값 | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전
- 기본값: 원본 DB 인스턴스 값 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각
- 예시: `00:00:00`
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간
- 기본값: 원본 DB 인스턴스 값 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |

예시

```json { - "dbInstanceName": "db-instance-replicate", - "description": "description", - "dbPort": 11000, - "network": { - "availabilityZone": "kr-pub-a" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true }, - "storage": { - "stroageSize": 100 - } + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### DB 인스턴스 승격하기 +### DB 인스턴스 백업하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/promote +POST /v3.0/db-instances/{dbInstanceId}/backup ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| backupName | Body | String | O | 백업을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | ---- - -### 복원 정보 조회 +
예시 +

-```http -GET /v3.0/db-instances/{dbInstanceId}/restoration-info +```json +{ + "backupName": "backupName" +} ``` -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------------|------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| oldestRestorableYmdt | Body | DateTime | 가장 오래된 복원 가능한 시각 | -| latestRestorableYmdt | Body | DateTime | 가장 최신의 복원 가능한 시각 | -| restorableBackups | Body | Array | 복원 가능한 백업 목록 | -| restorableBackups.backup | Body | Object | 백업 정보 객체 | -| restorableBackups.backup.backupId | Body | UUID | 백업의 식별자 | -| restorableBackups.backup.backupName | Body | String | 백업 이름 | -| restorableBackups.backup.useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| restorableBackups.backup.backupSize | Body | Number | 백업 크기 | -| restorableBackups.backup.backupType | Body | Enum | 백업 유형
- `AUTO`: 자동
- `MANUAL`: 수동 | -| restorableBackups.backup.backupStatus | Body | Enum | 백업 상태
- `BACKING_UP`: 백업 중인 경우
- `COMPLETED`: 백업이 완료된 경우
- `DELETING`: 백업이 삭제 중인 경우
- `DELETED`: 백업이 삭제된 경우
- `ERROR`: 오류가 발생한 경우 | -| restorableBackups.backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| restorableBackups.backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | -| restorableBackups.backup.dbVersion | Body | String | DB 엔진 유형 | -| restorableBackups.backup.failoverCount | Body | Number | 장애 조치 횟수 | -| restorableBackups.backup.binLogFileName | Body | String | 바이너리 로그 파일 이름 | -| restorableBackups.backup.binLogPosition | Body | Number | 바이너리 로그 파일 위치 | -| restorableBackups.backup.createdYmdt | Body | DateTime | 백업 생성 일시 | -| restorableBackups.backup.updatedYmdt | Body | DateTime | 백업 갱신 일시 | -| restorableBackups.restorableBinLogs | Body | Array | 해당 백업을 이용하여 복원 가능한 바이너리 로그 이름 목록 | - - +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "oldestRestorableYmdt": "2023-07-09T16:33:33+09:00", - "latestRestorableYmdt": "2023-07-10T15:44:44+09:00", - "restorableBackups": [ - { - "backup": { - "backupId": "145d889a-fe08-474f-8f58-bde576ff96a9", - "backupName": "example-backup-name", - "backupStatus": "COMPLETED", - "dbInstanceId": "dba1be25-9429-4589-9716-7fb6daad7cb9", - "dbInstanceName": "original-db-instance-name", - "dbVersion": "MYSQL_V8028", - "backupType": "MANUAL", - "backupSize": 8299904, - "useBackupLock": true, - "failoverCount": 0, - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 367916037, - "createdYmdt": "2023-07-10T15:44:44+09:00", - "updatedYmdt": "2023-07-10T15:46:07+09:00" - }, - "restorableBinLogs": [ - "mysql-bin.000001" - ] - } - ] + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1262,39 +1146,32 @@ GET /v3.0/db-instances/{dbInstanceId}/restoration-info --- -### 복원될 마지막 쿼리 조회 +### 백업 정보 보기 ```http -GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query +GET /v3.0/db-instances/{dbInstanceId}/backup-info ``` -#### 공통 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|------|----|-----------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restoreType | Query | Enum | O | 복원 타입 종류
- `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
- `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입 | - -#### restoreType이 `TIMESTAMP`인 경우 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-------|----------|----|-------------------------------------------| -| restoreYmdt | Query | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +#### 요청 -#### restoreType이 `BINLOG`인 경우 +이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------|-------|--------|----|--------------------| -| backupId | Query | UUID | O | 복원에 사용할 백업의 식별자 | -| binLogFileName | Query | String | O | 복원에 사용할 바이너리 로그 이름 | -| binLogPosition | Query | Number | O | 복원에 사용할 바이너리 로그 위치 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|----------|--------------------------------------| -| executedYmdt | Body | DateTime | 쿼리 수행 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| lastQuery | Body | String | 마지막 수행 쿼리 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| backupPeriod | Body | Number | 백업 보관 기간(일) | +| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | +| backupRetryCount | Body | Number | 백업 재시도 횟수 | +| replicationRegion | Body | Enum | 백업 복제 리전
- KR1: `한국(판교)` | +| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration
- HALF_AN_HOUR
- ONE_HOUR
- ONE_HOUR_AND_HALF
- TWO_HOURS
- TWO_HOURS_AND_HALF
- THREE_HOURS |

예시

@@ -1306,8 +1183,17 @@ GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query "resultMessage": "SUCCESS", "isSuccessful": true }, - "executedYmdt": "2023-03-17T14:02:29+09:00", - "lastQuery": "INSERT INTO `test`.`test`SET @1='0123'" + "backupPeriod": 1, + "ftwrlWaitTimeout": 1, + "backupRetryCount": 1, + "replicationRegion": "KR1", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] } ``` @@ -1316,303 +1202,100 @@ GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query --- -### 복원 +### 백업 정보 수정하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/restore -``` - -#### 공통 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------|------|---------|----|------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restore | Body | Object | O | 복원 정보 객체 | -| restore.restoreType | Body | Enum | O | 복원 타입 종류
- `TIMESTAMP`: 복원 가능 시간 범위 내의 특정 시각으로 시점 복원
- `BINLOG`: 복원 가능한 바이너리 로그 위치를 지정하여 시점 복원
- `BACKUP`: 기존에 생성한 백업을 이용하여 스냅숏 복원 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
기본값: `false` | - -#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|----------|----|------------------------------------------------------------------------------------------------| -| restore.restoreYmdt | Body | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD)
복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능하다. | - - -

예시 -

- -```json -{ - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "TIMESTAMP", - "restoreYmdt": "2023-07-10T15:44:44+09:00" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } -} +PUT /v3.0/db-instances/{dbInstanceId}/backup-info ``` -

-
- -#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------------|------|--------|----|--------------------| -| restore.backupId | Body | UUID | O | 복원에 사용할 백업의 식별자 | -| restore.binLog | Body | Object | O | 바이너리 로그 정보 객체 | -| restore.binLog.binLogFileName | Body | String | O | 복원에 사용할 바이너리 로그 이름 | -| restore.binLog.binLogPosition | Body | Number | O | 복원에 사용할 바이너리 로그 위치 | - -* 바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. +#### 요청 +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BINLOG", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36", - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 1234567 - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "backupPeriod": 0, + "ftwrlWaitTimeout": 0, + "backupRetryCount": 0, + "replicationRegion": "KR1", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] } ```

-#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|------|------------------------------|-----------------| -| restore.backupId | Body | UUID | O(restoreType이 `BACKUP`인 경우) | 복원에 사용할 백업의 식별자 | - +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BACKUP", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - - --- -### 오브젝트 스토리지로부터 복원 +### DB 인스턴스 오브젝트 스토리지로 백업 ```http -POST /v3.0/db-instances/restore-from-obs +POST /v3.0/db-instances/{dbInstanceId}/backup-to-object-storage ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------|------|---------|----|---------------------------------------------------------------------| -| restore | Body | Object | O | 복원 정보 객체 | -| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | -| restore.username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | -| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | -| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | - - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 계정 혹은 IAM 회원 ID | +| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbVersion": "MYSQL_V8028", - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "tenantId":"tenant-id", - "username":"username", - "password":"password", - "targetContainer":"targetContainer", - "objectPath":"objectPath" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" } ``` @@ -1621,30 +1304,9 @@ POST /v3.0/db-instances/restore-from-obs #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - - ---- - - -### DB 인스턴스 삭제 보호 설정 변경하기 - -```http -PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |

예시

@@ -1655,7 +1317,8 @@ PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1664,137 +1327,146 @@ PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection --- -### 고가용성 수정하기 +### 테스트 용 DB 이미지 메타 변경 ```http -PUT /v3.0/db-instances/{dbInstanceId}/high-availability +PUT /v3.0/db-instances/{dbInstanceId}/change-image-meta ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|---------|----|------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 고가용성 다시 시작하기 +### DB 스키마 목록 보기 ```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/resume +GET /v3.0/db-instances/{dbInstanceId}/db-schemas ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSchemas | Body | Array | DB 스키마 목록 | +| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | +| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | +| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- STABLE
- CREATING
- SYNCING
- DELETING
- DELETED | +| dbSchemas.createdYmdt | Body | DateTime | 생성 일시 | -### 고가용성 일시 중지하기 +

예시 +

-```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/pause +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSchemas": [ + { + "dbSchemaId": "550e8400-e29b-41d4-a716-446655440000", + "dbSchemaName": "dbSchemaName-example", + "dbSchemaStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 고가용성 복구하기 +### DB 스키마 생성하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/repair +POST /v3.0/db-instances/{dbInstanceId}/db-schemas ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbSchemaName | Body | String | O | DB 스키마 이름
- 최대 길이: `64`
- 영문 시작, 영문/숫자/_ 허용, 1~64자, MySQL 예약어 불가 | -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### 고가용성 분리하기 +
예시 +

-```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/split +```json +{ + "dbSchemaName": "dbSchemaName-example" +} ``` -#### 요청 +

+
-이 API는 요청 본문을 요구하지 않습니다. +#### 응답 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -#### 응답 +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 데이터 스토리지 정보 보기 +### DB 스키마 삭제하기 ```http -GET /v3.0/db-instances/{dbInstanceId}/storage-info +DELETE /v3.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbSchemaId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------|------|--------|--------------------------------------------------------------------------------------| -| storageType | Body | Enum | 데이터 스토리지 타입 | -| storageSize | Body | Number | 데이터 스토리지 크기(GB) | -| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- `DETACHED`: 부착되지 않음
- `ATTACHED`: 부착됨
- `DELETED`: 삭제됨 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -1806,66 +1478,43 @@ GET /v3.0/db-instances/{dbInstanceId}/storage-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageType": "General SSD", - "storageSize": 20, - "storageStatus": "ATTACHED" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- --- -### 데이터 스토리지 정보 수정하기 - -```http -PUT /v3.0/db-instances/{dbInstanceId}/storage-info -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: 현재값
- 최댓값: `2048` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### 백업 정보 보기 +### DB 사용자 목록 보기 ```http -GET /v3.0/db-instances/{dbInstanceId}/backup-info +GET /v3.0/db-instances/{dbInstanceId}/db-users ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|---------|----------------| -| backupPeriod | Body | Number | 백업 보관 기간(일) | -| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | -| backupRetryCount | Body | Number | 백업 재시도 횟수 | -| replicationRegion | Body | Enum | 백업 복제 리전 | -| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | -| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbUsers | Body | Array | DB 사용자 목록 | +| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | +| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | +| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | +| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- STABLE
- CREATING
- UPDATING
- SYNCING
- DELETING
- DELETED | +| dbUsers.createdYmdt | Body | DateTime | 생성 일시 | +| dbUsers.updatedYmdt | Body | DateTime | 수정 일시 | +| dbUsers.authenticationPlugin | Body | Enum | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| dbUsers.tlsOption | Body | Enum | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |
예시

@@ -1877,15 +1526,17 @@ GET /v3.0/db-instances/{dbInstanceId}/backup-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "backupPeriod": 1, - "ftwrlWaitTimeout": 1800, - "backupRetryCount": 0, - "replicationRegion": null, - "useBackupLock": false, - "backupSchedules": [ + "dbUsers": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" + "dbUserId": "550e8400-e29b-41d4-a716-446655440000", + "dbUserName": "dbUserName-example", + "host": "host-example", + "authorityType": "CUSTOM", + "dbUserStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" } ] } @@ -1894,42 +1545,37 @@ GET /v3.0/db-instances/{dbInstanceId}/backup-info

- --- -### 백업 정보 수정하기 +### DB 사용자 생성하기 ```http -PUT /v3.0/db-instances/{dbInstanceId}/backup-info +POST /v3.0/db-instances/{dbInstanceId}/db-users ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------------------------|------|---------|----|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | -| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | -| replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| host | Body | String | O | DB 사용자 계정의 호스트명
- 최대 길이: `45` | +| authorityType | Body | Enum | O | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |
예시

```json { - "backupPeriod": 5, - "useBackupLock": true, - "backupSchedules": [ - { - "backupWndBgnTime": "01:00:00", - "backupWndDuration": "TWO_HOURS" - } - ] + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "host": "host-example", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" } ``` @@ -1938,39 +1584,9 @@ PUT /v3.0/db-instances/{dbInstanceId}/backup-info #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### 네트워크 정보 보기 - -```http -GET /v3.0/db-instances/{dbInstanceId}/network-info -``` - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------------------------------------------------------------------------------------------------------------------------------| -| availabilityZone | Body | Enum | DB 인스턴스를 생성할 가용성 영역 | -| subnet | Body | Object | 서브넷 객체 | -| subnet.subnetId | Body | UUID | 서브넷의 식별자 | -| subnet.subnetName | Body | UUID | 서브넷을 식별할 수 있는 이름 | -| subnet.subnetCidr | Body | UUID | 서브넷의 CIDR | -| endPoints | Body | Array | 접속 정보 목록 | -| endPoints.domain | Body | String | 도메인 | -| endPoints.ipAddress | Body | String | IP 주소 | -| endPoints.endPointType | Body | Enum | 접속 정보 타입
-`EXTERNAL`: 외부 접속 도메인
-`INTERNAL`: 내부 접속 도메인
-`PUBLIC`: (Deprecated) 외부 접속 도메인
-`PRIVATE`: (Deprecated) 내부 접속 도메인 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |

예시

@@ -1982,19 +1598,7 @@ GET /v3.0/db-instances/{dbInstanceId}/network-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "availabilityZone": "kr-pub-a", - "subnet": { - "subnetId": "bd453789-34ae-416c-9f78-05b9e43a46be", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/16" - }, - "endPoints": [ - { - "domain": "ea548a78-d85f-43b4-8ddf-c88d999b9905.internal.kr1.mysql.rds.nhncloudservice.com", - "ipAddress": "192.168.0.2", - "endPointType": "INTERNAL" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2003,55 +1607,26 @@ GET /v3.0/db-instances/{dbInstanceId}/network-info --- -### 네트워크 정보 수정하기 - -```http -PUT /v3.0/db-instances/{dbInstanceId}/network-info -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 사용자 목록 보기 +### DB 사용자 삭제하기 ```http -GET /v3.0/db-instances/{dbInstanceId}/db-users +DELETE /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbUserId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|-----------------------------------------------------------------------------------------------------------------------------| -| dbUsers | Body | Array | DB 사용자 목록 | -| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | -| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | -| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | -| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `UPDATING`: 수정 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbUsers.authenticationPlugin | Body | Enum | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| dbUsers.tlsOption | Body | Enum | TLS Option
- NONE
- SSL
- X509 | -| dbUsers.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbUsers.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |

예시

@@ -2063,19 +1638,7 @@ GET /v3.0/db-instances/{dbInstanceId}/db-users "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbUsers": [ - { - "dbUserId": "4b3d530b-fd02-4d59-a620-83d019a67bbb", - "dbUserName": "db-user", - "host": "%", - "authorityType": "DDL", - "dbUserStatus": "STABLE", - "authenticationPlugin": "NATIVE", - "tlsOption": "NONE", - "createdYmdt": "2023-03-17T14:02:29+09:00", - "updatedYmdt": "2023-03-17T14:02:31+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2084,36 +1647,30 @@ GET /v3.0/db-instances/{dbInstanceId}/db-users --- -### DB 사용자 생성하기 +### DB 사용자 수정하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/db-users +PUT /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserName | Body | String | O | DB 사용자 계정 이름
- 최소 길이: `1`
- 최대 길이: `32` | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | -| host | Body | String | O | DB 사용자 계정의 호스트명
- 예시: `1.1.1.%` | -| authorityType | Body | Enum | O | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- 기본값: `NATIVE`(미지원 시 `CACHING_SHA2`)
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | - -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 설정할 수 있습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbUserId | URL | UUID | O | | +| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| authorityType | Body | Enum | X | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |

예시

```json { - "dbUserName": "db-user", - "dbPassword": "password", - "host": "1.1.1.%", - "authorityType": "CRUD", + "dbPassword": "dbPassword", + "authorityType": "CUSTOM", "authenticationPlugin": "NATIVE", "tlsOption": "NONE" } @@ -2124,99 +1681,931 @@ POST /v3.0/db-instances/{dbInstanceId}/db-users #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 사용자 수정하기 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -```http -PUT /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} -``` +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 인스턴스 삭제 보호 설정 변경 + +```http +PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | + +
예시 +

+ +```json +{ + "useDeletionProtection": false +} +``` + +

+
+ +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### DB 인스턴스 강제 재시작하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/force-restart +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 고가용성 수정하기 + +```http +PUT /v3.0/db-instances/{dbInstanceId}/high-availability +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | + +
예시 +

+ +```json +{ + "useHighAvailability": false, + "pingInterval": 1 +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 일시 중지하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/pause +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 복구하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/repair +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 다시 시작하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/resume +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 분리하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/split +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 로그 파일 목록 보기 + +```http +GET /v3.0/db-instances/{dbInstanceId}/log-files +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| logFiles | Body | Array | 로그 파일 목록 | +| logFiles.logFileName | Body | String | 로그 파일 이름 | +| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- ERROR
- BINLOG
- GENERAL
- SLOW_QUERY
- AUDIT
- BACKUP | +| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | +| logFiles.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "logFiles": [ + { + "logFileName": "logFileName-example", + "logFileType": "ERROR", + "logFileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### 로그 파일 내보내기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/log-files/export +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| logFileNames | Body | Array | O | 로그 파일 이름 목록 | +| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 회원 또는 IAM 멤버 ID | +| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | + +
예시 +

+ +```json +{ + "logFileNames": [], + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 네트워크 정보 보기 + +```http +GET /v3.0/db-instances/{dbInstanceId}/network-info +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| availabilityZone | Body | String | DB 인스턴스를 생성할 가용성 영역 | +| subnet | Body | Object | 서브넷 객체 | +| subnet.subnetId | Body | UUID | 서브넷의 식별자 | +| subnet.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnet.subnetCidr | Body | String | 서브넷의 CIDR | +| endPoints | Body | Array | 접속 정보 목록 | +| endPoints.domain | Body | String | 도메인 | +| endPoints.ipAddress | Body | String | IP 주소 | +| endPoints.endPointType | Body | String | 접속 정보 타입 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "availabilityZone": "kr-pub-a", + "subnet": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example" + }, + "endPoints": [ + { + "domain": "domain-example", + "ipAddress": "ipAddress-example", + "endPointType": "endPointType-example" + } + ] +} +``` + +

+
+ +--- + +### 네트워크 정보 수정하기 + +```http +PUT /v3.0/db-instances/{dbInstanceId}/network-info +``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | -| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | -| authorityType | Body | Enum | X | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 수정할 수 있습니다. -> `authenticationPlugin`의 값은 `dbPassword`와 동시에 수정을 해야 합니다. +
예시 +

+ +```json +{ + "usePublicAccess": false +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

```json { - "authorityType": "DDL" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

+--- + +### DB 인스턴스 승격하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/promote +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### DB 사용자 삭제하기 +### DB 인스턴스 복제하기 ```http -DELETE /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +POST /v3.0/db-instances/{dbInstanceId}/replicate +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부 | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | X | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | X | 데이터 스토리지 타입 | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| backup | Body | Object | X | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +
예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDefaultNotification": false, + "useDeletionProtection": false, + "network": { + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "storage": { + "storageType": "General SSD", + "storageSize": 20 + }, + "backup": { + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 0, + "replicationRegion": "KR1", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + } +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 인스턴스 재시작하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/restart +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` | + +
예시 +

+ +```json +{ + "useOnlineFailover": false, + "executeBackup": false, + "waitReplicationDelay": false, + "useReadOnly": false +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 인스턴스 복원 정보 조회 + +```http +GET /v3.0/db-instances/{dbInstanceId}/restoration-info +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 복원될 마지막 쿼리 조회 + +```http +GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| executedYmdt | Body | DateTime | 쿼리 수행 일시 | +| lastQuery | Body | String | 마지막 수행 쿼리 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "executedYmdt": "2023-12-31T15:00:00+09:00", + "lastQuery": "lastQuery-example" +} +``` + +

+
+ +--- + +### DB 인스턴스 복원 + +```http +POST /v3.0/db-instances/{dbInstanceId}/restore +``` + +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | X | DB 포트 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| imageId | Body | UUID | X | 이미지의 식별자 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.restoreType | Body | Enum | O | 복원 타입
- TIMESTAMP: `복원 가능한 시간 이내의 시간을 이용한 시점 복원`
- BINLOG: `복원 가능한 바이너리 로그 위치를 이용한 시점 복원`
- BACKUP: `기존에 생성한 백업을 이용한 스냅숏 복원` | +| restore.binLog.binLogFileName | Body | String | X | 복원에 사용할 바이너리 로그 이름 | +| restore.binLog.binLogPosition | Body | Object | X | 복원에 사용할 바이너리 로그 위치 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | + +#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.restoreYmdt | Body | DateTime | X | DB 인스턴스 복원 일시 | + +복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능합니다. + +#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 | +| restore.binLog | Body | Object | X | 복원에 사용할 바이너리 로그 정보 객체 | + +바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. + +#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 | + +
예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "useHighAvailability": false, + "imageId": "550e8400-e29b-41d4-a716-446655440000", + "pingInterval": 3, + "storage": { + "storageType": "General SSD", + "storageSize": 20 + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "backup": { + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR1", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + }, + "restore": { + "restoreType": "TIMESTAMP", + "binLog": { + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + } + } + }, + "useDefaultNotification": false, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDeletionProtection": false +} ``` -#### 요청 +

+
+ +#### 응답 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### DB 스키마 목록 보기 +### DB 인스턴스 시작하기 ```http -GET /v3.0/db-instances/{dbInstanceId}/db-schemas +POST /v3.0/db-instances/{dbInstanceId}/start ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|------------------------------------------------------------------------------------------------------| -| dbSchemas | Body | Array | DB 스키마 목록 | -| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | -| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | -| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbSchemas.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -2228,14 +2617,7 @@ GET /v3.0/db-instances/{dbInstanceId}/db-schemas "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSchemas": [ - { - "dbSchemaId": "7c9a94b8-86c1-435d-8af2-82a5e9d53fd4", - "dbSchemaName": "schema", - "dbSchemaStatus": "STABLE", - "createdYmdt": "2023-03-20T13:37:45+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2244,75 +2626,66 @@ GET /v3.0/db-instances/{dbInstanceId}/db-schemas --- -### DB 스키마 생성하기 +### DB 인스턴스 정지하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/db-schemas +POST /v3.0/db-instances/{dbInstanceId}/stop ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|--------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaName | Body | String | O | DB 스키마 이름 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -### DB 스키마 삭제하기 +

예시 +

-```http -DELETE /v3.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaId | URL | UUID | O | DB 스키마의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 로그 파일 목록 보기 +### 스토리지 정보 보기 ```http -GET /v3.0/db-instances/{dbInstanceId}/log-files +GET /v3.0/db-instances/{dbInstanceId}/storage-info ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|-------|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileTypes | Query | Array | X | 로그 파일 타입 종류 목록
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| logFiles | Body | Array | 로그 파일 목록 | -| logFiles.logFileName | Body | String | 로그 파일 이름 | -| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | -| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | -| logFiles.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageType | Body | Enum | 데이터 스토리지 타입 | +| storageSize | Body | Number | 데이터 스토리지 크기(GB) | +| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- DELETED: `삭제됨`
- PENDING_DELETION: `삭제 유예됨`
- DELETION_RESERVED: `삭제 예약됨 (스냅샷 정리 대기)`
- DETACHED: `해제됨`
- ATTACHED: `할당됨` |
예시

@@ -2324,14 +2697,9 @@ GET /v3.0/db-instances/{dbInstanceId}/log-files "resultMessage": "SUCCESS", "isSuccessful": true }, - "logFiles": [ - { - "logFileName": "xtra_full.log-20230317", - "logFileType": "BACKUP", - "logFileSize": 4096, - "createdYmdt": "2023-03-17T14:02:29+09:00" - } - ] + "storageType": "General SSD", + "storageSize": 1, + "storageStatus": "DELETED" } ``` @@ -2340,35 +2708,25 @@ GET /v3.0/db-instances/{dbInstanceId}/log-files --- -### 로그 파일 내보내기 +### 스토리지 정보 수정하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/log-files/export +PUT /v3.0/db-instances/{dbInstanceId}/storage-info ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|--------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileNames | Body | Array | O | 로그 파일 이름 목록
- 최소 크기: `1` | -| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최댓값: `2048` |

예시

```json { - "logFileNames": ["xtra_full.log-20230317"], - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "logs/backup" + "storageSize": 1 } ``` @@ -2377,9 +2735,26 @@ POST /v3.0/db-instances/{dbInstanceId}/log-files/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -2405,30 +2780,22 @@ GET /v3.0/backups 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|--------|----|----------------------------------------------------------| -| page | Query | Number | O | 조회할 목록의 페이지
- 최솟값: `1` | -| size | Query | Number | O | 조회할 목록의 페이지 크기
- 최솟값: `1`
- 최댓값: `100` | -| backupType | Query | Enum | X | 백업 유형
- `AUTO`: 자동
- `MANUAL`: 수동
- 기본값: 전체 | -| dbInstanceId | Query | UUID | X | 원본 DB 인스턴스의 식별자 | -| dbVersion | Query | Enum | X | DB 엔진 유형 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|-----------------------------------| -| totalCounts | Body | Number | 전체 백업 목록 수 | -| backups | Body | Array | 백업 목록 | -| backups.backupId | Body | UUID | 백업의 식별자 | -| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | -| backups.backupStatus | Body | Enum | 백업의 현재 상태 | -| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| backups.dbVersion | Body | Enum | DB 엔진 유형 | -| backups.utilVersion | Body | String | 백업에 사용된 xtrabackup 유틸리티 버전 | -| backups.backupType | Body | Enum | 백업 유형 | -| backups.backupSize | Body | Number | 백업의 크기(Byte) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 백업 목록 수 | +| backups | Body | Array | 백업 목록 | +| backups.backupId | Body | UUID | 백업의 식별자 | +| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | +| backups.backupStatus | Body | Enum | 백업의 현재 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| backups.dbVersion | Body | Enum | DB 엔진 유형 | +| backups.utilVersion | Body | String | 유틸리티 버전 | +| backups.backupType | Body | Enum | 백업 유형
- AUTO
- MANUAL | +| backups.backupSize | Body | Number | 백업의 크기(Byte) | +| backups.createdYmdt | Body | DateTime | 생성 일시 | +| backups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -2443,16 +2810,16 @@ GET /v3.0/backups "totalCounts": 1, "backups": [ { - "backupId": "0017f136-3e01-4530-94aa-20661afe6632", - "backupName": "backup", - "backupStatus": "COMPLETED", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd", - "dbVersion": "MYSQL_V8028", - "utilVersion": "8.0.28", + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "utilVersion": "utilVersion-example", "backupType": "AUTO", - "backupSize": 4996786, - "createdYmdt": "2023-02-21T00:35:00+09:00", - "updatedYmdt": "2023-02-22T00:35:32+09:00" + "backupSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -2463,6 +2830,45 @@ GET /v3.0/backups --- +### 백업 삭제하기 + +```http +DELETE /v3.0/backups/{backupId} +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + ### 백업 내보내기 ```http @@ -2471,25 +2877,25 @@ POST /v3.0/backups/{backupId}/export #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|-----------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 계정 혹은 IAM 회원 ID | +| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 |
예시

```json { - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "backups/backup_file" + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" } ``` @@ -2498,12 +2904,26 @@ POST /v3.0/backups/{backupId}/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -> [주의] -> 수동 백업의 경우 백업이 수행된 DB 인스턴스가 존재하지 않으면, 백업을 오브젝트 스토리지로 내보낼 수 없습니다. +

+
--- @@ -2515,50 +2935,56 @@ POST /v3.0/backups/{backupId}/restore #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------|------|---------|----|---------------------------------------------------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Integer | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 ||network|Body|Object|O|네트워크 정보 객체| -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json - { - "dbInstanceName": "db-instance-restore", - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbPort": 10000, - "parameterGroupId": "132d383c-38e3-468a-a826-5e9a8fff15d0", + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, "availabilityZone": "kr-pub-a" }, "storage": { @@ -2566,10 +2992,14 @@ POST /v3.0/backups/{backupId}/restore "storageSize": 20 }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 1800, + "replicationRegion": "KR1", + "useBackupLock": true, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", + "backupWndBgnTime": "backupWndBgnTime-example", "backupWndDuration": "HALF_AN_HOUR" } ] @@ -2582,31 +3012,26 @@ POST /v3.0/backups/{backupId}/restore #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -### 백업 삭제하기 +

예시 +

-```http -DELETE /v3.0/backups/{backupId} +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------|-----|------|----|---------| -| backupId | URL | UUID | O | 백업의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -2633,15 +3058,15 @@ GET /v3.0/db-security-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-----------------------------------| -| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | -| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | +| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -2655,12 +3080,12 @@ GET /v3.0/db-security-groups }, "dbSecurityGroups": [ { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", "progressStatus": "NONE", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2022-02-19T19:18:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -2671,42 +3096,59 @@ GET /v3.0/db-security-groups --- -### DB 보안 그룹 상세 보기 +### DB 보안 그룹 생성하기 ```http -GET /v3.0/db-security-groups/{dbSecurityGroupId} +POST /v3.0/db-security-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` | +| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | +| rules.direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| rules.etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| rules.port | Body | Object | O | 포트 객체 | +| rules.port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| rules.cidr | Body | String | O | CIDR | +| rules.description | Body | String | X | 보안 그룹 규칙에 대한 추가 정보 | + +

예시 +

+ +```json +{ + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example", + "rules": [ + { + "direction": "INGRESS", + "etherType": "IPV4", + "port": { + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 + }, + "cidr": "cidr-example", + "description": "description-example" + } + ] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|----------|--------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| rules | Body | Array | DB 보안 그룹 규칙 목록 | -| rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | -| rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.port | Body | Object | 포트 객체 | -| rules.port.portType | Body | Enum | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다.
- `PORT`: 지정된 포트값으로 설정됩니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | 최소 포트 범위 | -| rules.port.maxPort | Body | Number | 최대 포트 범위 | -| rules.cidr | Body | String | 허용할 트래픽의 원격 소스 | -| rules.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| rules.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 |
예시

@@ -2718,30 +3160,7 @@ GET /v3.0/db-security-groups/{dbSecurityGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSecurityGroup": { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", - "progressStatus": "NONE", - "rules": [ - { - "ruleId": "17c88ef6-95f1-4678-84f9-fee1b22e250d", - "description": "description", - "direction": "INGRESS", - "etherType": "IPV4", - "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 - }, - "cidr": "0.0.0.0/0", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } - ], - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2750,131 +3169,159 @@ GET /v3.0/db-security-groups/{dbSecurityGroupId} --- -### DB 보안 그룹 생성하기 +### DB 보안 그룹 삭제하기 ```http -POST /v3.0/db-security-groups +DELETE /v3.0/db-security-groups/{dbSecurityGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | -| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | -| rules.description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | -| rules.port | Body | Object | O | 포트 객체 | -| rules.port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. - -

예시 -

- -```json -{ - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", - "rules": [ - { - "direction": "INGRESS", - "etherType": "IPV4", - "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 - }, - "cidr": "0.0.0.0/0" - } - ] -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|------|---------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### DB 보안 그룹 수정하기 +### DB 보안 그룹 상세 보기 ```http -PUT /v3.0/db-security-groups/{dbSecurityGroupId} +GET /v3.0/db-security-groups/{dbSecurityGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|-----------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroup | Body | Object | DB 보안 그룹 | +| dbSecurityGroup.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroup.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| dbSecurityGroup.description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| dbSecurityGroup.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| dbSecurityGroup.rules | Body | Array | DB 보안 그룹 규칙 목록 | +| dbSecurityGroup.rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | +| dbSecurityGroup.rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | +| dbSecurityGroup.rules.direction | Body | Enum | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| dbSecurityGroup.rules.etherType | Body | Enum | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| dbSecurityGroup.rules.port | Body | Object | 포트 객체 | +| dbSecurityGroup.rules.port.portType | Body | Enum | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| dbSecurityGroup.rules.port.minPort | Body | Number | 최소 포트 범위 | +| dbSecurityGroup.rules.port.maxPort | Body | Number | 최대 포트 범위 | +| dbSecurityGroup.rules.cidr | Body | String | CIDR | +| dbSecurityGroup.rules.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroup.rules.updatedYmdt | Body | DateTime | 수정 일시 | +| dbSecurityGroup.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroup.updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSecurityGroup": { + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", + "progressStatus": "NONE", + "rules": [ + { + "ruleId": "550e8400-e29b-41d4-a716-446655440000", + "description": "description-example", + "direction": "INGRESS", + "etherType": "IPV4", + "port": { + "portType": "ALL", + "minPort": 1, + "maxPort": 1 + }, + "cidr": "cidr-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } } ```

-#### 응답 +--- + +### DB 보안 그룹 수정하기 + +```http +PUT /v3.0/db-security-groups/{dbSecurityGroupId} +``` + +#### 요청 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example" } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. --- -### DB 보안 그룹 삭제하기 +### DB 보안 그룹 규칙 삭제하기 ```http -DELETE /v3.0/db-security-groups/{dbSecurityGroupId} +DELETE /v3.0/db-security-groups/{dbSecurityGroupId}/rules ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleIds | Query | String | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -2885,7 +3332,8 @@ DELETE /v3.0/db-security-groups/{dbSecurityGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2902,20 +3350,17 @@ POST /v3.0/db-security-groups/{dbSecurityGroupId}/rules #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |

예시

@@ -2925,11 +3370,12 @@ POST /v3.0/db-security-groups/{dbSecurityGroupId}/rules "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "PORT", - "minPort": 10000, - "maxPort": 10000 + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -2938,9 +3384,26 @@ POST /v3.0/db-security-groups/{dbSecurityGroupId}/rules #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -2952,21 +3415,18 @@ PUT /v3.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleId | URL | UUID | O | DB 보안 그룹 규칙의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |
예시

@@ -2976,9 +3436,12 @@ PUT /v3.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "DB_PORT" + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -2987,32 +3450,26 @@ PUT /v3.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | ---- - -### DB 보안 그룹 규칙 삭제하기 +

예시 +

-```http -DELETE /v3.0/db-security-groups/{dbSecurityGroupId}/rules +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|-------|----|---------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleIds | Query | Array | O | DB 보안 그룹 규칙의 식별자 목록 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -3028,22 +3485,18 @@ GET /v3.0/parameter-groups 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------|-------|------|----|----------| -| dbVersion | Query | Enum | X | DB 엔진 유형 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-------------------------------------------------------------------| -| parameterGroups | Body | Array | 파라미터 그룹 목록 | -| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameterGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroups | Body | Array | 파라미터 그룹 목록 | +| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameterGroups.createdYmdt | Body | DateTime | 생성 일시 | +| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3057,13 +3510,13 @@ GET /v3.0/parameter-groups }, "parameterGroups": [ { - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", "parameterGroupStatus": "STABLE", - "createdYmdt": "2023-02-31T15:28:17+09:00", - "updatedYmdt": "2023-02-31T15:28:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3072,44 +3525,41 @@ GET /v3.0/parameter-groups

- --- -### 파라미터 그룹 상세 보기 +### 파라미터 그룹 생성하기 ```http -GET /v3.0/parameter-groups/{parameterGroupId} +POST /v3.0/parameter-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` | +| dbVersion | Body | Enum | O | DB 엔진 유형 | + +
예시 +

+ +```json +{ + "parameterGroupName": "parameterGroupName", + "description": "description-example", + "dbVersion": "MYSQL_V8036" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|--------------------------------------------------------------------------------------------------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameters | Body | Array | 파라미터 목록 | -| parameters.parameterId | Body | UUID | 파라미터 식별자 | -| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- `CLIENT`: client
- `MYSQL`: mysql
- `MYSQLD`: mysqld | -| parameters.parameterName | Body | String | 파라미터 이름 | -| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | -| parameters.value | Body | String | 현재 설정된 값 | -| parameters.defaultValue | Body | String | 기본값 | -| parameters.allowedValue | Body | String | 허용된 값 | -| parameters.updateType | Body | Enum | 수정 타입
- `VARIABLE`: 언제든 수정 가능
- `CONSTANT`: 수정 불가능
- `INIT_VARIABLE`: DB 인스턴스 생성 시에만 수정 가능 | -| parameters.applyType | Body | Enum | 적용 타입
- `SESSION`: 세션 적용
- `FILE`: 설정 파일 적용(재시작 필요)
- `BOTH`: 전체(재시작 필요) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |
예시

@@ -3121,91 +3571,130 @@ GET /v3.0/parameter-groups/{parameterGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", - "parameterGroupStatus": "STABLE", - "parameters": [ - { - "parameterId": "fa040b5e-f29f-46de-8f0d-bba4cb82887a", - "parameterFileGroup": "client", - "parameterName": "socket", - "fileParameterName": "socket", - "value": "/home/tcrds/db/mysql/tmp/mysql.sock", - "defaultValue": "/home/tcrds/db/mysql/tmp/mysql.sock", - "allowedValue": "", - "updateType": "CONSTANT", - "applyType": "BOTH" - } - ], - "createdYmdt": "2023-03-13T11:02:28+09:00", - "updatedYmdt": "2023-03-13T11:02:28+09:00" + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ```

+--- + +### 파라미터 그룹 삭제하기 + +```http +DELETE /v3.0/parameter-groups/{parameterGroupId} +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 생성하기 +### 파라미터 그룹 상세 보기 ```http -POST /v3.0/parameter-groups +GET /v3.0/parameter-groups/{parameterGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameters | Body | Array | 파라미터 목록 | +| parameters.parameterId | Body | UUID | 파라미터의 식별자 | +| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- CLIENT
- MYSQL
- MYSQLD | +| parameters.parameterName | Body | String | 파라미터 이름 | +| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | +| parameters.value | Body | String | 현재 설정된 값 | +| parameters.defaultValue | Body | String | 기본값 | +| parameters.allowedValue | Body | String | 허용된 값 | +| parameters.updateType | Body | Enum | 수정 타입
- VARIABLE
- CONSTANT
- INIT_VARIABLE | +| parameters.applyType | Body | Enum | 적용 타입
- BOTH
- SESSION
- FILE | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "parameterGroupName": "parameter-group", - "dbVersion": "MYSQL_V8028" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "parameterGroupStatus": "STABLE", + "parameters": [ + { + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "parameterFileGroup": "CLIENT", + "parameterName": "parameterName-example", + "fileParameterName": "fileParameterName-example", + "value": "value-example", + "defaultValue": "defaultValue-example", + "allowedValue": "allowedValue-example", + "updateType": "VARIABLE", + "applyType": "BOTH" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | - --- -### 파라미터 그룹 복사하기 +### 파라미터 그룹 수정하기 ```http -POST /v3.0/parameter-groups/{parameterGroupId}/copy +PUT /v3.0/parameter-groups/{parameterGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "parameterGroupName": "parameter-group-copy", - "description": "copy" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -3214,32 +3703,31 @@ POST /v3.0/parameter-groups/{parameterGroupId}/copy #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 수정하기 +### 파라미터 그룹 복사하기 ```http -PUT /v3.0/parameter-groups/{parameterGroupId} +POST /v3.0/parameter-groups/{parameterGroupId}/copy ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |

예시

```json { - "parameterGroupName": "parameter-group" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -3248,7 +3736,9 @@ PUT /v3.0/parameter-groups/{parameterGroupId} #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |

예시

@@ -3259,7 +3749,8 @@ PUT /v3.0/parameter-groups/{parameterGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3276,12 +3767,12 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/parameters #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------------|------|--------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | -| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | -| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | +| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | +| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 |

예시

@@ -3290,8 +3781,8 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/parameters { "modifiedParameters": [ { - "parameterId": "3abac558-7274-44e1-9f4a-f100f53f67ba", - "value": "0" + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "value": "value-example" } ] } @@ -3304,39 +3795,49 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/parameters 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

+--- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} +### 파라미터 그룹 재설정하기 + +```http +PUT /v3.0/parameter-groups/{parameterGroupId}/reset ``` -

-
+#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 재설정하기 +## 사용자 그룹 + +### 사용자 그룹 목록 보기 ```http -PUT /v3.0/parameter-groups/{parameterGroupId}/reset +GET /v3.0/user-groups ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroups.createdYmdt | Body | DateTime | 생성 일시 | +| userGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3347,7 +3848,15 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/reset "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "userGroups": [ + { + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -3356,23 +3865,39 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/reset --- -### 파라미터 그룹 삭제하기 +### 사용자 그룹 생성하기 ```http -DELETE /v3.0/parameter-groups/{parameterGroupId} +POST /v3.0/user-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록 | +| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` | + +

예시 +

+ +```json +{ + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAllYN": false +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +

+
#### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 |
예시

@@ -3383,7 +3908,8 @@ DELETE /v3.0/parameter-groups/{parameterGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "userGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3392,51 +3918,23 @@ DELETE /v3.0/parameter-groups/{parameterGroupId} --- -## 사용자 그룹 - -### 사용자 그룹 목록 보기 +### 사용자 그룹 삭제하기 ```http -GET /v3.0/user-groups +DELETE /v3.0/user-groups/{userGroupId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|-----------------------------------| -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| userGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - -

예시 -

+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "userGroups": [ - { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" - } - ] -} -``` +#### 응답 -

-
+이 API는 응답 본문을 반환하지 않습니다. --- @@ -3450,21 +3948,21 @@ GET /v3.0/user-groups/{userGroupId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|----------|-----------------------------------------------------------------------------------------------------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
`ENTIRE`: 프로젝트 멤버 전체를 포함하는 사용자 그룹
`INDIVIDUAL_MEMBER`: 특정 프로젝트 멤버를 포함하는 사용자 그룹 | -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
- ENTIRE
- INDIVIDUAL_MEMBER | +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3476,65 +3974,21 @@ GET /v3.0/user-groups/{userGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "userGroupTypeCode": "INDIVIDUAL_MEMBER", + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "userGroupTypeCode": "ENTIRE", "members": [ { - "memberId": "1321e759-2ef3-4b85-9921-b13e918b24b5" + "memberId": "550e8400-e29b-41d4-a716-446655440000" } ], - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" -} -``` - -

-
- ---- - -### 사용자 그룹 생성하기 - -```http -POST /v3.0/user-groups -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|-------------------------------------------------------------| -| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록
`selectAllYN`이 true인 경우 해당 필드 값은 무시됨 | -| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 유무
true인 경우 해당 그룹은 전체 멤버에 대해 설정됨 | - -
예시 -

- -```json -{ - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5" - ] -} -``` - -```json -{ - "userGroupName": "dev-team", - "selectAllYN":true + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` -

-
- -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------------|------|------|-------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +

+
--- @@ -3546,23 +4000,21 @@ PUT /v3.0/user-groups/{userGroupId} #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|----------------------------------------------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | -| userGroupName | Body | String | X | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | -| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 유무
true인 경우 해당 그룹은 전체 멤버에 대해 설정됨 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | +| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` |
예시

```json { - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5", - "f9064b09-2b15-442e-a4b0-3a5a2754555e" - ] + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAllYN": false } ``` @@ -3573,39 +4025,32 @@ PUT /v3.0/user-groups/{userGroupId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- -### 사용자 그룹 삭제하기 +## 알림 그룹 + +### 알림 그룹 목록 보기 ```http -DELETE /v3.0/user-groups/{userGroupId} +GET /v3.0/notification-groups ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroups | Body | Array | 알림 그룹 목록 | +| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | +| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | +| notificationGroups.createdYmdt | Body | DateTime | 생성 일시 | +| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3616,7 +4061,18 @@ DELETE /v3.0/user-groups/{userGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "notificationGroups": [ + { + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, + "notifySms": false, + "isEnabled": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -3625,30 +4081,45 @@ DELETE /v3.0/user-groups/{userGroupId} --- -## 알림 그룹 - -### 알림 그룹 목록 보기 +### 알림 그룹 생성하기 ```http -GET /v3.0/notification-groups +POST /v3.0/notification-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | +| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | + +

예시 +

+ +```json +{ + "notificationGroupName": "notificationGroupName", + "notifyEmail": true, + "notifySms": true, + "isEnabled": true, + "dbInstanceIds": [], + "userGroupIds": [] +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------------|------|----------|-----------------------------------| -| notificationGroups | Body | Array | 알림 그룹 목록 | -| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | -| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | -| notificationGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 |
예시

@@ -3660,17 +4131,7 @@ GET /v3.0/notification-groups "resultMessage": "SUCCESS", "isSuccessful": true }, - "notificationGroups": [ - { - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, - "notifySms": false, - "isEnabled": true, - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" - } - ] + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3679,6 +4140,26 @@ GET /v3.0/notification-groups --- +### 알림 그룹 삭제하기 + +```http +DELETE /v3.0/notification-groups/{notificationGroupId} +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + ### 알림 그룹 상세 보기 ```http @@ -3689,27 +4170,27 @@ GET /v3.0/notification-groups/{notificationGroupId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------------|------|----------|-----------------------------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notifySms | Body | Boolean | SMS 알림 여부 | -| isEnabled | Body | Boolean | 활성화 여부 | -| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notifySms | Body | Boolean | SMS 알림 여부 | +| isEnabled | Body | Boolean | 활성화 여부 | +| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -3721,25 +4202,25 @@ GET /v3.0/notification-groups/{notificationGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, "notifySms": false, - "isEnabled": true, + "isEnabled": false, "dbInstances": [ { - "dbInstanceId": "ed5cb985-526f-4c54-9ae0-40288593de65", - "dbInstanceName": "database" + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example" } ], "userGroups": [ { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team" + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example" } ], - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -3748,37 +4229,35 @@ GET /v3.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 생성하기 +### 알림 그룹 수정하기 ```http -POST /v3.0/notification-groups +PUT /v3.0/notification-groups/{notificationGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------------| -| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | -| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | -| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | -| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | +| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `false` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `false` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `false` | +| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 |

예시

```json { - "notificationGroupName": "dev-team-noti", + "notificationGroupName": "notificationGroupName-example", "notifyEmail": false, - "isEnable": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65" - ], - "userGroupIds": [ - "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0" - ] + "notifySms": false, + "isEnabled": false, + "dbInstanceIds": [], + "userGroupIds": [] } ``` @@ -3787,49 +4266,45 @@ POST /v3.0/notification-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|------|------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 알림 그룹 수정하기 +## 모니터링 + +### 통계 정보 조회 ```http -PUT /v3.0/notification-groups/{notificationGroupId} +GET /v3.0/metric-statistics ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부 | -| notifySms | Body | Boolean | X | SMS 알림 여부 | -| isEnabled | Body | Boolean | X | 활성화 여부 | -| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +이 API는 요청 본문을 요구하지 않습니다. -

예시 -

+#### 응답 -```json -{ - "notifyEmail": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65", - "d51b7da0-682f-47ff-b588-b739f6adc740" - ] -} +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### Metric 목록 보기 + +```http +GET /v3.0/metrics ``` -

-
+#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| metrics | Body | Array | Metric 목록 | +| metrics.measureName | Body | String | 조회 지표 유형 | +| metrics.unit | Body | String | 측정값 단위 |
예시

@@ -3840,7 +4315,13 @@ PUT /v3.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "metrics": [ + { + "measureName": "measureName-example", + "unit": "unit-example" + } + ] } ``` @@ -3849,23 +4330,38 @@ PUT /v3.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 삭제하기 +## 이벤트 + +### 이벤트 카테고리 + +이벤트는 카테고리로 분류할 수 있으며 아래와 같습니다. + +| 이벤트 카테고리 | 설명 | +|-------------|---------| +| ALL | 전체 | +| BACKUP | 백업 | +| DB_INSTANCE | DB 인스턴스 | +| JOB | 작업 | +| TENANT | 테넌트 | +| MONITORING | 모니터링 | + +### 구독 가능한 이벤트 코드 목록 보기 ```http -DELETE /v3.0/notification-groups/{notificationGroupId} +GET /v3.0/event-codes ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | - #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventCodes | Body | Array | 이벤트 코드 목록 | +| eventCodes.eventCode | Body | Enum | 이벤트 코드 | +| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT |

예시

@@ -3876,7 +4372,13 @@ DELETE /v3.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "eventCodes": [ + { + "eventCode": "ENUM_VALUE", + "eventCategoryType": "ALL" + } + ] } ``` @@ -3885,12 +4387,10 @@ DELETE /v3.0/notification-groups/{notificationGroupId} --- -## 모니터링 - -### Metric 목록 보기 +### 이벤트 목록 조회 ```http -GET /v3.0/metrics +GET /v3.0/events ``` #### 요청 @@ -3899,11 +4399,18 @@ GET /v3.0/metrics #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|--------|-----------| -| metrics | Body | Array | Metric 목록 | -| metrics.measureName | Body | Enum | 조회 지표 유형 | -| metrics.unit | Body | String | 측정값 단위 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 목록 수 | +| events | Body | Array | 이벤트 목록 | +| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | +| events.sourceId | Body | String | 이벤트 소스의 식별자 | +| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | +| events.messages | Body | Array | 이벤트 메세지 목록 | +| events.messages.langCode | Body | Enum | 언어 코드
- KO
- EN
- JA
- ZH | +| events.messages.message | Body | String | 이벤트 메세지 | +| events.eventYmdt | Body | DateTime | 이벤트 발생 일시 |

예시

@@ -3915,10 +4422,20 @@ GET /v3.0/metrics "resultMessage": "SUCCESS", "isSuccessful": true }, - "metrics": [ + "totalCounts": 1, + "events": [ { - "measureName": "CPU_USAGE", - "unit": "%" + "eventCategoryType": "ALL", + "eventCode": "ENUM_VALUE", + "sourceId": "sourceId-example", + "sourceName": "sourceName-example", + "messages": [ + { + "langCode": "KO", + "message": "message-example" + } + ], + "eventYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3929,56 +4446,65 @@ GET /v3.0/metrics --- -### 통계 정보 조회 +## 이벤트 구독 + +### 이벤트 구독 목록 조회 ```http -GET /v3.0/metric-statistics +GET /v3.0/event-subscriptions ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|----------|----|-----------------------------------| -| dbInstanceId | Query | UUID | O | DB 인스턴스의 식별자 | -| measureNames | Query | Array | O | 조회 지표 목록
- 최소 크기: `1` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| interval | Query | Number | X | 조회 간격 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|-----------|----------| -| metricStatistics | Body | Array | 통계 정보 목록 | -| metricStatistics.measureName | Body | Enum | 측정 항목 유형 | -| metricStatistics.unit | Body | String | 측정값 단위 | -| metricStatistics.values | Body | Array | 측정값 목록 | -| metricStatistics.values.timestamp | Body | Timestamp | 측정 시간 | -| metricStatistics.values.value | Body | Object | 측정값 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 구독 목록 수 | +| eventSubscriptions | Body | Array | 이벤트 구독 목록 | +| eventSubscriptions.eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 | +| eventSubscriptions.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.eventSubscriptionName | Body | String | 이벤트 구독의 식별할 수 있는 이름 | +| eventSubscriptions.enabled | Body | Boolean | 활성화 여부 | +| eventSubscriptions.notifyEmail | Body | Boolean | 이메일 발송 여부 | +| eventSubscriptions.notifySms | Body | Boolean | SMS 발송 여부 | +| eventSubscriptions.eventCodes | Body | Array | 구독할 이벤트 코드 목록 | +| eventSubscriptions.sources | Body | Array | 구독할 이벤트 소스 목록 | +| eventSubscriptions.sources.sourceId | Body | String | 이벤트 소스의 식별자 | +| eventSubscriptions.sources.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.userGroupIds | Body | Array | 이벤트 구독 중인 사용자 그룹의 식별자 목록 | +| eventSubscriptions.createdYmdt | Body | DateTime | 생성 일시 |

예시

```json { - "metricStatistics": [ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "totalCounts": 1, + "eventSubscriptions": [ { - "measureName": "MYSQL_STATUS", - "unit": "", - "values": [ - [ - 1679298540, - "1" - ], - [ - 1679298600, - "1" - ], - [ - 1679298660, - "1" - ] - ] + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ + { + "sourceId": "sourceId-example", + "eventCategoryType": "ALL" + } + ], + "userGroupIds": [], + "createdYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3989,56 +4515,56 @@ GET /v3.0/metric-statistics --- -## 이벤트 - -### 이벤트 카테고리 - -이벤트는 카테고리로 분류할 수 있으며 아래와 같습니다. - -| 이벤트 카테고리 | 설명 | -|-------------|---------| -| ALL | 전체 | -| BACKUP | 백업 | -| DB_INSTANCE | DB 인스턴스 | -| JOB | 작업 | -| TENANT | 테넌트 | -| MONITORING | 모니터링 | - -### 이벤트 목록 조회 +### 이벤트 구독 생성하기 ```http -GET /v3.0/events +POST /v3.0/event-subscriptions ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | O | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | O | 활성화 여부 | +| notifyEmail | Body | Boolean | O | 이메일 발송 여부 | +| notifySms | Body | Boolean | O | SMS 발송 여부 | +| eventCodes | Body | Array | O | 구독할 이벤트 코드 목록 | +| sources | Body | Array | O | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | O | 이벤트 구독할 사용자 그룹의 식별자 목록 | + +

예시 +

+ +```json +{ + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ + { + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" + } + ], + "userGroupIds": [] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | O | 조회할 목록의 페이지
- 최솟값: `1` | -| size | Query | Number | O | 조회할 목록의 페이지 크기
- 최솟값: `1`
- 최댓값: `100` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| eventCategoryType | Query | Enum | O | 조회할 이벤트 카테고리 유형
- `ALL`: 전체
- `INSTANCE`: DB 인스턴스
- `BACKUP`: 백업
- `DB_SECURITY_GROUP`: DB 보안 그룹
- `TENANT`: 테넌트 | -| sourceId | Query | String | X | 이벤트가 발생한 대상 리소스의 식별자 | -| keyword | Query | String | X | 이벤트 메시지에 포함된 문자열 검색어 | -| ascendingOrder | Query | Enum | X | 이벤트 메시지 정렬 순서
- `ASC`: 오름차순
- `DESC`: 내림차순
- 기본값: `DESC` | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|---------------------------------------| -| totalCounts | Body | Number | 전체 이벤트 목록 수 | -| events | Body | Array | 이벤트 목록 | -| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | -| events.sourceId | Body | String | 이벤트 소스의 식별자 | -| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | -| events.messages | Body | Array | 이벤트 메시지 목록 | -| events.messages.langCode | Body | String | 언어 코드 | -| events.messages.message | Body | String | 이벤트 메시지 | -| events.eventYmdt | Body | DateTime | 이벤트 발생 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 |
예시

@@ -4050,34 +4576,7 @@ GET /v3.0/events "resultMessage": "SUCCESS", "isSuccessful": true }, - "totalCounts": 28, - "events": [ - { - "eventCategoryType": "INSTANCE", - "eventCode": "INSTC_02_01", - "sourceId": "76f00947-356e-4a20-8922-428368cc45ed", - "sourceName": "db-instance", - "messages": [ - { - "langCode": "EN", - "message": "DB instance started" - }, - { - "langCode": "JA", - "message": "DBインスタンスの起動" - }, - { - "langCode": "KO", - "message": "DB 인스턴스 시작" - }, - { - "langCode": "ZH", - "message": "DB instance started" - } - ], - "eventYmdt": "2023-03-20T16:31:59+09:00" - } - ] + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4086,44 +4585,75 @@ GET /v3.0/events --- -### 구독 가능한 이벤트 코드 목록 보기 +### 이벤트 구독 삭제하기 ```http -GET /v3.0/event-codes +DELETE /v3.0/event-subscriptions/{eventSubscriptionId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | + #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|-------|-------------| -| eventCodes | Body | Array | 이벤트 코드 목록 | -| eventCodes.eventCode | Body | Enum | 이벤트 코드 | -| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 이벤트 구독 수정하기 + +```http +PUT /v3.0/event-subscriptions/{eventSubscriptionId} +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | +| eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | X | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | X | 활성화 여부 | +| notifyEmail | Body | Boolean | X | 이메일 발송 여부 | +| notifySms | Body | Boolean | X | SMS 발송 여부 | +| eventCodes | Body | Array | X | 구독할 이벤트 코드 목록 | +| sources | Body | Array | X | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | X | 이벤트 구독할 사용자 그룹의 식별자 목록 |

예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "eventCodes": [ + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ { - "eventCode": "INSTC_05_01", - "eventCategoryType": "INSTANCE" + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" } - ] + ], + "userGroupIds": [] } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- + diff --git a/ko/api-guide-v3.0-ngoic.md b/ko/api-guide-v3.0-ngoic.md index 65f2a603..5767a13b 100644 --- a/ko/api-guide-v3.0-ngoic.md +++ b/ko/api-guide-v3.0-ngoic.md @@ -1,35 +1,42 @@ -## Database > RDS for MySQL > API 가이드 +## Database > RDS for MySQL > API v3.0 가이드 -| 리전 | 엔드포인트 | -|-----------|-----------------------------------------------| -| 한국(판교) 리전 | https://kr4-rds-mysql-api.ngoic.com | +## RDS for MySQL API 공통 정보 -## 인증 및 권한 +### API 엔드포인트 -API를 사용하려면 인증에 필요한 `User Access Key ID`와 `Secret Access Key`가 필요합니다. 콘솔 우측 상단의 계정에 마우스 포인터를 올리면 표시되는 드롭다운 메뉴에서 API 보안 설정을 선택해 생성할 수 있습니다. +| 리전 | 엔드포인트 | +|------|----------| +| 한국(대구) 리전 | https://ngoic-kr4-rds-proxy.cloud.toastoven.net | + + +### 인증 및 권한 + +RDS for MySQL API를 사용하려면 User Access Key가 필요합니다. User Access Key는 NHN Cloud 계정 또는 IAM 계정을 기반으로 발급되는 인증 키로, Secret Access Key와 함께 사용하여 API 요청에 대한 인증 수단으로 활용됩니다. + +User Access Key와 Secret Access Key는 콘솔의 **API 보안 설정**에서 발급할 수 있습니다. User Access Key 발급 및 사용에 대한 자세한 내용은 [User Access Key](/nhncloud/ko/public-api/user-access-key)를 참고하세요. 생성된 Key는 Appkey와 함께 요청 Header에 포함해야 합니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------------|--------|--------|----|-------------------------------------------------------------| -| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | -| X-TC-AUTHENTICATION-ID | Header | String | O | API 보안 설정 메뉴의 User Access Key ID | -| X-TC-AUTHENTICATION-SECRET | Header | String | O | API 보안 설정 메뉴의 Secret Access Key | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | +| X-TC-AUTHENTICATION-ID | Header | String | O | API 보안 설정 메뉴의 User Access Key ID | +| X-TC-AUTHENTICATION-SECRET | Header | String | O | API 보안 설정 메뉴의 Secret Access Key | -또한 프로젝트 멤버 역할에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER`로 구분하여 권한을 부여할 수 있습니다. +또한 프로젝트 권한에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER` 역할에는 아래처럼 기본 권한이 부여돼 있고 프로젝트 내 역할 그룹 관리 메뉴에서 필요한 권한만 부여할 수 있습니다. -* `RDS for MySQL ADMIN` 권한은 모든 기능을 사용 가능합니다. -* `RDS for MySQL VIEWER` 권한은 정보를 조회하는 기능만 사용 가능합니다. +* `RDS for MySQL ADMIN` 역할은 API 실행에 필요한 모든 권한이 부여됩니다. +* `RDS for MySQL VIEWER` 역할은 정보를 조회하는 권한만 부여됩니다. * DB 인스턴스를 생성, 수정, 삭제하거나, DB 인스턴스를 대상으로 하는 어떠한 기능도 사용할 수 없습니다. - * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용 가능합니다. + * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용할 수 있습니다. API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같은 오류가 발생합니다. -| resultCode | resultMessage | 설명 | -|------------|---------------|-------------| -| 80401 | Unauthorized | 인증에 실패했습니다. | -| 80403 | Forbidden | 권한이 없습니다. | +| resultCode | resultMessage | 설명 | +|------------|---------------|-----| +| 80401 | Unauthorized | 인증에 실패했습니다. | +| 80403 | Forbidden | 권한이 없습니다. | -## 응답 공통 정보 +### 응답 공통 정보 모든 API 요청에 '200 OK'로 응답합니다. 자세한 응답 결과는 응답 본문의 헤더를 참고합니다. @@ -45,47 +52,50 @@ API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같 ``` #### 필드 -| 이름 | 형식 | 설명 | -|---------------|---------|-----------------------------------------| -| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | -| resultMessage | String | 결과 메시지 | -| isSuccessful | Boolean | 성공 여부 | - - -## DB 엔진 유형 - -| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 정보 | -|--------------|----------|-----------------|--------| -| MYSQL\_V5633 | X | X | NATIVE | -| MYSQL\_V5715 | O | O | NATIVE | -| MYSQL\_V5719 | O | O | NATIVE | -| MYSQL\_V5726 | O | O | NATIVE | -| MYSQL\_V5731 | X | X | NATIVE | -| MYSQL\_V5733 | O | X | NATIVE, SHA256 | -| MYSQL\_V5737 | O | O | NATIVE, SHA256 | -| MYSQL\_V8018 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8023 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8028 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8032 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8033 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8034 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8405 | O | O | CACHING_SHA2 | +| 이름 | 형식 | 설명 | +|-----|-----|-----| +| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | +| resultMessage | String | 결과 메시지 | +| isSuccessful | Boolean | 성공 여부 | +### DB 엔진 유형 + +| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 | +|------------|----------|------------------|------------| +| MYSQL_V5633 | X | X | NATIVE | +| MYSQL_V5715 | O | O | NATIVE | +| MYSQL_V5719 | O | O | NATIVE | +| MYSQL_V5726 | O | O | NATIVE | +| MYSQL_V5731 | X | X | NATIVE | +| MYSQL_V5733 | O | X | NATIVE, SHA256 | +| MYSQL_V5737 | O | O | NATIVE, SHA256 | +| MYSQL_V8018 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8023 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8028 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8032 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8033 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8034 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8044 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8045 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8405 | O | O | CACHING_SHA2 | +| MYSQL_V8406 | O | O | CACHING_SHA2 | +| MYSQL_V8407 | O | O | CACHING_SHA2 | +| MYSQL_V8408 | O | O | CACHING_SHA2 | * ENUM 타입의 dbVersion 필드에 대해 해당 값을 사용할 수 있습니다. * 버전에 따라 생성 또는 복원이 불가능한 경우가 있을 수 있습니다. ## 프로젝트 정보 -### 리전 목록 보기 +### 프로젝트 멤버 목록 보기 ```http -GET /v3.0/project/regions +GET /v3.0/project/members ``` #### 요청 @@ -94,11 +104,13 @@ GET /v3.0/project/regions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------|------|---------|----------------------------------------------------------------------------| -| regions | Body | Array | 리전 목록 | -| regions.regionCode | Body | Enum | 리전 코드
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| members.memberName | Body | String | 프로젝트 멤버의 이름 | +| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | +| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 |
예시

@@ -110,31 +122,26 @@ GET /v3.0/project/regions "resultMessage": "SUCCESS", "isSuccessful": true }, - "regions": [ - { - "regionCode": "KR1", - "isEnabled": true - }, - { - "regionCode": "KR2", - "isEnabled": true - }, + "members": [ { - "regionCode": "JP1", - "isEnabled": true + "memberId": "550e8400-e29b-41d4-a716-446655440000", + "memberName": "memberName-example", + "emailAddress": "emailAddress-example", + "phoneNumber": "phoneNumber-example" } ] } ``` +

--- -### 프로젝트 멤버 목록 보기 +### 리전 목록 보기 ```http -GET /v3.0/project/members +GET /v3.0/project/regions ``` #### 요청 @@ -143,13 +150,11 @@ GET /v3.0/project/members #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|--------|-----------------| -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| members.memberName | Body | String | 프로젝트 멤버의 이름 | -| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | -| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| regions | Body | Array | 리전 목록 | +| regions.regionCode | Body | Enum | 리전 코드
- KR4: `한국(대구)` | +| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 |
예시

@@ -161,12 +166,10 @@ GET /v3.0/project/members "resultMessage": "SUCCESS", "isSuccessful": true }, - "members": [ + "regions": [ { - "memberId": "1b1d3627-507a-49ea-8cb7-c86dfa9caa58", - "memberName": "홍길동", - "emailAddress": "gildong.hong@nhn.com", - "phoneNumber": "+821012345678" + "regionCode": "KR4", + "isEnabled": false } ] } @@ -191,13 +194,13 @@ GET /v3.0/db-flavors #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------| -| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | -| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | -| dbFlavors.ram | Body | Number | 메모리 용량(MB) | -| dbFlavors.vcpus | Body | Number | CPU 코어 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | +| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | +| dbFlavors.ram | Body | Number | 메모리 용량(MB) | +| dbFlavors.vcpus | Body | Number | CPU 코어 수 |

예시

@@ -211,9 +214,9 @@ GET /v3.0/db-flavors }, "dbFlavors": [ { - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbFlavorName": "m2.c1m2", - "ram": 2048, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbFlavorName": "dbFlavorName-example", + "ram": 1, "vcpus": 1 } ] @@ -239,14 +242,14 @@ GET /v3.0/network/subnets #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|---------|------------------| -| subnets | Body | Array | 서브넷 목록 | -| subnets.subnetId | Body | UUID | 서브넷의 식별자 | -| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | -| subnets.subnetCidr | Body | String | 서브넷의 CIDR | -| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | -| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| subnets | Body | Array | 서브넷 목록 | +| subnets.subnetId | Body | UUID | 서브넷의 식별자 | +| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnets.subnetCidr | Body | String | 서브넷의 CIDR | +| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | +| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 |

예시

@@ -260,11 +263,11 @@ GET /v3.0/network/subnets }, "subnets": [ { - "subnetId": "1b2a9b23-0725-4b92-8c78-35db66b8ad9f", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/24", - "usingGateway": true, - "availableIpCount": 240 + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example", + "usingGateway": false, + "availableIpCount": 1 } ] } @@ -289,11 +292,11 @@ GET /v3.0/db-versions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|---------|-----------------------| -| dbVersions | Body | Array | DB 엔진 목록 | -| dbVersions.dbVersion | Body | String | DB 엔진 유형 | -| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbVersions | Body | Array | DB 엔진 목록 | +| dbVersions.dbVersion | Body | String | DB 엔진 유형 | +| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | | dbVersions.restorableFromObs | Body | Boolean | 오브젝트 스토리지로부터 복원 가능 여부 |

예시 @@ -308,9 +311,9 @@ GET /v3.0/db-versions }, "dbVersions": [ { - "dbVersion": "MYSQL_V8028", - "dbVersionName": "MySQL 8.0.28", - "restorableFromObs": true + "dbVersion": "MYSQL_V8036", + "dbVersionName": "dbVersionName-example", + "restorableFromObs": false } ] } @@ -323,7 +326,7 @@ GET /v3.0/db-versions ## 데이터 스토리지 -### 데이터 스토리지 타입 목록 보기 +### 스토리지 타입 목록 보기 ```http GET /v3.0/storage-types @@ -335,9 +338,9 @@ GET /v3.0/storage-types #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|-------|----------------| -| storageTypes | Body | Array | 데이터 스토리지 타입 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageTypes | Body | Array | 스토리지 타입 목록 |
예시

@@ -349,10 +352,7 @@ GET /v3.0/storage-types "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageTypes": [ - "General SSD", - "General HDD" - ] + "storageTypes": [] } ``` @@ -361,7 +361,7 @@ GET /v3.0/storage-types --- -### 데이터 스토리지 목록 보기 +### 스토리지 목록 보기 ```http GET /v3.0/storages @@ -373,9 +373,9 @@ GET /v3.0/storages #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------|------|-------|-------------| -| storages | Body | Array | 데이터 스토리지 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storages | Body | Array | 스토리지 목록 |

예시

@@ -387,10 +387,7 @@ GET /v3.0/storages "resultMessage": "SUCCESS", "isSuccessful": true }, - "storages": [ - "General SSD", - "General HDD" - ] + "storages": [] } ``` @@ -428,21 +425,21 @@ GET /v3.0/jobs/{jobId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------|-----|------|----|---------| -| jobId | URL | UUID | O | 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| jobId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------|------|----------|-----------------------------------| -| jobId | Body | UUID | 작업의 식별자 | -| jobStatus | Body | Enum | 작업의 현재 상태 | -| resourceRelations | Body | Array | 연관 리소스 목록 | -| resourceRelations.resourceType | Body | Enum | 연관 리소스 유형 | -| resourceRelations.resourceId | Body | UUID | 연관 리소스의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | +| jobStatus | Body | Enum | 작업의 현재 상태
- DELETED
- CANNOT_PROGRESS
- FAILED
- ERROR
- CANCELED
- INTERRUPTED
- COMPLETED
- RUNNING
- PREPARING
- READY
- CREATED
- FAIL_TO_READY
- REGISTERED
- FAIL_TO_REGISTER
- WAIT_TO_REGISTER | +| resourceRelations | Body | Array | 연관 리소스 목록 | +| resourceRelations.resourceType | Body | String | 연관 리소스 유형 | +| resourceRelations.resourceId | Body | String | 연관 리소스의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -454,16 +451,16 @@ GET /v3.0/jobs/{jobId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "jobId": "0ddb042c-5af6-43fb-a914-f4dd0540eb7c", - "jobStatus": "RUNNING", + "jobId": "550e8400-e29b-41d4-a716-446655440000", + "jobStatus": "DELETED", "resourceRelations": [ { - "resourceType": "DB_INSTANCE", - "resourceId": "56b39dcf-65eb-47ec-9d4f-09f160ba2266" + "resourceType": "resourceType-example", + "resourceId": "resourceId-example" } ], - "createdYmdt": "2023-02-22T20:47:12+09:00", - "updatedYmdt": "2023-02-22T20:49:46+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -486,13 +483,13 @@ GET /v3.0/db-instance-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------|------|----------|--------------------------------------------------------------------------| -| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | -| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | +| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -506,10 +503,10 @@ GET /v3.0/db-instance-groups }, "dbInstanceGroups": [ { - "dbInstanceGroupId": "05de0746-89fd-49c8-94f9-9c5b1df97009", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", - "createdYmdt": "2023-02-13T17:35:20+09:00", - "updatedYmdt": "2023-02-13T17:35:20+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -530,22 +527,22 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|-----------------| -| dbInstanceGroupId | URL | UUID | O | DB 인스턴스 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -557,17 +554,17 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbInstanceGroupId": "36617a8e-0df8-4b16-b6ea-6306019e95da", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", "dbInstances": [ { - "dbInstanceId": "6d2db0ef-fe9b-4ed4-97b1-d97fcb4cf1b8", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE" + "dbInstanceStatus": "BEFORE_CREATE" } ], - "createdYmdt": "2023-03-03T17:38:14+09:00", - "updatedYmdt": "2023-03-03T17:38:14+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -600,8 +597,8 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} | `BACKING_UP` | 백업 중 | | `CANCELING` | 취소 중 | | `CREATING` | 생성 중 | -| `CREATING_SCHEMA` | DB 스키마 생성 중 | -| `CREATING_USER` | 사용자 생성 중 | +| `CREATING_SCHEMA` | DB 스키마 생성 중 | +| `CREATING_USER` | 사용자 생성 중 | | `DELETING` | 삭제 중 | | `DELETING_SCHEMA` | DB 스키마 삭제 중 | | `DELETING_USER` | 사용자 삭제 중 | @@ -620,8 +617,8 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} | `STARTING` | 시작 중 | | `STOPPING` | 정지 중 | | `SYNCING_SCHEMA` | DB 스키마 동기화 중 | -| `SYNCING_USER` | 사용자 동기화 중 | -| `UPDATING_USER` | 사용자 수정 중 | +| `SYNCING_USER` | 사용자 동기화 중 | +| `UPDATING_USER` | 사용자 수정 중 | ### DB 인스턴스 목록 보기 @@ -635,20 +632,20 @@ GET /v3.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstances | Body | Array | DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | -| dbInstances.dbPort | Body | Number | DB 포트 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태 | -| dbInstances.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstances.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstances | Body | Array | DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | +| dbInstances.dbPort | Body | Number | DB 포트 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbInstances.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstances.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -662,17 +659,17 @@ GET /v3.0/db-instances }, "dbInstances": [ { - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", + "dbInstanceStatus": "BEFORE_CREATE", "progressStatus": "NONE", - "createdYmdt": "2023-01-23T12:03:13+09:00", - "updatedYmdt": "2023-02-02T17:20:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -683,83 +680,6 @@ GET /v3.0/db-instances --- -### DB 인스턴스 상세 보기 - -```http -GET /v3.0/db-instances/{dbInstanceId} -``` - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| dbPort | Body | Number | DB 포트 | -| dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| progressStatus | Body | Enum | DB 인스턴스의 현재 작업 진행 상태 | -| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | -| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | -| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | -| supportAuthenticationPlugin | Body | Boolean | 인증 플러그인 지원 여부 | -| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | -| needMigration | Body | Boolean | 마이그레이션 필요 여부 | -| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", - "progressStatus": "NONE", - "dbFlavorId": "e9ed4ef6-78d7-46fa-ace9-32481e97f3b7", - "parameterGroupId": "b03e8b13-de27-4d04-a488-ff5689589372", - "dbSecurityGroupIds": ["01908c35-d2c9-4852-baf0-17f06ec42c03"], - "notificationGroupIds": ["83a62a33-ddbf-4a04-8653-e54463d5b1ac"], - "useDeletionProtection": false, - "supportAuthenticationPlugin": true, - "needToApplyParameterGroup": false, - "needMigration": false, - "supportDbVersionUpgrade": true, - "createdYmdt": "2022-11-23T12:03:13+09:00", - "updatedYmdt": "2022-12-02T17:20:17+09:00" -} -``` - -

-
- ---- - ### DB 인스턴스 생성하기 ```http @@ -768,61 +688,67 @@ POST /v3.0/db-instances #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|------|---------|----|---------------------------------------------------------------------| -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbUserName | Body | String | O | DB 사용자 계정명 | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `16` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 ||network|Body|Object|O|네트워크 정보 객체| -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄) | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| authenticationPlugin | Body | Enum | X | 인증 Plugin
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | TLS Option
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE", "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, "availabilityZone": "kr-pub-a" }, "storage": { @@ -830,11 +756,15 @@ POST /v3.0/db-instances "storageSize": 20 }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 1800, + "replicationRegion": "KR4", + "useBackupLock": true, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR" + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" } ] } @@ -846,45 +776,124 @@ POST /v3.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### DB 인스턴스 수정하기 +### 오브젝트 스토리지를 이용한 DB 인스턴스 복원 ```http -PUT /v3.0/db-instances/{dbInstanceId} +POST /v3.0/db-instances/restore-from-obs ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|------|---------|----|--------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbPort | Body | Number | X | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbVersion | Body | Enum | X | DB 엔진 유형 | -| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
기본값: `false` | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | X | DB 포트 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| imageId | Body | UUID | X | 이미지의 식별자 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | +| restore.username | Body | String | O | NHN Cloud 계정 혹은 IAM 멤버 ID | +| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | +| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | +| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` |
예시

```json { - "dbInstanceName": "db-instance2", - "description": "description2", - "dbPort": 10001, + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "dbVersion": "MYSQL_V8036", + "useHighAvailability": false, + "imageId": "550e8400-e29b-41d4-a716-446655440000", + "pingInterval": 3, + "storage": { + "storageType": "General SSD", + "storageSize": 20 + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "backup": { + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR4", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + }, + "restore": { + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" + }, + "useDefaultNotification": false, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", "dbSecurityGroupIds": [], - "executeBackup": true + "userGroupIds": [], + "useDeletionProtection": false } ``` @@ -893,9 +902,7 @@ PUT /v3.0/db-instances/{dbInstanceId} #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- @@ -909,54 +916,15 @@ DELETE /v3.0/db-instances/{dbInstanceId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 인스턴스 재시작하기 - -```http -POST /v3.0/db-instances/{dbInstanceId}/restart -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- -### DB 인스턴스 강제 재시작하기 -```http -POST /v3.0/db-instances/{dbInstanceId}/force-restart -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |

예시

@@ -967,108 +935,136 @@ POST /v3.0/db-instances/{dbInstanceId}/force-restart "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- ---- - -### DB 인스턴스 시작하기 - -```http -POST /v3.0/db-instances/{dbInstanceId}/start -``` - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### DB 인스턴스 정지하기 +### DB 인스턴스 상세 보기 ```http -POST /v3.0/db-instances/{dbInstanceId}/stop +GET /v3.0/db-instances/{dbInstanceId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| dbPort | Body | Number | DB 포트 | +| dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | +| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | +| supportAuthenticationPlugin | Body | Boolean | 인증 plugin 지원 여부 | +| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | +| needMigration | Body | Boolean | 마이그레이션 필요 여부 | +| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 | ---- - -### DB 인스턴스 백업하기 +
예시 +

-```http -POST /v3.0/db-instances/{dbInstanceId}/backup +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbInstanceType": "MASTER", + "dbInstanceStatus": "BEFORE_CREATE", + "progressStatus": "NONE", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "notificationGroupIds": [], + "useDeletionProtection": false, + "supportAuthenticationPlugin": false, + "needToApplyParameterGroup": false, + "needMigration": false, + "supportDbVersionUpgrade": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" +} ``` -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|--------|----|-----------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| backupName | Body | String | O | 백업을 식별할 수 있는 이름 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### DB 인스턴스 백업 후 내보내기 +### DB 인스턴스 수정하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/backup-to-object-storage +PUT /v3.0/db-instances/{dbInstanceId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|-----------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbPort | Body | Number | X | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbVersion | Body | Enum | X | DB 엔진 버전 코드 | +| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
- 기본값: `false` | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` |
예시

```json { - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "backups/backup_file" + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbPort": 1, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "useDummy": false, + "dbSecurityGroupIds": [], + "executeBackup": false, + "useOnlineFailover": false, + "waitReplicationDelay": false, + "useReadOnly": false } ``` @@ -1077,172 +1073,71 @@ POST /v3.0/db-instances/{dbInstanceId}/backup-to-object-storage #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 인스턴스 복제하기 - -```http -POST /v3.0/db-instances/{dbInstanceId}/replicate -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbPort | Body | Number | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록
- 기본값: 원본 DB 인스턴스 값 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: 원본 DB 인스턴스 값 | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입

  • 예시: `General SSD`
| -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄)
- 기본값: 원본 DB 인스턴스 값 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각
- 예시: `00:00:00`
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간
- 기본값: 원본 DB 인스턴스 값 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

```json { - "dbInstanceName": "db-instance-replicate", - "description": "description", - "dbPort": 11000, - "network": { - "availabilityZone": "kr-pub-a" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true }, - "storage": { - "stroageSize": 100 - } + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### DB 인스턴스 승격하기 +### DB 인스턴스 백업하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/promote +POST /v3.0/db-instances/{dbInstanceId}/backup ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| backupName | Body | String | O | 백업을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | -### 복원 정보 조회 +
예시 +

-```http -GET /v3.0/db-instances/{dbInstanceId}/restoration-info +```json +{ + "backupName": "backupName" +} ``` -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------------|------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| oldestRestorableYmdt | Body | DateTime | 가장 오래된 복원 가능한 시각 | -| latestRestorableYmdt | Body | DateTime | 가장 최신의 복원 가능한 시각 | -| restorableBackups | Body | Array | 복원 가능한 백업 목록 | -| restorableBackups.backup | Body | Object | 백업 정보 객체 | -| restorableBackups.backup.backupId | Body | UUID | 백업의 식별자 | -| restorableBackups.backup.backupName | Body | String | 백업 이름 | -| restorableBackups.backup.useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| restorableBackups.backup.backupSize | Body | Number | 백업 크기 | -| restorableBackups.backup.backupType | Body | Enum | 백업 유형
  • `AUTO`: 자동
  • `MANUAL`: 수동
| -| restorableBackups.backup.backupStatus | Body | Enum | 백업 상태
  • `BACKING_UP`: 백업 중인 경우
  • `COMPLETED`: 백업이 완료된 경우
  • `DELETING`: 백업이 삭제 중인 경우
  • `DELETED`: 백업이 삭제된 경우
  • `ERROR`: 오류가 발생한 경우
| -| restorableBackups.backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| restorableBackups.backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | -| restorableBackups.backup.dbVersion | Body | String | DB 엔진 유형 | -| restorableBackups.backup.failoverCount | Body | Number | 장애 조치 횟수 | -| restorableBackups.backup.binLogFileName | Body | String | 바이너리 로그 파일 이름 | -| restorableBackups.backup.binLogPosition | Body | Number | 바이너리 로그 파일 위치 | -| restorableBackups.backup.createdYmdt | Body | DateTime | 백업 생성 일시 | -| restorableBackups.backup.updatedYmdt | Body | DateTime | 백업 갱신 일시 | -| restorableBackups.restorableBinLogs | Body | Array | 해당 백업을 이용하여 복원 가능한 바이너리 로그 이름 목록 | - - +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "oldestRestorableYmdt": "2023-07-09T16:33:33+09:00", - "latestRestorableYmdt": "2023-07-10T15:44:44+09:00", - "restorableBackups": [ - { - "backup": { - "backupId": "145d889a-fe08-474f-8f58-bde576ff96a9", - "backupName": "example-backup-name", - "backupStatus": "COMPLETED", - "dbInstanceId": "dba1be25-9429-4589-9716-7fb6daad7cb9", - "dbInstanceName": "original-db-instance-name", - "dbVersion": "MYSQL_V8028", - "backupType": "MANUAL", - "backupSize": 8299904, - "useBackupLock": true, - "failoverCount": 0, - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 367916037, - "createdYmdt": "2023-07-10T15:44:44+09:00", - "updatedYmdt": "2023-07-10T15:46:07+09:00" - }, - "restorableBinLogs": [ - "mysql-bin.000001" - ] - } - ] + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1251,39 +1146,32 @@ GET /v3.0/db-instances/{dbInstanceId}/restoration-info --- -### 복원될 마지막 쿼리 조회 +### 백업 정보 보기 ```http -GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query +GET /v3.0/db-instances/{dbInstanceId}/backup-info ``` -#### 공통 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|------|----|-----------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restoreType | Query | Enum | O | 복원 타입 종류

  • `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
  • `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입
| - -#### restoreType이 `TIMESTAMP`인 경우 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-------|----------|----|-------------------------------------------| -| restoreYmdt | Query | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +#### 요청 -#### restoreType이 `BINLOG`인 경우 +이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------|-------|--------|----|--------------------| -| backupId | Query | UUID | O | 복원에 사용할 백업의 식별자 | -| binLogFileName | Query | String | O | 복원에 사용할 바이너리 로그 이름 | -| binLogPosition | Query | Number | O | 복원에 사용할 바이너리 로그 위치 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|----------|--------------------------------------| -| executedYmdt | Body | DateTime | 쿼리 수행 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| lastQuery | Body | String | 마지막 수행 쿼리 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| backupPeriod | Body | Number | 백업 보관 기간(일) | +| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | +| backupRetryCount | Body | Number | 백업 재시도 횟수 | +| replicationRegion | Body | Enum | 백업 복제 리전
- KR4: `한국(대구)` | +| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration
- HALF_AN_HOUR
- ONE_HOUR
- ONE_HOUR_AND_HALF
- TWO_HOURS
- TWO_HOURS_AND_HALF
- THREE_HOURS |
예시

@@ -1295,8 +1183,17 @@ GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query "resultMessage": "SUCCESS", "isSuccessful": true }, - "executedYmdt": "2023-03-17T14:02:29+09:00", - "lastQuery": "INSERT INTO `test`.`test`SET @1='0123'" + "backupPeriod": 1, + "ftwrlWaitTimeout": 1, + "backupRetryCount": 1, + "replicationRegion": "KR4", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] } ``` @@ -1305,303 +1202,100 @@ GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query --- -### 복원 +### 백업 정보 수정하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/restore +PUT /v3.0/db-instances/{dbInstanceId}/backup-info ``` -#### 공통 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restore | Body | Object | O | 복원 정보 객체 | -| restore.restoreType | Body | Enum | O | 복원 타입 종류

  • `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
  • `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입
  • `BACKUP`: 기존에 생성한 백업을 이용한 스냅숏 복원 타입
| -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
  • 최솟값: `3306`
  • 최댓값: `43306`
| -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
  • 기본값: `false`
| -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
  • 기본값: `3`
  • 최솟값: `1`
  • 최댓값: `600`
| -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
  • 기본값: `false`
| -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
  • 기본값: `false`
| -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
  • 예시: `kr-pub-a`
| -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
  • 예시: `General SSD`
| -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
  • 최솟값: `20`
  • 최댓값: `2048`
| -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
  • 최솟값: `0`
  • 최댓값: `730`
| -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
  • 기본값: `1800`
  • 최솟값: `0`
  • 최댓값: `21600`
| -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
  • 기본값: `0`
  • 최솟값: `0`
  • 최댓값: `10`
| -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
  • `KR1`: 한국(판교)
  • `KR2`: 한국(평촌)
  • `JP1`: 일본(도쿄)
| -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
  • 기본값: `true`
| -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
  • 예시: `00:00:00`
| -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
  • `HALF_AN_HOUR`: 30분
  • `ONE_HOUR`: 1시간
  • `ONE_HOUR_AND_HALF`: 1시간 30분
  • `TWO_HOURS`: 2시간
  • `TWO_HOURS_AND_HALF`: 2시간 30분
  • `THREE_HOURS`: 3시간
| -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
기본값: `false` | - -#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|----------|----|------------------------------------------------------------------------------------------------| -| restore.restoreYmdt | Body | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD)
복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능하다. | - - -
예시 -

- -```json -{ - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "TIMESTAMP", - "restoreYmdt": "2023-07-10T15:44:44+09:00" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } -} -``` - -

-
- -#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------------|------|--------|----|--------------------| -| restore.backupId | Body | UUID | O | 복원에 사용할 백업의 식별자 | -| restore.binLog | Body | Object | O | 바이너리 로그 정보 객체 | -| restore.binLog.binLogFileName | Body | String | O | 복원에 사용할 바이너리 로그 이름 | -| restore.binLog.binLogPosition | Body | Number | O | 복원에 사용할 바이너리 로그 위치 | - -* 바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. +#### 요청 +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BINLOG", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36", - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 1234567 - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "backupPeriod": 0, + "ftwrlWaitTimeout": 0, + "backupRetryCount": 0, + "replicationRegion": "KR4", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] } ```

-#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|------|------------------------------|-----------------| -| restore.backupId | Body | UUID | O(restoreType이 `BACKUP`인 경우) | 복원에 사용할 백업의 식별자 | - +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BACKUP", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - - --- -### 오브젝트 스토리지로부터 복원 +### DB 인스턴스 오브젝트 스토리지로 백업 ```http -POST /v3.0/db-instances/restore-from-obs +POST /v3.0/db-instances/{dbInstanceId}/backup-to-object-storage ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|----------------------------------------------------------------------------------------| -| restore | Body | Object | O | 복원 정보 객체 | -| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | -| restore.username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | -| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | -| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
  • 최솟값: `3306`
  • 최댓값: `43306`
| -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
  • 기본값: `false`
| -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
  • 기본값: `3`
  • 최솟값: `1`
  • 최댓값: `600`
| -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
  • 기본값: `false`
| -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
  • 기본값: `false`
| -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
  • 예시: `kr-pub-a`
| -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
  • 예시: `General SSD`
| -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
  • 최솟값: `20`
  • 최댓값: `2048`
| -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
  • 최솟값: `0`
  • 최댓값: `730`
| -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
  • 기본값: `1800`
  • 최솟값: `0`
  • 최댓값: `21600`
| -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
  • 기본값: `0`
  • 최솟값: `0`
  • 최댓값: `10`
| -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
  • `KR1`: 한국(판교)
  • `KR2`: 한국(평촌)
  • `JP1`: 일본(도쿄)
| -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
  • 기본값: `true`
| -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
  • 예시: `00:00:00`
| -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
  • `HALF_AN_HOUR`: 30분
  • `ONE_HOUR`: 1시간
  • `ONE_HOUR_AND_HALF`: 1시간 30분
  • `TWO_HOURS`: 2시간
  • `TWO_HOURS_AND_HALF`: 2시간 30분
  • `THREE_HOURS`: 3시간
| - - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 계정 혹은 IAM 회원 ID | +| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbVersion": "MYSQL_V8028", - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "tenantId":"tenant-id", - "username":"username", - "password":"password", - "targetContainer":"targetContainer", - "objectPath":"objectPath" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" } ``` @@ -1610,30 +1304,9 @@ POST /v3.0/db-instances/restore-from-obs #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - - ---- - - -### DB 인스턴스 삭제 보호 설정 변경하기 - -```http -PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |

예시

@@ -1644,7 +1317,8 @@ PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1653,137 +1327,146 @@ PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection --- -### 고가용성 수정하기 +### 테스트 용 DB 이미지 메타 변경 ```http -PUT /v3.0/db-instances/{dbInstanceId}/high-availability +PUT /v3.0/db-instances/{dbInstanceId}/change-image-meta ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|---------|----|------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 고가용성 다시 시작하기 +### DB 스키마 목록 보기 ```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/resume +GET /v3.0/db-instances/{dbInstanceId}/db-schemas ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSchemas | Body | Array | DB 스키마 목록 | +| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | +| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | +| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- STABLE
- CREATING
- SYNCING
- DELETING
- DELETED | +| dbSchemas.createdYmdt | Body | DateTime | 생성 일시 | -### 고가용성 일시 중지하기 +

예시 +

-```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/pause +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSchemas": [ + { + "dbSchemaId": "550e8400-e29b-41d4-a716-446655440000", + "dbSchemaName": "dbSchemaName-example", + "dbSchemaStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 고가용성 복구하기 +### DB 스키마 생성하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/repair +POST /v3.0/db-instances/{dbInstanceId}/db-schemas ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbSchemaName | Body | String | O | DB 스키마 이름
- 최대 길이: `64`
- 영문 시작, 영문/숫자/_ 허용, 1~64자, MySQL 예약어 불가 | ---- - -### 고가용성 분리하기 +
예시 +

-```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/split +```json +{ + "dbSchemaName": "dbSchemaName-example" +} ``` -#### 요청 +

+
-이 API는 요청 본문을 요구하지 않습니다. +#### 응답 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -#### 응답 +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 데이터 스토리지 정보 보기 +### DB 스키마 삭제하기 ```http -GET /v3.0/db-instances/{dbInstanceId}/storage-info +DELETE /v3.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbSchemaId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------|------|--------|--------------------------------------------------------------------------------------| -| storageType | Body | Enum | 데이터 스토리지 타입 | -| storageSize | Body | Number | 데이터 스토리지 크기(GB) | -| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- `DETACHED`: 부착되지 않음
- `ATTACHED`: 부착됨
- `DELETED`: 삭제됨 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -1795,66 +1478,43 @@ GET /v3.0/db-instances/{dbInstanceId}/storage-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageType": "General SSD", - "storageSize": 20, - "storageStatus": "ATTACHED" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- ---- - -### 데이터 스토리지 정보 수정하기 - -```http -PUT /v3.0/db-instances/{dbInstanceId}/storage-info -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: 현재값
- 최댓값: `2048` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### 백업 정보 보기 +### DB 사용자 목록 보기 ```http -GET /v3.0/db-instances/{dbInstanceId}/backup-info +GET /v3.0/db-instances/{dbInstanceId}/db-users ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|---------|----------------| -| backupPeriod | Body | Number | 백업 보관 기간(일) | -| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | -| backupRetryCount | Body | Number | 백업 재시도 횟수 | -| replicationRegion | Body | Enum | 백업 복제 리전 | -| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | -| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbUsers | Body | Array | DB 사용자 목록 | +| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | +| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | +| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | +| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- STABLE
- CREATING
- UPDATING
- SYNCING
- DELETING
- DELETED | +| dbUsers.createdYmdt | Body | DateTime | 생성 일시 | +| dbUsers.updatedYmdt | Body | DateTime | 수정 일시 | +| dbUsers.authenticationPlugin | Body | Enum | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| dbUsers.tlsOption | Body | Enum | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |
예시

@@ -1866,15 +1526,17 @@ GET /v3.0/db-instances/{dbInstanceId}/backup-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "backupPeriod": 1, - "ftwrlWaitTimeout": 1800, - "backupRetryCount": 0, - "replicationRegion": null, - "useBackupLock": false, - "backupSchedules": [ + "dbUsers": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" + "dbUserId": "550e8400-e29b-41d4-a716-446655440000", + "dbUserName": "dbUserName-example", + "host": "host-example", + "authorityType": "CUSTOM", + "dbUserStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" } ] } @@ -1883,42 +1545,37 @@ GET /v3.0/db-instances/{dbInstanceId}/backup-info

- --- -### 백업 정보 수정하기 +### DB 사용자 생성하기 ```http -PUT /v3.0/db-instances/{dbInstanceId}/backup-info +POST /v3.0/db-instances/{dbInstanceId}/db-users ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------------------------|------|---------|----|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | -| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | -| replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄) | -| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| host | Body | String | O | DB 사용자 계정의 호스트명
- 최대 길이: `45` | +| authorityType | Body | Enum | O | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |
예시

```json { - "backupPeriod": 5, - "useBackupLock": true, - "backupSchedules": [ - { - "backupWndBgnTime": "01:00:00", - "backupWndDuration": "TWO_HOURS" - } - ] + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "host": "host-example", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" } ``` @@ -1927,39 +1584,49 @@ PUT /v3.0/db-instances/{dbInstanceId}/backup-info #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### 네트워크 정보 보기 +### DB 사용자 삭제하기 ```http -GET /v3.0/db-instances/{dbInstanceId}/network-info +DELETE /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbUserId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------------------------------------------------------------------------------------------------------------------------------| -| availabilityZone | Body | Enum | DB 인스턴스를 생성할 가용성 영역 | -| subnet | Body | Object | 서브넷 객체 | -| subnet.subnetId | Body | UUID | 서브넷의 식별자 | -| subnet.subnetName | Body | UUID | 서브넷을 식별할 수 있는 이름 | -| subnet.subnetCidr | Body | UUID | 서브넷의 CIDR | -| endPoints | Body | Array | 접속 정보 목록 | -| endPoints.domain | Body | String | 도메인 | -| endPoints.ipAddress | Body | String | IP 주소 | -| endPoints.endPointType | Body | Enum | 접속 정보 타입
-`EXTERNAL`: 외부 접속 도메인
-`INTERNAL`: 내부 접속 도메인
-`PUBLIC`: (Deprecated) 외부 접속 도메인
-`PRIVATE`: (Deprecated) 내부 접속 도메인 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -1971,19 +1638,7 @@ GET /v3.0/db-instances/{dbInstanceId}/network-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "availabilityZone": "kr-pub-a", - "subnet": { - "subnetId": "bd453789-34ae-416c-9f78-05b9e43a46be", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/16" - }, - "endPoints": [ - { - "domain": "ea548a78-d85f-43b4-8ddf-c88d999b9905.internal.kr1.mysql.rds.nhncloudservice.com", - "ipAddress": "192.168.0.2", - "endPointType": "INTERNAL" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1992,55 +1647,43 @@ GET /v3.0/db-instances/{dbInstanceId}/network-info --- -### 네트워크 정보 수정하기 +### DB 사용자 수정하기 ```http -PUT /v3.0/db-instances/{dbInstanceId}/network-info +PUT /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbUserId | URL | UUID | O | | +| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| authorityType | Body | Enum | X | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | ---- - -### DB 사용자 목록 보기 +

예시 +

-```http -GET /v3.0/db-instances/{dbInstanceId}/db-users +```json +{ + "dbPassword": "dbPassword", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|-----------------------------------------------------------------------------------------------------------------------------| -| dbUsers | Body | Array | DB 사용자 목록 | -| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | -| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | -| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | -| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `UPDATING`: 수정 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbUsers.authenticationPlugin | Body | Enum | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| dbUsers.tlsOption | Body | Enum | TLS Option
- NONE
- SSL
- X509 | -| dbUsers.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbUsers.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -2052,19 +1695,7 @@ GET /v3.0/db-instances/{dbInstanceId}/db-users "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbUsers": [ - { - "dbUserId": "4b3d530b-fd02-4d59-a620-83d019a67bbb", - "dbUserName": "db-user", - "host": "%", - "authorityType": "DDL", - "dbUserStatus": "STABLE", - "authenticationPlugin": "NATIVE", - "tlsOption": "NONE", - "createdYmdt": "2023-03-17T14:02:29+09:00", - "updatedYmdt": "2023-03-17T14:02:31+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2073,38 +1704,25 @@ GET /v3.0/db-instances/{dbInstanceId}/db-users --- -### DB 사용자 생성하기 +### DB 인스턴스 삭제 보호 설정 변경 ```http -POST /v3.0/db-instances/{dbInstanceId}/db-users +PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|-------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserName | Body | String | O | DB 사용자 계정 이름
- 최소 길이: `1`
- 최대 길이: `32` | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `16` | -| host | Body | String | O | DB 사용자 계정의 호스트명
- 예시: `1.1.1.%` | -| authorityType | Body | Enum | O | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | - -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 설정할 수 있습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 |

예시

```json { - "dbUserName": "db-user", - "dbPassword": "password", - "host": "1.1.1.%", - "authorityType": "CRUD", - "authenticationPlugin": "NATIVE", - "tlsOption": "NONE" + "useDeletionProtection": false } ``` @@ -2113,99 +1731,881 @@ POST /v3.0/db-instances/{dbInstanceId}/db-users #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### DB 사용자 수정하기 +### DB 인스턴스 강제 재시작하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/force-restart +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 고가용성 수정하기 + +```http +PUT /v3.0/db-instances/{dbInstanceId}/high-availability +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | + +

예시 +

+ +```json +{ + "useHighAvailability": false, + "pingInterval": 1 +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 일시 중지하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/pause +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 복구하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/repair +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 다시 시작하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/resume +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 분리하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/split +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 로그 파일 목록 보기 + +```http +GET /v3.0/db-instances/{dbInstanceId}/log-files +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| logFiles | Body | Array | 로그 파일 목록 | +| logFiles.logFileName | Body | String | 로그 파일 이름 | +| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- ERROR
- BINLOG
- GENERAL
- SLOW_QUERY
- AUDIT
- BACKUP | +| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | +| logFiles.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "logFiles": [ + { + "logFileName": "logFileName-example", + "logFileType": "ERROR", + "logFileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### 로그 파일 내보내기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/log-files/export +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| logFileNames | Body | Array | O | 로그 파일 이름 목록 | +| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 회원 또는 IAM 멤버 ID | +| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | + +
예시 +

+ +```json +{ + "logFileNames": [], + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 네트워크 정보 보기 + +```http +GET /v3.0/db-instances/{dbInstanceId}/network-info +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| availabilityZone | Body | String | DB 인스턴스를 생성할 가용성 영역 | +| subnet | Body | Object | 서브넷 객체 | +| subnet.subnetId | Body | UUID | 서브넷의 식별자 | +| subnet.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnet.subnetCidr | Body | String | 서브넷의 CIDR | +| endPoints | Body | Array | 접속 정보 목록 | +| endPoints.domain | Body | String | 도메인 | +| endPoints.ipAddress | Body | String | IP 주소 | +| endPoints.endPointType | Body | String | 접속 정보 타입 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "availabilityZone": "kr-pub-a", + "subnet": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example" + }, + "endPoints": [ + { + "domain": "domain-example", + "ipAddress": "ipAddress-example", + "endPointType": "endPointType-example" + } + ] +} +``` + +

+
+ +--- + +### 네트워크 정보 수정하기 ```http -PUT /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +PUT /v3.0/db-instances/{dbInstanceId}/network-info ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|-------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | -| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `16` | -| authorityType | Body | Enum | X | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 수정할 수 있습니다. -> `authenticationPlugin`의 값은 `dbPassword`와 동시에 수정을 해야 합니다. +
예시 +

+ +```json +{ + "usePublicAccess": false +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

```json { - "authorityType": "DDL" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

+--- + +### DB 인스턴스 승격하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/promote +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### DB 사용자 삭제하기 +### DB 인스턴스 복제하기 ```http -DELETE /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +POST /v3.0/db-instances/{dbInstanceId}/replicate +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부 | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | X | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | X | 데이터 스토리지 타입 | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| backup | Body | Object | X | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +
예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDefaultNotification": false, + "useDeletionProtection": false, + "network": { + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "storage": { + "storageType": "General SSD", + "storageSize": 20 + }, + "backup": { + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 0, + "replicationRegion": "KR4", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + } +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 인스턴스 재시작하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/restart +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` | + +
예시 +

+ +```json +{ + "useOnlineFailover": false, + "executeBackup": false, + "waitReplicationDelay": false, + "useReadOnly": false +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 인스턴스 복원 정보 조회 + +```http +GET /v3.0/db-instances/{dbInstanceId}/restoration-info +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 복원될 마지막 쿼리 조회 + +```http +GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| executedYmdt | Body | DateTime | 쿼리 수행 일시 | +| lastQuery | Body | String | 마지막 수행 쿼리 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "executedYmdt": "2023-12-31T15:00:00+09:00", + "lastQuery": "lastQuery-example" +} +``` + +

+
+ +--- + +### DB 인스턴스 복원 + +```http +POST /v3.0/db-instances/{dbInstanceId}/restore +``` + +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | X | DB 포트 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| imageId | Body | UUID | X | 이미지의 식별자 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.restoreType | Body | Enum | O | 복원 타입
- TIMESTAMP: `복원 가능한 시간 이내의 시간을 이용한 시점 복원`
- BINLOG: `복원 가능한 바이너리 로그 위치를 이용한 시점 복원`
- BACKUP: `기존에 생성한 백업을 이용한 스냅숏 복원` | +| restore.binLog.binLogFileName | Body | String | X | 복원에 사용할 바이너리 로그 이름 | +| restore.binLog.binLogPosition | Body | Object | X | 복원에 사용할 바이너리 로그 위치 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | + +#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.restoreYmdt | Body | DateTime | X | DB 인스턴스 복원 일시 | + +복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능합니다. + +#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 | +| restore.binLog | Body | Object | X | 복원에 사용할 바이너리 로그 정보 객체 | + +바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. + +#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 | + +
예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "useHighAvailability": false, + "imageId": "550e8400-e29b-41d4-a716-446655440000", + "pingInterval": 3, + "storage": { + "storageType": "General SSD", + "storageSize": 20 + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "backup": { + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR4", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + }, + "restore": { + "restoreType": "TIMESTAMP", + "binLog": { + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + } + } + }, + "useDefaultNotification": false, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDeletionProtection": false +} ``` -#### 요청 +

+
+ +#### 응답 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### DB 스키마 목록 보기 +### DB 인스턴스 시작하기 ```http -GET /v3.0/db-instances/{dbInstanceId}/db-schemas +POST /v3.0/db-instances/{dbInstanceId}/start ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|------------------------------------------------------------------------------------------------------| -| dbSchemas | Body | Array | DB 스키마 목록 | -| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | -| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | -| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbSchemas.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -2217,14 +2617,7 @@ GET /v3.0/db-instances/{dbInstanceId}/db-schemas "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSchemas": [ - { - "dbSchemaId": "7c9a94b8-86c1-435d-8af2-82a5e9d53fd4", - "dbSchemaName": "schema", - "dbSchemaStatus": "STABLE", - "createdYmdt": "2023-03-20T13:37:45+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2233,75 +2626,66 @@ GET /v3.0/db-instances/{dbInstanceId}/db-schemas --- -### DB 스키마 생성하기 +### DB 인스턴스 정지하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/db-schemas +POST /v3.0/db-instances/{dbInstanceId}/stop ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|--------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaName | Body | String | O | DB 스키마 이름 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -### DB 스키마 삭제하기 +

예시 +

-```http -DELETE /v3.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaId | URL | UUID | O | DB 스키마의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 로그 파일 목록 보기 +### 스토리지 정보 보기 ```http -GET /v3.0/db-instances/{dbInstanceId}/log-files +GET /v3.0/db-instances/{dbInstanceId}/storage-info ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|-------|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileTypes | Query | Array | X | 로그 파일 타입 종류 목록
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| logFiles | Body | Array | 로그 파일 목록 | -| logFiles.logFileName | Body | String | 로그 파일 이름 | -| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | -| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | -| logFiles.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageType | Body | Enum | 데이터 스토리지 타입 | +| storageSize | Body | Number | 데이터 스토리지 크기(GB) | +| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- DELETED: `삭제됨`
- PENDING_DELETION: `삭제 유예됨`
- DELETION_RESERVED: `삭제 예약됨 (스냅샷 정리 대기)`
- DETACHED: `해제됨`
- ATTACHED: `할당됨` |
예시

@@ -2313,14 +2697,9 @@ GET /v3.0/db-instances/{dbInstanceId}/log-files "resultMessage": "SUCCESS", "isSuccessful": true }, - "logFiles": [ - { - "logFileName": "xtra_full.log-20230317", - "logFileType": "BACKUP", - "logFileSize": 4096, - "createdYmdt": "2023-03-17T14:02:29+09:00" - } - ] + "storageType": "General SSD", + "storageSize": 1, + "storageStatus": "DELETED" } ``` @@ -2329,35 +2708,25 @@ GET /v3.0/db-instances/{dbInstanceId}/log-files --- -### 로그 파일 내보내기 +### 스토리지 정보 수정하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/log-files/export +PUT /v3.0/db-instances/{dbInstanceId}/storage-info ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|--------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileNames | Body | Array | O | 로그 파일 이름 목록
- 최소 크기: `1` | -| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최댓값: `2048` |

예시

```json { - "logFileNames": ["xtra_full.log-20230317"], - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "logs/backup" + "storageSize": 1 } ``` @@ -2366,9 +2735,26 @@ POST /v3.0/db-instances/{dbInstanceId}/log-files/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -2394,30 +2780,22 @@ GET /v3.0/backups 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|--------|----|----------------------------------------------------------| -| page | Query | Number | O | 조회할 목록의 페이지
- 최솟값: `1` | -| size | Query | Number | O | 조회할 목록의 페이지 크기
- 최솟값: `1`
- 최댓값: `100` | -| backupType | Query | Enum | X | 백업 유형
- `AUTO`: 자동
- `MANUAL`: 수동
- 기본값: 전체 | -| dbInstanceId | Query | UUID | X | 원본 DB 인스턴스의 식별자 | -| dbVersion | Query | Enum | X | DB 엔진 유형 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|-----------------------------------| -| totalCounts | Body | Number | 전체 백업 목록 수 | -| backups | Body | Array | 백업 목록 | -| backups.backupId | Body | UUID | 백업의 식별자 | -| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | -| backups.backupStatus | Body | Enum | 백업의 현재 상태 | -| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| backups.dbVersion | Body | Enum | DB 엔진 유형 | -| backups.utilVersion | Body | String | 백업에 사용된 xtrabackup 유틸리티 버전 | -| backups.backupType | Body | Enum | 백업 유형 | -| backups.backupSize | Body | Number | 백업의 크기(Byte) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 백업 목록 수 | +| backups | Body | Array | 백업 목록 | +| backups.backupId | Body | UUID | 백업의 식별자 | +| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | +| backups.backupStatus | Body | Enum | 백업의 현재 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| backups.dbVersion | Body | Enum | DB 엔진 유형 | +| backups.utilVersion | Body | String | 유틸리티 버전 | +| backups.backupType | Body | Enum | 백업 유형
- AUTO
- MANUAL | +| backups.backupSize | Body | Number | 백업의 크기(Byte) | +| backups.createdYmdt | Body | DateTime | 생성 일시 | +| backups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -2432,16 +2810,16 @@ GET /v3.0/backups "totalCounts": 1, "backups": [ { - "backupId": "0017f136-3e01-4530-94aa-20661afe6632", - "backupName": "backup", - "backupStatus": "COMPLETED", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd", - "dbVersion": "MYSQL_V8028", - "utilVersion": "8.0.28", + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "utilVersion": "utilVersion-example", "backupType": "AUTO", - "backupSize": 4996786, - "createdYmdt": "2023-02-21T00:35:00+09:00", - "updatedYmdt": "2023-02-22T00:35:32+09:00" + "backupSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -2452,6 +2830,45 @@ GET /v3.0/backups --- +### 백업 삭제하기 + +```http +DELETE /v3.0/backups/{backupId} +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + ### 백업 내보내기 ```http @@ -2460,25 +2877,25 @@ POST /v3.0/backups/{backupId}/export #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|-----------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 계정 혹은 IAM 회원 ID | +| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 |
예시

```json { - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "backups/backup_file" + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" } ``` @@ -2487,12 +2904,26 @@ POST /v3.0/backups/{backupId}/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -> [주의] -> 수동 백업의 경우 백업이 수행된 DB 인스턴스가 존재하지 않으면, 백업을 오브젝트 스토리지로 내보낼 수 없습니다. +

+
--- @@ -2504,50 +2935,56 @@ POST /v3.0/backups/{backupId}/restore #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------|------|---------|----|---------------------------------------------------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Integer | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 ||network|Body|Object|O|네트워크 정보 객체| -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄) | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json - { - "dbInstanceName": "db-instance-restore", - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbPort": 10000, - "parameterGroupId": "132d383c-38e3-468a-a826-5e9a8fff15d0", + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, "availabilityZone": "kr-pub-a" }, "storage": { @@ -2555,10 +2992,14 @@ POST /v3.0/backups/{backupId}/restore "storageSize": 20 }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 1800, + "replicationRegion": "KR4", + "useBackupLock": true, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", + "backupWndBgnTime": "backupWndBgnTime-example", "backupWndDuration": "HALF_AN_HOUR" } ] @@ -2571,31 +3012,26 @@ POST /v3.0/backups/{backupId}/restore #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -### 백업 삭제하기 +

예시 +

-```http -DELETE /v3.0/backups/{backupId} +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------|-----|------|----|---------| -| backupId | URL | UUID | O | 백업의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -2622,15 +3058,15 @@ GET /v3.0/db-security-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-----------------------------------| -| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | -| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | +| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -2644,12 +3080,12 @@ GET /v3.0/db-security-groups }, "dbSecurityGroups": [ { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", "progressStatus": "NONE", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2022-02-19T19:18:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -2660,42 +3096,59 @@ GET /v3.0/db-security-groups --- -### DB 보안 그룹 상세 보기 +### DB 보안 그룹 생성하기 ```http -GET /v3.0/db-security-groups/{dbSecurityGroupId} +POST /v3.0/db-security-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` | +| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | +| rules.direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| rules.etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| rules.port | Body | Object | O | 포트 객체 | +| rules.port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| rules.cidr | Body | String | O | CIDR | +| rules.description | Body | String | X | 보안 그룹 규칙에 대한 추가 정보 | + +

예시 +

+ +```json +{ + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example", + "rules": [ + { + "direction": "INGRESS", + "etherType": "IPV4", + "port": { + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 + }, + "cidr": "cidr-example", + "description": "description-example" + } + ] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|----------|--------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| rules | Body | Array | DB 보안 그룹 규칙 목록 | -| rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | -| rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.port | Body | Object | 포트 객체 | -| rules.port.portType | Body | Enum | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다.
- `PORT`: 지정된 포트값으로 설정됩니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | 최소 포트 범위 | -| rules.port.maxPort | Body | Number | 최대 포트 범위 | -| rules.cidr | Body | String | 허용할 트래픽의 원격 소스 | -| rules.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| rules.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 |
예시

@@ -2707,30 +3160,7 @@ GET /v3.0/db-security-groups/{dbSecurityGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSecurityGroup": { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", - "progressStatus": "NONE", - "rules": [ - { - "ruleId": "17c88ef6-95f1-4678-84f9-fee1b22e250d", - "description": "description", - "direction": "INGRESS", - "etherType": "IPV4", - "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 - }, - "cidr": "0.0.0.0/0", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } - ], - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2739,131 +3169,159 @@ GET /v3.0/db-security-groups/{dbSecurityGroupId} --- -### DB 보안 그룹 생성하기 +### DB 보안 그룹 삭제하기 ```http -POST /v3.0/db-security-groups +DELETE /v3.0/db-security-groups/{dbSecurityGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | -| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | -| rules.description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | -| rules.port | Body | Object | O | 포트 객체 | -| rules.port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. - -

예시 -

- -```json -{ - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", - "rules": [ - { - "direction": "INGRESS", - "etherType": "IPV4", - "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 - }, - "cidr": "0.0.0.0/0" - } - ] -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|------|---------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### DB 보안 그룹 수정하기 +### DB 보안 그룹 상세 보기 ```http -PUT /v3.0/db-security-groups/{dbSecurityGroupId} +GET /v3.0/db-security-groups/{dbSecurityGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|-----------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroup | Body | Object | DB 보안 그룹 | +| dbSecurityGroup.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroup.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| dbSecurityGroup.description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| dbSecurityGroup.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| dbSecurityGroup.rules | Body | Array | DB 보안 그룹 규칙 목록 | +| dbSecurityGroup.rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | +| dbSecurityGroup.rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | +| dbSecurityGroup.rules.direction | Body | Enum | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| dbSecurityGroup.rules.etherType | Body | Enum | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| dbSecurityGroup.rules.port | Body | Object | 포트 객체 | +| dbSecurityGroup.rules.port.portType | Body | Enum | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| dbSecurityGroup.rules.port.minPort | Body | Number | 최소 포트 범위 | +| dbSecurityGroup.rules.port.maxPort | Body | Number | 최대 포트 범위 | +| dbSecurityGroup.rules.cidr | Body | String | CIDR | +| dbSecurityGroup.rules.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroup.rules.updatedYmdt | Body | DateTime | 수정 일시 | +| dbSecurityGroup.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroup.updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSecurityGroup": { + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", + "progressStatus": "NONE", + "rules": [ + { + "ruleId": "550e8400-e29b-41d4-a716-446655440000", + "description": "description-example", + "direction": "INGRESS", + "etherType": "IPV4", + "port": { + "portType": "ALL", + "minPort": 1, + "maxPort": 1 + }, + "cidr": "cidr-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } } ```

-#### 응답 +--- + +### DB 보안 그룹 수정하기 + +```http +PUT /v3.0/db-security-groups/{dbSecurityGroupId} +``` + +#### 요청 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example" } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. --- -### DB 보안 그룹 삭제하기 +### DB 보안 그룹 규칙 삭제하기 ```http -DELETE /v3.0/db-security-groups/{dbSecurityGroupId} +DELETE /v3.0/db-security-groups/{dbSecurityGroupId}/rules ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleIds | Query | String | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -2874,7 +3332,8 @@ DELETE /v3.0/db-security-groups/{dbSecurityGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2891,20 +3350,17 @@ POST /v3.0/db-security-groups/{dbSecurityGroupId}/rules #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |

예시

@@ -2914,11 +3370,12 @@ POST /v3.0/db-security-groups/{dbSecurityGroupId}/rules "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "PORT", - "minPort": 10000, - "maxPort": 10000 + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -2927,9 +3384,26 @@ POST /v3.0/db-security-groups/{dbSecurityGroupId}/rules #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -2941,21 +3415,18 @@ PUT /v3.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleId | URL | UUID | O | DB 보안 그룹 규칙의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |
예시

@@ -2965,9 +3436,12 @@ PUT /v3.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "DB_PORT" + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -2976,32 +3450,26 @@ PUT /v3.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | ---- - -### DB 보안 그룹 규칙 삭제하기 +

예시 +

-```http -DELETE /v3.0/db-security-groups/{dbSecurityGroupId}/rules +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|-------|----|---------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleIds | Query | Array | O | DB 보안 그룹 규칙의 식별자 목록 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -3017,22 +3485,18 @@ GET /v3.0/parameter-groups 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------|-------|------|----|----------| -| dbVersion | Query | Enum | X | DB 엔진 유형 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-------------------------------------------------------------------| -| parameterGroups | Body | Array | 파라미터 그룹 목록 | -| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameterGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroups | Body | Array | 파라미터 그룹 목록 | +| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameterGroups.createdYmdt | Body | DateTime | 생성 일시 | +| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3046,13 +3510,13 @@ GET /v3.0/parameter-groups }, "parameterGroups": [ { - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", "parameterGroupStatus": "STABLE", - "createdYmdt": "2023-02-31T15:28:17+09:00", - "updatedYmdt": "2023-02-31T15:28:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3061,44 +3525,41 @@ GET /v3.0/parameter-groups

- --- -### 파라미터 그룹 상세 보기 +### 파라미터 그룹 생성하기 ```http -GET /v3.0/parameter-groups/{parameterGroupId} +POST /v3.0/parameter-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` | +| dbVersion | Body | Enum | O | DB 엔진 유형 | + +
예시 +

+ +```json +{ + "parameterGroupName": "parameterGroupName", + "description": "description-example", + "dbVersion": "MYSQL_V8036" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|--------------------------------------------------------------------------------------------------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameters | Body | Array | 파라미터 목록 | -| parameters.parameterId | Body | UUID | 파라미터 식별자 | -| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- `CLIENT`: client
- `MYSQL`: mysql
- `MYSQLD`: mysqld | -| parameters.parameterName | Body | String | 파라미터 이름 | -| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | -| parameters.value | Body | String | 현재 설정된 값 | -| parameters.defaultValue | Body | String | 기본값 | -| parameters.allowedValue | Body | String | 허용된 값 | -| parameters.updateType | Body | Enum | 수정 타입
- `VARIABLE`: 언제든 수정 가능
- `CONSTANT`: 수정 불가능
- `INIT_VARIABLE`: DB 인스턴스 생성 시에만 수정 가능 | -| parameters.applyType | Body | Enum | 적용 타입
- `SESSION`: 세션 적용
- `FILE`: 설정 파일 적용(재시작 필요)
- `BOTH`: 전체(재시작 필요) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |
예시

@@ -3110,91 +3571,130 @@ GET /v3.0/parameter-groups/{parameterGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", - "parameterGroupStatus": "STABLE", - "parameters": [ - { - "parameterId": "fa040b5e-f29f-46de-8f0d-bba4cb82887a", - "parameterFileGroup": "client", - "parameterName": "socket", - "fileParameterName": "socket", - "value": "/home/tcrds/db/mysql/tmp/mysql.sock", - "defaultValue": "/home/tcrds/db/mysql/tmp/mysql.sock", - "allowedValue": "", - "updateType": "CONSTANT", - "applyType": "BOTH" - } - ], - "createdYmdt": "2023-03-13T11:02:28+09:00", - "updatedYmdt": "2023-03-13T11:02:28+09:00" + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ```

+--- + +### 파라미터 그룹 삭제하기 + +```http +DELETE /v3.0/parameter-groups/{parameterGroupId} +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 생성하기 +### 파라미터 그룹 상세 보기 ```http -POST /v3.0/parameter-groups +GET /v3.0/parameter-groups/{parameterGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameters | Body | Array | 파라미터 목록 | +| parameters.parameterId | Body | UUID | 파라미터의 식별자 | +| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- CLIENT
- MYSQL
- MYSQLD | +| parameters.parameterName | Body | String | 파라미터 이름 | +| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | +| parameters.value | Body | String | 현재 설정된 값 | +| parameters.defaultValue | Body | String | 기본값 | +| parameters.allowedValue | Body | String | 허용된 값 | +| parameters.updateType | Body | Enum | 수정 타입
- VARIABLE
- CONSTANT
- INIT_VARIABLE | +| parameters.applyType | Body | Enum | 적용 타입
- BOTH
- SESSION
- FILE | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "parameterGroupName": "parameter-group", - "dbVersion": "MYSQL_V8028" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "parameterGroupStatus": "STABLE", + "parameters": [ + { + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "parameterFileGroup": "CLIENT", + "parameterName": "parameterName-example", + "fileParameterName": "fileParameterName-example", + "value": "value-example", + "defaultValue": "defaultValue-example", + "allowedValue": "allowedValue-example", + "updateType": "VARIABLE", + "applyType": "BOTH" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | - --- -### 파라미터 그룹 복사하기 +### 파라미터 그룹 수정하기 ```http -POST /v3.0/parameter-groups/{parameterGroupId}/copy +PUT /v3.0/parameter-groups/{parameterGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "parameterGroupName": "parameter-group-copy", - "description": "copy" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -3203,32 +3703,31 @@ POST /v3.0/parameter-groups/{parameterGroupId}/copy #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 수정하기 +### 파라미터 그룹 복사하기 ```http -PUT /v3.0/parameter-groups/{parameterGroupId} +POST /v3.0/parameter-groups/{parameterGroupId}/copy ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |

예시

```json { - "parameterGroupName": "parameter-group" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -3237,7 +3736,9 @@ PUT /v3.0/parameter-groups/{parameterGroupId} #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |

예시

@@ -3248,7 +3749,8 @@ PUT /v3.0/parameter-groups/{parameterGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3265,12 +3767,12 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/parameters #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------------|------|--------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | -| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | -| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | +| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | +| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 |

예시

@@ -3279,8 +3781,8 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/parameters { "modifiedParameters": [ { - "parameterId": "3abac558-7274-44e1-9f4a-f100f53f67ba", - "value": "0" + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "value": "value-example" } ] } @@ -3293,39 +3795,49 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/parameters 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

+--- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} +### 파라미터 그룹 재설정하기 + +```http +PUT /v3.0/parameter-groups/{parameterGroupId}/reset ``` -

-
+#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 재설정하기 +## 사용자 그룹 + +### 사용자 그룹 목록 보기 ```http -PUT /v3.0/parameter-groups/{parameterGroupId}/reset +GET /v3.0/user-groups ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroups.createdYmdt | Body | DateTime | 생성 일시 | +| userGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3336,7 +3848,15 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/reset "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "userGroups": [ + { + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -3345,23 +3865,39 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/reset --- -### 파라미터 그룹 삭제하기 +### 사용자 그룹 생성하기 ```http -DELETE /v3.0/parameter-groups/{parameterGroupId} +POST /v3.0/user-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록 | +| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` | + +

예시 +

+ +```json +{ + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAllYN": false +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +

+
#### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 |
예시

@@ -3372,7 +3908,8 @@ DELETE /v3.0/parameter-groups/{parameterGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "userGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3381,51 +3918,23 @@ DELETE /v3.0/parameter-groups/{parameterGroupId} --- -## 사용자 그룹 - -### 사용자 그룹 목록 보기 +### 사용자 그룹 삭제하기 ```http -GET /v3.0/user-groups +DELETE /v3.0/user-groups/{userGroupId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|-----------------------------------| -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| userGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - -

예시 -

+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "userGroups": [ - { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" - } - ] -} -``` +#### 응답 -

-
+이 API는 응답 본문을 반환하지 않습니다. --- @@ -3439,21 +3948,21 @@ GET /v3.0/user-groups/{userGroupId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|----------|-----------------------------------------------------------------------------------------------------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
`ENTIRE`: 프로젝트 멤버 전체를 포함하는 사용자 그룹
`INDIVIDUAL_MEMBER`: 특정 프로젝트 멤버를 포함하는 사용자 그룹 | -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
- ENTIRE
- INDIVIDUAL_MEMBER | +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3465,65 +3974,21 @@ GET /v3.0/user-groups/{userGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "userGroupTypeCode": "INDIVIDUAL_MEMBER", + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "userGroupTypeCode": "ENTIRE", "members": [ { - "memberId": "1321e759-2ef3-4b85-9921-b13e918b24b5" + "memberId": "550e8400-e29b-41d4-a716-446655440000" } ], - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" -} -``` - -

-
- ---- - -### 사용자 그룹 생성하기 - -```http -POST /v3.0/user-groups -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|-------------------------------------------------------------| -| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록
`selectAllYN`이 true인 경우 해당 필드 값은 무시됨 | -| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 유무
true인 경우 해당 그룹은 전체 멤버에 대해 설정됨 | - -
예시 -

- -```json -{ - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5" - ] -} -``` - -```json -{ - "userGroupName": "dev-team", - "selectAllYN":true + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` -

-
- -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------------|------|------|-------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +

+
--- @@ -3535,23 +4000,21 @@ PUT /v3.0/user-groups/{userGroupId} #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|----------------------------------------------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | -| userGroupName | Body | String | X | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | -| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 유무
true인 경우 해당 그룹은 전체 멤버에 대해 설정됨 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | +| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` |
예시

```json { - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5", - "f9064b09-2b15-442e-a4b0-3a5a2754555e" - ] + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAllYN": false } ``` @@ -3562,39 +4025,32 @@ PUT /v3.0/user-groups/{userGroupId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- -### 사용자 그룹 삭제하기 +## 알림 그룹 + +### 알림 그룹 목록 보기 ```http -DELETE /v3.0/user-groups/{userGroupId} +GET /v3.0/notification-groups ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroups | Body | Array | 알림 그룹 목록 | +| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | +| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | +| notificationGroups.createdYmdt | Body | DateTime | 생성 일시 | +| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3605,7 +4061,18 @@ DELETE /v3.0/user-groups/{userGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "notificationGroups": [ + { + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, + "notifySms": false, + "isEnabled": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -3614,30 +4081,45 @@ DELETE /v3.0/user-groups/{userGroupId} --- -## 알림 그룹 - -### 알림 그룹 목록 보기 +### 알림 그룹 생성하기 ```http -GET /v3.0/notification-groups +POST /v3.0/notification-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | +| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | + +

예시 +

+ +```json +{ + "notificationGroupName": "notificationGroupName", + "notifyEmail": true, + "notifySms": true, + "isEnabled": true, + "dbInstanceIds": [], + "userGroupIds": [] +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------------|------|----------|-----------------------------------| -| notificationGroups | Body | Array | 알림 그룹 목록 | -| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | -| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | -| notificationGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 |
예시

@@ -3649,17 +4131,7 @@ GET /v3.0/notification-groups "resultMessage": "SUCCESS", "isSuccessful": true }, - "notificationGroups": [ - { - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, - "notifySms": false, - "isEnabled": true, - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" - } - ] + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3668,6 +4140,26 @@ GET /v3.0/notification-groups --- +### 알림 그룹 삭제하기 + +```http +DELETE /v3.0/notification-groups/{notificationGroupId} +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + ### 알림 그룹 상세 보기 ```http @@ -3678,27 +4170,27 @@ GET /v3.0/notification-groups/{notificationGroupId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------------|------|----------|-----------------------------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notifySms | Body | Boolean | SMS 알림 여부 | -| isEnabled | Body | Boolean | 활성화 여부 | -| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notifySms | Body | Boolean | SMS 알림 여부 | +| isEnabled | Body | Boolean | 활성화 여부 | +| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -3710,25 +4202,25 @@ GET /v3.0/notification-groups/{notificationGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, "notifySms": false, - "isEnabled": true, + "isEnabled": false, "dbInstances": [ { - "dbInstanceId": "ed5cb985-526f-4c54-9ae0-40288593de65", - "dbInstanceName": "database" + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example" } ], "userGroups": [ { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team" + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example" } ], - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -3737,37 +4229,35 @@ GET /v3.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 생성하기 +### 알림 그룹 수정하기 ```http -POST /v3.0/notification-groups +PUT /v3.0/notification-groups/{notificationGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------------| -| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | -| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | -| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | -| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | +| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `false` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `false` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `false` | +| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 |

예시

```json { - "notificationGroupName": "dev-team-noti", + "notificationGroupName": "notificationGroupName-example", "notifyEmail": false, - "isEnable": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65" - ], - "userGroupIds": [ - "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0" - ] + "notifySms": false, + "isEnabled": false, + "dbInstanceIds": [], + "userGroupIds": [] } ``` @@ -3776,49 +4266,45 @@ POST /v3.0/notification-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|------|------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 알림 그룹 수정하기 +## 모니터링 + +### 통계 정보 조회 ```http -PUT /v3.0/notification-groups/{notificationGroupId} +GET /v3.0/metric-statistics ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부 | -| notifySms | Body | Boolean | X | SMS 알림 여부 | -| isEnabled | Body | Boolean | X | 활성화 여부 | -| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +이 API는 요청 본문을 요구하지 않습니다. -

예시 -

+#### 응답 -```json -{ - "notifyEmail": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65", - "d51b7da0-682f-47ff-b588-b739f6adc740" - ] -} +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### Metric 목록 보기 + +```http +GET /v3.0/metrics ``` -

-
+#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| metrics | Body | Array | Metric 목록 | +| metrics.measureName | Body | String | 조회 지표 유형 | +| metrics.unit | Body | String | 측정값 단위 |
예시

@@ -3829,7 +4315,13 @@ PUT /v3.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "metrics": [ + { + "measureName": "measureName-example", + "unit": "unit-example" + } + ] } ``` @@ -3838,23 +4330,38 @@ PUT /v3.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 삭제하기 +## 이벤트 + +### 이벤트 카테고리 + +이벤트는 카테고리로 분류할 수 있으며 아래와 같습니다. + +| 이벤트 카테고리 | 설명 | +|-------------|---------| +| ALL | 전체 | +| BACKUP | 백업 | +| DB_INSTANCE | DB 인스턴스 | +| JOB | 작업 | +| TENANT | 테넌트 | +| MONITORING | 모니터링 | + +### 구독 가능한 이벤트 코드 목록 보기 ```http -DELETE /v3.0/notification-groups/{notificationGroupId} +GET /v3.0/event-codes ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | - #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventCodes | Body | Array | 이벤트 코드 목록 | +| eventCodes.eventCode | Body | Enum | 이벤트 코드 | +| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT |

예시

@@ -3865,7 +4372,13 @@ DELETE /v3.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "eventCodes": [ + { + "eventCode": "ENUM_VALUE", + "eventCategoryType": "ALL" + } + ] } ``` @@ -3874,12 +4387,10 @@ DELETE /v3.0/notification-groups/{notificationGroupId} --- -## 모니터링 - -### Metric 목록 보기 +### 이벤트 목록 조회 ```http -GET /v3.0/metrics +GET /v3.0/events ``` #### 요청 @@ -3888,11 +4399,18 @@ GET /v3.0/metrics #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|--------|-----------| -| metrics | Body | Array | Metric 목록 | -| metrics.measureName | Body | Enum | 조회 지표 유형 | -| metrics.unit | Body | String | 측정값 단위 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 목록 수 | +| events | Body | Array | 이벤트 목록 | +| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | +| events.sourceId | Body | String | 이벤트 소스의 식별자 | +| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | +| events.messages | Body | Array | 이벤트 메세지 목록 | +| events.messages.langCode | Body | Enum | 언어 코드
- KO
- EN
- JA
- ZH | +| events.messages.message | Body | String | 이벤트 메세지 | +| events.eventYmdt | Body | DateTime | 이벤트 발생 일시 |

예시

@@ -3904,10 +4422,20 @@ GET /v3.0/metrics "resultMessage": "SUCCESS", "isSuccessful": true }, - "metrics": [ + "totalCounts": 1, + "events": [ { - "measureName": "CPU_USAGE", - "unit": "%" + "eventCategoryType": "ALL", + "eventCode": "ENUM_VALUE", + "sourceId": "sourceId-example", + "sourceName": "sourceName-example", + "messages": [ + { + "langCode": "KO", + "message": "message-example" + } + ], + "eventYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3918,56 +4446,65 @@ GET /v3.0/metrics --- -### 통계 정보 조회 +## 이벤트 구독 + +### 이벤트 구독 목록 조회 ```http -GET /v3.0/metric-statistics +GET /v3.0/event-subscriptions ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|----------|----|-----------------------------------| -| dbInstanceId | Query | UUID | O | DB 인스턴스의 식별자 | -| measureNames | Query | Array | O | 조회 지표 목록
- 최소 크기: `1` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| interval | Query | Number | X | 조회 간격 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|-----------|----------| -| metricStatistics | Body | Array | 통계 정보 목록 | -| metricStatistics.measureName | Body | Enum | 측정 항목 유형 | -| metricStatistics.unit | Body | String | 측정값 단위 | -| metricStatistics.values | Body | Array | 측정값 목록 | -| metricStatistics.values.timestamp | Body | Timestamp | 측정 시간 | -| metricStatistics.values.value | Body | Object | 측정값 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 구독 목록 수 | +| eventSubscriptions | Body | Array | 이벤트 구독 목록 | +| eventSubscriptions.eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 | +| eventSubscriptions.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.eventSubscriptionName | Body | String | 이벤트 구독의 식별할 수 있는 이름 | +| eventSubscriptions.enabled | Body | Boolean | 활성화 여부 | +| eventSubscriptions.notifyEmail | Body | Boolean | 이메일 발송 여부 | +| eventSubscriptions.notifySms | Body | Boolean | SMS 발송 여부 | +| eventSubscriptions.eventCodes | Body | Array | 구독할 이벤트 코드 목록 | +| eventSubscriptions.sources | Body | Array | 구독할 이벤트 소스 목록 | +| eventSubscriptions.sources.sourceId | Body | String | 이벤트 소스의 식별자 | +| eventSubscriptions.sources.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.userGroupIds | Body | Array | 이벤트 구독 중인 사용자 그룹의 식별자 목록 | +| eventSubscriptions.createdYmdt | Body | DateTime | 생성 일시 |

예시

```json { - "metricStatistics": [ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "totalCounts": 1, + "eventSubscriptions": [ { - "measureName": "MYSQL_STATUS", - "unit": "", - "values": [ - [ - 1679298540, - "1" - ], - [ - 1679298600, - "1" - ], - [ - 1679298660, - "1" - ] - ] + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ + { + "sourceId": "sourceId-example", + "eventCategoryType": "ALL" + } + ], + "userGroupIds": [], + "createdYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3978,56 +4515,56 @@ GET /v3.0/metric-statistics --- -## 이벤트 - -### 이벤트 카테고리 - -이벤트는 카테고리로 분류할 수 있으며 아래와 같습니다. - -| 이벤트 카테고리 | 설명 | -|-------------|---------| -| ALL | 전체 | -| BACKUP | 백업 | -| DB_INSTANCE | DB 인스턴스 | -| JOB | 작업 | -| TENANT | 테넌트 | -| MONITORING | 모니터링 | - -### 이벤트 목록 조회 +### 이벤트 구독 생성하기 ```http -GET /v3.0/events +POST /v3.0/event-subscriptions ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | O | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | O | 활성화 여부 | +| notifyEmail | Body | Boolean | O | 이메일 발송 여부 | +| notifySms | Body | Boolean | O | SMS 발송 여부 | +| eventCodes | Body | Array | O | 구독할 이벤트 코드 목록 | +| sources | Body | Array | O | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | O | 이벤트 구독할 사용자 그룹의 식별자 목록 | + +

예시 +

+ +```json +{ + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ + { + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" + } + ], + "userGroupIds": [] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | O | 조회할 목록의 페이지
- 최솟값: `1` | -| size | Query | Number | O | 조회할 목록의 페이지 크기
- 최솟값: `1`
- 최댓값: `100` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| eventCategoryType | Query | Enum | O | 조회할 이벤트 카테고리 유형
- `ALL`: 전체
- `INSTANCE`: DB 인스턴스
- `BACKUP`: 백업
- `DB_SECURITY_GROUP`: DB 보안 그룹
- `TENANT`: 테넌트 | -| sourceId | Query | String | X | 이벤트가 발생한 대상 리소스의 식별자 | -| keyword | Query | String | X | 이벤트 메시지에 포함된 문자열 검색어 | -| ascendingOrder | Query | Enum | X | 이벤트 메시지 정렬 순서
- `ASC`: 오름차순
- `DESC`: 내림차순
- 기본값: `DESC` | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|---------------------------------------| -| totalCounts | Body | Number | 전체 이벤트 목록 수 | -| events | Body | Array | 이벤트 목록 | -| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | -| events.sourceId | Body | String | 이벤트 소스의 식별자 | -| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | -| events.messages | Body | Array | 이벤트 메시지 목록 | -| events.messages.langCode | Body | String | 언어 코드 | -| events.messages.message | Body | String | 이벤트 메시지 | -| events.eventYmdt | Body | DateTime | 이벤트 발생 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 |
예시

@@ -4039,34 +4576,7 @@ GET /v3.0/events "resultMessage": "SUCCESS", "isSuccessful": true }, - "totalCounts": 28, - "events": [ - { - "eventCategoryType": "INSTANCE", - "eventCode": "INSTC_02_01", - "sourceId": "76f00947-356e-4a20-8922-428368cc45ed", - "sourceName": "db-instance", - "messages": [ - { - "langCode": "EN", - "message": "DB instance started" - }, - { - "langCode": "JA", - "message": "DBインスタンスの起動" - }, - { - "langCode": "KO", - "message": "DB 인스턴스 시작" - }, - { - "langCode": "ZH", - "message": "DB instance started" - } - ], - "eventYmdt": "2023-03-20T16:31:59+09:00" - } - ] + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4075,44 +4585,75 @@ GET /v3.0/events --- -### 구독 가능한 이벤트 코드 목록 보기 +### 이벤트 구독 삭제하기 ```http -GET /v3.0/event-codes +DELETE /v3.0/event-subscriptions/{eventSubscriptionId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | + #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|-------|-------------| -| eventCodes | Body | Array | 이벤트 코드 목록 | -| eventCodes.eventCode | Body | Enum | 이벤트 코드 | -| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 이벤트 구독 수정하기 + +```http +PUT /v3.0/event-subscriptions/{eventSubscriptionId} +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | +| eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | X | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | X | 활성화 여부 | +| notifyEmail | Body | Boolean | X | 이메일 발송 여부 | +| notifySms | Body | Boolean | X | SMS 발송 여부 | +| eventCodes | Body | Array | X | 구독할 이벤트 코드 목록 | +| sources | Body | Array | X | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | X | 이벤트 구독할 사용자 그룹의 식별자 목록 |

예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "eventCodes": [ + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ { - "eventCode": "INSTC_05_01", - "eventCategoryType": "INSTANCE" + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" } - ] + ], + "userGroupIds": [] } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- + diff --git a/ko/api-guide-v3.0-ngovc.md b/ko/api-guide-v3.0-ngovc.md index d15a7d5f..96bd4dfd 100644 --- a/ko/api-guide-v3.0-ngovc.md +++ b/ko/api-guide-v3.0-ngovc.md @@ -1,35 +1,42 @@ -## Database > RDS for MySQL > API 가이드 +## Database > RDS for MySQL > API v3.0 가이드 -| 리전 | 엔드포인트 | -|-----------|-----------------------------------------------| -| 한국(판교) 리전 | https://kr4-rds-mysql-api.ngovc.com | +## RDS for MySQL API 공통 정보 -## 인증 및 권한 +### API 엔드포인트 -API를 사용하려면 인증에 필요한 `User Access Key ID`와 `Secret Access Key`가 필요합니다. 콘솔 우측 상단의 계정에 마우스 포인터를 올리면 표시되는 드롭다운 메뉴에서 API 보안 설정을 선택해 생성할 수 있습니다. +| 리전 | 엔드포인트 | +|------|----------| +| 한국(대구) 리전 | https://ngovc-kr4-rds-proxy.cloud.toastoven.net | + + +### 인증 및 권한 + +RDS for MySQL API를 사용하려면 User Access Key가 필요합니다. User Access Key는 NHN Cloud 계정 또는 IAM 계정을 기반으로 발급되는 인증 키로, Secret Access Key와 함께 사용하여 API 요청에 대한 인증 수단으로 활용됩니다. + +User Access Key와 Secret Access Key는 콘솔의 **API 보안 설정**에서 발급할 수 있습니다. User Access Key 발급 및 사용에 대한 자세한 내용은 [User Access Key](/nhncloud/ko/public-api/user-access-key)를 참고하세요. 생성된 Key는 Appkey와 함께 요청 Header에 포함해야 합니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------------|--------|--------|----|-------------------------------------------------------------| -| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | -| X-TC-AUTHENTICATION-ID | Header | String | O | API 보안 설정 메뉴의 User Access Key ID | -| X-TC-AUTHENTICATION-SECRET | Header | String | O | API 보안 설정 메뉴의 Secret Access Key | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | +| X-TC-AUTHENTICATION-ID | Header | String | O | API 보안 설정 메뉴의 User Access Key ID | +| X-TC-AUTHENTICATION-SECRET | Header | String | O | API 보안 설정 메뉴의 Secret Access Key | -또한 프로젝트 멤버 역할에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER`로 구분하여 권한을 부여할 수 있습니다. +또한 프로젝트 권한에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER` 역할에는 아래처럼 기본 권한이 부여돼 있고 프로젝트 내 역할 그룹 관리 메뉴에서 필요한 권한만 부여할 수 있습니다. -* `RDS for MySQL ADMIN` 권한은 모든 기능을 사용 가능합니다. -* `RDS for MySQL VIEWER` 권한은 정보를 조회하는 기능만 사용 가능합니다. +* `RDS for MySQL ADMIN` 역할은 API 실행에 필요한 모든 권한이 부여됩니다. +* `RDS for MySQL VIEWER` 역할은 정보를 조회하는 권한만 부여됩니다. * DB 인스턴스를 생성, 수정, 삭제하거나, DB 인스턴스를 대상으로 하는 어떠한 기능도 사용할 수 없습니다. - * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용 가능합니다. + * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용할 수 있습니다. API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같은 오류가 발생합니다. -| resultCode | resultMessage | 설명 | -|------------|---------------|-------------| -| 80401 | Unauthorized | 인증에 실패했습니다. | -| 80403 | Forbidden | 권한이 없습니다. | +| resultCode | resultMessage | 설명 | +|------------|---------------|-----| +| 80401 | Unauthorized | 인증에 실패했습니다. | +| 80403 | Forbidden | 권한이 없습니다. | -## 응답 공통 정보 +### 응답 공통 정보 모든 API 요청에 '200 OK'로 응답합니다. 자세한 응답 결과는 응답 본문의 헤더를 참고합니다. @@ -45,47 +52,50 @@ API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같 ``` #### 필드 -| 이름 | 형식 | 설명 | -|---------------|---------|-----------------------------------------| -| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | -| resultMessage | String | 결과 메시지 | -| isSuccessful | Boolean | 성공 여부 | - - -## DB 엔진 유형 - -| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 정보 | -|--------------|----------|-----------------|--------| -| MYSQL\_V5633 | X | X | NATIVE | -| MYSQL\_V5715 | O | O | NATIVE | -| MYSQL\_V5719 | O | O | NATIVE | -| MYSQL\_V5726 | O | O | NATIVE | -| MYSQL\_V5731 | X | X | NATIVE | -| MYSQL\_V5733 | O | X | NATIVE, SHA256 | -| MYSQL\_V5737 | O | O | NATIVE, SHA256 | -| MYSQL\_V8018 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8023 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8028 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8032 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8033 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8034 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8405 | O | O | CACHING_SHA2 | +| 이름 | 형식 | 설명 | +|-----|-----|-----| +| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | +| resultMessage | String | 결과 메시지 | +| isSuccessful | Boolean | 성공 여부 | +### DB 엔진 유형 + +| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 | +|------------|----------|------------------|------------| +| MYSQL_V5633 | X | X | NATIVE | +| MYSQL_V5715 | O | O | NATIVE | +| MYSQL_V5719 | O | O | NATIVE | +| MYSQL_V5726 | O | O | NATIVE | +| MYSQL_V5731 | X | X | NATIVE | +| MYSQL_V5733 | O | X | NATIVE, SHA256 | +| MYSQL_V5737 | O | O | NATIVE, SHA256 | +| MYSQL_V8018 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8023 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8028 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8032 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8033 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8034 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8044 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8045 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8405 | O | O | CACHING_SHA2 | +| MYSQL_V8406 | O | O | CACHING_SHA2 | +| MYSQL_V8407 | O | O | CACHING_SHA2 | +| MYSQL_V8408 | O | O | CACHING_SHA2 | * ENUM 타입의 dbVersion 필드에 대해 해당 값을 사용할 수 있습니다. * 버전에 따라 생성 또는 복원이 불가능한 경우가 있을 수 있습니다. ## 프로젝트 정보 -### 리전 목록 보기 +### 프로젝트 멤버 목록 보기 ```http -GET /v3.0/project/regions +GET /v3.0/project/members ``` #### 요청 @@ -94,11 +104,13 @@ GET /v3.0/project/regions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------|------|---------|----------------------------------------------------------------------------| -| regions | Body | Array | 리전 목록 | -| regions.regionCode | Body | Enum | 리전 코드
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| members.memberName | Body | String | 프로젝트 멤버의 이름 | +| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | +| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 |
예시

@@ -110,31 +122,26 @@ GET /v3.0/project/regions "resultMessage": "SUCCESS", "isSuccessful": true }, - "regions": [ - { - "regionCode": "KR1", - "isEnabled": true - }, - { - "regionCode": "KR2", - "isEnabled": true - }, + "members": [ { - "regionCode": "JP1", - "isEnabled": true + "memberId": "550e8400-e29b-41d4-a716-446655440000", + "memberName": "memberName-example", + "emailAddress": "emailAddress-example", + "phoneNumber": "phoneNumber-example" } ] } ``` +

--- -### 프로젝트 멤버 목록 보기 +### 리전 목록 보기 ```http -GET /v3.0/project/members +GET /v3.0/project/regions ``` #### 요청 @@ -143,13 +150,11 @@ GET /v3.0/project/members #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|--------|-----------------| -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| members.memberName | Body | String | 프로젝트 멤버의 이름 | -| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | -| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| regions | Body | Array | 리전 목록 | +| regions.regionCode | Body | Enum | 리전 코드
- KR4: `한국(대구)` | +| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 |
예시

@@ -161,12 +166,10 @@ GET /v3.0/project/members "resultMessage": "SUCCESS", "isSuccessful": true }, - "members": [ + "regions": [ { - "memberId": "1b1d3627-507a-49ea-8cb7-c86dfa9caa58", - "memberName": "홍길동", - "emailAddress": "gildong.hong@nhn.com", - "phoneNumber": "+821012345678" + "regionCode": "KR4", + "isEnabled": false } ] } @@ -191,13 +194,13 @@ GET /v3.0/db-flavors #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------| -| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | -| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | -| dbFlavors.ram | Body | Number | 메모리 용량(MB) | -| dbFlavors.vcpus | Body | Number | CPU 코어 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | +| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | +| dbFlavors.ram | Body | Number | 메모리 용량(MB) | +| dbFlavors.vcpus | Body | Number | CPU 코어 수 |

예시

@@ -211,9 +214,9 @@ GET /v3.0/db-flavors }, "dbFlavors": [ { - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbFlavorName": "m2.c1m2", - "ram": 2048, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbFlavorName": "dbFlavorName-example", + "ram": 1, "vcpus": 1 } ] @@ -239,14 +242,14 @@ GET /v3.0/network/subnets #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|---------|------------------| -| subnets | Body | Array | 서브넷 목록 | -| subnets.subnetId | Body | UUID | 서브넷의 식별자 | -| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | -| subnets.subnetCidr | Body | String | 서브넷의 CIDR | -| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | -| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| subnets | Body | Array | 서브넷 목록 | +| subnets.subnetId | Body | UUID | 서브넷의 식별자 | +| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnets.subnetCidr | Body | String | 서브넷의 CIDR | +| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | +| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 |

예시

@@ -260,11 +263,11 @@ GET /v3.0/network/subnets }, "subnets": [ { - "subnetId": "1b2a9b23-0725-4b92-8c78-35db66b8ad9f", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/24", - "usingGateway": true, - "availableIpCount": 240 + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example", + "usingGateway": false, + "availableIpCount": 1 } ] } @@ -289,11 +292,11 @@ GET /v3.0/db-versions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|---------|-----------------------| -| dbVersions | Body | Array | DB 엔진 목록 | -| dbVersions.dbVersion | Body | String | DB 엔진 유형 | -| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbVersions | Body | Array | DB 엔진 목록 | +| dbVersions.dbVersion | Body | String | DB 엔진 유형 | +| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | | dbVersions.restorableFromObs | Body | Boolean | 오브젝트 스토리지로부터 복원 가능 여부 |

예시 @@ -308,9 +311,9 @@ GET /v3.0/db-versions }, "dbVersions": [ { - "dbVersion": "MYSQL_V8028", - "dbVersionName": "MySQL 8.0.28", - "restorableFromObs": true + "dbVersion": "MYSQL_V8036", + "dbVersionName": "dbVersionName-example", + "restorableFromObs": false } ] } @@ -323,7 +326,7 @@ GET /v3.0/db-versions ## 데이터 스토리지 -### 데이터 스토리지 타입 목록 보기 +### 스토리지 타입 목록 보기 ```http GET /v3.0/storage-types @@ -335,9 +338,9 @@ GET /v3.0/storage-types #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|-------|----------------| -| storageTypes | Body | Array | 데이터 스토리지 타입 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageTypes | Body | Array | 스토리지 타입 목록 |
예시

@@ -349,10 +352,7 @@ GET /v3.0/storage-types "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageTypes": [ - "General SSD", - "General HDD" - ] + "storageTypes": [] } ``` @@ -361,7 +361,7 @@ GET /v3.0/storage-types --- -### 데이터 스토리지 목록 보기 +### 스토리지 목록 보기 ```http GET /v3.0/storages @@ -373,9 +373,9 @@ GET /v3.0/storages #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------|------|-------|-------------| -| storages | Body | Array | 데이터 스토리지 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storages | Body | Array | 스토리지 목록 |

예시

@@ -387,10 +387,7 @@ GET /v3.0/storages "resultMessage": "SUCCESS", "isSuccessful": true }, - "storages": [ - "General SSD", - "General HDD" - ] + "storages": [] } ``` @@ -428,21 +425,21 @@ GET /v3.0/jobs/{jobId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------|-----|------|----|---------| -| jobId | URL | UUID | O | 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| jobId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------|------|----------|-----------------------------------| -| jobId | Body | UUID | 작업의 식별자 | -| jobStatus | Body | Enum | 작업의 현재 상태 | -| resourceRelations | Body | Array | 연관 리소스 목록 | -| resourceRelations.resourceType | Body | Enum | 연관 리소스 유형 | -| resourceRelations.resourceId | Body | UUID | 연관 리소스의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | +| jobStatus | Body | Enum | 작업의 현재 상태
- DELETED
- CANNOT_PROGRESS
- FAILED
- ERROR
- CANCELED
- INTERRUPTED
- COMPLETED
- RUNNING
- PREPARING
- READY
- CREATED
- FAIL_TO_READY
- REGISTERED
- FAIL_TO_REGISTER
- WAIT_TO_REGISTER | +| resourceRelations | Body | Array | 연관 리소스 목록 | +| resourceRelations.resourceType | Body | String | 연관 리소스 유형 | +| resourceRelations.resourceId | Body | String | 연관 리소스의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -454,16 +451,16 @@ GET /v3.0/jobs/{jobId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "jobId": "0ddb042c-5af6-43fb-a914-f4dd0540eb7c", - "jobStatus": "RUNNING", + "jobId": "550e8400-e29b-41d4-a716-446655440000", + "jobStatus": "DELETED", "resourceRelations": [ { - "resourceType": "DB_INSTANCE", - "resourceId": "56b39dcf-65eb-47ec-9d4f-09f160ba2266" + "resourceType": "resourceType-example", + "resourceId": "resourceId-example" } ], - "createdYmdt": "2023-02-22T20:47:12+09:00", - "updatedYmdt": "2023-02-22T20:49:46+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -486,13 +483,13 @@ GET /v3.0/db-instance-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------|------|----------|--------------------------------------------------------------------------| -| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | -| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | +| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -506,10 +503,10 @@ GET /v3.0/db-instance-groups }, "dbInstanceGroups": [ { - "dbInstanceGroupId": "05de0746-89fd-49c8-94f9-9c5b1df97009", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", - "createdYmdt": "2023-02-13T17:35:20+09:00", - "updatedYmdt": "2023-02-13T17:35:20+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -530,22 +527,22 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|-----------------| -| dbInstanceGroupId | URL | UUID | O | DB 인스턴스 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -557,17 +554,17 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbInstanceGroupId": "36617a8e-0df8-4b16-b6ea-6306019e95da", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", "dbInstances": [ { - "dbInstanceId": "6d2db0ef-fe9b-4ed4-97b1-d97fcb4cf1b8", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE" + "dbInstanceStatus": "BEFORE_CREATE" } ], - "createdYmdt": "2023-03-03T17:38:14+09:00", - "updatedYmdt": "2023-03-03T17:38:14+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -600,8 +597,8 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} | `BACKING_UP` | 백업 중 | | `CANCELING` | 취소 중 | | `CREATING` | 생성 중 | -| `CREATING_SCHEMA` | DB 스키마 생성 중 | -| `CREATING_USER` | 사용자 생성 중 | +| `CREATING_SCHEMA` | DB 스키마 생성 중 | +| `CREATING_USER` | 사용자 생성 중 | | `DELETING` | 삭제 중 | | `DELETING_SCHEMA` | DB 스키마 삭제 중 | | `DELETING_USER` | 사용자 삭제 중 | @@ -620,8 +617,8 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} | `STARTING` | 시작 중 | | `STOPPING` | 정지 중 | | `SYNCING_SCHEMA` | DB 스키마 동기화 중 | -| `SYNCING_USER` | 사용자 동기화 중 | -| `UPDATING_USER` | 사용자 수정 중 | +| `SYNCING_USER` | 사용자 동기화 중 | +| `UPDATING_USER` | 사용자 수정 중 | ### DB 인스턴스 목록 보기 @@ -635,20 +632,20 @@ GET /v3.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstances | Body | Array | DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | -| dbInstances.dbPort | Body | Number | DB 포트 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태 | -| dbInstances.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstances.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstances | Body | Array | DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | +| dbInstances.dbPort | Body | Number | DB 포트 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbInstances.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstances.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -662,17 +659,17 @@ GET /v3.0/db-instances }, "dbInstances": [ { - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", + "dbInstanceStatus": "BEFORE_CREATE", "progressStatus": "NONE", - "createdYmdt": "2023-01-23T12:03:13+09:00", - "updatedYmdt": "2023-02-02T17:20:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -683,83 +680,6 @@ GET /v3.0/db-instances --- -### DB 인스턴스 상세 보기 - -```http -GET /v3.0/db-instances/{dbInstanceId} -``` - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| dbPort | Body | Number | DB 포트 | -| dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| progressStatus | Body | Enum | DB 인스턴스의 현재 작업 진행 상태 | -| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | -| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | -| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | -| supportAuthenticationPlugin | Body | Boolean | 인증 플러그인 지원 여부 | -| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | -| needMigration | Body | Boolean | 마이그레이션 필요 여부 | -| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", - "progressStatus": "NONE", - "dbFlavorId": "e9ed4ef6-78d7-46fa-ace9-32481e97f3b7", - "parameterGroupId": "b03e8b13-de27-4d04-a488-ff5689589372", - "dbSecurityGroupIds": ["01908c35-d2c9-4852-baf0-17f06ec42c03"], - "notificationGroupIds": ["83a62a33-ddbf-4a04-8653-e54463d5b1ac"], - "useDeletionProtection": false, - "supportAuthenticationPlugin": true, - "needToApplyParameterGroup": false, - "needMigration": false, - "supportDbVersionUpgrade": true, - "createdYmdt": "2022-11-23T12:03:13+09:00", - "updatedYmdt": "2022-12-02T17:20:17+09:00" -} -``` - -

-
- ---- - ### DB 인스턴스 생성하기 ```http @@ -768,61 +688,67 @@ POST /v3.0/db-instances #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|------|---------|----|---------------------------------------------------------------------| -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbUserName | Body | String | O | DB 사용자 계정명 | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `16` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 ||network|Body|Object|O|네트워크 정보 객체| -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄) | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| authenticationPlugin | Body | Enum | X | 인증 Plugin
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | TLS Option
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE", "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, "availabilityZone": "kr-pub-a" }, "storage": { @@ -830,11 +756,15 @@ POST /v3.0/db-instances "storageSize": 20 }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 1800, + "replicationRegion": "KR4", + "useBackupLock": true, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR" + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" } ] } @@ -846,45 +776,124 @@ POST /v3.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### DB 인스턴스 수정하기 +### 오브젝트 스토리지를 이용한 DB 인스턴스 복원 ```http -PUT /v3.0/db-instances/{dbInstanceId} +POST /v3.0/db-instances/restore-from-obs ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|------|---------|----|--------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbPort | Body | Number | X | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbVersion | Body | Enum | X | DB 엔진 유형 | -| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
기본값: `false` | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | X | DB 포트 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| imageId | Body | UUID | X | 이미지의 식별자 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | +| restore.username | Body | String | O | NHN Cloud 계정 혹은 IAM 멤버 ID | +| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | +| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | +| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` |
예시

```json { - "dbInstanceName": "db-instance2", - "description": "description2", - "dbPort": 10001, + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "dbVersion": "MYSQL_V8036", + "useHighAvailability": false, + "imageId": "550e8400-e29b-41d4-a716-446655440000", + "pingInterval": 3, + "storage": { + "storageType": "General SSD", + "storageSize": 20 + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "backup": { + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR4", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + }, + "restore": { + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" + }, + "useDefaultNotification": false, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", "dbSecurityGroupIds": [], - "executeBackup": true + "userGroupIds": [], + "useDeletionProtection": false } ``` @@ -893,9 +902,7 @@ PUT /v3.0/db-instances/{dbInstanceId} #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- @@ -909,54 +916,15 @@ DELETE /v3.0/db-instances/{dbInstanceId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 인스턴스 재시작하기 - -```http -POST /v3.0/db-instances/{dbInstanceId}/restart -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- -### DB 인스턴스 강제 재시작하기 -```http -POST /v3.0/db-instances/{dbInstanceId}/force-restart -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |

예시

@@ -967,108 +935,136 @@ POST /v3.0/db-instances/{dbInstanceId}/force-restart "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- ---- - -### DB 인스턴스 시작하기 - -```http -POST /v3.0/db-instances/{dbInstanceId}/start -``` - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### DB 인스턴스 정지하기 +### DB 인스턴스 상세 보기 ```http -POST /v3.0/db-instances/{dbInstanceId}/stop +GET /v3.0/db-instances/{dbInstanceId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| dbPort | Body | Number | DB 포트 | +| dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | +| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | +| supportAuthenticationPlugin | Body | Boolean | 인증 plugin 지원 여부 | +| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | +| needMigration | Body | Boolean | 마이그레이션 필요 여부 | +| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 | ---- - -### DB 인스턴스 백업하기 +
예시 +

-```http -POST /v3.0/db-instances/{dbInstanceId}/backup +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbInstanceType": "MASTER", + "dbInstanceStatus": "BEFORE_CREATE", + "progressStatus": "NONE", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "notificationGroupIds": [], + "useDeletionProtection": false, + "supportAuthenticationPlugin": false, + "needToApplyParameterGroup": false, + "needMigration": false, + "supportDbVersionUpgrade": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" +} ``` -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|--------|----|-----------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| backupName | Body | String | O | 백업을 식별할 수 있는 이름 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### DB 인스턴스 백업 후 내보내기 +### DB 인스턴스 수정하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/backup-to-object-storage +PUT /v3.0/db-instances/{dbInstanceId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|-----------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbPort | Body | Number | X | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbVersion | Body | Enum | X | DB 엔진 버전 코드 | +| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
- 기본값: `false` | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` |
예시

```json { - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "backups/backup_file" + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbPort": 1, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "useDummy": false, + "dbSecurityGroupIds": [], + "executeBackup": false, + "useOnlineFailover": false, + "waitReplicationDelay": false, + "useReadOnly": false } ``` @@ -1077,172 +1073,71 @@ POST /v3.0/db-instances/{dbInstanceId}/backup-to-object-storage #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 인스턴스 복제하기 - -```http -POST /v3.0/db-instances/{dbInstanceId}/replicate -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbPort | Body | Number | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록
- 기본값: 원본 DB 인스턴스 값 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: 원본 DB 인스턴스 값 | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입

  • 예시: `General SSD`
| -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄)
- 기본값: 원본 DB 인스턴스 값 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각
- 예시: `00:00:00`
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간
- 기본값: 원본 DB 인스턴스 값 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

```json { - "dbInstanceName": "db-instance-replicate", - "description": "description", - "dbPort": 11000, - "network": { - "availabilityZone": "kr-pub-a" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true }, - "storage": { - "stroageSize": 100 - } + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### DB 인스턴스 승격하기 +### DB 인스턴스 백업하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/promote +POST /v3.0/db-instances/{dbInstanceId}/backup ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| backupName | Body | String | O | 백업을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | -### 복원 정보 조회 +
예시 +

-```http -GET /v3.0/db-instances/{dbInstanceId}/restoration-info +```json +{ + "backupName": "backupName" +} ``` -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------------|------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| oldestRestorableYmdt | Body | DateTime | 가장 오래된 복원 가능한 시각 | -| latestRestorableYmdt | Body | DateTime | 가장 최신의 복원 가능한 시각 | -| restorableBackups | Body | Array | 복원 가능한 백업 목록 | -| restorableBackups.backup | Body | Object | 백업 정보 객체 | -| restorableBackups.backup.backupId | Body | UUID | 백업의 식별자 | -| restorableBackups.backup.backupName | Body | String | 백업 이름 | -| restorableBackups.backup.useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| restorableBackups.backup.backupSize | Body | Number | 백업 크기 | -| restorableBackups.backup.backupType | Body | Enum | 백업 유형
  • `AUTO`: 자동
  • `MANUAL`: 수동
| -| restorableBackups.backup.backupStatus | Body | Enum | 백업 상태
  • `BACKING_UP`: 백업 중인 경우
  • `COMPLETED`: 백업이 완료된 경우
  • `DELETING`: 백업이 삭제 중인 경우
  • `DELETED`: 백업이 삭제된 경우
  • `ERROR`: 오류가 발생한 경우
| -| restorableBackups.backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| restorableBackups.backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | -| restorableBackups.backup.dbVersion | Body | String | DB 엔진 유형 | -| restorableBackups.backup.failoverCount | Body | Number | 장애 조치 횟수 | -| restorableBackups.backup.binLogFileName | Body | String | 바이너리 로그 파일 이름 | -| restorableBackups.backup.binLogPosition | Body | Number | 바이너리 로그 파일 위치 | -| restorableBackups.backup.createdYmdt | Body | DateTime | 백업 생성 일시 | -| restorableBackups.backup.updatedYmdt | Body | DateTime | 백업 갱신 일시 | -| restorableBackups.restorableBinLogs | Body | Array | 해당 백업을 이용하여 복원 가능한 바이너리 로그 이름 목록 | - - +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "oldestRestorableYmdt": "2023-07-09T16:33:33+09:00", - "latestRestorableYmdt": "2023-07-10T15:44:44+09:00", - "restorableBackups": [ - { - "backup": { - "backupId": "145d889a-fe08-474f-8f58-bde576ff96a9", - "backupName": "example-backup-name", - "backupStatus": "COMPLETED", - "dbInstanceId": "dba1be25-9429-4589-9716-7fb6daad7cb9", - "dbInstanceName": "original-db-instance-name", - "dbVersion": "MYSQL_V8028", - "backupType": "MANUAL", - "backupSize": 8299904, - "useBackupLock": true, - "failoverCount": 0, - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 367916037, - "createdYmdt": "2023-07-10T15:44:44+09:00", - "updatedYmdt": "2023-07-10T15:46:07+09:00" - }, - "restorableBinLogs": [ - "mysql-bin.000001" - ] - } - ] + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1251,39 +1146,32 @@ GET /v3.0/db-instances/{dbInstanceId}/restoration-info --- -### 복원될 마지막 쿼리 조회 +### 백업 정보 보기 ```http -GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query +GET /v3.0/db-instances/{dbInstanceId}/backup-info ``` -#### 공통 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|------|----|-----------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restoreType | Query | Enum | O | 복원 타입 종류

  • `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
  • `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입
| - -#### restoreType이 `TIMESTAMP`인 경우 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-------|----------|----|-------------------------------------------| -| restoreYmdt | Query | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +#### 요청 -#### restoreType이 `BINLOG`인 경우 +이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------|-------|--------|----|--------------------| -| backupId | Query | UUID | O | 복원에 사용할 백업의 식별자 | -| binLogFileName | Query | String | O | 복원에 사용할 바이너리 로그 이름 | -| binLogPosition | Query | Number | O | 복원에 사용할 바이너리 로그 위치 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|----------|--------------------------------------| -| executedYmdt | Body | DateTime | 쿼리 수행 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| lastQuery | Body | String | 마지막 수행 쿼리 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| backupPeriod | Body | Number | 백업 보관 기간(일) | +| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | +| backupRetryCount | Body | Number | 백업 재시도 횟수 | +| replicationRegion | Body | Enum | 백업 복제 리전
- KR4: `한국(대구)` | +| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration
- HALF_AN_HOUR
- ONE_HOUR
- ONE_HOUR_AND_HALF
- TWO_HOURS
- TWO_HOURS_AND_HALF
- THREE_HOURS |
예시

@@ -1295,8 +1183,17 @@ GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query "resultMessage": "SUCCESS", "isSuccessful": true }, - "executedYmdt": "2023-03-17T14:02:29+09:00", - "lastQuery": "INSERT INTO `test`.`test`SET @1='0123'" + "backupPeriod": 1, + "ftwrlWaitTimeout": 1, + "backupRetryCount": 1, + "replicationRegion": "KR4", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] } ``` @@ -1305,303 +1202,100 @@ GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query --- -### 복원 +### 백업 정보 수정하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/restore +PUT /v3.0/db-instances/{dbInstanceId}/backup-info ``` -#### 공통 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restore | Body | Object | O | 복원 정보 객체 | -| restore.restoreType | Body | Enum | O | 복원 타입 종류

  • `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
  • `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입
  • `BACKUP`: 기존에 생성한 백업을 이용한 스냅숏 복원 타입
| -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
  • 최솟값: `3306`
  • 최댓값: `43306`
| -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
  • 기본값: `false`
| -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
  • 기본값: `3`
  • 최솟값: `1`
  • 최댓값: `600`
| -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
  • 기본값: `false`
| -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
  • 기본값: `false`
| -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
  • 예시: `kr-pub-a`
| -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
  • 예시: `General SSD`
| -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
  • 최솟값: `20`
  • 최댓값: `2048`
| -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
  • 최솟값: `0`
  • 최댓값: `730`
| -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
  • 기본값: `1800`
  • 최솟값: `0`
  • 최댓값: `21600`
| -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
  • 기본값: `0`
  • 최솟값: `0`
  • 최댓값: `10`
| -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
  • `KR1`: 한국(판교)
  • `KR2`: 한국(평촌)
  • `JP1`: 일본(도쿄)
| -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
  • 기본값: `true`
| -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
  • 예시: `00:00:00`
| -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
  • `HALF_AN_HOUR`: 30분
  • `ONE_HOUR`: 1시간
  • `ONE_HOUR_AND_HALF`: 1시간 30분
  • `TWO_HOURS`: 2시간
  • `TWO_HOURS_AND_HALF`: 2시간 30분
  • `THREE_HOURS`: 3시간
| -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
기본값: `false` | - -#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|----------|----|------------------------------------------------------------------------------------------------| -| restore.restoreYmdt | Body | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD)
복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능하다. | - - -
예시 -

- -```json -{ - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "TIMESTAMP", - "restoreYmdt": "2023-07-10T15:44:44+09:00" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } -} -``` - -

-
- -#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------------|------|--------|----|--------------------| -| restore.backupId | Body | UUID | O | 복원에 사용할 백업의 식별자 | -| restore.binLog | Body | Object | O | 바이너리 로그 정보 객체 | -| restore.binLog.binLogFileName | Body | String | O | 복원에 사용할 바이너리 로그 이름 | -| restore.binLog.binLogPosition | Body | Number | O | 복원에 사용할 바이너리 로그 위치 | - -* 바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. +#### 요청 +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BINLOG", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36", - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 1234567 - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "backupPeriod": 0, + "ftwrlWaitTimeout": 0, + "backupRetryCount": 0, + "replicationRegion": "KR4", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] } ```

-#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|------|------------------------------|-----------------| -| restore.backupId | Body | UUID | O(restoreType이 `BACKUP`인 경우) | 복원에 사용할 백업의 식별자 | - +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BACKUP", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - - --- -### 오브젝트 스토리지로부터 복원 +### DB 인스턴스 오브젝트 스토리지로 백업 ```http -POST /v3.0/db-instances/restore-from-obs +POST /v3.0/db-instances/{dbInstanceId}/backup-to-object-storage ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|----------------------------------------------------------------------------------------| -| restore | Body | Object | O | 복원 정보 객체 | -| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | -| restore.username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | -| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | -| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
  • 최솟값: `3306`
  • 최댓값: `43306`
| -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
  • 기본값: `false`
| -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
  • 기본값: `3`
  • 최솟값: `1`
  • 최댓값: `600`
| -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
  • 기본값: `false`
| -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
  • 기본값: `false`
| -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
  • 예시: `kr-pub-a`
| -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
  • 예시: `General SSD`
| -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
  • 최솟값: `20`
  • 최댓값: `2048`
| -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
  • 최솟값: `0`
  • 최댓값: `730`
| -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
  • 기본값: `1800`
  • 최솟값: `0`
  • 최댓값: `21600`
| -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
  • 기본값: `0`
  • 최솟값: `0`
  • 최댓값: `10`
| -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
  • `KR1`: 한국(판교)
  • `KR2`: 한국(평촌)
  • `JP1`: 일본(도쿄)
| -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
  • 기본값: `true`
| -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
  • 예시: `00:00:00`
| -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
  • `HALF_AN_HOUR`: 30분
  • `ONE_HOUR`: 1시간
  • `ONE_HOUR_AND_HALF`: 1시간 30분
  • `TWO_HOURS`: 2시간
  • `TWO_HOURS_AND_HALF`: 2시간 30분
  • `THREE_HOURS`: 3시간
| - - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 계정 혹은 IAM 회원 ID | +| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbVersion": "MYSQL_V8028", - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "tenantId":"tenant-id", - "username":"username", - "password":"password", - "targetContainer":"targetContainer", - "objectPath":"objectPath" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" } ``` @@ -1610,30 +1304,9 @@ POST /v3.0/db-instances/restore-from-obs #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - - ---- - - -### DB 인스턴스 삭제 보호 설정 변경하기 - -```http -PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |

예시

@@ -1644,7 +1317,8 @@ PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1653,137 +1327,146 @@ PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection --- -### 고가용성 수정하기 +### 테스트 용 DB 이미지 메타 변경 ```http -PUT /v3.0/db-instances/{dbInstanceId}/high-availability +PUT /v3.0/db-instances/{dbInstanceId}/change-image-meta ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|---------|----|------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 고가용성 다시 시작하기 +### DB 스키마 목록 보기 ```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/resume +GET /v3.0/db-instances/{dbInstanceId}/db-schemas ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSchemas | Body | Array | DB 스키마 목록 | +| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | +| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | +| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- STABLE
- CREATING
- SYNCING
- DELETING
- DELETED | +| dbSchemas.createdYmdt | Body | DateTime | 생성 일시 | -### 고가용성 일시 중지하기 +

예시 +

-```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/pause +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSchemas": [ + { + "dbSchemaId": "550e8400-e29b-41d4-a716-446655440000", + "dbSchemaName": "dbSchemaName-example", + "dbSchemaStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 고가용성 복구하기 +### DB 스키마 생성하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/repair +POST /v3.0/db-instances/{dbInstanceId}/db-schemas ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbSchemaName | Body | String | O | DB 스키마 이름
- 최대 길이: `64`
- 영문 시작, 영문/숫자/_ 허용, 1~64자, MySQL 예약어 불가 | ---- - -### 고가용성 분리하기 +
예시 +

-```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/split +```json +{ + "dbSchemaName": "dbSchemaName-example" +} ``` -#### 요청 +

+
-이 API는 요청 본문을 요구하지 않습니다. +#### 응답 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -#### 응답 +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 데이터 스토리지 정보 보기 +### DB 스키마 삭제하기 ```http -GET /v3.0/db-instances/{dbInstanceId}/storage-info +DELETE /v3.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbSchemaId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------|------|--------|--------------------------------------------------------------------------------------| -| storageType | Body | Enum | 데이터 스토리지 타입 | -| storageSize | Body | Number | 데이터 스토리지 크기(GB) | -| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- `DETACHED`: 부착되지 않음
- `ATTACHED`: 부착됨
- `DELETED`: 삭제됨 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -1795,66 +1478,43 @@ GET /v3.0/db-instances/{dbInstanceId}/storage-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageType": "General SSD", - "storageSize": 20, - "storageStatus": "ATTACHED" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- ---- - -### 데이터 스토리지 정보 수정하기 - -```http -PUT /v3.0/db-instances/{dbInstanceId}/storage-info -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: 현재값
- 최댓값: `2048` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### 백업 정보 보기 +### DB 사용자 목록 보기 ```http -GET /v3.0/db-instances/{dbInstanceId}/backup-info +GET /v3.0/db-instances/{dbInstanceId}/db-users ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|---------|----------------| -| backupPeriod | Body | Number | 백업 보관 기간(일) | -| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | -| backupRetryCount | Body | Number | 백업 재시도 횟수 | -| replicationRegion | Body | Enum | 백업 복제 리전 | -| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | -| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbUsers | Body | Array | DB 사용자 목록 | +| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | +| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | +| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | +| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- STABLE
- CREATING
- UPDATING
- SYNCING
- DELETING
- DELETED | +| dbUsers.createdYmdt | Body | DateTime | 생성 일시 | +| dbUsers.updatedYmdt | Body | DateTime | 수정 일시 | +| dbUsers.authenticationPlugin | Body | Enum | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| dbUsers.tlsOption | Body | Enum | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |
예시

@@ -1866,15 +1526,17 @@ GET /v3.0/db-instances/{dbInstanceId}/backup-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "backupPeriod": 1, - "ftwrlWaitTimeout": 1800, - "backupRetryCount": 0, - "replicationRegion": null, - "useBackupLock": false, - "backupSchedules": [ + "dbUsers": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" + "dbUserId": "550e8400-e29b-41d4-a716-446655440000", + "dbUserName": "dbUserName-example", + "host": "host-example", + "authorityType": "CUSTOM", + "dbUserStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" } ] } @@ -1883,42 +1545,37 @@ GET /v3.0/db-instances/{dbInstanceId}/backup-info

- --- -### 백업 정보 수정하기 +### DB 사용자 생성하기 ```http -PUT /v3.0/db-instances/{dbInstanceId}/backup-info +POST /v3.0/db-instances/{dbInstanceId}/db-users ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------------------------|------|---------|----|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | -| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | -| replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄) | -| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| host | Body | String | O | DB 사용자 계정의 호스트명
- 최대 길이: `45` | +| authorityType | Body | Enum | O | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |
예시

```json { - "backupPeriod": 5, - "useBackupLock": true, - "backupSchedules": [ - { - "backupWndBgnTime": "01:00:00", - "backupWndDuration": "TWO_HOURS" - } - ] + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "host": "host-example", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" } ``` @@ -1927,39 +1584,49 @@ PUT /v3.0/db-instances/{dbInstanceId}/backup-info #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### 네트워크 정보 보기 +### DB 사용자 삭제하기 ```http -GET /v3.0/db-instances/{dbInstanceId}/network-info +DELETE /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbUserId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------------------------------------------------------------------------------------------------------------------------------| -| availabilityZone | Body | Enum | DB 인스턴스를 생성할 가용성 영역 | -| subnet | Body | Object | 서브넷 객체 | -| subnet.subnetId | Body | UUID | 서브넷의 식별자 | -| subnet.subnetName | Body | UUID | 서브넷을 식별할 수 있는 이름 | -| subnet.subnetCidr | Body | UUID | 서브넷의 CIDR | -| endPoints | Body | Array | 접속 정보 목록 | -| endPoints.domain | Body | String | 도메인 | -| endPoints.ipAddress | Body | String | IP 주소 | -| endPoints.endPointType | Body | Enum | 접속 정보 타입
-`EXTERNAL`: 외부 접속 도메인
-`INTERNAL`: 내부 접속 도메인
-`PUBLIC`: (Deprecated) 외부 접속 도메인
-`PRIVATE`: (Deprecated) 내부 접속 도메인 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -1971,19 +1638,7 @@ GET /v3.0/db-instances/{dbInstanceId}/network-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "availabilityZone": "kr-pub-a", - "subnet": { - "subnetId": "bd453789-34ae-416c-9f78-05b9e43a46be", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/16" - }, - "endPoints": [ - { - "domain": "ea548a78-d85f-43b4-8ddf-c88d999b9905.internal.kr1.mysql.rds.nhncloudservice.com", - "ipAddress": "192.168.0.2", - "endPointType": "INTERNAL" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1992,55 +1647,43 @@ GET /v3.0/db-instances/{dbInstanceId}/network-info --- -### 네트워크 정보 수정하기 +### DB 사용자 수정하기 ```http -PUT /v3.0/db-instances/{dbInstanceId}/network-info +PUT /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbUserId | URL | UUID | O | | +| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| authorityType | Body | Enum | X | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | ---- - -### DB 사용자 목록 보기 +

예시 +

-```http -GET /v3.0/db-instances/{dbInstanceId}/db-users +```json +{ + "dbPassword": "dbPassword", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|-----------------------------------------------------------------------------------------------------------------------------| -| dbUsers | Body | Array | DB 사용자 목록 | -| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | -| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | -| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | -| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `UPDATING`: 수정 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbUsers.authenticationPlugin | Body | Enum | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| dbUsers.tlsOption | Body | Enum | TLS Option
- NONE
- SSL
- X509 | -| dbUsers.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbUsers.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -2052,19 +1695,7 @@ GET /v3.0/db-instances/{dbInstanceId}/db-users "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbUsers": [ - { - "dbUserId": "4b3d530b-fd02-4d59-a620-83d019a67bbb", - "dbUserName": "db-user", - "host": "%", - "authorityType": "DDL", - "dbUserStatus": "STABLE", - "authenticationPlugin": "NATIVE", - "tlsOption": "NONE", - "createdYmdt": "2023-03-17T14:02:29+09:00", - "updatedYmdt": "2023-03-17T14:02:31+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2073,38 +1704,25 @@ GET /v3.0/db-instances/{dbInstanceId}/db-users --- -### DB 사용자 생성하기 +### DB 인스턴스 삭제 보호 설정 변경 ```http -POST /v3.0/db-instances/{dbInstanceId}/db-users +PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|-------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserName | Body | String | O | DB 사용자 계정 이름
- 최소 길이: `1`
- 최대 길이: `32` | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `16` | -| host | Body | String | O | DB 사용자 계정의 호스트명
- 예시: `1.1.1.%` | -| authorityType | Body | Enum | O | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | - -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 설정할 수 있습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 |

예시

```json { - "dbUserName": "db-user", - "dbPassword": "password", - "host": "1.1.1.%", - "authorityType": "CRUD", - "authenticationPlugin": "NATIVE", - "tlsOption": "NONE" + "useDeletionProtection": false } ``` @@ -2113,99 +1731,881 @@ POST /v3.0/db-instances/{dbInstanceId}/db-users #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### DB 사용자 수정하기 +### DB 인스턴스 강제 재시작하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/force-restart +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 고가용성 수정하기 + +```http +PUT /v3.0/db-instances/{dbInstanceId}/high-availability +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | + +

예시 +

+ +```json +{ + "useHighAvailability": false, + "pingInterval": 1 +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 일시 중지하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/pause +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 복구하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/repair +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 다시 시작하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/resume +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 분리하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/split +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 로그 파일 목록 보기 + +```http +GET /v3.0/db-instances/{dbInstanceId}/log-files +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| logFiles | Body | Array | 로그 파일 목록 | +| logFiles.logFileName | Body | String | 로그 파일 이름 | +| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- ERROR
- BINLOG
- GENERAL
- SLOW_QUERY
- AUDIT
- BACKUP | +| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | +| logFiles.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "logFiles": [ + { + "logFileName": "logFileName-example", + "logFileType": "ERROR", + "logFileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### 로그 파일 내보내기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/log-files/export +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| logFileNames | Body | Array | O | 로그 파일 이름 목록 | +| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 회원 또는 IAM 멤버 ID | +| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | + +
예시 +

+ +```json +{ + "logFileNames": [], + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 네트워크 정보 보기 + +```http +GET /v3.0/db-instances/{dbInstanceId}/network-info +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| availabilityZone | Body | String | DB 인스턴스를 생성할 가용성 영역 | +| subnet | Body | Object | 서브넷 객체 | +| subnet.subnetId | Body | UUID | 서브넷의 식별자 | +| subnet.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnet.subnetCidr | Body | String | 서브넷의 CIDR | +| endPoints | Body | Array | 접속 정보 목록 | +| endPoints.domain | Body | String | 도메인 | +| endPoints.ipAddress | Body | String | IP 주소 | +| endPoints.endPointType | Body | String | 접속 정보 타입 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "availabilityZone": "kr-pub-a", + "subnet": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example" + }, + "endPoints": [ + { + "domain": "domain-example", + "ipAddress": "ipAddress-example", + "endPointType": "endPointType-example" + } + ] +} +``` + +

+
+ +--- + +### 네트워크 정보 수정하기 ```http -PUT /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +PUT /v3.0/db-instances/{dbInstanceId}/network-info ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|-------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | -| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `16` | -| authorityType | Body | Enum | X | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 수정할 수 있습니다. -> `authenticationPlugin`의 값은 `dbPassword`와 동시에 수정을 해야 합니다. +
예시 +

+ +```json +{ + "usePublicAccess": false +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

```json { - "authorityType": "DDL" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

+--- + +### DB 인스턴스 승격하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/promote +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### DB 사용자 삭제하기 +### DB 인스턴스 복제하기 ```http -DELETE /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +POST /v3.0/db-instances/{dbInstanceId}/replicate +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부 | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | X | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | X | 데이터 스토리지 타입 | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| backup | Body | Object | X | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +
예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDefaultNotification": false, + "useDeletionProtection": false, + "network": { + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "storage": { + "storageType": "General SSD", + "storageSize": 20 + }, + "backup": { + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 0, + "replicationRegion": "KR4", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + } +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 인스턴스 재시작하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/restart +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` | + +
예시 +

+ +```json +{ + "useOnlineFailover": false, + "executeBackup": false, + "waitReplicationDelay": false, + "useReadOnly": false +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 인스턴스 복원 정보 조회 + +```http +GET /v3.0/db-instances/{dbInstanceId}/restoration-info +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 복원될 마지막 쿼리 조회 + +```http +GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| executedYmdt | Body | DateTime | 쿼리 수행 일시 | +| lastQuery | Body | String | 마지막 수행 쿼리 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "executedYmdt": "2023-12-31T15:00:00+09:00", + "lastQuery": "lastQuery-example" +} +``` + +

+
+ +--- + +### DB 인스턴스 복원 + +```http +POST /v3.0/db-instances/{dbInstanceId}/restore +``` + +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | X | DB 포트 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| imageId | Body | UUID | X | 이미지의 식별자 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.restoreType | Body | Enum | O | 복원 타입
- TIMESTAMP: `복원 가능한 시간 이내의 시간을 이용한 시점 복원`
- BINLOG: `복원 가능한 바이너리 로그 위치를 이용한 시점 복원`
- BACKUP: `기존에 생성한 백업을 이용한 스냅숏 복원` | +| restore.binLog.binLogFileName | Body | String | X | 복원에 사용할 바이너리 로그 이름 | +| restore.binLog.binLogPosition | Body | Object | X | 복원에 사용할 바이너리 로그 위치 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | + +#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.restoreYmdt | Body | DateTime | X | DB 인스턴스 복원 일시 | + +복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능합니다. + +#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 | +| restore.binLog | Body | Object | X | 복원에 사용할 바이너리 로그 정보 객체 | + +바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. + +#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 | + +
예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "useHighAvailability": false, + "imageId": "550e8400-e29b-41d4-a716-446655440000", + "pingInterval": 3, + "storage": { + "storageType": "General SSD", + "storageSize": 20 + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "backup": { + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR4", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + }, + "restore": { + "restoreType": "TIMESTAMP", + "binLog": { + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + } + } + }, + "useDefaultNotification": false, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDeletionProtection": false +} ``` -#### 요청 +

+
+ +#### 응답 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### DB 스키마 목록 보기 +### DB 인스턴스 시작하기 ```http -GET /v3.0/db-instances/{dbInstanceId}/db-schemas +POST /v3.0/db-instances/{dbInstanceId}/start ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|------------------------------------------------------------------------------------------------------| -| dbSchemas | Body | Array | DB 스키마 목록 | -| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | -| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | -| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbSchemas.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -2217,14 +2617,7 @@ GET /v3.0/db-instances/{dbInstanceId}/db-schemas "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSchemas": [ - { - "dbSchemaId": "7c9a94b8-86c1-435d-8af2-82a5e9d53fd4", - "dbSchemaName": "schema", - "dbSchemaStatus": "STABLE", - "createdYmdt": "2023-03-20T13:37:45+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2233,75 +2626,66 @@ GET /v3.0/db-instances/{dbInstanceId}/db-schemas --- -### DB 스키마 생성하기 +### DB 인스턴스 정지하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/db-schemas +POST /v3.0/db-instances/{dbInstanceId}/stop ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|--------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaName | Body | String | O | DB 스키마 이름 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -### DB 스키마 삭제하기 +

예시 +

-```http -DELETE /v3.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaId | URL | UUID | O | DB 스키마의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 로그 파일 목록 보기 +### 스토리지 정보 보기 ```http -GET /v3.0/db-instances/{dbInstanceId}/log-files +GET /v3.0/db-instances/{dbInstanceId}/storage-info ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|-------|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileTypes | Query | Array | X | 로그 파일 타입 종류 목록
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| logFiles | Body | Array | 로그 파일 목록 | -| logFiles.logFileName | Body | String | 로그 파일 이름 | -| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | -| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | -| logFiles.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageType | Body | Enum | 데이터 스토리지 타입 | +| storageSize | Body | Number | 데이터 스토리지 크기(GB) | +| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- DELETED: `삭제됨`
- PENDING_DELETION: `삭제 유예됨`
- DELETION_RESERVED: `삭제 예약됨 (스냅샷 정리 대기)`
- DETACHED: `해제됨`
- ATTACHED: `할당됨` |
예시

@@ -2313,14 +2697,9 @@ GET /v3.0/db-instances/{dbInstanceId}/log-files "resultMessage": "SUCCESS", "isSuccessful": true }, - "logFiles": [ - { - "logFileName": "xtra_full.log-20230317", - "logFileType": "BACKUP", - "logFileSize": 4096, - "createdYmdt": "2023-03-17T14:02:29+09:00" - } - ] + "storageType": "General SSD", + "storageSize": 1, + "storageStatus": "DELETED" } ``` @@ -2329,35 +2708,25 @@ GET /v3.0/db-instances/{dbInstanceId}/log-files --- -### 로그 파일 내보내기 +### 스토리지 정보 수정하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/log-files/export +PUT /v3.0/db-instances/{dbInstanceId}/storage-info ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|--------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileNames | Body | Array | O | 로그 파일 이름 목록
- 최소 크기: `1` | -| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최댓값: `2048` |

예시

```json { - "logFileNames": ["xtra_full.log-20230317"], - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "logs/backup" + "storageSize": 1 } ``` @@ -2366,9 +2735,26 @@ POST /v3.0/db-instances/{dbInstanceId}/log-files/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -2394,30 +2780,22 @@ GET /v3.0/backups 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|--------|----|----------------------------------------------------------| -| page | Query | Number | O | 조회할 목록의 페이지
- 최솟값: `1` | -| size | Query | Number | O | 조회할 목록의 페이지 크기
- 최솟값: `1`
- 최댓값: `100` | -| backupType | Query | Enum | X | 백업 유형
- `AUTO`: 자동
- `MANUAL`: 수동
- 기본값: 전체 | -| dbInstanceId | Query | UUID | X | 원본 DB 인스턴스의 식별자 | -| dbVersion | Query | Enum | X | DB 엔진 유형 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|-----------------------------------| -| totalCounts | Body | Number | 전체 백업 목록 수 | -| backups | Body | Array | 백업 목록 | -| backups.backupId | Body | UUID | 백업의 식별자 | -| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | -| backups.backupStatus | Body | Enum | 백업의 현재 상태 | -| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| backups.dbVersion | Body | Enum | DB 엔진 유형 | -| backups.utilVersion | Body | String | 백업에 사용된 xtrabackup 유틸리티 버전 | -| backups.backupType | Body | Enum | 백업 유형 | -| backups.backupSize | Body | Number | 백업의 크기(Byte) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 백업 목록 수 | +| backups | Body | Array | 백업 목록 | +| backups.backupId | Body | UUID | 백업의 식별자 | +| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | +| backups.backupStatus | Body | Enum | 백업의 현재 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| backups.dbVersion | Body | Enum | DB 엔진 유형 | +| backups.utilVersion | Body | String | 유틸리티 버전 | +| backups.backupType | Body | Enum | 백업 유형
- AUTO
- MANUAL | +| backups.backupSize | Body | Number | 백업의 크기(Byte) | +| backups.createdYmdt | Body | DateTime | 생성 일시 | +| backups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -2432,16 +2810,16 @@ GET /v3.0/backups "totalCounts": 1, "backups": [ { - "backupId": "0017f136-3e01-4530-94aa-20661afe6632", - "backupName": "backup", - "backupStatus": "COMPLETED", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd", - "dbVersion": "MYSQL_V8028", - "utilVersion": "8.0.28", + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "utilVersion": "utilVersion-example", "backupType": "AUTO", - "backupSize": 4996786, - "createdYmdt": "2023-02-21T00:35:00+09:00", - "updatedYmdt": "2023-02-22T00:35:32+09:00" + "backupSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -2452,6 +2830,45 @@ GET /v3.0/backups --- +### 백업 삭제하기 + +```http +DELETE /v3.0/backups/{backupId} +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + ### 백업 내보내기 ```http @@ -2460,25 +2877,25 @@ POST /v3.0/backups/{backupId}/export #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|-----------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 계정 혹은 IAM 회원 ID | +| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 |
예시

```json { - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "backups/backup_file" + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" } ``` @@ -2487,12 +2904,26 @@ POST /v3.0/backups/{backupId}/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -> [주의] -> 수동 백업의 경우 백업이 수행된 DB 인스턴스가 존재하지 않으면, 백업을 오브젝트 스토리지로 내보낼 수 없습니다. +

+
--- @@ -2504,50 +2935,56 @@ POST /v3.0/backups/{backupId}/restore #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------|------|---------|----|---------------------------------------------------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Integer | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 ||network|Body|Object|O|네트워크 정보 객체| -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄) | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json - { - "dbInstanceName": "db-instance-restore", - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbPort": 10000, - "parameterGroupId": "132d383c-38e3-468a-a826-5e9a8fff15d0", + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, "availabilityZone": "kr-pub-a" }, "storage": { @@ -2555,10 +2992,14 @@ POST /v3.0/backups/{backupId}/restore "storageSize": 20 }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 1800, + "replicationRegion": "KR4", + "useBackupLock": true, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", + "backupWndBgnTime": "backupWndBgnTime-example", "backupWndDuration": "HALF_AN_HOUR" } ] @@ -2571,31 +3012,26 @@ POST /v3.0/backups/{backupId}/restore #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -### 백업 삭제하기 +

예시 +

-```http -DELETE /v3.0/backups/{backupId} +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------|-----|------|----|---------| -| backupId | URL | UUID | O | 백업의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -2622,15 +3058,15 @@ GET /v3.0/db-security-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-----------------------------------| -| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | -| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | +| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -2644,12 +3080,12 @@ GET /v3.0/db-security-groups }, "dbSecurityGroups": [ { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", "progressStatus": "NONE", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2022-02-19T19:18:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -2660,42 +3096,59 @@ GET /v3.0/db-security-groups --- -### DB 보안 그룹 상세 보기 +### DB 보안 그룹 생성하기 ```http -GET /v3.0/db-security-groups/{dbSecurityGroupId} +POST /v3.0/db-security-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` | +| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | +| rules.direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| rules.etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| rules.port | Body | Object | O | 포트 객체 | +| rules.port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| rules.cidr | Body | String | O | CIDR | +| rules.description | Body | String | X | 보안 그룹 규칙에 대한 추가 정보 | + +

예시 +

+ +```json +{ + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example", + "rules": [ + { + "direction": "INGRESS", + "etherType": "IPV4", + "port": { + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 + }, + "cidr": "cidr-example", + "description": "description-example" + } + ] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|----------|--------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| rules | Body | Array | DB 보안 그룹 규칙 목록 | -| rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | -| rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.port | Body | Object | 포트 객체 | -| rules.port.portType | Body | Enum | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다.
- `PORT`: 지정된 포트값으로 설정됩니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | 최소 포트 범위 | -| rules.port.maxPort | Body | Number | 최대 포트 범위 | -| rules.cidr | Body | String | 허용할 트래픽의 원격 소스 | -| rules.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| rules.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 |
예시

@@ -2707,30 +3160,7 @@ GET /v3.0/db-security-groups/{dbSecurityGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSecurityGroup": { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", - "progressStatus": "NONE", - "rules": [ - { - "ruleId": "17c88ef6-95f1-4678-84f9-fee1b22e250d", - "description": "description", - "direction": "INGRESS", - "etherType": "IPV4", - "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 - }, - "cidr": "0.0.0.0/0", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } - ], - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2739,131 +3169,159 @@ GET /v3.0/db-security-groups/{dbSecurityGroupId} --- -### DB 보안 그룹 생성하기 +### DB 보안 그룹 삭제하기 ```http -POST /v3.0/db-security-groups +DELETE /v3.0/db-security-groups/{dbSecurityGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | -| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | -| rules.description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | -| rules.port | Body | Object | O | 포트 객체 | -| rules.port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. - -

예시 -

- -```json -{ - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", - "rules": [ - { - "direction": "INGRESS", - "etherType": "IPV4", - "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 - }, - "cidr": "0.0.0.0/0" - } - ] -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|------|---------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### DB 보안 그룹 수정하기 +### DB 보안 그룹 상세 보기 ```http -PUT /v3.0/db-security-groups/{dbSecurityGroupId} +GET /v3.0/db-security-groups/{dbSecurityGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|-----------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroup | Body | Object | DB 보안 그룹 | +| dbSecurityGroup.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroup.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| dbSecurityGroup.description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| dbSecurityGroup.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| dbSecurityGroup.rules | Body | Array | DB 보안 그룹 규칙 목록 | +| dbSecurityGroup.rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | +| dbSecurityGroup.rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | +| dbSecurityGroup.rules.direction | Body | Enum | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| dbSecurityGroup.rules.etherType | Body | Enum | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| dbSecurityGroup.rules.port | Body | Object | 포트 객체 | +| dbSecurityGroup.rules.port.portType | Body | Enum | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| dbSecurityGroup.rules.port.minPort | Body | Number | 최소 포트 범위 | +| dbSecurityGroup.rules.port.maxPort | Body | Number | 최대 포트 범위 | +| dbSecurityGroup.rules.cidr | Body | String | CIDR | +| dbSecurityGroup.rules.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroup.rules.updatedYmdt | Body | DateTime | 수정 일시 | +| dbSecurityGroup.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroup.updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSecurityGroup": { + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", + "progressStatus": "NONE", + "rules": [ + { + "ruleId": "550e8400-e29b-41d4-a716-446655440000", + "description": "description-example", + "direction": "INGRESS", + "etherType": "IPV4", + "port": { + "portType": "ALL", + "minPort": 1, + "maxPort": 1 + }, + "cidr": "cidr-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } } ```

-#### 응답 +--- + +### DB 보안 그룹 수정하기 + +```http +PUT /v3.0/db-security-groups/{dbSecurityGroupId} +``` + +#### 요청 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example" } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. --- -### DB 보안 그룹 삭제하기 +### DB 보안 그룹 규칙 삭제하기 ```http -DELETE /v3.0/db-security-groups/{dbSecurityGroupId} +DELETE /v3.0/db-security-groups/{dbSecurityGroupId}/rules ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleIds | Query | String | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -2874,7 +3332,8 @@ DELETE /v3.0/db-security-groups/{dbSecurityGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2891,20 +3350,17 @@ POST /v3.0/db-security-groups/{dbSecurityGroupId}/rules #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |

예시

@@ -2914,11 +3370,12 @@ POST /v3.0/db-security-groups/{dbSecurityGroupId}/rules "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "PORT", - "minPort": 10000, - "maxPort": 10000 + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -2927,9 +3384,26 @@ POST /v3.0/db-security-groups/{dbSecurityGroupId}/rules #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -2941,21 +3415,18 @@ PUT /v3.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleId | URL | UUID | O | DB 보안 그룹 규칙의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |
예시

@@ -2965,9 +3436,12 @@ PUT /v3.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "DB_PORT" + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -2976,32 +3450,26 @@ PUT /v3.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | ---- - -### DB 보안 그룹 규칙 삭제하기 +

예시 +

-```http -DELETE /v3.0/db-security-groups/{dbSecurityGroupId}/rules +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|-------|----|---------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleIds | Query | Array | O | DB 보안 그룹 규칙의 식별자 목록 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -3017,22 +3485,18 @@ GET /v3.0/parameter-groups 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------|-------|------|----|----------| -| dbVersion | Query | Enum | X | DB 엔진 유형 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-------------------------------------------------------------------| -| parameterGroups | Body | Array | 파라미터 그룹 목록 | -| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameterGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroups | Body | Array | 파라미터 그룹 목록 | +| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameterGroups.createdYmdt | Body | DateTime | 생성 일시 | +| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3046,13 +3510,13 @@ GET /v3.0/parameter-groups }, "parameterGroups": [ { - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", "parameterGroupStatus": "STABLE", - "createdYmdt": "2023-02-31T15:28:17+09:00", - "updatedYmdt": "2023-02-31T15:28:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3061,44 +3525,41 @@ GET /v3.0/parameter-groups

- --- -### 파라미터 그룹 상세 보기 +### 파라미터 그룹 생성하기 ```http -GET /v3.0/parameter-groups/{parameterGroupId} +POST /v3.0/parameter-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` | +| dbVersion | Body | Enum | O | DB 엔진 유형 | + +
예시 +

+ +```json +{ + "parameterGroupName": "parameterGroupName", + "description": "description-example", + "dbVersion": "MYSQL_V8036" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|--------------------------------------------------------------------------------------------------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameters | Body | Array | 파라미터 목록 | -| parameters.parameterId | Body | UUID | 파라미터 식별자 | -| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- `CLIENT`: client
- `MYSQL`: mysql
- `MYSQLD`: mysqld | -| parameters.parameterName | Body | String | 파라미터 이름 | -| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | -| parameters.value | Body | String | 현재 설정된 값 | -| parameters.defaultValue | Body | String | 기본값 | -| parameters.allowedValue | Body | String | 허용된 값 | -| parameters.updateType | Body | Enum | 수정 타입
- `VARIABLE`: 언제든 수정 가능
- `CONSTANT`: 수정 불가능
- `INIT_VARIABLE`: DB 인스턴스 생성 시에만 수정 가능 | -| parameters.applyType | Body | Enum | 적용 타입
- `SESSION`: 세션 적용
- `FILE`: 설정 파일 적용(재시작 필요)
- `BOTH`: 전체(재시작 필요) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |
예시

@@ -3110,91 +3571,130 @@ GET /v3.0/parameter-groups/{parameterGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", - "parameterGroupStatus": "STABLE", - "parameters": [ - { - "parameterId": "fa040b5e-f29f-46de-8f0d-bba4cb82887a", - "parameterFileGroup": "client", - "parameterName": "socket", - "fileParameterName": "socket", - "value": "/home/tcrds/db/mysql/tmp/mysql.sock", - "defaultValue": "/home/tcrds/db/mysql/tmp/mysql.sock", - "allowedValue": "", - "updateType": "CONSTANT", - "applyType": "BOTH" - } - ], - "createdYmdt": "2023-03-13T11:02:28+09:00", - "updatedYmdt": "2023-03-13T11:02:28+09:00" + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ```

+--- + +### 파라미터 그룹 삭제하기 + +```http +DELETE /v3.0/parameter-groups/{parameterGroupId} +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 생성하기 +### 파라미터 그룹 상세 보기 ```http -POST /v3.0/parameter-groups +GET /v3.0/parameter-groups/{parameterGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameters | Body | Array | 파라미터 목록 | +| parameters.parameterId | Body | UUID | 파라미터의 식별자 | +| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- CLIENT
- MYSQL
- MYSQLD | +| parameters.parameterName | Body | String | 파라미터 이름 | +| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | +| parameters.value | Body | String | 현재 설정된 값 | +| parameters.defaultValue | Body | String | 기본값 | +| parameters.allowedValue | Body | String | 허용된 값 | +| parameters.updateType | Body | Enum | 수정 타입
- VARIABLE
- CONSTANT
- INIT_VARIABLE | +| parameters.applyType | Body | Enum | 적용 타입
- BOTH
- SESSION
- FILE | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "parameterGroupName": "parameter-group", - "dbVersion": "MYSQL_V8028" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "parameterGroupStatus": "STABLE", + "parameters": [ + { + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "parameterFileGroup": "CLIENT", + "parameterName": "parameterName-example", + "fileParameterName": "fileParameterName-example", + "value": "value-example", + "defaultValue": "defaultValue-example", + "allowedValue": "allowedValue-example", + "updateType": "VARIABLE", + "applyType": "BOTH" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | - --- -### 파라미터 그룹 복사하기 +### 파라미터 그룹 수정하기 ```http -POST /v3.0/parameter-groups/{parameterGroupId}/copy +PUT /v3.0/parameter-groups/{parameterGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "parameterGroupName": "parameter-group-copy", - "description": "copy" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -3203,32 +3703,31 @@ POST /v3.0/parameter-groups/{parameterGroupId}/copy #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 수정하기 +### 파라미터 그룹 복사하기 ```http -PUT /v3.0/parameter-groups/{parameterGroupId} +POST /v3.0/parameter-groups/{parameterGroupId}/copy ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |

예시

```json { - "parameterGroupName": "parameter-group" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -3237,7 +3736,9 @@ PUT /v3.0/parameter-groups/{parameterGroupId} #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |

예시

@@ -3248,7 +3749,8 @@ PUT /v3.0/parameter-groups/{parameterGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3265,12 +3767,12 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/parameters #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------------|------|--------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | -| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | -| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | +| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | +| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 |

예시

@@ -3279,8 +3781,8 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/parameters { "modifiedParameters": [ { - "parameterId": "3abac558-7274-44e1-9f4a-f100f53f67ba", - "value": "0" + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "value": "value-example" } ] } @@ -3293,39 +3795,49 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/parameters 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

+--- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} +### 파라미터 그룹 재설정하기 + +```http +PUT /v3.0/parameter-groups/{parameterGroupId}/reset ``` -

-
+#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 재설정하기 +## 사용자 그룹 + +### 사용자 그룹 목록 보기 ```http -PUT /v3.0/parameter-groups/{parameterGroupId}/reset +GET /v3.0/user-groups ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroups.createdYmdt | Body | DateTime | 생성 일시 | +| userGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3336,7 +3848,15 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/reset "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "userGroups": [ + { + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -3345,23 +3865,39 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/reset --- -### 파라미터 그룹 삭제하기 +### 사용자 그룹 생성하기 ```http -DELETE /v3.0/parameter-groups/{parameterGroupId} +POST /v3.0/user-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록 | +| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` | + +

예시 +

+ +```json +{ + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAllYN": false +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +

+
#### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 |
예시

@@ -3372,7 +3908,8 @@ DELETE /v3.0/parameter-groups/{parameterGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "userGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3381,51 +3918,23 @@ DELETE /v3.0/parameter-groups/{parameterGroupId} --- -## 사용자 그룹 - -### 사용자 그룹 목록 보기 +### 사용자 그룹 삭제하기 ```http -GET /v3.0/user-groups +DELETE /v3.0/user-groups/{userGroupId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|-----------------------------------| -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| userGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - -

예시 -

+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "userGroups": [ - { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" - } - ] -} -``` +#### 응답 -

-
+이 API는 응답 본문을 반환하지 않습니다. --- @@ -3439,21 +3948,21 @@ GET /v3.0/user-groups/{userGroupId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|----------|-----------------------------------------------------------------------------------------------------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
`ENTIRE`: 프로젝트 멤버 전체를 포함하는 사용자 그룹
`INDIVIDUAL_MEMBER`: 특정 프로젝트 멤버를 포함하는 사용자 그룹 | -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
- ENTIRE
- INDIVIDUAL_MEMBER | +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3465,65 +3974,21 @@ GET /v3.0/user-groups/{userGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "userGroupTypeCode": "INDIVIDUAL_MEMBER", + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "userGroupTypeCode": "ENTIRE", "members": [ { - "memberId": "1321e759-2ef3-4b85-9921-b13e918b24b5" + "memberId": "550e8400-e29b-41d4-a716-446655440000" } ], - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" -} -``` - -

-
- ---- - -### 사용자 그룹 생성하기 - -```http -POST /v3.0/user-groups -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|-------------------------------------------------------------| -| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록
`selectAllYN`이 true인 경우 해당 필드 값은 무시됨 | -| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 유무
true인 경우 해당 그룹은 전체 멤버에 대해 설정됨 | - -
예시 -

- -```json -{ - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5" - ] -} -``` - -```json -{ - "userGroupName": "dev-team", - "selectAllYN":true + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` -

-
- -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------------|------|------|-------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +

+
--- @@ -3535,23 +4000,21 @@ PUT /v3.0/user-groups/{userGroupId} #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|----------------------------------------------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | -| userGroupName | Body | String | X | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | -| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 유무
true인 경우 해당 그룹은 전체 멤버에 대해 설정됨 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | +| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` |
예시

```json { - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5", - "f9064b09-2b15-442e-a4b0-3a5a2754555e" - ] + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAllYN": false } ``` @@ -3562,39 +4025,32 @@ PUT /v3.0/user-groups/{userGroupId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- -### 사용자 그룹 삭제하기 +## 알림 그룹 + +### 알림 그룹 목록 보기 ```http -DELETE /v3.0/user-groups/{userGroupId} +GET /v3.0/notification-groups ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroups | Body | Array | 알림 그룹 목록 | +| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | +| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | +| notificationGroups.createdYmdt | Body | DateTime | 생성 일시 | +| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3605,7 +4061,18 @@ DELETE /v3.0/user-groups/{userGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "notificationGroups": [ + { + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, + "notifySms": false, + "isEnabled": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -3614,30 +4081,45 @@ DELETE /v3.0/user-groups/{userGroupId} --- -## 알림 그룹 - -### 알림 그룹 목록 보기 +### 알림 그룹 생성하기 ```http -GET /v3.0/notification-groups +POST /v3.0/notification-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | +| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | + +

예시 +

+ +```json +{ + "notificationGroupName": "notificationGroupName", + "notifyEmail": true, + "notifySms": true, + "isEnabled": true, + "dbInstanceIds": [], + "userGroupIds": [] +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------------|------|----------|-----------------------------------| -| notificationGroups | Body | Array | 알림 그룹 목록 | -| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | -| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | -| notificationGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 |
예시

@@ -3649,17 +4131,7 @@ GET /v3.0/notification-groups "resultMessage": "SUCCESS", "isSuccessful": true }, - "notificationGroups": [ - { - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, - "notifySms": false, - "isEnabled": true, - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" - } - ] + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3668,6 +4140,26 @@ GET /v3.0/notification-groups --- +### 알림 그룹 삭제하기 + +```http +DELETE /v3.0/notification-groups/{notificationGroupId} +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + ### 알림 그룹 상세 보기 ```http @@ -3678,27 +4170,27 @@ GET /v3.0/notification-groups/{notificationGroupId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------------|------|----------|-----------------------------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notifySms | Body | Boolean | SMS 알림 여부 | -| isEnabled | Body | Boolean | 활성화 여부 | -| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notifySms | Body | Boolean | SMS 알림 여부 | +| isEnabled | Body | Boolean | 활성화 여부 | +| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -3710,25 +4202,25 @@ GET /v3.0/notification-groups/{notificationGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, "notifySms": false, - "isEnabled": true, + "isEnabled": false, "dbInstances": [ { - "dbInstanceId": "ed5cb985-526f-4c54-9ae0-40288593de65", - "dbInstanceName": "database" + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example" } ], "userGroups": [ { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team" + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example" } ], - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -3737,37 +4229,35 @@ GET /v3.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 생성하기 +### 알림 그룹 수정하기 ```http -POST /v3.0/notification-groups +PUT /v3.0/notification-groups/{notificationGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------------| -| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | -| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | -| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | -| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | +| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `false` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `false` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `false` | +| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 |

예시

```json { - "notificationGroupName": "dev-team-noti", + "notificationGroupName": "notificationGroupName-example", "notifyEmail": false, - "isEnable": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65" - ], - "userGroupIds": [ - "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0" - ] + "notifySms": false, + "isEnabled": false, + "dbInstanceIds": [], + "userGroupIds": [] } ``` @@ -3776,49 +4266,45 @@ POST /v3.0/notification-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|------|------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 알림 그룹 수정하기 +## 모니터링 + +### 통계 정보 조회 ```http -PUT /v3.0/notification-groups/{notificationGroupId} +GET /v3.0/metric-statistics ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부 | -| notifySms | Body | Boolean | X | SMS 알림 여부 | -| isEnabled | Body | Boolean | X | 활성화 여부 | -| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +이 API는 요청 본문을 요구하지 않습니다. -

예시 -

+#### 응답 -```json -{ - "notifyEmail": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65", - "d51b7da0-682f-47ff-b588-b739f6adc740" - ] -} +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### Metric 목록 보기 + +```http +GET /v3.0/metrics ``` -

-
+#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| metrics | Body | Array | Metric 목록 | +| metrics.measureName | Body | String | 조회 지표 유형 | +| metrics.unit | Body | String | 측정값 단위 |
예시

@@ -3829,7 +4315,13 @@ PUT /v3.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "metrics": [ + { + "measureName": "measureName-example", + "unit": "unit-example" + } + ] } ``` @@ -3838,23 +4330,38 @@ PUT /v3.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 삭제하기 +## 이벤트 + +### 이벤트 카테고리 + +이벤트는 카테고리로 분류할 수 있으며 아래와 같습니다. + +| 이벤트 카테고리 | 설명 | +|-------------|---------| +| ALL | 전체 | +| BACKUP | 백업 | +| DB_INSTANCE | DB 인스턴스 | +| JOB | 작업 | +| TENANT | 테넌트 | +| MONITORING | 모니터링 | + +### 구독 가능한 이벤트 코드 목록 보기 ```http -DELETE /v3.0/notification-groups/{notificationGroupId} +GET /v3.0/event-codes ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | - #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventCodes | Body | Array | 이벤트 코드 목록 | +| eventCodes.eventCode | Body | Enum | 이벤트 코드 | +| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT |

예시

@@ -3865,7 +4372,13 @@ DELETE /v3.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "eventCodes": [ + { + "eventCode": "ENUM_VALUE", + "eventCategoryType": "ALL" + } + ] } ``` @@ -3874,12 +4387,10 @@ DELETE /v3.0/notification-groups/{notificationGroupId} --- -## 모니터링 - -### Metric 목록 보기 +### 이벤트 목록 조회 ```http -GET /v3.0/metrics +GET /v3.0/events ``` #### 요청 @@ -3888,11 +4399,18 @@ GET /v3.0/metrics #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|--------|-----------| -| metrics | Body | Array | Metric 목록 | -| metrics.measureName | Body | Enum | 조회 지표 유형 | -| metrics.unit | Body | String | 측정값 단위 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 목록 수 | +| events | Body | Array | 이벤트 목록 | +| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | +| events.sourceId | Body | String | 이벤트 소스의 식별자 | +| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | +| events.messages | Body | Array | 이벤트 메세지 목록 | +| events.messages.langCode | Body | Enum | 언어 코드
- KO
- EN
- JA
- ZH | +| events.messages.message | Body | String | 이벤트 메세지 | +| events.eventYmdt | Body | DateTime | 이벤트 발생 일시 |

예시

@@ -3904,10 +4422,20 @@ GET /v3.0/metrics "resultMessage": "SUCCESS", "isSuccessful": true }, - "metrics": [ + "totalCounts": 1, + "events": [ { - "measureName": "CPU_USAGE", - "unit": "%" + "eventCategoryType": "ALL", + "eventCode": "ENUM_VALUE", + "sourceId": "sourceId-example", + "sourceName": "sourceName-example", + "messages": [ + { + "langCode": "KO", + "message": "message-example" + } + ], + "eventYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3918,56 +4446,65 @@ GET /v3.0/metrics --- -### 통계 정보 조회 +## 이벤트 구독 + +### 이벤트 구독 목록 조회 ```http -GET /v3.0/metric-statistics +GET /v3.0/event-subscriptions ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|----------|----|-----------------------------------| -| dbInstanceId | Query | UUID | O | DB 인스턴스의 식별자 | -| measureNames | Query | Array | O | 조회 지표 목록
- 최소 크기: `1` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| interval | Query | Number | X | 조회 간격 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|-----------|----------| -| metricStatistics | Body | Array | 통계 정보 목록 | -| metricStatistics.measureName | Body | Enum | 측정 항목 유형 | -| metricStatistics.unit | Body | String | 측정값 단위 | -| metricStatistics.values | Body | Array | 측정값 목록 | -| metricStatistics.values.timestamp | Body | Timestamp | 측정 시간 | -| metricStatistics.values.value | Body | Object | 측정값 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 구독 목록 수 | +| eventSubscriptions | Body | Array | 이벤트 구독 목록 | +| eventSubscriptions.eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 | +| eventSubscriptions.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.eventSubscriptionName | Body | String | 이벤트 구독의 식별할 수 있는 이름 | +| eventSubscriptions.enabled | Body | Boolean | 활성화 여부 | +| eventSubscriptions.notifyEmail | Body | Boolean | 이메일 발송 여부 | +| eventSubscriptions.notifySms | Body | Boolean | SMS 발송 여부 | +| eventSubscriptions.eventCodes | Body | Array | 구독할 이벤트 코드 목록 | +| eventSubscriptions.sources | Body | Array | 구독할 이벤트 소스 목록 | +| eventSubscriptions.sources.sourceId | Body | String | 이벤트 소스의 식별자 | +| eventSubscriptions.sources.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.userGroupIds | Body | Array | 이벤트 구독 중인 사용자 그룹의 식별자 목록 | +| eventSubscriptions.createdYmdt | Body | DateTime | 생성 일시 |

예시

```json { - "metricStatistics": [ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "totalCounts": 1, + "eventSubscriptions": [ { - "measureName": "MYSQL_STATUS", - "unit": "", - "values": [ - [ - 1679298540, - "1" - ], - [ - 1679298600, - "1" - ], - [ - 1679298660, - "1" - ] - ] + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ + { + "sourceId": "sourceId-example", + "eventCategoryType": "ALL" + } + ], + "userGroupIds": [], + "createdYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3978,56 +4515,56 @@ GET /v3.0/metric-statistics --- -## 이벤트 - -### 이벤트 카테고리 - -이벤트는 카테고리로 분류할 수 있으며 아래와 같습니다. - -| 이벤트 카테고리 | 설명 | -|-------------|---------| -| ALL | 전체 | -| BACKUP | 백업 | -| DB_INSTANCE | DB 인스턴스 | -| JOB | 작업 | -| TENANT | 테넌트 | -| MONITORING | 모니터링 | - -### 이벤트 목록 조회 +### 이벤트 구독 생성하기 ```http -GET /v3.0/events +POST /v3.0/event-subscriptions ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | O | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | O | 활성화 여부 | +| notifyEmail | Body | Boolean | O | 이메일 발송 여부 | +| notifySms | Body | Boolean | O | SMS 발송 여부 | +| eventCodes | Body | Array | O | 구독할 이벤트 코드 목록 | +| sources | Body | Array | O | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | O | 이벤트 구독할 사용자 그룹의 식별자 목록 | + +

예시 +

+ +```json +{ + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ + { + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" + } + ], + "userGroupIds": [] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | O | 조회할 목록의 페이지
- 최솟값: `1` | -| size | Query | Number | O | 조회할 목록의 페이지 크기
- 최솟값: `1`
- 최댓값: `100` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| eventCategoryType | Query | Enum | O | 조회할 이벤트 카테고리 유형
- `ALL`: 전체
- `INSTANCE`: DB 인스턴스
- `BACKUP`: 백업
- `DB_SECURITY_GROUP`: DB 보안 그룹
- `TENANT`: 테넌트 | -| sourceId | Query | String | X | 이벤트가 발생한 대상 리소스의 식별자 | -| keyword | Query | String | X | 이벤트 메시지에 포함된 문자열 검색어 | -| ascendingOrder | Query | Enum | X | 이벤트 메시지 정렬 순서
- `ASC`: 오름차순
- `DESC`: 내림차순
- 기본값: `DESC` | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|---------------------------------------| -| totalCounts | Body | Number | 전체 이벤트 목록 수 | -| events | Body | Array | 이벤트 목록 | -| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | -| events.sourceId | Body | String | 이벤트 소스의 식별자 | -| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | -| events.messages | Body | Array | 이벤트 메시지 목록 | -| events.messages.langCode | Body | String | 언어 코드 | -| events.messages.message | Body | String | 이벤트 메시지 | -| events.eventYmdt | Body | DateTime | 이벤트 발생 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 |
예시

@@ -4039,34 +4576,7 @@ GET /v3.0/events "resultMessage": "SUCCESS", "isSuccessful": true }, - "totalCounts": 28, - "events": [ - { - "eventCategoryType": "INSTANCE", - "eventCode": "INSTC_02_01", - "sourceId": "76f00947-356e-4a20-8922-428368cc45ed", - "sourceName": "db-instance", - "messages": [ - { - "langCode": "EN", - "message": "DB instance started" - }, - { - "langCode": "JA", - "message": "DBインスタンスの起動" - }, - { - "langCode": "KO", - "message": "DB 인스턴스 시작" - }, - { - "langCode": "ZH", - "message": "DB instance started" - } - ], - "eventYmdt": "2023-03-20T16:31:59+09:00" - } - ] + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4075,44 +4585,75 @@ GET /v3.0/events --- -### 구독 가능한 이벤트 코드 목록 보기 +### 이벤트 구독 삭제하기 ```http -GET /v3.0/event-codes +DELETE /v3.0/event-subscriptions/{eventSubscriptionId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | + #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|-------|-------------| -| eventCodes | Body | Array | 이벤트 코드 목록 | -| eventCodes.eventCode | Body | Enum | 이벤트 코드 | -| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 이벤트 구독 수정하기 + +```http +PUT /v3.0/event-subscriptions/{eventSubscriptionId} +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | +| eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | X | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | X | 활성화 여부 | +| notifyEmail | Body | Boolean | X | 이메일 발송 여부 | +| notifySms | Body | Boolean | X | SMS 발송 여부 | +| eventCodes | Body | Array | X | 구독할 이벤트 코드 목록 | +| sources | Body | Array | X | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | X | 이벤트 구독할 사용자 그룹의 식별자 목록 |

예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "eventCodes": [ + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ { - "eventCode": "INSTC_05_01", - "eventCategoryType": "INSTANCE" + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" } - ] + ], + "userGroupIds": [] } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- + diff --git a/ko/api-guide-v3.0-ngsc.md b/ko/api-guide-v3.0-ngsc.md index 902a8241..308ba8ec 100644 --- a/ko/api-guide-v3.0-ngsc.md +++ b/ko/api-guide-v3.0-ngsc.md @@ -1,35 +1,42 @@ -## Database > RDS for MySQL > API 가이드 +## Database > RDS for MySQL > API v3.0 가이드 -| 리전 | 엔드포인트 | -|-----------|-----------------------------------------------| -| 한국(판교) 리전 | https://kr4-rds-mysql-api.ngsc.go.kr | +## RDS for MySQL API 공통 정보 -## 인증 및 권한 +### API 엔드포인트 -API를 사용하려면 인증에 필요한 `User Access Key ID`와 `Secret Access Key`가 필요합니다. 콘솔 우측 상단의 계정에 마우스 포인터를 올리면 표시되는 드롭다운 메뉴에서 API 보안 설정을 선택해 생성할 수 있습니다. +| 리전 | 엔드포인트 | +|------|----------| +| 한국(대구) 리전 | https://ngsc-kr4-rds-proxy.cloud.toastoven.net | + + +### 인증 및 권한 + +RDS for MySQL API를 사용하려면 User Access Key가 필요합니다. User Access Key는 NHN Cloud 계정 또는 IAM 계정을 기반으로 발급되는 인증 키로, Secret Access Key와 함께 사용하여 API 요청에 대한 인증 수단으로 활용됩니다. + +User Access Key와 Secret Access Key는 콘솔의 **API 보안 설정**에서 발급할 수 있습니다. User Access Key 발급 및 사용에 대한 자세한 내용은 [User Access Key](/nhncloud/ko/public-api/user-access-key)를 참고하세요. 생성된 Key는 Appkey와 함께 요청 Header에 포함해야 합니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------------|--------|--------|----|-------------------------------------------------------------| -| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | -| X-TC-AUTHENTICATION-ID | Header | String | O | API 보안 설정 메뉴의 User Access Key ID | -| X-TC-AUTHENTICATION-SECRET | Header | String | O | API 보안 설정 메뉴의 Secret Access Key | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | +| X-TC-AUTHENTICATION-ID | Header | String | O | API 보안 설정 메뉴의 User Access Key ID | +| X-TC-AUTHENTICATION-SECRET | Header | String | O | API 보안 설정 메뉴의 Secret Access Key | -또한 프로젝트 멤버 역할에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER`로 구분하여 권한을 부여할 수 있습니다. +또한 프로젝트 권한에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER` 역할에는 아래처럼 기본 권한이 부여돼 있고 프로젝트 내 역할 그룹 관리 메뉴에서 필요한 권한만 부여할 수 있습니다. -* `RDS for MySQL ADMIN` 권한은 모든 기능을 사용 가능합니다. -* `RDS for MySQL VIEWER` 권한은 정보를 조회하는 기능만 사용 가능합니다. +* `RDS for MySQL ADMIN` 역할은 API 실행에 필요한 모든 권한이 부여됩니다. +* `RDS for MySQL VIEWER` 역할은 정보를 조회하는 권한만 부여됩니다. * DB 인스턴스를 생성, 수정, 삭제하거나, DB 인스턴스를 대상으로 하는 어떠한 기능도 사용할 수 없습니다. - * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용 가능합니다. + * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용할 수 있습니다. API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같은 오류가 발생합니다. -| resultCode | resultMessage | 설명 | -|------------|---------------|-------------| -| 80401 | Unauthorized | 인증에 실패했습니다. | -| 80403 | Forbidden | 권한이 없습니다. | +| resultCode | resultMessage | 설명 | +|------------|---------------|-----| +| 80401 | Unauthorized | 인증에 실패했습니다. | +| 80403 | Forbidden | 권한이 없습니다. | -## 응답 공통 정보 +### 응답 공통 정보 모든 API 요청에 '200 OK'로 응답합니다. 자세한 응답 결과는 응답 본문의 헤더를 참고합니다. @@ -45,47 +52,50 @@ API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같 ``` #### 필드 -| 이름 | 형식 | 설명 | -|---------------|---------|-----------------------------------------| -| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | -| resultMessage | String | 결과 메시지 | -| isSuccessful | Boolean | 성공 여부 | - - -## DB 엔진 유형 - -| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 정보 | -|--------------|----------|-----------------|--------| -| MYSQL\_V5633 | X | X | NATIVE | -| MYSQL\_V5715 | O | O | NATIVE | -| MYSQL\_V5719 | O | O | NATIVE | -| MYSQL\_V5726 | O | O | NATIVE | -| MYSQL\_V5731 | X | X | NATIVE | -| MYSQL\_V5733 | O | X | NATIVE, SHA256 | -| MYSQL\_V5737 | O | O | NATIVE, SHA256 | -| MYSQL\_V8018 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8023 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8028 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8032 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8033 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8034 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8405 | O | O | CACHING_SHA2 | +| 이름 | 형식 | 설명 | +|-----|-----|-----| +| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | +| resultMessage | String | 결과 메시지 | +| isSuccessful | Boolean | 성공 여부 | +### DB 엔진 유형 + +| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 | +|------------|----------|------------------|------------| +| MYSQL_V5633 | X | X | NATIVE | +| MYSQL_V5715 | O | O | NATIVE | +| MYSQL_V5719 | O | O | NATIVE | +| MYSQL_V5726 | O | O | NATIVE | +| MYSQL_V5731 | X | X | NATIVE | +| MYSQL_V5733 | O | X | NATIVE, SHA256 | +| MYSQL_V5737 | O | O | NATIVE, SHA256 | +| MYSQL_V8018 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8023 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8028 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8032 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8033 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8034 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8044 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8045 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8405 | O | O | CACHING_SHA2 | +| MYSQL_V8406 | O | O | CACHING_SHA2 | +| MYSQL_V8407 | O | O | CACHING_SHA2 | +| MYSQL_V8408 | O | O | CACHING_SHA2 | * ENUM 타입의 dbVersion 필드에 대해 해당 값을 사용할 수 있습니다. * 버전에 따라 생성 또는 복원이 불가능한 경우가 있을 수 있습니다. ## 프로젝트 정보 -### 리전 목록 보기 +### 프로젝트 멤버 목록 보기 ```http -GET /v3.0/project/regions +GET /v3.0/project/members ``` #### 요청 @@ -94,11 +104,13 @@ GET /v3.0/project/regions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------|------|---------|----------------------------------------------------------------------------| -| regions | Body | Array | 리전 목록 | -| regions.regionCode | Body | Enum | 리전 코드
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| members.memberName | Body | String | 프로젝트 멤버의 이름 | +| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | +| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 |
예시

@@ -110,31 +122,26 @@ GET /v3.0/project/regions "resultMessage": "SUCCESS", "isSuccessful": true }, - "regions": [ - { - "regionCode": "KR1", - "isEnabled": true - }, - { - "regionCode": "KR2", - "isEnabled": true - }, + "members": [ { - "regionCode": "JP1", - "isEnabled": true + "memberId": "550e8400-e29b-41d4-a716-446655440000", + "memberName": "memberName-example", + "emailAddress": "emailAddress-example", + "phoneNumber": "phoneNumber-example" } ] } ``` +

--- -### 프로젝트 멤버 목록 보기 +### 리전 목록 보기 ```http -GET /v3.0/project/members +GET /v3.0/project/regions ``` #### 요청 @@ -143,13 +150,11 @@ GET /v3.0/project/members #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|--------|-----------------| -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| members.memberName | Body | String | 프로젝트 멤버의 이름 | -| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | -| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| regions | Body | Array | 리전 목록 | +| regions.regionCode | Body | Enum | 리전 코드
- KR4: `한국(대구)` | +| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 |
예시

@@ -161,12 +166,10 @@ GET /v3.0/project/members "resultMessage": "SUCCESS", "isSuccessful": true }, - "members": [ + "regions": [ { - "memberId": "1b1d3627-507a-49ea-8cb7-c86dfa9caa58", - "memberName": "홍길동", - "emailAddress": "gildong.hong@nhn.com", - "phoneNumber": "+821012345678" + "regionCode": "KR4", + "isEnabled": false } ] } @@ -191,13 +194,13 @@ GET /v3.0/db-flavors #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------| -| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | -| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | -| dbFlavors.ram | Body | Number | 메모리 용량(MB) | -| dbFlavors.vcpus | Body | Number | CPU 코어 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | +| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | +| dbFlavors.ram | Body | Number | 메모리 용량(MB) | +| dbFlavors.vcpus | Body | Number | CPU 코어 수 |

예시

@@ -211,9 +214,9 @@ GET /v3.0/db-flavors }, "dbFlavors": [ { - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbFlavorName": "m2.c1m2", - "ram": 2048, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbFlavorName": "dbFlavorName-example", + "ram": 1, "vcpus": 1 } ] @@ -239,14 +242,14 @@ GET /v3.0/network/subnets #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|---------|------------------| -| subnets | Body | Array | 서브넷 목록 | -| subnets.subnetId | Body | UUID | 서브넷의 식별자 | -| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | -| subnets.subnetCidr | Body | String | 서브넷의 CIDR | -| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | -| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| subnets | Body | Array | 서브넷 목록 | +| subnets.subnetId | Body | UUID | 서브넷의 식별자 | +| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnets.subnetCidr | Body | String | 서브넷의 CIDR | +| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | +| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 |

예시

@@ -260,11 +263,11 @@ GET /v3.0/network/subnets }, "subnets": [ { - "subnetId": "1b2a9b23-0725-4b92-8c78-35db66b8ad9f", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/24", - "usingGateway": true, - "availableIpCount": 240 + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example", + "usingGateway": false, + "availableIpCount": 1 } ] } @@ -289,11 +292,11 @@ GET /v3.0/db-versions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|---------|-----------------------| -| dbVersions | Body | Array | DB 엔진 목록 | -| dbVersions.dbVersion | Body | String | DB 엔진 유형 | -| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbVersions | Body | Array | DB 엔진 목록 | +| dbVersions.dbVersion | Body | String | DB 엔진 유형 | +| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | | dbVersions.restorableFromObs | Body | Boolean | 오브젝트 스토리지로부터 복원 가능 여부 |

예시 @@ -308,9 +311,9 @@ GET /v3.0/db-versions }, "dbVersions": [ { - "dbVersion": "MYSQL_V8028", - "dbVersionName": "MySQL 8.0.28", - "restorableFromObs": true + "dbVersion": "MYSQL_V8036", + "dbVersionName": "dbVersionName-example", + "restorableFromObs": false } ] } @@ -323,7 +326,7 @@ GET /v3.0/db-versions ## 데이터 스토리지 -### 데이터 스토리지 타입 목록 보기 +### 스토리지 타입 목록 보기 ```http GET /v3.0/storage-types @@ -335,9 +338,9 @@ GET /v3.0/storage-types #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|-------|----------------| -| storageTypes | Body | Array | 데이터 스토리지 타입 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageTypes | Body | Array | 스토리지 타입 목록 |
예시

@@ -349,10 +352,7 @@ GET /v3.0/storage-types "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageTypes": [ - "General SSD", - "General HDD" - ] + "storageTypes": [] } ``` @@ -361,7 +361,7 @@ GET /v3.0/storage-types --- -### 데이터 스토리지 목록 보기 +### 스토리지 목록 보기 ```http GET /v3.0/storages @@ -373,9 +373,9 @@ GET /v3.0/storages #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------|------|-------|-------------| -| storages | Body | Array | 데이터 스토리지 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storages | Body | Array | 스토리지 목록 |

예시

@@ -387,10 +387,7 @@ GET /v3.0/storages "resultMessage": "SUCCESS", "isSuccessful": true }, - "storages": [ - "General SSD", - "General HDD" - ] + "storages": [] } ``` @@ -428,21 +425,21 @@ GET /v3.0/jobs/{jobId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------|-----|------|----|---------| -| jobId | URL | UUID | O | 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| jobId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------|------|----------|-----------------------------------| -| jobId | Body | UUID | 작업의 식별자 | -| jobStatus | Body | Enum | 작업의 현재 상태 | -| resourceRelations | Body | Array | 연관 리소스 목록 | -| resourceRelations.resourceType | Body | Enum | 연관 리소스 유형 | -| resourceRelations.resourceId | Body | UUID | 연관 리소스의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | +| jobStatus | Body | Enum | 작업의 현재 상태
- DELETED
- CANNOT_PROGRESS
- FAILED
- ERROR
- CANCELED
- INTERRUPTED
- COMPLETED
- RUNNING
- PREPARING
- READY
- CREATED
- FAIL_TO_READY
- REGISTERED
- FAIL_TO_REGISTER
- WAIT_TO_REGISTER | +| resourceRelations | Body | Array | 연관 리소스 목록 | +| resourceRelations.resourceType | Body | String | 연관 리소스 유형 | +| resourceRelations.resourceId | Body | String | 연관 리소스의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -454,16 +451,16 @@ GET /v3.0/jobs/{jobId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "jobId": "0ddb042c-5af6-43fb-a914-f4dd0540eb7c", - "jobStatus": "RUNNING", + "jobId": "550e8400-e29b-41d4-a716-446655440000", + "jobStatus": "DELETED", "resourceRelations": [ { - "resourceType": "DB_INSTANCE", - "resourceId": "56b39dcf-65eb-47ec-9d4f-09f160ba2266" + "resourceType": "resourceType-example", + "resourceId": "resourceId-example" } ], - "createdYmdt": "2023-02-22T20:47:12+09:00", - "updatedYmdt": "2023-02-22T20:49:46+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -486,13 +483,13 @@ GET /v3.0/db-instance-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------|------|----------|--------------------------------------------------------------------------| -| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | -| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | +| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -506,10 +503,10 @@ GET /v3.0/db-instance-groups }, "dbInstanceGroups": [ { - "dbInstanceGroupId": "05de0746-89fd-49c8-94f9-9c5b1df97009", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", - "createdYmdt": "2023-02-13T17:35:20+09:00", - "updatedYmdt": "2023-02-13T17:35:20+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -530,22 +527,22 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|-----------------| -| dbInstanceGroupId | URL | UUID | O | DB 인스턴스 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -557,17 +554,17 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbInstanceGroupId": "36617a8e-0df8-4b16-b6ea-6306019e95da", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", "dbInstances": [ { - "dbInstanceId": "6d2db0ef-fe9b-4ed4-97b1-d97fcb4cf1b8", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE" + "dbInstanceStatus": "BEFORE_CREATE" } ], - "createdYmdt": "2023-03-03T17:38:14+09:00", - "updatedYmdt": "2023-03-03T17:38:14+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -600,8 +597,8 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} | `BACKING_UP` | 백업 중 | | `CANCELING` | 취소 중 | | `CREATING` | 생성 중 | -| `CREATING_SCHEMA` | DB 스키마 생성 중 | -| `CREATING_USER` | 사용자 생성 중 | +| `CREATING_SCHEMA` | DB 스키마 생성 중 | +| `CREATING_USER` | 사용자 생성 중 | | `DELETING` | 삭제 중 | | `DELETING_SCHEMA` | DB 스키마 삭제 중 | | `DELETING_USER` | 사용자 삭제 중 | @@ -620,8 +617,8 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} | `STARTING` | 시작 중 | | `STOPPING` | 정지 중 | | `SYNCING_SCHEMA` | DB 스키마 동기화 중 | -| `SYNCING_USER` | 사용자 동기화 중 | -| `UPDATING_USER` | 사용자 수정 중 | +| `SYNCING_USER` | 사용자 동기화 중 | +| `UPDATING_USER` | 사용자 수정 중 | ### DB 인스턴스 목록 보기 @@ -635,20 +632,20 @@ GET /v3.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstances | Body | Array | DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | -| dbInstances.dbPort | Body | Number | DB 포트 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태 | -| dbInstances.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstances.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstances | Body | Array | DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | +| dbInstances.dbPort | Body | Number | DB 포트 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbInstances.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstances.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -662,17 +659,17 @@ GET /v3.0/db-instances }, "dbInstances": [ { - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", + "dbInstanceStatus": "BEFORE_CREATE", "progressStatus": "NONE", - "createdYmdt": "2023-01-23T12:03:13+09:00", - "updatedYmdt": "2023-02-02T17:20:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -683,83 +680,6 @@ GET /v3.0/db-instances --- -### DB 인스턴스 상세 보기 - -```http -GET /v3.0/db-instances/{dbInstanceId} -``` - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| dbPort | Body | Number | DB 포트 | -| dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| progressStatus | Body | Enum | DB 인스턴스의 현재 작업 진행 상태 | -| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | -| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | -| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | -| supportAuthenticationPlugin | Body | Boolean | 인증 플러그인 지원 여부 | -| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | -| needMigration | Body | Boolean | 마이그레이션 필요 여부 | -| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", - "progressStatus": "NONE", - "dbFlavorId": "e9ed4ef6-78d7-46fa-ace9-32481e97f3b7", - "parameterGroupId": "b03e8b13-de27-4d04-a488-ff5689589372", - "dbSecurityGroupIds": ["01908c35-d2c9-4852-baf0-17f06ec42c03"], - "notificationGroupIds": ["83a62a33-ddbf-4a04-8653-e54463d5b1ac"], - "useDeletionProtection": false, - "supportAuthenticationPlugin": true, - "needToApplyParameterGroup": false, - "needMigration": false, - "supportDbVersionUpgrade": true, - "createdYmdt": "2022-11-23T12:03:13+09:00", - "updatedYmdt": "2022-12-02T17:20:17+09:00" -} -``` - -

-
- ---- - ### DB 인스턴스 생성하기 ```http @@ -768,61 +688,67 @@ POST /v3.0/db-instances #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|------|---------|----|---------------------------------------------------------------------| -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbUserName | Body | String | O | DB 사용자 계정명 | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `16` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 ||network|Body|Object|O|네트워크 정보 객체| -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄) | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| authenticationPlugin | Body | Enum | X | 인증 Plugin
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | TLS Option
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE", "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, "availabilityZone": "kr-pub-a" }, "storage": { @@ -830,11 +756,15 @@ POST /v3.0/db-instances "storageSize": 20 }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 1800, + "replicationRegion": "KR4", + "useBackupLock": true, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR" + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" } ] } @@ -846,45 +776,124 @@ POST /v3.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### DB 인스턴스 수정하기 +### 오브젝트 스토리지를 이용한 DB 인스턴스 복원 ```http -PUT /v3.0/db-instances/{dbInstanceId} +POST /v3.0/db-instances/restore-from-obs ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|------|---------|----|--------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbPort | Body | Number | X | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbVersion | Body | Enum | X | DB 엔진 유형 | -| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
기본값: `false` | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | X | DB 포트 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| imageId | Body | UUID | X | 이미지의 식별자 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | +| restore.username | Body | String | O | NHN Cloud 계정 혹은 IAM 멤버 ID | +| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | +| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | +| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` |
예시

```json { - "dbInstanceName": "db-instance2", - "description": "description2", - "dbPort": 10001, + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "dbVersion": "MYSQL_V8036", + "useHighAvailability": false, + "imageId": "550e8400-e29b-41d4-a716-446655440000", + "pingInterval": 3, + "storage": { + "storageType": "General SSD", + "storageSize": 20 + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "backup": { + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR4", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + }, + "restore": { + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" + }, + "useDefaultNotification": false, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", "dbSecurityGroupIds": [], - "executeBackup": true + "userGroupIds": [], + "useDeletionProtection": false } ``` @@ -893,9 +902,7 @@ PUT /v3.0/db-instances/{dbInstanceId} #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- @@ -909,54 +916,15 @@ DELETE /v3.0/db-instances/{dbInstanceId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 인스턴스 재시작하기 - -```http -POST /v3.0/db-instances/{dbInstanceId}/restart -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- -### DB 인스턴스 강제 재시작하기 -```http -POST /v3.0/db-instances/{dbInstanceId}/force-restart -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |

예시

@@ -967,108 +935,136 @@ POST /v3.0/db-instances/{dbInstanceId}/force-restart "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- ---- - -### DB 인스턴스 시작하기 - -```http -POST /v3.0/db-instances/{dbInstanceId}/start -``` - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### DB 인스턴스 정지하기 +### DB 인스턴스 상세 보기 ```http -POST /v3.0/db-instances/{dbInstanceId}/stop +GET /v3.0/db-instances/{dbInstanceId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| dbPort | Body | Number | DB 포트 | +| dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | +| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | +| supportAuthenticationPlugin | Body | Boolean | 인증 plugin 지원 여부 | +| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | +| needMigration | Body | Boolean | 마이그레이션 필요 여부 | +| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 | ---- - -### DB 인스턴스 백업하기 +
예시 +

-```http -POST /v3.0/db-instances/{dbInstanceId}/backup +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbInstanceType": "MASTER", + "dbInstanceStatus": "BEFORE_CREATE", + "progressStatus": "NONE", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "notificationGroupIds": [], + "useDeletionProtection": false, + "supportAuthenticationPlugin": false, + "needToApplyParameterGroup": false, + "needMigration": false, + "supportDbVersionUpgrade": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" +} ``` -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|--------|----|-----------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| backupName | Body | String | O | 백업을 식별할 수 있는 이름 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### DB 인스턴스 백업 후 내보내기 +### DB 인스턴스 수정하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/backup-to-object-storage +PUT /v3.0/db-instances/{dbInstanceId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|-----------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbPort | Body | Number | X | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbVersion | Body | Enum | X | DB 엔진 버전 코드 | +| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
- 기본값: `false` | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` |
예시

```json { - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "backups/backup_file" + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbPort": 1, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "useDummy": false, + "dbSecurityGroupIds": [], + "executeBackup": false, + "useOnlineFailover": false, + "waitReplicationDelay": false, + "useReadOnly": false } ``` @@ -1077,172 +1073,71 @@ POST /v3.0/db-instances/{dbInstanceId}/backup-to-object-storage #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 인스턴스 복제하기 - -```http -POST /v3.0/db-instances/{dbInstanceId}/replicate -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbPort | Body | Number | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록
- 기본값: 원본 DB 인스턴스 값 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: 원본 DB 인스턴스 값 | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입

  • 예시: `General SSD`
| -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄)
- 기본값: 원본 DB 인스턴스 값 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각
- 예시: `00:00:00`
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간
- 기본값: 원본 DB 인스턴스 값 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

```json { - "dbInstanceName": "db-instance-replicate", - "description": "description", - "dbPort": 11000, - "network": { - "availabilityZone": "kr-pub-a" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true }, - "storage": { - "stroageSize": 100 - } + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### DB 인스턴스 승격하기 +### DB 인스턴스 백업하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/promote +POST /v3.0/db-instances/{dbInstanceId}/backup ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| backupName | Body | String | O | 백업을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | -### 복원 정보 조회 +
예시 +

-```http -GET /v3.0/db-instances/{dbInstanceId}/restoration-info +```json +{ + "backupName": "backupName" +} ``` -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------------|------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| oldestRestorableYmdt | Body | DateTime | 가장 오래된 복원 가능한 시각 | -| latestRestorableYmdt | Body | DateTime | 가장 최신의 복원 가능한 시각 | -| restorableBackups | Body | Array | 복원 가능한 백업 목록 | -| restorableBackups.backup | Body | Object | 백업 정보 객체 | -| restorableBackups.backup.backupId | Body | UUID | 백업의 식별자 | -| restorableBackups.backup.backupName | Body | String | 백업 이름 | -| restorableBackups.backup.useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| restorableBackups.backup.backupSize | Body | Number | 백업 크기 | -| restorableBackups.backup.backupType | Body | Enum | 백업 유형
  • `AUTO`: 자동
  • `MANUAL`: 수동
| -| restorableBackups.backup.backupStatus | Body | Enum | 백업 상태
  • `BACKING_UP`: 백업 중인 경우
  • `COMPLETED`: 백업이 완료된 경우
  • `DELETING`: 백업이 삭제 중인 경우
  • `DELETED`: 백업이 삭제된 경우
  • `ERROR`: 오류가 발생한 경우
| -| restorableBackups.backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| restorableBackups.backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | -| restorableBackups.backup.dbVersion | Body | String | DB 엔진 유형 | -| restorableBackups.backup.failoverCount | Body | Number | 장애 조치 횟수 | -| restorableBackups.backup.binLogFileName | Body | String | 바이너리 로그 파일 이름 | -| restorableBackups.backup.binLogPosition | Body | Number | 바이너리 로그 파일 위치 | -| restorableBackups.backup.createdYmdt | Body | DateTime | 백업 생성 일시 | -| restorableBackups.backup.updatedYmdt | Body | DateTime | 백업 갱신 일시 | -| restorableBackups.restorableBinLogs | Body | Array | 해당 백업을 이용하여 복원 가능한 바이너리 로그 이름 목록 | - - +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "oldestRestorableYmdt": "2023-07-09T16:33:33+09:00", - "latestRestorableYmdt": "2023-07-10T15:44:44+09:00", - "restorableBackups": [ - { - "backup": { - "backupId": "145d889a-fe08-474f-8f58-bde576ff96a9", - "backupName": "example-backup-name", - "backupStatus": "COMPLETED", - "dbInstanceId": "dba1be25-9429-4589-9716-7fb6daad7cb9", - "dbInstanceName": "original-db-instance-name", - "dbVersion": "MYSQL_V8028", - "backupType": "MANUAL", - "backupSize": 8299904, - "useBackupLock": true, - "failoverCount": 0, - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 367916037, - "createdYmdt": "2023-07-10T15:44:44+09:00", - "updatedYmdt": "2023-07-10T15:46:07+09:00" - }, - "restorableBinLogs": [ - "mysql-bin.000001" - ] - } - ] + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1251,39 +1146,32 @@ GET /v3.0/db-instances/{dbInstanceId}/restoration-info --- -### 복원될 마지막 쿼리 조회 +### 백업 정보 보기 ```http -GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query +GET /v3.0/db-instances/{dbInstanceId}/backup-info ``` -#### 공통 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|------|----|-----------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restoreType | Query | Enum | O | 복원 타입 종류

  • `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
  • `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입
| - -#### restoreType이 `TIMESTAMP`인 경우 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-------|----------|----|-------------------------------------------| -| restoreYmdt | Query | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +#### 요청 -#### restoreType이 `BINLOG`인 경우 +이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------|-------|--------|----|--------------------| -| backupId | Query | UUID | O | 복원에 사용할 백업의 식별자 | -| binLogFileName | Query | String | O | 복원에 사용할 바이너리 로그 이름 | -| binLogPosition | Query | Number | O | 복원에 사용할 바이너리 로그 위치 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|----------|--------------------------------------| -| executedYmdt | Body | DateTime | 쿼리 수행 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| lastQuery | Body | String | 마지막 수행 쿼리 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| backupPeriod | Body | Number | 백업 보관 기간(일) | +| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | +| backupRetryCount | Body | Number | 백업 재시도 횟수 | +| replicationRegion | Body | Enum | 백업 복제 리전
- KR4: `한국(대구)` | +| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration
- HALF_AN_HOUR
- ONE_HOUR
- ONE_HOUR_AND_HALF
- TWO_HOURS
- TWO_HOURS_AND_HALF
- THREE_HOURS |
예시

@@ -1295,8 +1183,17 @@ GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query "resultMessage": "SUCCESS", "isSuccessful": true }, - "executedYmdt": "2023-03-17T14:02:29+09:00", - "lastQuery": "INSERT INTO `test`.`test`SET @1='0123'" + "backupPeriod": 1, + "ftwrlWaitTimeout": 1, + "backupRetryCount": 1, + "replicationRegion": "KR4", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] } ``` @@ -1305,303 +1202,100 @@ GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query --- -### 복원 +### 백업 정보 수정하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/restore +PUT /v3.0/db-instances/{dbInstanceId}/backup-info ``` -#### 공통 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restore | Body | Object | O | 복원 정보 객체 | -| restore.restoreType | Body | Enum | O | 복원 타입 종류

  • `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
  • `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입
  • `BACKUP`: 기존에 생성한 백업을 이용한 스냅숏 복원 타입
| -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
  • 최솟값: `3306`
  • 최댓값: `43306`
| -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
  • 기본값: `false`
| -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
  • 기본값: `3`
  • 최솟값: `1`
  • 최댓값: `600`
| -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
  • 기본값: `false`
| -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
  • 기본값: `false`
| -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
  • 예시: `kr-pub-a`
| -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
  • 예시: `General SSD`
| -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
  • 최솟값: `20`
  • 최댓값: `2048`
| -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
  • 최솟값: `0`
  • 최댓값: `730`
| -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
  • 기본값: `1800`
  • 최솟값: `0`
  • 최댓값: `21600`
| -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
  • 기본값: `0`
  • 최솟값: `0`
  • 최댓값: `10`
| -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
  • `KR1`: 한국(판교)
  • `KR2`: 한국(평촌)
  • `JP1`: 일본(도쿄)
| -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
  • 기본값: `true`
| -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
  • 예시: `00:00:00`
| -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
  • `HALF_AN_HOUR`: 30분
  • `ONE_HOUR`: 1시간
  • `ONE_HOUR_AND_HALF`: 1시간 30분
  • `TWO_HOURS`: 2시간
  • `TWO_HOURS_AND_HALF`: 2시간 30분
  • `THREE_HOURS`: 3시간
| -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
기본값: `false` | - -#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|----------|----|------------------------------------------------------------------------------------------------| -| restore.restoreYmdt | Body | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD)
복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능하다. | - - -
예시 -

- -```json -{ - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "TIMESTAMP", - "restoreYmdt": "2023-07-10T15:44:44+09:00" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } -} -``` - -

-
- -#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------------|------|--------|----|--------------------| -| restore.backupId | Body | UUID | O | 복원에 사용할 백업의 식별자 | -| restore.binLog | Body | Object | O | 바이너리 로그 정보 객체 | -| restore.binLog.binLogFileName | Body | String | O | 복원에 사용할 바이너리 로그 이름 | -| restore.binLog.binLogPosition | Body | Number | O | 복원에 사용할 바이너리 로그 위치 | - -* 바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. +#### 요청 +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BINLOG", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36", - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 1234567 - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "backupPeriod": 0, + "ftwrlWaitTimeout": 0, + "backupRetryCount": 0, + "replicationRegion": "KR4", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] } ```

-#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|------|------------------------------|-----------------| -| restore.backupId | Body | UUID | O(restoreType이 `BACKUP`인 경우) | 복원에 사용할 백업의 식별자 | - +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BACKUP", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - - --- -### 오브젝트 스토리지로부터 복원 +### DB 인스턴스 오브젝트 스토리지로 백업 ```http -POST /v3.0/db-instances/restore-from-obs +POST /v3.0/db-instances/{dbInstanceId}/backup-to-object-storage ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|----------------------------------------------------------------------------------------| -| restore | Body | Object | O | 복원 정보 객체 | -| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | -| restore.username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | -| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | -| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
  • 최솟값: `3306`
  • 최댓값: `43306`
| -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
  • 기본값: `false`
| -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
  • 기본값: `3`
  • 최솟값: `1`
  • 최댓값: `600`
| -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
  • 기본값: `false`
| -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
  • 기본값: `false`
| -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
  • 예시: `kr-pub-a`
| -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
  • 예시: `General SSD`
| -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
  • 최솟값: `20`
  • 최댓값: `2048`
| -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
  • 최솟값: `0`
  • 최댓값: `730`
| -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
  • 기본값: `1800`
  • 최솟값: `0`
  • 최댓값: `21600`
| -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
  • 기본값: `0`
  • 최솟값: `0`
  • 최댓값: `10`
| -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
  • `KR1`: 한국(판교)
  • `KR2`: 한국(평촌)
  • `JP1`: 일본(도쿄)
| -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
  • 기본값: `true`
| -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
  • 예시: `00:00:00`
| -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
  • `HALF_AN_HOUR`: 30분
  • `ONE_HOUR`: 1시간
  • `ONE_HOUR_AND_HALF`: 1시간 30분
  • `TWO_HOURS`: 2시간
  • `TWO_HOURS_AND_HALF`: 2시간 30분
  • `THREE_HOURS`: 3시간
| - - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 계정 혹은 IAM 회원 ID | +| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbVersion": "MYSQL_V8028", - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "tenantId":"tenant-id", - "username":"username", - "password":"password", - "targetContainer":"targetContainer", - "objectPath":"objectPath" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" } ``` @@ -1610,30 +1304,9 @@ POST /v3.0/db-instances/restore-from-obs #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - - ---- - - -### DB 인스턴스 삭제 보호 설정 변경하기 - -```http -PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |

예시

@@ -1644,7 +1317,8 @@ PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1653,137 +1327,146 @@ PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection --- -### 고가용성 수정하기 +### 테스트 용 DB 이미지 메타 변경 ```http -PUT /v3.0/db-instances/{dbInstanceId}/high-availability +PUT /v3.0/db-instances/{dbInstanceId}/change-image-meta ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|---------|----|------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 고가용성 다시 시작하기 +### DB 스키마 목록 보기 ```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/resume +GET /v3.0/db-instances/{dbInstanceId}/db-schemas ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSchemas | Body | Array | DB 스키마 목록 | +| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | +| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | +| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- STABLE
- CREATING
- SYNCING
- DELETING
- DELETED | +| dbSchemas.createdYmdt | Body | DateTime | 생성 일시 | -### 고가용성 일시 중지하기 +

예시 +

-```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/pause +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSchemas": [ + { + "dbSchemaId": "550e8400-e29b-41d4-a716-446655440000", + "dbSchemaName": "dbSchemaName-example", + "dbSchemaStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 고가용성 복구하기 +### DB 스키마 생성하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/repair +POST /v3.0/db-instances/{dbInstanceId}/db-schemas ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbSchemaName | Body | String | O | DB 스키마 이름
- 최대 길이: `64`
- 영문 시작, 영문/숫자/_ 허용, 1~64자, MySQL 예약어 불가 | ---- - -### 고가용성 분리하기 +
예시 +

-```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/split +```json +{ + "dbSchemaName": "dbSchemaName-example" +} ``` -#### 요청 +

+
-이 API는 요청 본문을 요구하지 않습니다. +#### 응답 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -#### 응답 +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 데이터 스토리지 정보 보기 +### DB 스키마 삭제하기 ```http -GET /v3.0/db-instances/{dbInstanceId}/storage-info +DELETE /v3.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbSchemaId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------|------|--------|--------------------------------------------------------------------------------------| -| storageType | Body | Enum | 데이터 스토리지 타입 | -| storageSize | Body | Number | 데이터 스토리지 크기(GB) | -| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- `DETACHED`: 부착되지 않음
- `ATTACHED`: 부착됨
- `DELETED`: 삭제됨 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -1795,66 +1478,43 @@ GET /v3.0/db-instances/{dbInstanceId}/storage-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageType": "General SSD", - "storageSize": 20, - "storageStatus": "ATTACHED" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- ---- - -### 데이터 스토리지 정보 수정하기 - -```http -PUT /v3.0/db-instances/{dbInstanceId}/storage-info -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: 현재값
- 최댓값: `2048` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### 백업 정보 보기 +### DB 사용자 목록 보기 ```http -GET /v3.0/db-instances/{dbInstanceId}/backup-info +GET /v3.0/db-instances/{dbInstanceId}/db-users ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|---------|----------------| -| backupPeriod | Body | Number | 백업 보관 기간(일) | -| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | -| backupRetryCount | Body | Number | 백업 재시도 횟수 | -| replicationRegion | Body | Enum | 백업 복제 리전 | -| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | -| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbUsers | Body | Array | DB 사용자 목록 | +| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | +| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | +| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | +| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- STABLE
- CREATING
- UPDATING
- SYNCING
- DELETING
- DELETED | +| dbUsers.createdYmdt | Body | DateTime | 생성 일시 | +| dbUsers.updatedYmdt | Body | DateTime | 수정 일시 | +| dbUsers.authenticationPlugin | Body | Enum | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| dbUsers.tlsOption | Body | Enum | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |
예시

@@ -1866,15 +1526,17 @@ GET /v3.0/db-instances/{dbInstanceId}/backup-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "backupPeriod": 1, - "ftwrlWaitTimeout": 1800, - "backupRetryCount": 0, - "replicationRegion": null, - "useBackupLock": false, - "backupSchedules": [ + "dbUsers": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" + "dbUserId": "550e8400-e29b-41d4-a716-446655440000", + "dbUserName": "dbUserName-example", + "host": "host-example", + "authorityType": "CUSTOM", + "dbUserStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" } ] } @@ -1883,42 +1545,37 @@ GET /v3.0/db-instances/{dbInstanceId}/backup-info

- --- -### 백업 정보 수정하기 +### DB 사용자 생성하기 ```http -PUT /v3.0/db-instances/{dbInstanceId}/backup-info +POST /v3.0/db-instances/{dbInstanceId}/db-users ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------------------------|------|---------|----|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | -| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | -| replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄) | -| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| host | Body | String | O | DB 사용자 계정의 호스트명
- 최대 길이: `45` | +| authorityType | Body | Enum | O | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |
예시

```json { - "backupPeriod": 5, - "useBackupLock": true, - "backupSchedules": [ - { - "backupWndBgnTime": "01:00:00", - "backupWndDuration": "TWO_HOURS" - } - ] + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "host": "host-example", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" } ``` @@ -1927,39 +1584,49 @@ PUT /v3.0/db-instances/{dbInstanceId}/backup-info #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### 네트워크 정보 보기 +### DB 사용자 삭제하기 ```http -GET /v3.0/db-instances/{dbInstanceId}/network-info +DELETE /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbUserId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------------------------------------------------------------------------------------------------------------------------------| -| availabilityZone | Body | Enum | DB 인스턴스를 생성할 가용성 영역 | -| subnet | Body | Object | 서브넷 객체 | -| subnet.subnetId | Body | UUID | 서브넷의 식별자 | -| subnet.subnetName | Body | UUID | 서브넷을 식별할 수 있는 이름 | -| subnet.subnetCidr | Body | UUID | 서브넷의 CIDR | -| endPoints | Body | Array | 접속 정보 목록 | -| endPoints.domain | Body | String | 도메인 | -| endPoints.ipAddress | Body | String | IP 주소 | -| endPoints.endPointType | Body | Enum | 접속 정보 타입
-`EXTERNAL`: 외부 접속 도메인
-`INTERNAL`: 내부 접속 도메인
-`PUBLIC`: (Deprecated) 외부 접속 도메인
-`PRIVATE`: (Deprecated) 내부 접속 도메인 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -1971,19 +1638,7 @@ GET /v3.0/db-instances/{dbInstanceId}/network-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "availabilityZone": "kr-pub-a", - "subnet": { - "subnetId": "bd453789-34ae-416c-9f78-05b9e43a46be", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/16" - }, - "endPoints": [ - { - "domain": "ea548a78-d85f-43b4-8ddf-c88d999b9905.internal.kr1.mysql.rds.nhncloudservice.com", - "ipAddress": "192.168.0.2", - "endPointType": "INTERNAL" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1992,55 +1647,43 @@ GET /v3.0/db-instances/{dbInstanceId}/network-info --- -### 네트워크 정보 수정하기 +### DB 사용자 수정하기 ```http -PUT /v3.0/db-instances/{dbInstanceId}/network-info +PUT /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbUserId | URL | UUID | O | | +| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| authorityType | Body | Enum | X | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | ---- - -### DB 사용자 목록 보기 +

예시 +

-```http -GET /v3.0/db-instances/{dbInstanceId}/db-users +```json +{ + "dbPassword": "dbPassword", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|-----------------------------------------------------------------------------------------------------------------------------| -| dbUsers | Body | Array | DB 사용자 목록 | -| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | -| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | -| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | -| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `UPDATING`: 수정 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbUsers.authenticationPlugin | Body | Enum | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| dbUsers.tlsOption | Body | Enum | TLS Option
- NONE
- SSL
- X509 | -| dbUsers.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbUsers.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -2052,19 +1695,7 @@ GET /v3.0/db-instances/{dbInstanceId}/db-users "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbUsers": [ - { - "dbUserId": "4b3d530b-fd02-4d59-a620-83d019a67bbb", - "dbUserName": "db-user", - "host": "%", - "authorityType": "DDL", - "dbUserStatus": "STABLE", - "authenticationPlugin": "NATIVE", - "tlsOption": "NONE", - "createdYmdt": "2023-03-17T14:02:29+09:00", - "updatedYmdt": "2023-03-17T14:02:31+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2073,38 +1704,25 @@ GET /v3.0/db-instances/{dbInstanceId}/db-users --- -### DB 사용자 생성하기 +### DB 인스턴스 삭제 보호 설정 변경 ```http -POST /v3.0/db-instances/{dbInstanceId}/db-users +PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|-------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserName | Body | String | O | DB 사용자 계정 이름
- 최소 길이: `1`
- 최대 길이: `32` | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `16` | -| host | Body | String | O | DB 사용자 계정의 호스트명
- 예시: `1.1.1.%` | -| authorityType | Body | Enum | O | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | - -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 설정할 수 있습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 |

예시

```json { - "dbUserName": "db-user", - "dbPassword": "password", - "host": "1.1.1.%", - "authorityType": "CRUD", - "authenticationPlugin": "NATIVE", - "tlsOption": "NONE" + "useDeletionProtection": false } ``` @@ -2113,99 +1731,881 @@ POST /v3.0/db-instances/{dbInstanceId}/db-users #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### DB 사용자 수정하기 +### DB 인스턴스 강제 재시작하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/force-restart +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 고가용성 수정하기 + +```http +PUT /v3.0/db-instances/{dbInstanceId}/high-availability +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | + +

예시 +

+ +```json +{ + "useHighAvailability": false, + "pingInterval": 1 +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 일시 중지하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/pause +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 복구하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/repair +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 다시 시작하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/resume +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 분리하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/split +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 로그 파일 목록 보기 + +```http +GET /v3.0/db-instances/{dbInstanceId}/log-files +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| logFiles | Body | Array | 로그 파일 목록 | +| logFiles.logFileName | Body | String | 로그 파일 이름 | +| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- ERROR
- BINLOG
- GENERAL
- SLOW_QUERY
- AUDIT
- BACKUP | +| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | +| logFiles.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "logFiles": [ + { + "logFileName": "logFileName-example", + "logFileType": "ERROR", + "logFileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### 로그 파일 내보내기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/log-files/export +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| logFileNames | Body | Array | O | 로그 파일 이름 목록 | +| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 회원 또는 IAM 멤버 ID | +| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | + +
예시 +

+ +```json +{ + "logFileNames": [], + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 네트워크 정보 보기 + +```http +GET /v3.0/db-instances/{dbInstanceId}/network-info +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| availabilityZone | Body | String | DB 인스턴스를 생성할 가용성 영역 | +| subnet | Body | Object | 서브넷 객체 | +| subnet.subnetId | Body | UUID | 서브넷의 식별자 | +| subnet.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnet.subnetCidr | Body | String | 서브넷의 CIDR | +| endPoints | Body | Array | 접속 정보 목록 | +| endPoints.domain | Body | String | 도메인 | +| endPoints.ipAddress | Body | String | IP 주소 | +| endPoints.endPointType | Body | String | 접속 정보 타입 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "availabilityZone": "kr-pub-a", + "subnet": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example" + }, + "endPoints": [ + { + "domain": "domain-example", + "ipAddress": "ipAddress-example", + "endPointType": "endPointType-example" + } + ] +} +``` + +

+
+ +--- + +### 네트워크 정보 수정하기 ```http -PUT /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +PUT /v3.0/db-instances/{dbInstanceId}/network-info ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|-------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | -| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `16` | -| authorityType | Body | Enum | X | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 수정할 수 있습니다. -> `authenticationPlugin`의 값은 `dbPassword`와 동시에 수정을 해야 합니다. +
예시 +

+ +```json +{ + "usePublicAccess": false +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

```json { - "authorityType": "DDL" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

+--- + +### DB 인스턴스 승격하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/promote +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### DB 사용자 삭제하기 +### DB 인스턴스 복제하기 ```http -DELETE /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +POST /v3.0/db-instances/{dbInstanceId}/replicate +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부 | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | X | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | X | 데이터 스토리지 타입 | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| backup | Body | Object | X | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +
예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDefaultNotification": false, + "useDeletionProtection": false, + "network": { + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "storage": { + "storageType": "General SSD", + "storageSize": 20 + }, + "backup": { + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 0, + "replicationRegion": "KR4", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + } +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 인스턴스 재시작하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/restart +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` | + +
예시 +

+ +```json +{ + "useOnlineFailover": false, + "executeBackup": false, + "waitReplicationDelay": false, + "useReadOnly": false +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 인스턴스 복원 정보 조회 + +```http +GET /v3.0/db-instances/{dbInstanceId}/restoration-info +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 복원될 마지막 쿼리 조회 + +```http +GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| executedYmdt | Body | DateTime | 쿼리 수행 일시 | +| lastQuery | Body | String | 마지막 수행 쿼리 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "executedYmdt": "2023-12-31T15:00:00+09:00", + "lastQuery": "lastQuery-example" +} +``` + +

+
+ +--- + +### DB 인스턴스 복원 + +```http +POST /v3.0/db-instances/{dbInstanceId}/restore +``` + +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | X | DB 포트 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| imageId | Body | UUID | X | 이미지의 식별자 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.restoreType | Body | Enum | O | 복원 타입
- TIMESTAMP: `복원 가능한 시간 이내의 시간을 이용한 시점 복원`
- BINLOG: `복원 가능한 바이너리 로그 위치를 이용한 시점 복원`
- BACKUP: `기존에 생성한 백업을 이용한 스냅숏 복원` | +| restore.binLog.binLogFileName | Body | String | X | 복원에 사용할 바이너리 로그 이름 | +| restore.binLog.binLogPosition | Body | Object | X | 복원에 사용할 바이너리 로그 위치 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | + +#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.restoreYmdt | Body | DateTime | X | DB 인스턴스 복원 일시 | + +복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능합니다. + +#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 | +| restore.binLog | Body | Object | X | 복원에 사용할 바이너리 로그 정보 객체 | + +바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. + +#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 | + +
예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "useHighAvailability": false, + "imageId": "550e8400-e29b-41d4-a716-446655440000", + "pingInterval": 3, + "storage": { + "storageType": "General SSD", + "storageSize": 20 + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "backup": { + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR4", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + }, + "restore": { + "restoreType": "TIMESTAMP", + "binLog": { + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + } + } + }, + "useDefaultNotification": false, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDeletionProtection": false +} ``` -#### 요청 +

+
+ +#### 응답 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### DB 스키마 목록 보기 +### DB 인스턴스 시작하기 ```http -GET /v3.0/db-instances/{dbInstanceId}/db-schemas +POST /v3.0/db-instances/{dbInstanceId}/start ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|------------------------------------------------------------------------------------------------------| -| dbSchemas | Body | Array | DB 스키마 목록 | -| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | -| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | -| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbSchemas.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -2217,14 +2617,7 @@ GET /v3.0/db-instances/{dbInstanceId}/db-schemas "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSchemas": [ - { - "dbSchemaId": "7c9a94b8-86c1-435d-8af2-82a5e9d53fd4", - "dbSchemaName": "schema", - "dbSchemaStatus": "STABLE", - "createdYmdt": "2023-03-20T13:37:45+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2233,75 +2626,66 @@ GET /v3.0/db-instances/{dbInstanceId}/db-schemas --- -### DB 스키마 생성하기 +### DB 인스턴스 정지하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/db-schemas +POST /v3.0/db-instances/{dbInstanceId}/stop ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|--------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaName | Body | String | O | DB 스키마 이름 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -### DB 스키마 삭제하기 +

예시 +

-```http -DELETE /v3.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaId | URL | UUID | O | DB 스키마의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 로그 파일 목록 보기 +### 스토리지 정보 보기 ```http -GET /v3.0/db-instances/{dbInstanceId}/log-files +GET /v3.0/db-instances/{dbInstanceId}/storage-info ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|-------|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileTypes | Query | Array | X | 로그 파일 타입 종류 목록
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| logFiles | Body | Array | 로그 파일 목록 | -| logFiles.logFileName | Body | String | 로그 파일 이름 | -| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | -| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | -| logFiles.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageType | Body | Enum | 데이터 스토리지 타입 | +| storageSize | Body | Number | 데이터 스토리지 크기(GB) | +| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- DELETED: `삭제됨`
- PENDING_DELETION: `삭제 유예됨`
- DELETION_RESERVED: `삭제 예약됨 (스냅샷 정리 대기)`
- DETACHED: `해제됨`
- ATTACHED: `할당됨` |
예시

@@ -2313,14 +2697,9 @@ GET /v3.0/db-instances/{dbInstanceId}/log-files "resultMessage": "SUCCESS", "isSuccessful": true }, - "logFiles": [ - { - "logFileName": "xtra_full.log-20230317", - "logFileType": "BACKUP", - "logFileSize": 4096, - "createdYmdt": "2023-03-17T14:02:29+09:00" - } - ] + "storageType": "General SSD", + "storageSize": 1, + "storageStatus": "DELETED" } ``` @@ -2329,35 +2708,25 @@ GET /v3.0/db-instances/{dbInstanceId}/log-files --- -### 로그 파일 내보내기 +### 스토리지 정보 수정하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/log-files/export +PUT /v3.0/db-instances/{dbInstanceId}/storage-info ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|--------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileNames | Body | Array | O | 로그 파일 이름 목록
- 최소 크기: `1` | -| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최댓값: `2048` |

예시

```json { - "logFileNames": ["xtra_full.log-20230317"], - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "logs/backup" + "storageSize": 1 } ``` @@ -2366,9 +2735,26 @@ POST /v3.0/db-instances/{dbInstanceId}/log-files/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -2394,30 +2780,22 @@ GET /v3.0/backups 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|--------|----|----------------------------------------------------------| -| page | Query | Number | O | 조회할 목록의 페이지
- 최솟값: `1` | -| size | Query | Number | O | 조회할 목록의 페이지 크기
- 최솟값: `1`
- 최댓값: `100` | -| backupType | Query | Enum | X | 백업 유형
- `AUTO`: 자동
- `MANUAL`: 수동
- 기본값: 전체 | -| dbInstanceId | Query | UUID | X | 원본 DB 인스턴스의 식별자 | -| dbVersion | Query | Enum | X | DB 엔진 유형 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|-----------------------------------| -| totalCounts | Body | Number | 전체 백업 목록 수 | -| backups | Body | Array | 백업 목록 | -| backups.backupId | Body | UUID | 백업의 식별자 | -| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | -| backups.backupStatus | Body | Enum | 백업의 현재 상태 | -| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| backups.dbVersion | Body | Enum | DB 엔진 유형 | -| backups.utilVersion | Body | String | 백업에 사용된 xtrabackup 유틸리티 버전 | -| backups.backupType | Body | Enum | 백업 유형 | -| backups.backupSize | Body | Number | 백업의 크기(Byte) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 백업 목록 수 | +| backups | Body | Array | 백업 목록 | +| backups.backupId | Body | UUID | 백업의 식별자 | +| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | +| backups.backupStatus | Body | Enum | 백업의 현재 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| backups.dbVersion | Body | Enum | DB 엔진 유형 | +| backups.utilVersion | Body | String | 유틸리티 버전 | +| backups.backupType | Body | Enum | 백업 유형
- AUTO
- MANUAL | +| backups.backupSize | Body | Number | 백업의 크기(Byte) | +| backups.createdYmdt | Body | DateTime | 생성 일시 | +| backups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -2432,16 +2810,16 @@ GET /v3.0/backups "totalCounts": 1, "backups": [ { - "backupId": "0017f136-3e01-4530-94aa-20661afe6632", - "backupName": "backup", - "backupStatus": "COMPLETED", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd", - "dbVersion": "MYSQL_V8028", - "utilVersion": "8.0.28", + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "utilVersion": "utilVersion-example", "backupType": "AUTO", - "backupSize": 4996786, - "createdYmdt": "2023-02-21T00:35:00+09:00", - "updatedYmdt": "2023-02-22T00:35:32+09:00" + "backupSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -2452,6 +2830,45 @@ GET /v3.0/backups --- +### 백업 삭제하기 + +```http +DELETE /v3.0/backups/{backupId} +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + ### 백업 내보내기 ```http @@ -2460,25 +2877,25 @@ POST /v3.0/backups/{backupId}/export #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|-----------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 계정 혹은 IAM 회원 ID | +| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 |
예시

```json { - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "backups/backup_file" + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" } ``` @@ -2487,12 +2904,26 @@ POST /v3.0/backups/{backupId}/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -> [주의] -> 수동 백업의 경우 백업이 수행된 DB 인스턴스가 존재하지 않으면, 백업을 오브젝트 스토리지로 내보낼 수 없습니다. +

+
--- @@ -2504,50 +2935,56 @@ POST /v3.0/backups/{backupId}/restore #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------|------|---------|----|---------------------------------------------------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Integer | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 ||network|Body|Object|O|네트워크 정보 객체| -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄) | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json - { - "dbInstanceName": "db-instance-restore", - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbPort": 10000, - "parameterGroupId": "132d383c-38e3-468a-a826-5e9a8fff15d0", + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, "availabilityZone": "kr-pub-a" }, "storage": { @@ -2555,10 +2992,14 @@ POST /v3.0/backups/{backupId}/restore "storageSize": 20 }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 1800, + "replicationRegion": "KR4", + "useBackupLock": true, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", + "backupWndBgnTime": "backupWndBgnTime-example", "backupWndDuration": "HALF_AN_HOUR" } ] @@ -2571,31 +3012,26 @@ POST /v3.0/backups/{backupId}/restore #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -### 백업 삭제하기 +

예시 +

-```http -DELETE /v3.0/backups/{backupId} +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------|-----|------|----|---------| -| backupId | URL | UUID | O | 백업의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -2622,15 +3058,15 @@ GET /v3.0/db-security-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-----------------------------------| -| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | -| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | +| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -2644,12 +3080,12 @@ GET /v3.0/db-security-groups }, "dbSecurityGroups": [ { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", "progressStatus": "NONE", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2022-02-19T19:18:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -2660,42 +3096,59 @@ GET /v3.0/db-security-groups --- -### DB 보안 그룹 상세 보기 +### DB 보안 그룹 생성하기 ```http -GET /v3.0/db-security-groups/{dbSecurityGroupId} +POST /v3.0/db-security-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` | +| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | +| rules.direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| rules.etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| rules.port | Body | Object | O | 포트 객체 | +| rules.port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| rules.cidr | Body | String | O | CIDR | +| rules.description | Body | String | X | 보안 그룹 규칙에 대한 추가 정보 | + +

예시 +

+ +```json +{ + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example", + "rules": [ + { + "direction": "INGRESS", + "etherType": "IPV4", + "port": { + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 + }, + "cidr": "cidr-example", + "description": "description-example" + } + ] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|----------|--------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| rules | Body | Array | DB 보안 그룹 규칙 목록 | -| rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | -| rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.port | Body | Object | 포트 객체 | -| rules.port.portType | Body | Enum | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다.
- `PORT`: 지정된 포트값으로 설정됩니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | 최소 포트 범위 | -| rules.port.maxPort | Body | Number | 최대 포트 범위 | -| rules.cidr | Body | String | 허용할 트래픽의 원격 소스 | -| rules.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| rules.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 |
예시

@@ -2707,30 +3160,7 @@ GET /v3.0/db-security-groups/{dbSecurityGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSecurityGroup": { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", - "progressStatus": "NONE", - "rules": [ - { - "ruleId": "17c88ef6-95f1-4678-84f9-fee1b22e250d", - "description": "description", - "direction": "INGRESS", - "etherType": "IPV4", - "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 - }, - "cidr": "0.0.0.0/0", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } - ], - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2739,131 +3169,159 @@ GET /v3.0/db-security-groups/{dbSecurityGroupId} --- -### DB 보안 그룹 생성하기 +### DB 보안 그룹 삭제하기 ```http -POST /v3.0/db-security-groups +DELETE /v3.0/db-security-groups/{dbSecurityGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | -| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | -| rules.description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | -| rules.port | Body | Object | O | 포트 객체 | -| rules.port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. - -

예시 -

- -```json -{ - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", - "rules": [ - { - "direction": "INGRESS", - "etherType": "IPV4", - "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 - }, - "cidr": "0.0.0.0/0" - } - ] -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|------|---------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### DB 보안 그룹 수정하기 +### DB 보안 그룹 상세 보기 ```http -PUT /v3.0/db-security-groups/{dbSecurityGroupId} +GET /v3.0/db-security-groups/{dbSecurityGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|-----------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroup | Body | Object | DB 보안 그룹 | +| dbSecurityGroup.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroup.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| dbSecurityGroup.description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| dbSecurityGroup.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| dbSecurityGroup.rules | Body | Array | DB 보안 그룹 규칙 목록 | +| dbSecurityGroup.rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | +| dbSecurityGroup.rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | +| dbSecurityGroup.rules.direction | Body | Enum | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| dbSecurityGroup.rules.etherType | Body | Enum | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| dbSecurityGroup.rules.port | Body | Object | 포트 객체 | +| dbSecurityGroup.rules.port.portType | Body | Enum | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| dbSecurityGroup.rules.port.minPort | Body | Number | 최소 포트 범위 | +| dbSecurityGroup.rules.port.maxPort | Body | Number | 최대 포트 범위 | +| dbSecurityGroup.rules.cidr | Body | String | CIDR | +| dbSecurityGroup.rules.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroup.rules.updatedYmdt | Body | DateTime | 수정 일시 | +| dbSecurityGroup.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroup.updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSecurityGroup": { + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", + "progressStatus": "NONE", + "rules": [ + { + "ruleId": "550e8400-e29b-41d4-a716-446655440000", + "description": "description-example", + "direction": "INGRESS", + "etherType": "IPV4", + "port": { + "portType": "ALL", + "minPort": 1, + "maxPort": 1 + }, + "cidr": "cidr-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } } ```

-#### 응답 +--- + +### DB 보안 그룹 수정하기 + +```http +PUT /v3.0/db-security-groups/{dbSecurityGroupId} +``` + +#### 요청 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example" } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. --- -### DB 보안 그룹 삭제하기 +### DB 보안 그룹 규칙 삭제하기 ```http -DELETE /v3.0/db-security-groups/{dbSecurityGroupId} +DELETE /v3.0/db-security-groups/{dbSecurityGroupId}/rules ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleIds | Query | String | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -2874,7 +3332,8 @@ DELETE /v3.0/db-security-groups/{dbSecurityGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2891,20 +3350,17 @@ POST /v3.0/db-security-groups/{dbSecurityGroupId}/rules #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |

예시

@@ -2914,11 +3370,12 @@ POST /v3.0/db-security-groups/{dbSecurityGroupId}/rules "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "PORT", - "minPort": 10000, - "maxPort": 10000 + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -2927,9 +3384,26 @@ POST /v3.0/db-security-groups/{dbSecurityGroupId}/rules #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -2941,21 +3415,18 @@ PUT /v3.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleId | URL | UUID | O | DB 보안 그룹 규칙의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |
예시

@@ -2965,9 +3436,12 @@ PUT /v3.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "DB_PORT" + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -2976,32 +3450,26 @@ PUT /v3.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | ---- - -### DB 보안 그룹 규칙 삭제하기 +

예시 +

-```http -DELETE /v3.0/db-security-groups/{dbSecurityGroupId}/rules +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|-------|----|---------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleIds | Query | Array | O | DB 보안 그룹 규칙의 식별자 목록 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -3017,22 +3485,18 @@ GET /v3.0/parameter-groups 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------|-------|------|----|----------| -| dbVersion | Query | Enum | X | DB 엔진 유형 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-------------------------------------------------------------------| -| parameterGroups | Body | Array | 파라미터 그룹 목록 | -| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameterGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroups | Body | Array | 파라미터 그룹 목록 | +| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameterGroups.createdYmdt | Body | DateTime | 생성 일시 | +| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3046,13 +3510,13 @@ GET /v3.0/parameter-groups }, "parameterGroups": [ { - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", "parameterGroupStatus": "STABLE", - "createdYmdt": "2023-02-31T15:28:17+09:00", - "updatedYmdt": "2023-02-31T15:28:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3061,44 +3525,41 @@ GET /v3.0/parameter-groups

- --- -### 파라미터 그룹 상세 보기 +### 파라미터 그룹 생성하기 ```http -GET /v3.0/parameter-groups/{parameterGroupId} +POST /v3.0/parameter-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` | +| dbVersion | Body | Enum | O | DB 엔진 유형 | + +
예시 +

+ +```json +{ + "parameterGroupName": "parameterGroupName", + "description": "description-example", + "dbVersion": "MYSQL_V8036" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|--------------------------------------------------------------------------------------------------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameters | Body | Array | 파라미터 목록 | -| parameters.parameterId | Body | UUID | 파라미터 식별자 | -| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- `CLIENT`: client
- `MYSQL`: mysql
- `MYSQLD`: mysqld | -| parameters.parameterName | Body | String | 파라미터 이름 | -| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | -| parameters.value | Body | String | 현재 설정된 값 | -| parameters.defaultValue | Body | String | 기본값 | -| parameters.allowedValue | Body | String | 허용된 값 | -| parameters.updateType | Body | Enum | 수정 타입
- `VARIABLE`: 언제든 수정 가능
- `CONSTANT`: 수정 불가능
- `INIT_VARIABLE`: DB 인스턴스 생성 시에만 수정 가능 | -| parameters.applyType | Body | Enum | 적용 타입
- `SESSION`: 세션 적용
- `FILE`: 설정 파일 적용(재시작 필요)
- `BOTH`: 전체(재시작 필요) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |
예시

@@ -3110,91 +3571,130 @@ GET /v3.0/parameter-groups/{parameterGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", - "parameterGroupStatus": "STABLE", - "parameters": [ - { - "parameterId": "fa040b5e-f29f-46de-8f0d-bba4cb82887a", - "parameterFileGroup": "client", - "parameterName": "socket", - "fileParameterName": "socket", - "value": "/home/tcrds/db/mysql/tmp/mysql.sock", - "defaultValue": "/home/tcrds/db/mysql/tmp/mysql.sock", - "allowedValue": "", - "updateType": "CONSTANT", - "applyType": "BOTH" - } - ], - "createdYmdt": "2023-03-13T11:02:28+09:00", - "updatedYmdt": "2023-03-13T11:02:28+09:00" + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ```

+--- + +### 파라미터 그룹 삭제하기 + +```http +DELETE /v3.0/parameter-groups/{parameterGroupId} +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 생성하기 +### 파라미터 그룹 상세 보기 ```http -POST /v3.0/parameter-groups +GET /v3.0/parameter-groups/{parameterGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameters | Body | Array | 파라미터 목록 | +| parameters.parameterId | Body | UUID | 파라미터의 식별자 | +| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- CLIENT
- MYSQL
- MYSQLD | +| parameters.parameterName | Body | String | 파라미터 이름 | +| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | +| parameters.value | Body | String | 현재 설정된 값 | +| parameters.defaultValue | Body | String | 기본값 | +| parameters.allowedValue | Body | String | 허용된 값 | +| parameters.updateType | Body | Enum | 수정 타입
- VARIABLE
- CONSTANT
- INIT_VARIABLE | +| parameters.applyType | Body | Enum | 적용 타입
- BOTH
- SESSION
- FILE | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "parameterGroupName": "parameter-group", - "dbVersion": "MYSQL_V8028" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "parameterGroupStatus": "STABLE", + "parameters": [ + { + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "parameterFileGroup": "CLIENT", + "parameterName": "parameterName-example", + "fileParameterName": "fileParameterName-example", + "value": "value-example", + "defaultValue": "defaultValue-example", + "allowedValue": "allowedValue-example", + "updateType": "VARIABLE", + "applyType": "BOTH" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | - --- -### 파라미터 그룹 복사하기 +### 파라미터 그룹 수정하기 ```http -POST /v3.0/parameter-groups/{parameterGroupId}/copy +PUT /v3.0/parameter-groups/{parameterGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "parameterGroupName": "parameter-group-copy", - "description": "copy" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -3203,32 +3703,31 @@ POST /v3.0/parameter-groups/{parameterGroupId}/copy #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 수정하기 +### 파라미터 그룹 복사하기 ```http -PUT /v3.0/parameter-groups/{parameterGroupId} +POST /v3.0/parameter-groups/{parameterGroupId}/copy ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |

예시

```json { - "parameterGroupName": "parameter-group" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -3237,7 +3736,9 @@ PUT /v3.0/parameter-groups/{parameterGroupId} #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |

예시

@@ -3248,7 +3749,8 @@ PUT /v3.0/parameter-groups/{parameterGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3265,12 +3767,12 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/parameters #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------------|------|--------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | -| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | -| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | +| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | +| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 |

예시

@@ -3279,8 +3781,8 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/parameters { "modifiedParameters": [ { - "parameterId": "3abac558-7274-44e1-9f4a-f100f53f67ba", - "value": "0" + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "value": "value-example" } ] } @@ -3293,39 +3795,49 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/parameters 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

+--- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} +### 파라미터 그룹 재설정하기 + +```http +PUT /v3.0/parameter-groups/{parameterGroupId}/reset ``` -

-
+#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 재설정하기 +## 사용자 그룹 + +### 사용자 그룹 목록 보기 ```http -PUT /v3.0/parameter-groups/{parameterGroupId}/reset +GET /v3.0/user-groups ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroups.createdYmdt | Body | DateTime | 생성 일시 | +| userGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3336,7 +3848,15 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/reset "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "userGroups": [ + { + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -3345,23 +3865,39 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/reset --- -### 파라미터 그룹 삭제하기 +### 사용자 그룹 생성하기 ```http -DELETE /v3.0/parameter-groups/{parameterGroupId} +POST /v3.0/user-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록 | +| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` | + +

예시 +

+ +```json +{ + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAllYN": false +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +

+
#### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 |
예시

@@ -3372,7 +3908,8 @@ DELETE /v3.0/parameter-groups/{parameterGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "userGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3381,51 +3918,23 @@ DELETE /v3.0/parameter-groups/{parameterGroupId} --- -## 사용자 그룹 - -### 사용자 그룹 목록 보기 +### 사용자 그룹 삭제하기 ```http -GET /v3.0/user-groups +DELETE /v3.0/user-groups/{userGroupId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|-----------------------------------| -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| userGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - -

예시 -

+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "userGroups": [ - { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" - } - ] -} -``` +#### 응답 -

-
+이 API는 응답 본문을 반환하지 않습니다. --- @@ -3439,21 +3948,21 @@ GET /v3.0/user-groups/{userGroupId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|----------|-----------------------------------------------------------------------------------------------------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
`ENTIRE`: 프로젝트 멤버 전체를 포함하는 사용자 그룹
`INDIVIDUAL_MEMBER`: 특정 프로젝트 멤버를 포함하는 사용자 그룹 | -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
- ENTIRE
- INDIVIDUAL_MEMBER | +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3465,65 +3974,21 @@ GET /v3.0/user-groups/{userGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "userGroupTypeCode": "INDIVIDUAL_MEMBER", + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "userGroupTypeCode": "ENTIRE", "members": [ { - "memberId": "1321e759-2ef3-4b85-9921-b13e918b24b5" + "memberId": "550e8400-e29b-41d4-a716-446655440000" } ], - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" -} -``` - -

-
- ---- - -### 사용자 그룹 생성하기 - -```http -POST /v3.0/user-groups -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|-------------------------------------------------------------| -| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록
`selectAllYN`이 true인 경우 해당 필드 값은 무시됨 | -| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 유무
true인 경우 해당 그룹은 전체 멤버에 대해 설정됨 | - -
예시 -

- -```json -{ - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5" - ] -} -``` - -```json -{ - "userGroupName": "dev-team", - "selectAllYN":true + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` -

-
- -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------------|------|------|-------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +

+
--- @@ -3535,23 +4000,21 @@ PUT /v3.0/user-groups/{userGroupId} #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|----------------------------------------------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | -| userGroupName | Body | String | X | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | -| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 유무
true인 경우 해당 그룹은 전체 멤버에 대해 설정됨 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | +| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` |
예시

```json { - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5", - "f9064b09-2b15-442e-a4b0-3a5a2754555e" - ] + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAllYN": false } ``` @@ -3562,39 +4025,32 @@ PUT /v3.0/user-groups/{userGroupId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- -### 사용자 그룹 삭제하기 +## 알림 그룹 + +### 알림 그룹 목록 보기 ```http -DELETE /v3.0/user-groups/{userGroupId} +GET /v3.0/notification-groups ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroups | Body | Array | 알림 그룹 목록 | +| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | +| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | +| notificationGroups.createdYmdt | Body | DateTime | 생성 일시 | +| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3605,7 +4061,18 @@ DELETE /v3.0/user-groups/{userGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "notificationGroups": [ + { + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, + "notifySms": false, + "isEnabled": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -3614,30 +4081,45 @@ DELETE /v3.0/user-groups/{userGroupId} --- -## 알림 그룹 - -### 알림 그룹 목록 보기 +### 알림 그룹 생성하기 ```http -GET /v3.0/notification-groups +POST /v3.0/notification-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | +| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | + +

예시 +

+ +```json +{ + "notificationGroupName": "notificationGroupName", + "notifyEmail": true, + "notifySms": true, + "isEnabled": true, + "dbInstanceIds": [], + "userGroupIds": [] +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------------|------|----------|-----------------------------------| -| notificationGroups | Body | Array | 알림 그룹 목록 | -| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | -| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | -| notificationGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 |
예시

@@ -3649,17 +4131,7 @@ GET /v3.0/notification-groups "resultMessage": "SUCCESS", "isSuccessful": true }, - "notificationGroups": [ - { - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, - "notifySms": false, - "isEnabled": true, - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" - } - ] + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3668,6 +4140,26 @@ GET /v3.0/notification-groups --- +### 알림 그룹 삭제하기 + +```http +DELETE /v3.0/notification-groups/{notificationGroupId} +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + ### 알림 그룹 상세 보기 ```http @@ -3678,27 +4170,27 @@ GET /v3.0/notification-groups/{notificationGroupId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------------|------|----------|-----------------------------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notifySms | Body | Boolean | SMS 알림 여부 | -| isEnabled | Body | Boolean | 활성화 여부 | -| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notifySms | Body | Boolean | SMS 알림 여부 | +| isEnabled | Body | Boolean | 활성화 여부 | +| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -3710,25 +4202,25 @@ GET /v3.0/notification-groups/{notificationGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, "notifySms": false, - "isEnabled": true, + "isEnabled": false, "dbInstances": [ { - "dbInstanceId": "ed5cb985-526f-4c54-9ae0-40288593de65", - "dbInstanceName": "database" + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example" } ], "userGroups": [ { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team" + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example" } ], - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -3737,37 +4229,35 @@ GET /v3.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 생성하기 +### 알림 그룹 수정하기 ```http -POST /v3.0/notification-groups +PUT /v3.0/notification-groups/{notificationGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------------| -| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | -| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | -| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | -| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | +| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `false` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `false` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `false` | +| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 |

예시

```json { - "notificationGroupName": "dev-team-noti", + "notificationGroupName": "notificationGroupName-example", "notifyEmail": false, - "isEnable": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65" - ], - "userGroupIds": [ - "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0" - ] + "notifySms": false, + "isEnabled": false, + "dbInstanceIds": [], + "userGroupIds": [] } ``` @@ -3776,49 +4266,45 @@ POST /v3.0/notification-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|------|------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 알림 그룹 수정하기 +## 모니터링 + +### 통계 정보 조회 ```http -PUT /v3.0/notification-groups/{notificationGroupId} +GET /v3.0/metric-statistics ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부 | -| notifySms | Body | Boolean | X | SMS 알림 여부 | -| isEnabled | Body | Boolean | X | 활성화 여부 | -| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +이 API는 요청 본문을 요구하지 않습니다. -

예시 -

+#### 응답 -```json -{ - "notifyEmail": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65", - "d51b7da0-682f-47ff-b588-b739f6adc740" - ] -} +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### Metric 목록 보기 + +```http +GET /v3.0/metrics ``` -

-
+#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| metrics | Body | Array | Metric 목록 | +| metrics.measureName | Body | String | 조회 지표 유형 | +| metrics.unit | Body | String | 측정값 단위 |
예시

@@ -3829,7 +4315,13 @@ PUT /v3.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "metrics": [ + { + "measureName": "measureName-example", + "unit": "unit-example" + } + ] } ``` @@ -3838,23 +4330,38 @@ PUT /v3.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 삭제하기 +## 이벤트 + +### 이벤트 카테고리 + +이벤트는 카테고리로 분류할 수 있으며 아래와 같습니다. + +| 이벤트 카테고리 | 설명 | +|-------------|---------| +| ALL | 전체 | +| BACKUP | 백업 | +| DB_INSTANCE | DB 인스턴스 | +| JOB | 작업 | +| TENANT | 테넌트 | +| MONITORING | 모니터링 | + +### 구독 가능한 이벤트 코드 목록 보기 ```http -DELETE /v3.0/notification-groups/{notificationGroupId} +GET /v3.0/event-codes ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | - #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventCodes | Body | Array | 이벤트 코드 목록 | +| eventCodes.eventCode | Body | Enum | 이벤트 코드 | +| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT |

예시

@@ -3865,7 +4372,13 @@ DELETE /v3.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "eventCodes": [ + { + "eventCode": "ENUM_VALUE", + "eventCategoryType": "ALL" + } + ] } ``` @@ -3874,12 +4387,10 @@ DELETE /v3.0/notification-groups/{notificationGroupId} --- -## 모니터링 - -### Metric 목록 보기 +### 이벤트 목록 조회 ```http -GET /v3.0/metrics +GET /v3.0/events ``` #### 요청 @@ -3888,11 +4399,18 @@ GET /v3.0/metrics #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|--------|-----------| -| metrics | Body | Array | Metric 목록 | -| metrics.measureName | Body | Enum | 조회 지표 유형 | -| metrics.unit | Body | String | 측정값 단위 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 목록 수 | +| events | Body | Array | 이벤트 목록 | +| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | +| events.sourceId | Body | String | 이벤트 소스의 식별자 | +| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | +| events.messages | Body | Array | 이벤트 메세지 목록 | +| events.messages.langCode | Body | Enum | 언어 코드
- KO
- EN
- JA
- ZH | +| events.messages.message | Body | String | 이벤트 메세지 | +| events.eventYmdt | Body | DateTime | 이벤트 발생 일시 |

예시

@@ -3904,10 +4422,20 @@ GET /v3.0/metrics "resultMessage": "SUCCESS", "isSuccessful": true }, - "metrics": [ + "totalCounts": 1, + "events": [ { - "measureName": "CPU_USAGE", - "unit": "%" + "eventCategoryType": "ALL", + "eventCode": "ENUM_VALUE", + "sourceId": "sourceId-example", + "sourceName": "sourceName-example", + "messages": [ + { + "langCode": "KO", + "message": "message-example" + } + ], + "eventYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3918,56 +4446,65 @@ GET /v3.0/metrics --- -### 통계 정보 조회 +## 이벤트 구독 + +### 이벤트 구독 목록 조회 ```http -GET /v3.0/metric-statistics +GET /v3.0/event-subscriptions ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|----------|----|-----------------------------------| -| dbInstanceId | Query | UUID | O | DB 인스턴스의 식별자 | -| measureNames | Query | Array | O | 조회 지표 목록
- 최소 크기: `1` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| interval | Query | Number | X | 조회 간격 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|-----------|----------| -| metricStatistics | Body | Array | 통계 정보 목록 | -| metricStatistics.measureName | Body | Enum | 측정 항목 유형 | -| metricStatistics.unit | Body | String | 측정값 단위 | -| metricStatistics.values | Body | Array | 측정값 목록 | -| metricStatistics.values.timestamp | Body | Timestamp | 측정 시간 | -| metricStatistics.values.value | Body | Object | 측정값 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 구독 목록 수 | +| eventSubscriptions | Body | Array | 이벤트 구독 목록 | +| eventSubscriptions.eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 | +| eventSubscriptions.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.eventSubscriptionName | Body | String | 이벤트 구독의 식별할 수 있는 이름 | +| eventSubscriptions.enabled | Body | Boolean | 활성화 여부 | +| eventSubscriptions.notifyEmail | Body | Boolean | 이메일 발송 여부 | +| eventSubscriptions.notifySms | Body | Boolean | SMS 발송 여부 | +| eventSubscriptions.eventCodes | Body | Array | 구독할 이벤트 코드 목록 | +| eventSubscriptions.sources | Body | Array | 구독할 이벤트 소스 목록 | +| eventSubscriptions.sources.sourceId | Body | String | 이벤트 소스의 식별자 | +| eventSubscriptions.sources.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.userGroupIds | Body | Array | 이벤트 구독 중인 사용자 그룹의 식별자 목록 | +| eventSubscriptions.createdYmdt | Body | DateTime | 생성 일시 |

예시

```json { - "metricStatistics": [ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "totalCounts": 1, + "eventSubscriptions": [ { - "measureName": "MYSQL_STATUS", - "unit": "", - "values": [ - [ - 1679298540, - "1" - ], - [ - 1679298600, - "1" - ], - [ - 1679298660, - "1" - ] - ] + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ + { + "sourceId": "sourceId-example", + "eventCategoryType": "ALL" + } + ], + "userGroupIds": [], + "createdYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3978,56 +4515,56 @@ GET /v3.0/metric-statistics --- -## 이벤트 - -### 이벤트 카테고리 - -이벤트는 카테고리로 분류할 수 있으며 아래와 같습니다. - -| 이벤트 카테고리 | 설명 | -|-------------|---------| -| ALL | 전체 | -| BACKUP | 백업 | -| DB_INSTANCE | DB 인스턴스 | -| JOB | 작업 | -| TENANT | 테넌트 | -| MONITORING | 모니터링 | - -### 이벤트 목록 조회 +### 이벤트 구독 생성하기 ```http -GET /v3.0/events +POST /v3.0/event-subscriptions ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | O | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | O | 활성화 여부 | +| notifyEmail | Body | Boolean | O | 이메일 발송 여부 | +| notifySms | Body | Boolean | O | SMS 발송 여부 | +| eventCodes | Body | Array | O | 구독할 이벤트 코드 목록 | +| sources | Body | Array | O | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | O | 이벤트 구독할 사용자 그룹의 식별자 목록 | + +

예시 +

+ +```json +{ + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ + { + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" + } + ], + "userGroupIds": [] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | O | 조회할 목록의 페이지
- 최솟값: `1` | -| size | Query | Number | O | 조회할 목록의 페이지 크기
- 최솟값: `1`
- 최댓값: `100` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| eventCategoryType | Query | Enum | O | 조회할 이벤트 카테고리 유형
- `ALL`: 전체
- `INSTANCE`: DB 인스턴스
- `BACKUP`: 백업
- `DB_SECURITY_GROUP`: DB 보안 그룹
- `TENANT`: 테넌트 | -| sourceId | Query | String | X | 이벤트가 발생한 대상 리소스의 식별자 | -| keyword | Query | String | X | 이벤트 메시지에 포함된 문자열 검색어 | -| ascendingOrder | Query | Enum | X | 이벤트 메시지 정렬 순서
- `ASC`: 오름차순
- `DESC`: 내림차순
- 기본값: `DESC` | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|---------------------------------------| -| totalCounts | Body | Number | 전체 이벤트 목록 수 | -| events | Body | Array | 이벤트 목록 | -| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | -| events.sourceId | Body | String | 이벤트 소스의 식별자 | -| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | -| events.messages | Body | Array | 이벤트 메시지 목록 | -| events.messages.langCode | Body | String | 언어 코드 | -| events.messages.message | Body | String | 이벤트 메시지 | -| events.eventYmdt | Body | DateTime | 이벤트 발생 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 |
예시

@@ -4039,34 +4576,7 @@ GET /v3.0/events "resultMessage": "SUCCESS", "isSuccessful": true }, - "totalCounts": 28, - "events": [ - { - "eventCategoryType": "INSTANCE", - "eventCode": "INSTC_02_01", - "sourceId": "76f00947-356e-4a20-8922-428368cc45ed", - "sourceName": "db-instance", - "messages": [ - { - "langCode": "EN", - "message": "DB instance started" - }, - { - "langCode": "JA", - "message": "DBインスタンスの起動" - }, - { - "langCode": "KO", - "message": "DB 인스턴스 시작" - }, - { - "langCode": "ZH", - "message": "DB instance started" - } - ], - "eventYmdt": "2023-03-20T16:31:59+09:00" - } - ] + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4075,44 +4585,75 @@ GET /v3.0/events --- -### 구독 가능한 이벤트 코드 목록 보기 +### 이벤트 구독 삭제하기 ```http -GET /v3.0/event-codes +DELETE /v3.0/event-subscriptions/{eventSubscriptionId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | + #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|-------|-------------| -| eventCodes | Body | Array | 이벤트 코드 목록 | -| eventCodes.eventCode | Body | Enum | 이벤트 코드 | -| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 이벤트 구독 수정하기 + +```http +PUT /v3.0/event-subscriptions/{eventSubscriptionId} +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | +| eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | X | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | X | 활성화 여부 | +| notifyEmail | Body | Boolean | X | 이메일 발송 여부 | +| notifySms | Body | Boolean | X | SMS 발송 여부 | +| eventCodes | Body | Array | X | 구독할 이벤트 코드 목록 | +| sources | Body | Array | X | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | X | 이벤트 구독할 사용자 그룹의 식별자 목록 |

예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "eventCodes": [ + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ { - "eventCode": "INSTC_05_01", - "eventCategoryType": "INSTANCE" + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" } - ] + ], + "userGroupIds": [] } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- + diff --git a/ko/api-guide-v3.0-ninc.md b/ko/api-guide-v3.0-ninc.md index 96d8c42d..d160cc5a 100644 --- a/ko/api-guide-v3.0-ninc.md +++ b/ko/api-guide-v3.0-ninc.md @@ -1,35 +1,42 @@ -## Database > RDS for MySQL > API 가이드 +## Database > RDS for MySQL > API v3.0 가이드 -| 리전 | 엔드포인트 | -|-----------|-----------------------------------------------| -| 한국(판교) 리전 | https://kr4-rds-mysql-api.ninc.go.kr | +## RDS for MySQL API 공통 정보 -## 인증 및 권한 +### API 엔드포인트 -API를 사용하려면 인증에 필요한 `User Access Key ID`와 `Secret Access Key`가 필요합니다. 콘솔 우측 상단의 계정에 마우스 포인터를 올리면 표시되는 드롭다운 메뉴에서 API 보안 설정을 선택해 생성할 수 있습니다. +| 리전 | 엔드포인트 | +|------|----------| +| 한국(대구) 리전 | https://ninc-kr4-rds-proxy.cloud.toastoven.net | + + +### 인증 및 권한 + +RDS for MySQL API를 사용하려면 User Access Key가 필요합니다. User Access Key는 NHN Cloud 계정 또는 IAM 계정을 기반으로 발급되는 인증 키로, Secret Access Key와 함께 사용하여 API 요청에 대한 인증 수단으로 활용됩니다. + +User Access Key와 Secret Access Key는 콘솔의 **API 보안 설정**에서 발급할 수 있습니다. User Access Key 발급 및 사용에 대한 자세한 내용은 [User Access Key](/nhncloud/ko/public-api/user-access-key)를 참고하세요. 생성된 Key는 Appkey와 함께 요청 Header에 포함해야 합니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------------|--------|--------|----|-------------------------------------------------------------| -| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | -| X-TC-AUTHENTICATION-ID | Header | String | O | API 보안 설정 메뉴의 User Access Key ID | -| X-TC-AUTHENTICATION-SECRET | Header | String | O | API 보안 설정 메뉴의 Secret Access Key | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | +| X-TC-AUTHENTICATION-ID | Header | String | O | API 보안 설정 메뉴의 User Access Key ID | +| X-TC-AUTHENTICATION-SECRET | Header | String | O | API 보안 설정 메뉴의 Secret Access Key | -또한 프로젝트 멤버 역할에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER`로 구분하여 권한을 부여할 수 있습니다. +또한 프로젝트 권한에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER` 역할에는 아래처럼 기본 권한이 부여돼 있고 프로젝트 내 역할 그룹 관리 메뉴에서 필요한 권한만 부여할 수 있습니다. -* `RDS for MySQL ADMIN` 권한은 모든 기능을 사용 가능합니다. -* `RDS for MySQL VIEWER` 권한은 정보를 조회하는 기능만 사용 가능합니다. +* `RDS for MySQL ADMIN` 역할은 API 실행에 필요한 모든 권한이 부여됩니다. +* `RDS for MySQL VIEWER` 역할은 정보를 조회하는 권한만 부여됩니다. * DB 인스턴스를 생성, 수정, 삭제하거나, DB 인스턴스를 대상으로 하는 어떠한 기능도 사용할 수 없습니다. - * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용 가능합니다. + * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용할 수 있습니다. API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같은 오류가 발생합니다. -| resultCode | resultMessage | 설명 | -|------------|---------------|-------------| -| 80401 | Unauthorized | 인증에 실패했습니다. | -| 80403 | Forbidden | 권한이 없습니다. | +| resultCode | resultMessage | 설명 | +|------------|---------------|-----| +| 80401 | Unauthorized | 인증에 실패했습니다. | +| 80403 | Forbidden | 권한이 없습니다. | -## 응답 공통 정보 +### 응답 공통 정보 모든 API 요청에 '200 OK'로 응답합니다. 자세한 응답 결과는 응답 본문의 헤더를 참고합니다. @@ -45,47 +52,50 @@ API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같 ``` #### 필드 -| 이름 | 형식 | 설명 | -|---------------|---------|-----------------------------------------| -| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | -| resultMessage | String | 결과 메시지 | -| isSuccessful | Boolean | 성공 여부 | - - -## DB 엔진 유형 - -| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 정보 | -|--------------|----------|-----------------|--------| -| MYSQL\_V5633 | X | X | NATIVE | -| MYSQL\_V5715 | O | O | NATIVE | -| MYSQL\_V5719 | O | O | NATIVE | -| MYSQL\_V5726 | O | O | NATIVE | -| MYSQL\_V5731 | X | X | NATIVE | -| MYSQL\_V5733 | O | X | NATIVE, SHA256 | -| MYSQL\_V5737 | O | O | NATIVE, SHA256 | -| MYSQL\_V8018 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8023 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8028 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8032 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8033 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8034 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8405 | O | O | CACHING_SHA2 | +| 이름 | 형식 | 설명 | +|-----|-----|-----| +| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | +| resultMessage | String | 결과 메시지 | +| isSuccessful | Boolean | 성공 여부 | +### DB 엔진 유형 + +| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 | +|------------|----------|------------------|------------| +| MYSQL_V5633 | X | X | NATIVE | +| MYSQL_V5715 | O | O | NATIVE | +| MYSQL_V5719 | O | O | NATIVE | +| MYSQL_V5726 | O | O | NATIVE | +| MYSQL_V5731 | X | X | NATIVE | +| MYSQL_V5733 | O | X | NATIVE, SHA256 | +| MYSQL_V5737 | O | O | NATIVE, SHA256 | +| MYSQL_V8018 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8023 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8028 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8032 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8033 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8034 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8044 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8045 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8405 | O | O | CACHING_SHA2 | +| MYSQL_V8406 | O | O | CACHING_SHA2 | +| MYSQL_V8407 | O | O | CACHING_SHA2 | +| MYSQL_V8408 | O | O | CACHING_SHA2 | * ENUM 타입의 dbVersion 필드에 대해 해당 값을 사용할 수 있습니다. * 버전에 따라 생성 또는 복원이 불가능한 경우가 있을 수 있습니다. ## 프로젝트 정보 -### 리전 목록 보기 +### 프로젝트 멤버 목록 보기 ```http -GET /v3.0/project/regions +GET /v3.0/project/members ``` #### 요청 @@ -94,11 +104,13 @@ GET /v3.0/project/regions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------|------|---------|----------------------------------------------------------------------------| -| regions | Body | Array | 리전 목록 | -| regions.regionCode | Body | Enum | 리전 코드
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| members.memberName | Body | String | 프로젝트 멤버의 이름 | +| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | +| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 |
예시

@@ -110,31 +122,26 @@ GET /v3.0/project/regions "resultMessage": "SUCCESS", "isSuccessful": true }, - "regions": [ - { - "regionCode": "KR1", - "isEnabled": true - }, - { - "regionCode": "KR2", - "isEnabled": true - }, + "members": [ { - "regionCode": "JP1", - "isEnabled": true + "memberId": "550e8400-e29b-41d4-a716-446655440000", + "memberName": "memberName-example", + "emailAddress": "emailAddress-example", + "phoneNumber": "phoneNumber-example" } ] } ``` +

--- -### 프로젝트 멤버 목록 보기 +### 리전 목록 보기 ```http -GET /v3.0/project/members +GET /v3.0/project/regions ``` #### 요청 @@ -143,13 +150,11 @@ GET /v3.0/project/members #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|--------|-----------------| -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| members.memberName | Body | String | 프로젝트 멤버의 이름 | -| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | -| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| regions | Body | Array | 리전 목록 | +| regions.regionCode | Body | Enum | 리전 코드
- KR4: `한국(대구)` | +| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 |
예시

@@ -161,12 +166,10 @@ GET /v3.0/project/members "resultMessage": "SUCCESS", "isSuccessful": true }, - "members": [ + "regions": [ { - "memberId": "1b1d3627-507a-49ea-8cb7-c86dfa9caa58", - "memberName": "홍길동", - "emailAddress": "gildong.hong@nhn.com", - "phoneNumber": "+821012345678" + "regionCode": "KR4", + "isEnabled": false } ] } @@ -191,13 +194,13 @@ GET /v3.0/db-flavors #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------| -| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | -| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | -| dbFlavors.ram | Body | Number | 메모리 용량(MB) | -| dbFlavors.vcpus | Body | Number | CPU 코어 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | +| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | +| dbFlavors.ram | Body | Number | 메모리 용량(MB) | +| dbFlavors.vcpus | Body | Number | CPU 코어 수 |

예시

@@ -211,9 +214,9 @@ GET /v3.0/db-flavors }, "dbFlavors": [ { - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbFlavorName": "m2.c1m2", - "ram": 2048, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbFlavorName": "dbFlavorName-example", + "ram": 1, "vcpus": 1 } ] @@ -239,14 +242,14 @@ GET /v3.0/network/subnets #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|---------|------------------| -| subnets | Body | Array | 서브넷 목록 | -| subnets.subnetId | Body | UUID | 서브넷의 식별자 | -| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | -| subnets.subnetCidr | Body | String | 서브넷의 CIDR | -| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | -| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| subnets | Body | Array | 서브넷 목록 | +| subnets.subnetId | Body | UUID | 서브넷의 식별자 | +| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnets.subnetCidr | Body | String | 서브넷의 CIDR | +| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | +| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 |

예시

@@ -260,11 +263,11 @@ GET /v3.0/network/subnets }, "subnets": [ { - "subnetId": "1b2a9b23-0725-4b92-8c78-35db66b8ad9f", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/24", - "usingGateway": true, - "availableIpCount": 240 + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example", + "usingGateway": false, + "availableIpCount": 1 } ] } @@ -289,11 +292,11 @@ GET /v3.0/db-versions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|---------|-----------------------| -| dbVersions | Body | Array | DB 엔진 목록 | -| dbVersions.dbVersion | Body | String | DB 엔진 유형 | -| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbVersions | Body | Array | DB 엔진 목록 | +| dbVersions.dbVersion | Body | String | DB 엔진 유형 | +| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | | dbVersions.restorableFromObs | Body | Boolean | 오브젝트 스토리지로부터 복원 가능 여부 |

예시 @@ -308,9 +311,9 @@ GET /v3.0/db-versions }, "dbVersions": [ { - "dbVersion": "MYSQL_V8028", - "dbVersionName": "MySQL 8.0.28", - "restorableFromObs": true + "dbVersion": "MYSQL_V8036", + "dbVersionName": "dbVersionName-example", + "restorableFromObs": false } ] } @@ -323,7 +326,7 @@ GET /v3.0/db-versions ## 데이터 스토리지 -### 데이터 스토리지 타입 목록 보기 +### 스토리지 타입 목록 보기 ```http GET /v3.0/storage-types @@ -335,9 +338,9 @@ GET /v3.0/storage-types #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|-------|----------------| -| storageTypes | Body | Array | 데이터 스토리지 타입 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageTypes | Body | Array | 스토리지 타입 목록 |
예시

@@ -349,10 +352,7 @@ GET /v3.0/storage-types "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageTypes": [ - "General SSD", - "General HDD" - ] + "storageTypes": [] } ``` @@ -361,7 +361,7 @@ GET /v3.0/storage-types --- -### 데이터 스토리지 목록 보기 +### 스토리지 목록 보기 ```http GET /v3.0/storages @@ -373,9 +373,9 @@ GET /v3.0/storages #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------|------|-------|-------------| -| storages | Body | Array | 데이터 스토리지 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storages | Body | Array | 스토리지 목록 |

예시

@@ -387,10 +387,7 @@ GET /v3.0/storages "resultMessage": "SUCCESS", "isSuccessful": true }, - "storages": [ - "General SSD", - "General HDD" - ] + "storages": [] } ``` @@ -428,21 +425,21 @@ GET /v3.0/jobs/{jobId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------|-----|------|----|---------| -| jobId | URL | UUID | O | 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| jobId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------|------|----------|-----------------------------------| -| jobId | Body | UUID | 작업의 식별자 | -| jobStatus | Body | Enum | 작업의 현재 상태 | -| resourceRelations | Body | Array | 연관 리소스 목록 | -| resourceRelations.resourceType | Body | Enum | 연관 리소스 유형 | -| resourceRelations.resourceId | Body | UUID | 연관 리소스의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | +| jobStatus | Body | Enum | 작업의 현재 상태
- DELETED
- CANNOT_PROGRESS
- FAILED
- ERROR
- CANCELED
- INTERRUPTED
- COMPLETED
- RUNNING
- PREPARING
- READY
- CREATED
- FAIL_TO_READY
- REGISTERED
- FAIL_TO_REGISTER
- WAIT_TO_REGISTER | +| resourceRelations | Body | Array | 연관 리소스 목록 | +| resourceRelations.resourceType | Body | String | 연관 리소스 유형 | +| resourceRelations.resourceId | Body | String | 연관 리소스의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -454,16 +451,16 @@ GET /v3.0/jobs/{jobId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "jobId": "0ddb042c-5af6-43fb-a914-f4dd0540eb7c", - "jobStatus": "RUNNING", + "jobId": "550e8400-e29b-41d4-a716-446655440000", + "jobStatus": "DELETED", "resourceRelations": [ { - "resourceType": "DB_INSTANCE", - "resourceId": "56b39dcf-65eb-47ec-9d4f-09f160ba2266" + "resourceType": "resourceType-example", + "resourceId": "resourceId-example" } ], - "createdYmdt": "2023-02-22T20:47:12+09:00", - "updatedYmdt": "2023-02-22T20:49:46+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -486,13 +483,13 @@ GET /v3.0/db-instance-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------|------|----------|--------------------------------------------------------------------------| -| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | -| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | +| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -506,10 +503,10 @@ GET /v3.0/db-instance-groups }, "dbInstanceGroups": [ { - "dbInstanceGroupId": "05de0746-89fd-49c8-94f9-9c5b1df97009", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", - "createdYmdt": "2023-02-13T17:35:20+09:00", - "updatedYmdt": "2023-02-13T17:35:20+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -530,22 +527,22 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|-----------------| -| dbInstanceGroupId | URL | UUID | O | DB 인스턴스 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -557,17 +554,17 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbInstanceGroupId": "36617a8e-0df8-4b16-b6ea-6306019e95da", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", "dbInstances": [ { - "dbInstanceId": "6d2db0ef-fe9b-4ed4-97b1-d97fcb4cf1b8", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE" + "dbInstanceStatus": "BEFORE_CREATE" } ], - "createdYmdt": "2023-03-03T17:38:14+09:00", - "updatedYmdt": "2023-03-03T17:38:14+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -600,8 +597,8 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} | `BACKING_UP` | 백업 중 | | `CANCELING` | 취소 중 | | `CREATING` | 생성 중 | -| `CREATING_SCHEMA` | DB 스키마 생성 중 | -| `CREATING_USER` | 사용자 생성 중 | +| `CREATING_SCHEMA` | DB 스키마 생성 중 | +| `CREATING_USER` | 사용자 생성 중 | | `DELETING` | 삭제 중 | | `DELETING_SCHEMA` | DB 스키마 삭제 중 | | `DELETING_USER` | 사용자 삭제 중 | @@ -620,8 +617,8 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} | `STARTING` | 시작 중 | | `STOPPING` | 정지 중 | | `SYNCING_SCHEMA` | DB 스키마 동기화 중 | -| `SYNCING_USER` | 사용자 동기화 중 | -| `UPDATING_USER` | 사용자 수정 중 | +| `SYNCING_USER` | 사용자 동기화 중 | +| `UPDATING_USER` | 사용자 수정 중 | ### DB 인스턴스 목록 보기 @@ -635,20 +632,20 @@ GET /v3.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstances | Body | Array | DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | -| dbInstances.dbPort | Body | Number | DB 포트 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태 | -| dbInstances.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstances.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstances | Body | Array | DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | +| dbInstances.dbPort | Body | Number | DB 포트 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbInstances.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstances.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -662,17 +659,17 @@ GET /v3.0/db-instances }, "dbInstances": [ { - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", + "dbInstanceStatus": "BEFORE_CREATE", "progressStatus": "NONE", - "createdYmdt": "2023-01-23T12:03:13+09:00", - "updatedYmdt": "2023-02-02T17:20:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -683,83 +680,6 @@ GET /v3.0/db-instances --- -### DB 인스턴스 상세 보기 - -```http -GET /v3.0/db-instances/{dbInstanceId} -``` - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| dbPort | Body | Number | DB 포트 | -| dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| progressStatus | Body | Enum | DB 인스턴스의 현재 작업 진행 상태 | -| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | -| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | -| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | -| supportAuthenticationPlugin | Body | Boolean | 인증 플러그인 지원 여부 | -| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | -| needMigration | Body | Boolean | 마이그레이션 필요 여부 | -| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", - "progressStatus": "NONE", - "dbFlavorId": "e9ed4ef6-78d7-46fa-ace9-32481e97f3b7", - "parameterGroupId": "b03e8b13-de27-4d04-a488-ff5689589372", - "dbSecurityGroupIds": ["01908c35-d2c9-4852-baf0-17f06ec42c03"], - "notificationGroupIds": ["83a62a33-ddbf-4a04-8653-e54463d5b1ac"], - "useDeletionProtection": false, - "supportAuthenticationPlugin": true, - "needToApplyParameterGroup": false, - "needMigration": false, - "supportDbVersionUpgrade": true, - "createdYmdt": "2022-11-23T12:03:13+09:00", - "updatedYmdt": "2022-12-02T17:20:17+09:00" -} -``` - -

-
- ---- - ### DB 인스턴스 생성하기 ```http @@ -768,61 +688,67 @@ POST /v3.0/db-instances #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|------|---------|----|---------------------------------------------------------------------| -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbUserName | Body | String | O | DB 사용자 계정명 | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `16` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 ||network|Body|Object|O|네트워크 정보 객체| -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄) | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| authenticationPlugin | Body | Enum | X | 인증 Plugin
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | TLS Option
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE", "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, "availabilityZone": "kr-pub-a" }, "storage": { @@ -830,11 +756,15 @@ POST /v3.0/db-instances "storageSize": 20 }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 1800, + "replicationRegion": "KR4", + "useBackupLock": true, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR" + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" } ] } @@ -846,45 +776,124 @@ POST /v3.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### DB 인스턴스 수정하기 +### 오브젝트 스토리지를 이용한 DB 인스턴스 복원 ```http -PUT /v3.0/db-instances/{dbInstanceId} +POST /v3.0/db-instances/restore-from-obs ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|------|---------|----|--------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbPort | Body | Number | X | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbVersion | Body | Enum | X | DB 엔진 유형 | -| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
기본값: `false` | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | X | DB 포트 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| imageId | Body | UUID | X | 이미지의 식별자 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | +| restore.username | Body | String | O | NHN Cloud 계정 혹은 IAM 멤버 ID | +| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | +| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | +| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` |
예시

```json { - "dbInstanceName": "db-instance2", - "description": "description2", - "dbPort": 10001, + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "dbVersion": "MYSQL_V8036", + "useHighAvailability": false, + "imageId": "550e8400-e29b-41d4-a716-446655440000", + "pingInterval": 3, + "storage": { + "storageType": "General SSD", + "storageSize": 20 + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "backup": { + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR4", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + }, + "restore": { + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" + }, + "useDefaultNotification": false, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", "dbSecurityGroupIds": [], - "executeBackup": true + "userGroupIds": [], + "useDeletionProtection": false } ``` @@ -893,9 +902,7 @@ PUT /v3.0/db-instances/{dbInstanceId} #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- @@ -909,54 +916,15 @@ DELETE /v3.0/db-instances/{dbInstanceId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 인스턴스 재시작하기 - -```http -POST /v3.0/db-instances/{dbInstanceId}/restart -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- -### DB 인스턴스 강제 재시작하기 -```http -POST /v3.0/db-instances/{dbInstanceId}/force-restart -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |

예시

@@ -967,108 +935,136 @@ POST /v3.0/db-instances/{dbInstanceId}/force-restart "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- ---- - -### DB 인스턴스 시작하기 - -```http -POST /v3.0/db-instances/{dbInstanceId}/start -``` - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### DB 인스턴스 정지하기 +### DB 인스턴스 상세 보기 ```http -POST /v3.0/db-instances/{dbInstanceId}/stop +GET /v3.0/db-instances/{dbInstanceId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| dbPort | Body | Number | DB 포트 | +| dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | +| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | +| supportAuthenticationPlugin | Body | Boolean | 인증 plugin 지원 여부 | +| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | +| needMigration | Body | Boolean | 마이그레이션 필요 여부 | +| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 | ---- - -### DB 인스턴스 백업하기 +
예시 +

-```http -POST /v3.0/db-instances/{dbInstanceId}/backup +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbInstanceType": "MASTER", + "dbInstanceStatus": "BEFORE_CREATE", + "progressStatus": "NONE", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "notificationGroupIds": [], + "useDeletionProtection": false, + "supportAuthenticationPlugin": false, + "needToApplyParameterGroup": false, + "needMigration": false, + "supportDbVersionUpgrade": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" +} ``` -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|--------|----|-----------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| backupName | Body | String | O | 백업을 식별할 수 있는 이름 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### DB 인스턴스 백업 후 내보내기 +### DB 인스턴스 수정하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/backup-to-object-storage +PUT /v3.0/db-instances/{dbInstanceId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|-----------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbPort | Body | Number | X | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbVersion | Body | Enum | X | DB 엔진 버전 코드 | +| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
- 기본값: `false` | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` |
예시

```json { - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "backups/backup_file" + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbPort": 1, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "useDummy": false, + "dbSecurityGroupIds": [], + "executeBackup": false, + "useOnlineFailover": false, + "waitReplicationDelay": false, + "useReadOnly": false } ``` @@ -1077,172 +1073,71 @@ POST /v3.0/db-instances/{dbInstanceId}/backup-to-object-storage #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 인스턴스 복제하기 - -```http -POST /v3.0/db-instances/{dbInstanceId}/replicate -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbPort | Body | Number | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록
- 기본값: 원본 DB 인스턴스 값 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: 원본 DB 인스턴스 값 | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입

  • 예시: `General SSD`
| -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄)
- 기본값: 원본 DB 인스턴스 값 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각
- 예시: `00:00:00`
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간
- 기본값: 원본 DB 인스턴스 값 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

```json { - "dbInstanceName": "db-instance-replicate", - "description": "description", - "dbPort": 11000, - "network": { - "availabilityZone": "kr-pub-a" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true }, - "storage": { - "stroageSize": 100 - } + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### DB 인스턴스 승격하기 +### DB 인스턴스 백업하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/promote +POST /v3.0/db-instances/{dbInstanceId}/backup ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| backupName | Body | String | O | 백업을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | -### 복원 정보 조회 +
예시 +

-```http -GET /v3.0/db-instances/{dbInstanceId}/restoration-info +```json +{ + "backupName": "backupName" +} ``` -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------------|------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| oldestRestorableYmdt | Body | DateTime | 가장 오래된 복원 가능한 시각 | -| latestRestorableYmdt | Body | DateTime | 가장 최신의 복원 가능한 시각 | -| restorableBackups | Body | Array | 복원 가능한 백업 목록 | -| restorableBackups.backup | Body | Object | 백업 정보 객체 | -| restorableBackups.backup.backupId | Body | UUID | 백업의 식별자 | -| restorableBackups.backup.backupName | Body | String | 백업 이름 | -| restorableBackups.backup.useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| restorableBackups.backup.backupSize | Body | Number | 백업 크기 | -| restorableBackups.backup.backupType | Body | Enum | 백업 유형
  • `AUTO`: 자동
  • `MANUAL`: 수동
| -| restorableBackups.backup.backupStatus | Body | Enum | 백업 상태
  • `BACKING_UP`: 백업 중인 경우
  • `COMPLETED`: 백업이 완료된 경우
  • `DELETING`: 백업이 삭제 중인 경우
  • `DELETED`: 백업이 삭제된 경우
  • `ERROR`: 오류가 발생한 경우
| -| restorableBackups.backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| restorableBackups.backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | -| restorableBackups.backup.dbVersion | Body | String | DB 엔진 유형 | -| restorableBackups.backup.failoverCount | Body | Number | 장애 조치 횟수 | -| restorableBackups.backup.binLogFileName | Body | String | 바이너리 로그 파일 이름 | -| restorableBackups.backup.binLogPosition | Body | Number | 바이너리 로그 파일 위치 | -| restorableBackups.backup.createdYmdt | Body | DateTime | 백업 생성 일시 | -| restorableBackups.backup.updatedYmdt | Body | DateTime | 백업 갱신 일시 | -| restorableBackups.restorableBinLogs | Body | Array | 해당 백업을 이용하여 복원 가능한 바이너리 로그 이름 목록 | - - +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "oldestRestorableYmdt": "2023-07-09T16:33:33+09:00", - "latestRestorableYmdt": "2023-07-10T15:44:44+09:00", - "restorableBackups": [ - { - "backup": { - "backupId": "145d889a-fe08-474f-8f58-bde576ff96a9", - "backupName": "example-backup-name", - "backupStatus": "COMPLETED", - "dbInstanceId": "dba1be25-9429-4589-9716-7fb6daad7cb9", - "dbInstanceName": "original-db-instance-name", - "dbVersion": "MYSQL_V8028", - "backupType": "MANUAL", - "backupSize": 8299904, - "useBackupLock": true, - "failoverCount": 0, - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 367916037, - "createdYmdt": "2023-07-10T15:44:44+09:00", - "updatedYmdt": "2023-07-10T15:46:07+09:00" - }, - "restorableBinLogs": [ - "mysql-bin.000001" - ] - } - ] + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1251,39 +1146,32 @@ GET /v3.0/db-instances/{dbInstanceId}/restoration-info --- -### 복원될 마지막 쿼리 조회 +### 백업 정보 보기 ```http -GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query +GET /v3.0/db-instances/{dbInstanceId}/backup-info ``` -#### 공통 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|------|----|-----------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restoreType | Query | Enum | O | 복원 타입 종류

  • `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
  • `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입
| - -#### restoreType이 `TIMESTAMP`인 경우 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-------|----------|----|-------------------------------------------| -| restoreYmdt | Query | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +#### 요청 -#### restoreType이 `BINLOG`인 경우 +이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------|-------|--------|----|--------------------| -| backupId | Query | UUID | O | 복원에 사용할 백업의 식별자 | -| binLogFileName | Query | String | O | 복원에 사용할 바이너리 로그 이름 | -| binLogPosition | Query | Number | O | 복원에 사용할 바이너리 로그 위치 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|----------|--------------------------------------| -| executedYmdt | Body | DateTime | 쿼리 수행 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| lastQuery | Body | String | 마지막 수행 쿼리 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| backupPeriod | Body | Number | 백업 보관 기간(일) | +| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | +| backupRetryCount | Body | Number | 백업 재시도 횟수 | +| replicationRegion | Body | Enum | 백업 복제 리전
- KR4: `한국(대구)` | +| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration
- HALF_AN_HOUR
- ONE_HOUR
- ONE_HOUR_AND_HALF
- TWO_HOURS
- TWO_HOURS_AND_HALF
- THREE_HOURS |
예시

@@ -1295,8 +1183,17 @@ GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query "resultMessage": "SUCCESS", "isSuccessful": true }, - "executedYmdt": "2023-03-17T14:02:29+09:00", - "lastQuery": "INSERT INTO `test`.`test`SET @1='0123'" + "backupPeriod": 1, + "ftwrlWaitTimeout": 1, + "backupRetryCount": 1, + "replicationRegion": "KR4", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] } ``` @@ -1305,303 +1202,100 @@ GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query --- -### 복원 +### 백업 정보 수정하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/restore +PUT /v3.0/db-instances/{dbInstanceId}/backup-info ``` -#### 공통 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restore | Body | Object | O | 복원 정보 객체 | -| restore.restoreType | Body | Enum | O | 복원 타입 종류

  • `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
  • `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입
  • `BACKUP`: 기존에 생성한 백업을 이용한 스냅숏 복원 타입
| -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
  • 최솟값: `3306`
  • 최댓값: `43306`
| -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
  • 기본값: `false`
| -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
  • 기본값: `3`
  • 최솟값: `1`
  • 최댓값: `600`
| -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
  • 기본값: `false`
| -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
  • 기본값: `false`
| -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
  • 예시: `kr-pub-a`
| -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
  • 예시: `General SSD`
| -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
  • 최솟값: `20`
  • 최댓값: `2048`
| -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
  • 최솟값: `0`
  • 최댓값: `730`
| -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
  • 기본값: `1800`
  • 최솟값: `0`
  • 최댓값: `21600`
| -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
  • 기본값: `0`
  • 최솟값: `0`
  • 최댓값: `10`
| -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
  • `KR1`: 한국(판교)
  • `KR2`: 한국(평촌)
  • `JP1`: 일본(도쿄)
| -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
  • 기본값: `true`
| -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
  • 예시: `00:00:00`
| -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
  • `HALF_AN_HOUR`: 30분
  • `ONE_HOUR`: 1시간
  • `ONE_HOUR_AND_HALF`: 1시간 30분
  • `TWO_HOURS`: 2시간
  • `TWO_HOURS_AND_HALF`: 2시간 30분
  • `THREE_HOURS`: 3시간
| -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
기본값: `false` | - -#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|----------|----|------------------------------------------------------------------------------------------------| -| restore.restoreYmdt | Body | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD)
복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능하다. | - - -
예시 -

- -```json -{ - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "TIMESTAMP", - "restoreYmdt": "2023-07-10T15:44:44+09:00" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } -} -``` - -

-
- -#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------------|------|--------|----|--------------------| -| restore.backupId | Body | UUID | O | 복원에 사용할 백업의 식별자 | -| restore.binLog | Body | Object | O | 바이너리 로그 정보 객체 | -| restore.binLog.binLogFileName | Body | String | O | 복원에 사용할 바이너리 로그 이름 | -| restore.binLog.binLogPosition | Body | Number | O | 복원에 사용할 바이너리 로그 위치 | - -* 바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. +#### 요청 +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BINLOG", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36", - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 1234567 - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "backupPeriod": 0, + "ftwrlWaitTimeout": 0, + "backupRetryCount": 0, + "replicationRegion": "KR4", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] } ```

-#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|------|------------------------------|-----------------| -| restore.backupId | Body | UUID | O(restoreType이 `BACKUP`인 경우) | 복원에 사용할 백업의 식별자 | - +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BACKUP", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - - --- -### 오브젝트 스토리지로부터 복원 +### DB 인스턴스 오브젝트 스토리지로 백업 ```http -POST /v3.0/db-instances/restore-from-obs +POST /v3.0/db-instances/{dbInstanceId}/backup-to-object-storage ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|----------------------------------------------------------------------------------------| -| restore | Body | Object | O | 복원 정보 객체 | -| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | -| restore.username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | -| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | -| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
  • 최솟값: `3306`
  • 최댓값: `43306`
| -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
  • 기본값: `false`
| -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
  • 기본값: `3`
  • 최솟값: `1`
  • 최댓값: `600`
| -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
  • 기본값: `false`
| -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
  • 기본값: `false`
| -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
  • 예시: `kr-pub-a`
| -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
  • 예시: `General SSD`
| -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
  • 최솟값: `20`
  • 최댓값: `2048`
| -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
  • 최솟값: `0`
  • 최댓값: `730`
| -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
  • 기본값: `1800`
  • 최솟값: `0`
  • 최댓값: `21600`
| -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
  • 기본값: `0`
  • 최솟값: `0`
  • 최댓값: `10`
| -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
  • `KR1`: 한국(판교)
  • `KR2`: 한국(평촌)
  • `JP1`: 일본(도쿄)
| -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
  • 기본값: `true`
| -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
  • 예시: `00:00:00`
| -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
  • `HALF_AN_HOUR`: 30분
  • `ONE_HOUR`: 1시간
  • `ONE_HOUR_AND_HALF`: 1시간 30분
  • `TWO_HOURS`: 2시간
  • `TWO_HOURS_AND_HALF`: 2시간 30분
  • `THREE_HOURS`: 3시간
| - - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 계정 혹은 IAM 회원 ID | +| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbVersion": "MYSQL_V8028", - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "tenantId":"tenant-id", - "username":"username", - "password":"password", - "targetContainer":"targetContainer", - "objectPath":"objectPath" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" } ``` @@ -1610,30 +1304,9 @@ POST /v3.0/db-instances/restore-from-obs #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - - ---- - - -### DB 인스턴스 삭제 보호 설정 변경하기 - -```http -PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |

예시

@@ -1644,7 +1317,8 @@ PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1653,137 +1327,146 @@ PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection --- -### 고가용성 수정하기 +### 테스트 용 DB 이미지 메타 변경 ```http -PUT /v3.0/db-instances/{dbInstanceId}/high-availability +PUT /v3.0/db-instances/{dbInstanceId}/change-image-meta ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|---------|----|------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 고가용성 다시 시작하기 +### DB 스키마 목록 보기 ```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/resume +GET /v3.0/db-instances/{dbInstanceId}/db-schemas ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSchemas | Body | Array | DB 스키마 목록 | +| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | +| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | +| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- STABLE
- CREATING
- SYNCING
- DELETING
- DELETED | +| dbSchemas.createdYmdt | Body | DateTime | 생성 일시 | -### 고가용성 일시 중지하기 +

예시 +

-```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/pause +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSchemas": [ + { + "dbSchemaId": "550e8400-e29b-41d4-a716-446655440000", + "dbSchemaName": "dbSchemaName-example", + "dbSchemaStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 고가용성 복구하기 +### DB 스키마 생성하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/repair +POST /v3.0/db-instances/{dbInstanceId}/db-schemas ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbSchemaName | Body | String | O | DB 스키마 이름
- 최대 길이: `64`
- 영문 시작, 영문/숫자/_ 허용, 1~64자, MySQL 예약어 불가 | ---- - -### 고가용성 분리하기 +
예시 +

-```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/split +```json +{ + "dbSchemaName": "dbSchemaName-example" +} ``` -#### 요청 +

+
-이 API는 요청 본문을 요구하지 않습니다. +#### 응답 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -#### 응답 +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 데이터 스토리지 정보 보기 +### DB 스키마 삭제하기 ```http -GET /v3.0/db-instances/{dbInstanceId}/storage-info +DELETE /v3.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbSchemaId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------|------|--------|--------------------------------------------------------------------------------------| -| storageType | Body | Enum | 데이터 스토리지 타입 | -| storageSize | Body | Number | 데이터 스토리지 크기(GB) | -| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- `DETACHED`: 부착되지 않음
- `ATTACHED`: 부착됨
- `DELETED`: 삭제됨 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -1795,66 +1478,43 @@ GET /v3.0/db-instances/{dbInstanceId}/storage-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageType": "General SSD", - "storageSize": 20, - "storageStatus": "ATTACHED" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- ---- - -### 데이터 스토리지 정보 수정하기 - -```http -PUT /v3.0/db-instances/{dbInstanceId}/storage-info -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: 현재값
- 최댓값: `2048` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### 백업 정보 보기 +### DB 사용자 목록 보기 ```http -GET /v3.0/db-instances/{dbInstanceId}/backup-info +GET /v3.0/db-instances/{dbInstanceId}/db-users ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|---------|----------------| -| backupPeriod | Body | Number | 백업 보관 기간(일) | -| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | -| backupRetryCount | Body | Number | 백업 재시도 횟수 | -| replicationRegion | Body | Enum | 백업 복제 리전 | -| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | -| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbUsers | Body | Array | DB 사용자 목록 | +| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | +| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | +| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | +| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- STABLE
- CREATING
- UPDATING
- SYNCING
- DELETING
- DELETED | +| dbUsers.createdYmdt | Body | DateTime | 생성 일시 | +| dbUsers.updatedYmdt | Body | DateTime | 수정 일시 | +| dbUsers.authenticationPlugin | Body | Enum | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| dbUsers.tlsOption | Body | Enum | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |
예시

@@ -1866,15 +1526,17 @@ GET /v3.0/db-instances/{dbInstanceId}/backup-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "backupPeriod": 1, - "ftwrlWaitTimeout": 1800, - "backupRetryCount": 0, - "replicationRegion": null, - "useBackupLock": false, - "backupSchedules": [ + "dbUsers": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" + "dbUserId": "550e8400-e29b-41d4-a716-446655440000", + "dbUserName": "dbUserName-example", + "host": "host-example", + "authorityType": "CUSTOM", + "dbUserStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" } ] } @@ -1883,42 +1545,37 @@ GET /v3.0/db-instances/{dbInstanceId}/backup-info

- --- -### 백업 정보 수정하기 +### DB 사용자 생성하기 ```http -PUT /v3.0/db-instances/{dbInstanceId}/backup-info +POST /v3.0/db-instances/{dbInstanceId}/db-users ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------------------------|------|---------|----|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | -| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | -| replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄) | -| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| host | Body | String | O | DB 사용자 계정의 호스트명
- 최대 길이: `45` | +| authorityType | Body | Enum | O | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |
예시

```json { - "backupPeriod": 5, - "useBackupLock": true, - "backupSchedules": [ - { - "backupWndBgnTime": "01:00:00", - "backupWndDuration": "TWO_HOURS" - } - ] + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "host": "host-example", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" } ``` @@ -1927,39 +1584,49 @@ PUT /v3.0/db-instances/{dbInstanceId}/backup-info #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### 네트워크 정보 보기 +### DB 사용자 삭제하기 ```http -GET /v3.0/db-instances/{dbInstanceId}/network-info +DELETE /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbUserId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------------------------------------------------------------------------------------------------------------------------------| -| availabilityZone | Body | Enum | DB 인스턴스를 생성할 가용성 영역 | -| subnet | Body | Object | 서브넷 객체 | -| subnet.subnetId | Body | UUID | 서브넷의 식별자 | -| subnet.subnetName | Body | UUID | 서브넷을 식별할 수 있는 이름 | -| subnet.subnetCidr | Body | UUID | 서브넷의 CIDR | -| endPoints | Body | Array | 접속 정보 목록 | -| endPoints.domain | Body | String | 도메인 | -| endPoints.ipAddress | Body | String | IP 주소 | -| endPoints.endPointType | Body | Enum | 접속 정보 타입
-`EXTERNAL`: 외부 접속 도메인
-`INTERNAL`: 내부 접속 도메인
-`PUBLIC`: (Deprecated) 외부 접속 도메인
-`PRIVATE`: (Deprecated) 내부 접속 도메인 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -1971,19 +1638,7 @@ GET /v3.0/db-instances/{dbInstanceId}/network-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "availabilityZone": "kr-pub-a", - "subnet": { - "subnetId": "bd453789-34ae-416c-9f78-05b9e43a46be", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/16" - }, - "endPoints": [ - { - "domain": "ea548a78-d85f-43b4-8ddf-c88d999b9905.internal.kr1.mysql.rds.nhncloudservice.com", - "ipAddress": "192.168.0.2", - "endPointType": "INTERNAL" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1992,55 +1647,43 @@ GET /v3.0/db-instances/{dbInstanceId}/network-info --- -### 네트워크 정보 수정하기 +### DB 사용자 수정하기 ```http -PUT /v3.0/db-instances/{dbInstanceId}/network-info +PUT /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbUserId | URL | UUID | O | | +| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| authorityType | Body | Enum | X | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | ---- - -### DB 사용자 목록 보기 +

예시 +

-```http -GET /v3.0/db-instances/{dbInstanceId}/db-users +```json +{ + "dbPassword": "dbPassword", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|-----------------------------------------------------------------------------------------------------------------------------| -| dbUsers | Body | Array | DB 사용자 목록 | -| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | -| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | -| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | -| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `UPDATING`: 수정 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbUsers.authenticationPlugin | Body | Enum | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| dbUsers.tlsOption | Body | Enum | TLS Option
- NONE
- SSL
- X509 | -| dbUsers.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbUsers.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -2052,19 +1695,7 @@ GET /v3.0/db-instances/{dbInstanceId}/db-users "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbUsers": [ - { - "dbUserId": "4b3d530b-fd02-4d59-a620-83d019a67bbb", - "dbUserName": "db-user", - "host": "%", - "authorityType": "DDL", - "dbUserStatus": "STABLE", - "authenticationPlugin": "NATIVE", - "tlsOption": "NONE", - "createdYmdt": "2023-03-17T14:02:29+09:00", - "updatedYmdt": "2023-03-17T14:02:31+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2073,38 +1704,25 @@ GET /v3.0/db-instances/{dbInstanceId}/db-users --- -### DB 사용자 생성하기 +### DB 인스턴스 삭제 보호 설정 변경 ```http -POST /v3.0/db-instances/{dbInstanceId}/db-users +PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|-------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserName | Body | String | O | DB 사용자 계정 이름
- 최소 길이: `1`
- 최대 길이: `32` | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `16` | -| host | Body | String | O | DB 사용자 계정의 호스트명
- 예시: `1.1.1.%` | -| authorityType | Body | Enum | O | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | - -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 설정할 수 있습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 |

예시

```json { - "dbUserName": "db-user", - "dbPassword": "password", - "host": "1.1.1.%", - "authorityType": "CRUD", - "authenticationPlugin": "NATIVE", - "tlsOption": "NONE" + "useDeletionProtection": false } ``` @@ -2113,99 +1731,881 @@ POST /v3.0/db-instances/{dbInstanceId}/db-users #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### DB 사용자 수정하기 +### DB 인스턴스 강제 재시작하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/force-restart +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 고가용성 수정하기 + +```http +PUT /v3.0/db-instances/{dbInstanceId}/high-availability +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | + +

예시 +

+ +```json +{ + "useHighAvailability": false, + "pingInterval": 1 +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 일시 중지하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/pause +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 복구하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/repair +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 다시 시작하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/resume +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 분리하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/split +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 로그 파일 목록 보기 + +```http +GET /v3.0/db-instances/{dbInstanceId}/log-files +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| logFiles | Body | Array | 로그 파일 목록 | +| logFiles.logFileName | Body | String | 로그 파일 이름 | +| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- ERROR
- BINLOG
- GENERAL
- SLOW_QUERY
- AUDIT
- BACKUP | +| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | +| logFiles.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "logFiles": [ + { + "logFileName": "logFileName-example", + "logFileType": "ERROR", + "logFileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### 로그 파일 내보내기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/log-files/export +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| logFileNames | Body | Array | O | 로그 파일 이름 목록 | +| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 회원 또는 IAM 멤버 ID | +| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | + +
예시 +

+ +```json +{ + "logFileNames": [], + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 네트워크 정보 보기 + +```http +GET /v3.0/db-instances/{dbInstanceId}/network-info +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| availabilityZone | Body | String | DB 인스턴스를 생성할 가용성 영역 | +| subnet | Body | Object | 서브넷 객체 | +| subnet.subnetId | Body | UUID | 서브넷의 식별자 | +| subnet.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnet.subnetCidr | Body | String | 서브넷의 CIDR | +| endPoints | Body | Array | 접속 정보 목록 | +| endPoints.domain | Body | String | 도메인 | +| endPoints.ipAddress | Body | String | IP 주소 | +| endPoints.endPointType | Body | String | 접속 정보 타입 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "availabilityZone": "kr-pub-a", + "subnet": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example" + }, + "endPoints": [ + { + "domain": "domain-example", + "ipAddress": "ipAddress-example", + "endPointType": "endPointType-example" + } + ] +} +``` + +

+
+ +--- + +### 네트워크 정보 수정하기 ```http -PUT /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +PUT /v3.0/db-instances/{dbInstanceId}/network-info ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|-------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | -| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `16` | -| authorityType | Body | Enum | X | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 수정할 수 있습니다. -> `authenticationPlugin`의 값은 `dbPassword`와 동시에 수정을 해야 합니다. +
예시 +

+ +```json +{ + "usePublicAccess": false +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

```json { - "authorityType": "DDL" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

+--- + +### DB 인스턴스 승격하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/promote +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### DB 사용자 삭제하기 +### DB 인스턴스 복제하기 ```http -DELETE /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +POST /v3.0/db-instances/{dbInstanceId}/replicate +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부 | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | X | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | X | 데이터 스토리지 타입 | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| backup | Body | Object | X | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +
예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDefaultNotification": false, + "useDeletionProtection": false, + "network": { + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "storage": { + "storageType": "General SSD", + "storageSize": 20 + }, + "backup": { + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 0, + "replicationRegion": "KR4", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + } +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 인스턴스 재시작하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/restart +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` | + +
예시 +

+ +```json +{ + "useOnlineFailover": false, + "executeBackup": false, + "waitReplicationDelay": false, + "useReadOnly": false +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 인스턴스 복원 정보 조회 + +```http +GET /v3.0/db-instances/{dbInstanceId}/restoration-info +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 복원될 마지막 쿼리 조회 + +```http +GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| executedYmdt | Body | DateTime | 쿼리 수행 일시 | +| lastQuery | Body | String | 마지막 수행 쿼리 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "executedYmdt": "2023-12-31T15:00:00+09:00", + "lastQuery": "lastQuery-example" +} +``` + +

+
+ +--- + +### DB 인스턴스 복원 + +```http +POST /v3.0/db-instances/{dbInstanceId}/restore +``` + +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | X | DB 포트 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| imageId | Body | UUID | X | 이미지의 식별자 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.restoreType | Body | Enum | O | 복원 타입
- TIMESTAMP: `복원 가능한 시간 이내의 시간을 이용한 시점 복원`
- BINLOG: `복원 가능한 바이너리 로그 위치를 이용한 시점 복원`
- BACKUP: `기존에 생성한 백업을 이용한 스냅숏 복원` | +| restore.binLog.binLogFileName | Body | String | X | 복원에 사용할 바이너리 로그 이름 | +| restore.binLog.binLogPosition | Body | Object | X | 복원에 사용할 바이너리 로그 위치 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | + +#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.restoreYmdt | Body | DateTime | X | DB 인스턴스 복원 일시 | + +복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능합니다. + +#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 | +| restore.binLog | Body | Object | X | 복원에 사용할 바이너리 로그 정보 객체 | + +바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. + +#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 | + +
예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "useHighAvailability": false, + "imageId": "550e8400-e29b-41d4-a716-446655440000", + "pingInterval": 3, + "storage": { + "storageType": "General SSD", + "storageSize": 20 + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "backup": { + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR4", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + }, + "restore": { + "restoreType": "TIMESTAMP", + "binLog": { + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + } + } + }, + "useDefaultNotification": false, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDeletionProtection": false +} ``` -#### 요청 +

+
+ +#### 응답 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### DB 스키마 목록 보기 +### DB 인스턴스 시작하기 ```http -GET /v3.0/db-instances/{dbInstanceId}/db-schemas +POST /v3.0/db-instances/{dbInstanceId}/start ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|------------------------------------------------------------------------------------------------------| -| dbSchemas | Body | Array | DB 스키마 목록 | -| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | -| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | -| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbSchemas.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -2217,14 +2617,7 @@ GET /v3.0/db-instances/{dbInstanceId}/db-schemas "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSchemas": [ - { - "dbSchemaId": "7c9a94b8-86c1-435d-8af2-82a5e9d53fd4", - "dbSchemaName": "schema", - "dbSchemaStatus": "STABLE", - "createdYmdt": "2023-03-20T13:37:45+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2233,75 +2626,66 @@ GET /v3.0/db-instances/{dbInstanceId}/db-schemas --- -### DB 스키마 생성하기 +### DB 인스턴스 정지하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/db-schemas +POST /v3.0/db-instances/{dbInstanceId}/stop ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|--------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaName | Body | String | O | DB 스키마 이름 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -### DB 스키마 삭제하기 +

예시 +

-```http -DELETE /v3.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaId | URL | UUID | O | DB 스키마의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 로그 파일 목록 보기 +### 스토리지 정보 보기 ```http -GET /v3.0/db-instances/{dbInstanceId}/log-files +GET /v3.0/db-instances/{dbInstanceId}/storage-info ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|-------|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileTypes | Query | Array | X | 로그 파일 타입 종류 목록
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| logFiles | Body | Array | 로그 파일 목록 | -| logFiles.logFileName | Body | String | 로그 파일 이름 | -| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | -| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | -| logFiles.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageType | Body | Enum | 데이터 스토리지 타입 | +| storageSize | Body | Number | 데이터 스토리지 크기(GB) | +| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- DELETED: `삭제됨`
- PENDING_DELETION: `삭제 유예됨`
- DELETION_RESERVED: `삭제 예약됨 (스냅샷 정리 대기)`
- DETACHED: `해제됨`
- ATTACHED: `할당됨` |
예시

@@ -2313,14 +2697,9 @@ GET /v3.0/db-instances/{dbInstanceId}/log-files "resultMessage": "SUCCESS", "isSuccessful": true }, - "logFiles": [ - { - "logFileName": "xtra_full.log-20230317", - "logFileType": "BACKUP", - "logFileSize": 4096, - "createdYmdt": "2023-03-17T14:02:29+09:00" - } - ] + "storageType": "General SSD", + "storageSize": 1, + "storageStatus": "DELETED" } ``` @@ -2329,35 +2708,25 @@ GET /v3.0/db-instances/{dbInstanceId}/log-files --- -### 로그 파일 내보내기 +### 스토리지 정보 수정하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/log-files/export +PUT /v3.0/db-instances/{dbInstanceId}/storage-info ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|--------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileNames | Body | Array | O | 로그 파일 이름 목록
- 최소 크기: `1` | -| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최댓값: `2048` |

예시

```json { - "logFileNames": ["xtra_full.log-20230317"], - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "logs/backup" + "storageSize": 1 } ``` @@ -2366,9 +2735,26 @@ POST /v3.0/db-instances/{dbInstanceId}/log-files/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -2394,30 +2780,22 @@ GET /v3.0/backups 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|--------|----|----------------------------------------------------------| -| page | Query | Number | O | 조회할 목록의 페이지
- 최솟값: `1` | -| size | Query | Number | O | 조회할 목록의 페이지 크기
- 최솟값: `1`
- 최댓값: `100` | -| backupType | Query | Enum | X | 백업 유형
- `AUTO`: 자동
- `MANUAL`: 수동
- 기본값: 전체 | -| dbInstanceId | Query | UUID | X | 원본 DB 인스턴스의 식별자 | -| dbVersion | Query | Enum | X | DB 엔진 유형 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|-----------------------------------| -| totalCounts | Body | Number | 전체 백업 목록 수 | -| backups | Body | Array | 백업 목록 | -| backups.backupId | Body | UUID | 백업의 식별자 | -| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | -| backups.backupStatus | Body | Enum | 백업의 현재 상태 | -| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| backups.dbVersion | Body | Enum | DB 엔진 유형 | -| backups.utilVersion | Body | String | 백업에 사용된 xtrabackup 유틸리티 버전 | -| backups.backupType | Body | Enum | 백업 유형 | -| backups.backupSize | Body | Number | 백업의 크기(Byte) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 백업 목록 수 | +| backups | Body | Array | 백업 목록 | +| backups.backupId | Body | UUID | 백업의 식별자 | +| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | +| backups.backupStatus | Body | Enum | 백업의 현재 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| backups.dbVersion | Body | Enum | DB 엔진 유형 | +| backups.utilVersion | Body | String | 유틸리티 버전 | +| backups.backupType | Body | Enum | 백업 유형
- AUTO
- MANUAL | +| backups.backupSize | Body | Number | 백업의 크기(Byte) | +| backups.createdYmdt | Body | DateTime | 생성 일시 | +| backups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -2432,16 +2810,16 @@ GET /v3.0/backups "totalCounts": 1, "backups": [ { - "backupId": "0017f136-3e01-4530-94aa-20661afe6632", - "backupName": "backup", - "backupStatus": "COMPLETED", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd", - "dbVersion": "MYSQL_V8028", - "utilVersion": "8.0.28", + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "utilVersion": "utilVersion-example", "backupType": "AUTO", - "backupSize": 4996786, - "createdYmdt": "2023-02-21T00:35:00+09:00", - "updatedYmdt": "2023-02-22T00:35:32+09:00" + "backupSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -2452,6 +2830,45 @@ GET /v3.0/backups --- +### 백업 삭제하기 + +```http +DELETE /v3.0/backups/{backupId} +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + ### 백업 내보내기 ```http @@ -2460,25 +2877,25 @@ POST /v3.0/backups/{backupId}/export #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|-----------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 계정 혹은 IAM 회원 ID | +| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 |
예시

```json { - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "backups/backup_file" + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" } ``` @@ -2487,12 +2904,26 @@ POST /v3.0/backups/{backupId}/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -> [주의] -> 수동 백업의 경우 백업이 수행된 DB 인스턴스가 존재하지 않으면, 백업을 오브젝트 스토리지로 내보낼 수 없습니다. +

+
--- @@ -2504,50 +2935,56 @@ POST /v3.0/backups/{backupId}/restore #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------|------|---------|----|---------------------------------------------------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Integer | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 ||network|Body|Object|O|네트워크 정보 객체| -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄) | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json - { - "dbInstanceName": "db-instance-restore", - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbPort": 10000, - "parameterGroupId": "132d383c-38e3-468a-a826-5e9a8fff15d0", + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, "availabilityZone": "kr-pub-a" }, "storage": { @@ -2555,10 +2992,14 @@ POST /v3.0/backups/{backupId}/restore "storageSize": 20 }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 1800, + "replicationRegion": "KR4", + "useBackupLock": true, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", + "backupWndBgnTime": "backupWndBgnTime-example", "backupWndDuration": "HALF_AN_HOUR" } ] @@ -2571,31 +3012,26 @@ POST /v3.0/backups/{backupId}/restore #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -### 백업 삭제하기 +

예시 +

-```http -DELETE /v3.0/backups/{backupId} +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------|-----|------|----|---------| -| backupId | URL | UUID | O | 백업의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -2622,15 +3058,15 @@ GET /v3.0/db-security-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-----------------------------------| -| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | -| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | +| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -2644,12 +3080,12 @@ GET /v3.0/db-security-groups }, "dbSecurityGroups": [ { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", "progressStatus": "NONE", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2022-02-19T19:18:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -2660,42 +3096,59 @@ GET /v3.0/db-security-groups --- -### DB 보안 그룹 상세 보기 +### DB 보안 그룹 생성하기 ```http -GET /v3.0/db-security-groups/{dbSecurityGroupId} +POST /v3.0/db-security-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` | +| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | +| rules.direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| rules.etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| rules.port | Body | Object | O | 포트 객체 | +| rules.port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| rules.cidr | Body | String | O | CIDR | +| rules.description | Body | String | X | 보안 그룹 규칙에 대한 추가 정보 | + +

예시 +

+ +```json +{ + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example", + "rules": [ + { + "direction": "INGRESS", + "etherType": "IPV4", + "port": { + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 + }, + "cidr": "cidr-example", + "description": "description-example" + } + ] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|----------|--------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| rules | Body | Array | DB 보안 그룹 규칙 목록 | -| rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | -| rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.port | Body | Object | 포트 객체 | -| rules.port.portType | Body | Enum | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다.
- `PORT`: 지정된 포트값으로 설정됩니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | 최소 포트 범위 | -| rules.port.maxPort | Body | Number | 최대 포트 범위 | -| rules.cidr | Body | String | 허용할 트래픽의 원격 소스 | -| rules.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| rules.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 |
예시

@@ -2707,30 +3160,7 @@ GET /v3.0/db-security-groups/{dbSecurityGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSecurityGroup": { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", - "progressStatus": "NONE", - "rules": [ - { - "ruleId": "17c88ef6-95f1-4678-84f9-fee1b22e250d", - "description": "description", - "direction": "INGRESS", - "etherType": "IPV4", - "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 - }, - "cidr": "0.0.0.0/0", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } - ], - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2739,131 +3169,159 @@ GET /v3.0/db-security-groups/{dbSecurityGroupId} --- -### DB 보안 그룹 생성하기 +### DB 보안 그룹 삭제하기 ```http -POST /v3.0/db-security-groups +DELETE /v3.0/db-security-groups/{dbSecurityGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | -| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | -| rules.description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | -| rules.port | Body | Object | O | 포트 객체 | -| rules.port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. - -

예시 -

- -```json -{ - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", - "rules": [ - { - "direction": "INGRESS", - "etherType": "IPV4", - "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 - }, - "cidr": "0.0.0.0/0" - } - ] -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|------|---------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### DB 보안 그룹 수정하기 +### DB 보안 그룹 상세 보기 ```http -PUT /v3.0/db-security-groups/{dbSecurityGroupId} +GET /v3.0/db-security-groups/{dbSecurityGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|-----------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroup | Body | Object | DB 보안 그룹 | +| dbSecurityGroup.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroup.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| dbSecurityGroup.description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| dbSecurityGroup.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| dbSecurityGroup.rules | Body | Array | DB 보안 그룹 규칙 목록 | +| dbSecurityGroup.rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | +| dbSecurityGroup.rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | +| dbSecurityGroup.rules.direction | Body | Enum | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| dbSecurityGroup.rules.etherType | Body | Enum | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| dbSecurityGroup.rules.port | Body | Object | 포트 객체 | +| dbSecurityGroup.rules.port.portType | Body | Enum | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| dbSecurityGroup.rules.port.minPort | Body | Number | 최소 포트 범위 | +| dbSecurityGroup.rules.port.maxPort | Body | Number | 최대 포트 범위 | +| dbSecurityGroup.rules.cidr | Body | String | CIDR | +| dbSecurityGroup.rules.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroup.rules.updatedYmdt | Body | DateTime | 수정 일시 | +| dbSecurityGroup.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroup.updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSecurityGroup": { + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", + "progressStatus": "NONE", + "rules": [ + { + "ruleId": "550e8400-e29b-41d4-a716-446655440000", + "description": "description-example", + "direction": "INGRESS", + "etherType": "IPV4", + "port": { + "portType": "ALL", + "minPort": 1, + "maxPort": 1 + }, + "cidr": "cidr-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } } ```

-#### 응답 +--- + +### DB 보안 그룹 수정하기 + +```http +PUT /v3.0/db-security-groups/{dbSecurityGroupId} +``` + +#### 요청 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example" } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. --- -### DB 보안 그룹 삭제하기 +### DB 보안 그룹 규칙 삭제하기 ```http -DELETE /v3.0/db-security-groups/{dbSecurityGroupId} +DELETE /v3.0/db-security-groups/{dbSecurityGroupId}/rules ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleIds | Query | String | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -2874,7 +3332,8 @@ DELETE /v3.0/db-security-groups/{dbSecurityGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2891,20 +3350,17 @@ POST /v3.0/db-security-groups/{dbSecurityGroupId}/rules #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |

예시

@@ -2914,11 +3370,12 @@ POST /v3.0/db-security-groups/{dbSecurityGroupId}/rules "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "PORT", - "minPort": 10000, - "maxPort": 10000 + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -2927,9 +3384,26 @@ POST /v3.0/db-security-groups/{dbSecurityGroupId}/rules #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -2941,21 +3415,18 @@ PUT /v3.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleId | URL | UUID | O | DB 보안 그룹 규칙의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |
예시

@@ -2965,9 +3436,12 @@ PUT /v3.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "DB_PORT" + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -2976,32 +3450,26 @@ PUT /v3.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | ---- - -### DB 보안 그룹 규칙 삭제하기 +

예시 +

-```http -DELETE /v3.0/db-security-groups/{dbSecurityGroupId}/rules +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|-------|----|---------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleIds | Query | Array | O | DB 보안 그룹 규칙의 식별자 목록 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -3017,22 +3485,18 @@ GET /v3.0/parameter-groups 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------|-------|------|----|----------| -| dbVersion | Query | Enum | X | DB 엔진 유형 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-------------------------------------------------------------------| -| parameterGroups | Body | Array | 파라미터 그룹 목록 | -| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameterGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroups | Body | Array | 파라미터 그룹 목록 | +| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameterGroups.createdYmdt | Body | DateTime | 생성 일시 | +| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3046,13 +3510,13 @@ GET /v3.0/parameter-groups }, "parameterGroups": [ { - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", "parameterGroupStatus": "STABLE", - "createdYmdt": "2023-02-31T15:28:17+09:00", - "updatedYmdt": "2023-02-31T15:28:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3061,44 +3525,41 @@ GET /v3.0/parameter-groups

- --- -### 파라미터 그룹 상세 보기 +### 파라미터 그룹 생성하기 ```http -GET /v3.0/parameter-groups/{parameterGroupId} +POST /v3.0/parameter-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` | +| dbVersion | Body | Enum | O | DB 엔진 유형 | + +
예시 +

+ +```json +{ + "parameterGroupName": "parameterGroupName", + "description": "description-example", + "dbVersion": "MYSQL_V8036" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|--------------------------------------------------------------------------------------------------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameters | Body | Array | 파라미터 목록 | -| parameters.parameterId | Body | UUID | 파라미터 식별자 | -| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- `CLIENT`: client
- `MYSQL`: mysql
- `MYSQLD`: mysqld | -| parameters.parameterName | Body | String | 파라미터 이름 | -| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | -| parameters.value | Body | String | 현재 설정된 값 | -| parameters.defaultValue | Body | String | 기본값 | -| parameters.allowedValue | Body | String | 허용된 값 | -| parameters.updateType | Body | Enum | 수정 타입
- `VARIABLE`: 언제든 수정 가능
- `CONSTANT`: 수정 불가능
- `INIT_VARIABLE`: DB 인스턴스 생성 시에만 수정 가능 | -| parameters.applyType | Body | Enum | 적용 타입
- `SESSION`: 세션 적용
- `FILE`: 설정 파일 적용(재시작 필요)
- `BOTH`: 전체(재시작 필요) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |
예시

@@ -3110,91 +3571,130 @@ GET /v3.0/parameter-groups/{parameterGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", - "parameterGroupStatus": "STABLE", - "parameters": [ - { - "parameterId": "fa040b5e-f29f-46de-8f0d-bba4cb82887a", - "parameterFileGroup": "client", - "parameterName": "socket", - "fileParameterName": "socket", - "value": "/home/tcrds/db/mysql/tmp/mysql.sock", - "defaultValue": "/home/tcrds/db/mysql/tmp/mysql.sock", - "allowedValue": "", - "updateType": "CONSTANT", - "applyType": "BOTH" - } - ], - "createdYmdt": "2023-03-13T11:02:28+09:00", - "updatedYmdt": "2023-03-13T11:02:28+09:00" + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ```

+--- + +### 파라미터 그룹 삭제하기 + +```http +DELETE /v3.0/parameter-groups/{parameterGroupId} +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 생성하기 +### 파라미터 그룹 상세 보기 ```http -POST /v3.0/parameter-groups +GET /v3.0/parameter-groups/{parameterGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameters | Body | Array | 파라미터 목록 | +| parameters.parameterId | Body | UUID | 파라미터의 식별자 | +| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- CLIENT
- MYSQL
- MYSQLD | +| parameters.parameterName | Body | String | 파라미터 이름 | +| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | +| parameters.value | Body | String | 현재 설정된 값 | +| parameters.defaultValue | Body | String | 기본값 | +| parameters.allowedValue | Body | String | 허용된 값 | +| parameters.updateType | Body | Enum | 수정 타입
- VARIABLE
- CONSTANT
- INIT_VARIABLE | +| parameters.applyType | Body | Enum | 적용 타입
- BOTH
- SESSION
- FILE | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "parameterGroupName": "parameter-group", - "dbVersion": "MYSQL_V8028" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "parameterGroupStatus": "STABLE", + "parameters": [ + { + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "parameterFileGroup": "CLIENT", + "parameterName": "parameterName-example", + "fileParameterName": "fileParameterName-example", + "value": "value-example", + "defaultValue": "defaultValue-example", + "allowedValue": "allowedValue-example", + "updateType": "VARIABLE", + "applyType": "BOTH" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | - --- -### 파라미터 그룹 복사하기 +### 파라미터 그룹 수정하기 ```http -POST /v3.0/parameter-groups/{parameterGroupId}/copy +PUT /v3.0/parameter-groups/{parameterGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "parameterGroupName": "parameter-group-copy", - "description": "copy" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -3203,32 +3703,31 @@ POST /v3.0/parameter-groups/{parameterGroupId}/copy #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 수정하기 +### 파라미터 그룹 복사하기 ```http -PUT /v3.0/parameter-groups/{parameterGroupId} +POST /v3.0/parameter-groups/{parameterGroupId}/copy ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |

예시

```json { - "parameterGroupName": "parameter-group" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -3237,7 +3736,9 @@ PUT /v3.0/parameter-groups/{parameterGroupId} #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |

예시

@@ -3248,7 +3749,8 @@ PUT /v3.0/parameter-groups/{parameterGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3265,12 +3767,12 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/parameters #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------------|------|--------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | -| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | -| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | +| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | +| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 |

예시

@@ -3279,8 +3781,8 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/parameters { "modifiedParameters": [ { - "parameterId": "3abac558-7274-44e1-9f4a-f100f53f67ba", - "value": "0" + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "value": "value-example" } ] } @@ -3293,39 +3795,49 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/parameters 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

+--- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} +### 파라미터 그룹 재설정하기 + +```http +PUT /v3.0/parameter-groups/{parameterGroupId}/reset ``` -

-
+#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 재설정하기 +## 사용자 그룹 + +### 사용자 그룹 목록 보기 ```http -PUT /v3.0/parameter-groups/{parameterGroupId}/reset +GET /v3.0/user-groups ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroups.createdYmdt | Body | DateTime | 생성 일시 | +| userGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3336,7 +3848,15 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/reset "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "userGroups": [ + { + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -3345,23 +3865,39 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/reset --- -### 파라미터 그룹 삭제하기 +### 사용자 그룹 생성하기 ```http -DELETE /v3.0/parameter-groups/{parameterGroupId} +POST /v3.0/user-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록 | +| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` | + +

예시 +

+ +```json +{ + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAllYN": false +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +

+
#### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 |
예시

@@ -3372,7 +3908,8 @@ DELETE /v3.0/parameter-groups/{parameterGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "userGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3381,51 +3918,23 @@ DELETE /v3.0/parameter-groups/{parameterGroupId} --- -## 사용자 그룹 - -### 사용자 그룹 목록 보기 +### 사용자 그룹 삭제하기 ```http -GET /v3.0/user-groups +DELETE /v3.0/user-groups/{userGroupId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|-----------------------------------| -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| userGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - -

예시 -

+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "userGroups": [ - { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" - } - ] -} -``` +#### 응답 -

-
+이 API는 응답 본문을 반환하지 않습니다. --- @@ -3439,21 +3948,21 @@ GET /v3.0/user-groups/{userGroupId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|----------|-----------------------------------------------------------------------------------------------------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
`ENTIRE`: 프로젝트 멤버 전체를 포함하는 사용자 그룹
`INDIVIDUAL_MEMBER`: 특정 프로젝트 멤버를 포함하는 사용자 그룹 | -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
- ENTIRE
- INDIVIDUAL_MEMBER | +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3465,65 +3974,21 @@ GET /v3.0/user-groups/{userGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "userGroupTypeCode": "INDIVIDUAL_MEMBER", + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "userGroupTypeCode": "ENTIRE", "members": [ { - "memberId": "1321e759-2ef3-4b85-9921-b13e918b24b5" + "memberId": "550e8400-e29b-41d4-a716-446655440000" } ], - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" -} -``` - -

-
- ---- - -### 사용자 그룹 생성하기 - -```http -POST /v3.0/user-groups -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|-------------------------------------------------------------| -| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록
`selectAllYN`이 true인 경우 해당 필드 값은 무시됨 | -| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 유무
true인 경우 해당 그룹은 전체 멤버에 대해 설정됨 | - -
예시 -

- -```json -{ - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5" - ] -} -``` - -```json -{ - "userGroupName": "dev-team", - "selectAllYN":true + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` -

-
- -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------------|------|------|-------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +

+
--- @@ -3535,23 +4000,21 @@ PUT /v3.0/user-groups/{userGroupId} #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|----------------------------------------------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | -| userGroupName | Body | String | X | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | -| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 유무
true인 경우 해당 그룹은 전체 멤버에 대해 설정됨 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | +| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` |
예시

```json { - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5", - "f9064b09-2b15-442e-a4b0-3a5a2754555e" - ] + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAllYN": false } ``` @@ -3562,39 +4025,32 @@ PUT /v3.0/user-groups/{userGroupId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- -### 사용자 그룹 삭제하기 +## 알림 그룹 + +### 알림 그룹 목록 보기 ```http -DELETE /v3.0/user-groups/{userGroupId} +GET /v3.0/notification-groups ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroups | Body | Array | 알림 그룹 목록 | +| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | +| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | +| notificationGroups.createdYmdt | Body | DateTime | 생성 일시 | +| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3605,7 +4061,18 @@ DELETE /v3.0/user-groups/{userGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "notificationGroups": [ + { + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, + "notifySms": false, + "isEnabled": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -3614,30 +4081,45 @@ DELETE /v3.0/user-groups/{userGroupId} --- -## 알림 그룹 - -### 알림 그룹 목록 보기 +### 알림 그룹 생성하기 ```http -GET /v3.0/notification-groups +POST /v3.0/notification-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | +| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | + +

예시 +

+ +```json +{ + "notificationGroupName": "notificationGroupName", + "notifyEmail": true, + "notifySms": true, + "isEnabled": true, + "dbInstanceIds": [], + "userGroupIds": [] +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------------|------|----------|-----------------------------------| -| notificationGroups | Body | Array | 알림 그룹 목록 | -| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | -| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | -| notificationGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 |
예시

@@ -3649,17 +4131,7 @@ GET /v3.0/notification-groups "resultMessage": "SUCCESS", "isSuccessful": true }, - "notificationGroups": [ - { - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, - "notifySms": false, - "isEnabled": true, - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" - } - ] + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3668,6 +4140,26 @@ GET /v3.0/notification-groups --- +### 알림 그룹 삭제하기 + +```http +DELETE /v3.0/notification-groups/{notificationGroupId} +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + ### 알림 그룹 상세 보기 ```http @@ -3678,27 +4170,27 @@ GET /v3.0/notification-groups/{notificationGroupId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------------|------|----------|-----------------------------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notifySms | Body | Boolean | SMS 알림 여부 | -| isEnabled | Body | Boolean | 활성화 여부 | -| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notifySms | Body | Boolean | SMS 알림 여부 | +| isEnabled | Body | Boolean | 활성화 여부 | +| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -3710,25 +4202,25 @@ GET /v3.0/notification-groups/{notificationGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, "notifySms": false, - "isEnabled": true, + "isEnabled": false, "dbInstances": [ { - "dbInstanceId": "ed5cb985-526f-4c54-9ae0-40288593de65", - "dbInstanceName": "database" + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example" } ], "userGroups": [ { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team" + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example" } ], - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -3737,37 +4229,35 @@ GET /v3.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 생성하기 +### 알림 그룹 수정하기 ```http -POST /v3.0/notification-groups +PUT /v3.0/notification-groups/{notificationGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------------| -| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | -| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | -| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | -| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | +| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `false` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `false` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `false` | +| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 |

예시

```json { - "notificationGroupName": "dev-team-noti", + "notificationGroupName": "notificationGroupName-example", "notifyEmail": false, - "isEnable": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65" - ], - "userGroupIds": [ - "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0" - ] + "notifySms": false, + "isEnabled": false, + "dbInstanceIds": [], + "userGroupIds": [] } ``` @@ -3776,49 +4266,45 @@ POST /v3.0/notification-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|------|------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 알림 그룹 수정하기 +## 모니터링 + +### 통계 정보 조회 ```http -PUT /v3.0/notification-groups/{notificationGroupId} +GET /v3.0/metric-statistics ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부 | -| notifySms | Body | Boolean | X | SMS 알림 여부 | -| isEnabled | Body | Boolean | X | 활성화 여부 | -| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +이 API는 요청 본문을 요구하지 않습니다. -

예시 -

+#### 응답 -```json -{ - "notifyEmail": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65", - "d51b7da0-682f-47ff-b588-b739f6adc740" - ] -} +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### Metric 목록 보기 + +```http +GET /v3.0/metrics ``` -

-
+#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| metrics | Body | Array | Metric 목록 | +| metrics.measureName | Body | String | 조회 지표 유형 | +| metrics.unit | Body | String | 측정값 단위 |
예시

@@ -3829,7 +4315,13 @@ PUT /v3.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "metrics": [ + { + "measureName": "measureName-example", + "unit": "unit-example" + } + ] } ``` @@ -3838,23 +4330,38 @@ PUT /v3.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 삭제하기 +## 이벤트 + +### 이벤트 카테고리 + +이벤트는 카테고리로 분류할 수 있으며 아래와 같습니다. + +| 이벤트 카테고리 | 설명 | +|-------------|---------| +| ALL | 전체 | +| BACKUP | 백업 | +| DB_INSTANCE | DB 인스턴스 | +| JOB | 작업 | +| TENANT | 테넌트 | +| MONITORING | 모니터링 | + +### 구독 가능한 이벤트 코드 목록 보기 ```http -DELETE /v3.0/notification-groups/{notificationGroupId} +GET /v3.0/event-codes ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | - #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventCodes | Body | Array | 이벤트 코드 목록 | +| eventCodes.eventCode | Body | Enum | 이벤트 코드 | +| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT |

예시

@@ -3865,7 +4372,13 @@ DELETE /v3.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "eventCodes": [ + { + "eventCode": "ENUM_VALUE", + "eventCategoryType": "ALL" + } + ] } ``` @@ -3874,12 +4387,10 @@ DELETE /v3.0/notification-groups/{notificationGroupId} --- -## 모니터링 - -### Metric 목록 보기 +### 이벤트 목록 조회 ```http -GET /v3.0/metrics +GET /v3.0/events ``` #### 요청 @@ -3888,11 +4399,18 @@ GET /v3.0/metrics #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|--------|-----------| -| metrics | Body | Array | Metric 목록 | -| metrics.measureName | Body | Enum | 조회 지표 유형 | -| metrics.unit | Body | String | 측정값 단위 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 목록 수 | +| events | Body | Array | 이벤트 목록 | +| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | +| events.sourceId | Body | String | 이벤트 소스의 식별자 | +| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | +| events.messages | Body | Array | 이벤트 메세지 목록 | +| events.messages.langCode | Body | Enum | 언어 코드
- KO
- EN
- JA
- ZH | +| events.messages.message | Body | String | 이벤트 메세지 | +| events.eventYmdt | Body | DateTime | 이벤트 발생 일시 |

예시

@@ -3904,10 +4422,20 @@ GET /v3.0/metrics "resultMessage": "SUCCESS", "isSuccessful": true }, - "metrics": [ + "totalCounts": 1, + "events": [ { - "measureName": "CPU_USAGE", - "unit": "%" + "eventCategoryType": "ALL", + "eventCode": "ENUM_VALUE", + "sourceId": "sourceId-example", + "sourceName": "sourceName-example", + "messages": [ + { + "langCode": "KO", + "message": "message-example" + } + ], + "eventYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3918,56 +4446,65 @@ GET /v3.0/metrics --- -### 통계 정보 조회 +## 이벤트 구독 + +### 이벤트 구독 목록 조회 ```http -GET /v3.0/metric-statistics +GET /v3.0/event-subscriptions ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|----------|----|-----------------------------------| -| dbInstanceId | Query | UUID | O | DB 인스턴스의 식별자 | -| measureNames | Query | Array | O | 조회 지표 목록
- 최소 크기: `1` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| interval | Query | Number | X | 조회 간격 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|-----------|----------| -| metricStatistics | Body | Array | 통계 정보 목록 | -| metricStatistics.measureName | Body | Enum | 측정 항목 유형 | -| metricStatistics.unit | Body | String | 측정값 단위 | -| metricStatistics.values | Body | Array | 측정값 목록 | -| metricStatistics.values.timestamp | Body | Timestamp | 측정 시간 | -| metricStatistics.values.value | Body | Object | 측정값 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 구독 목록 수 | +| eventSubscriptions | Body | Array | 이벤트 구독 목록 | +| eventSubscriptions.eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 | +| eventSubscriptions.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.eventSubscriptionName | Body | String | 이벤트 구독의 식별할 수 있는 이름 | +| eventSubscriptions.enabled | Body | Boolean | 활성화 여부 | +| eventSubscriptions.notifyEmail | Body | Boolean | 이메일 발송 여부 | +| eventSubscriptions.notifySms | Body | Boolean | SMS 발송 여부 | +| eventSubscriptions.eventCodes | Body | Array | 구독할 이벤트 코드 목록 | +| eventSubscriptions.sources | Body | Array | 구독할 이벤트 소스 목록 | +| eventSubscriptions.sources.sourceId | Body | String | 이벤트 소스의 식별자 | +| eventSubscriptions.sources.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.userGroupIds | Body | Array | 이벤트 구독 중인 사용자 그룹의 식별자 목록 | +| eventSubscriptions.createdYmdt | Body | DateTime | 생성 일시 |

예시

```json { - "metricStatistics": [ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "totalCounts": 1, + "eventSubscriptions": [ { - "measureName": "MYSQL_STATUS", - "unit": "", - "values": [ - [ - 1679298540, - "1" - ], - [ - 1679298600, - "1" - ], - [ - 1679298660, - "1" - ] - ] + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ + { + "sourceId": "sourceId-example", + "eventCategoryType": "ALL" + } + ], + "userGroupIds": [], + "createdYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3978,56 +4515,56 @@ GET /v3.0/metric-statistics --- -## 이벤트 - -### 이벤트 카테고리 - -이벤트는 카테고리로 분류할 수 있으며 아래와 같습니다. - -| 이벤트 카테고리 | 설명 | -|-------------|---------| -| ALL | 전체 | -| BACKUP | 백업 | -| DB_INSTANCE | DB 인스턴스 | -| JOB | 작업 | -| TENANT | 테넌트 | -| MONITORING | 모니터링 | - -### 이벤트 목록 조회 +### 이벤트 구독 생성하기 ```http -GET /v3.0/events +POST /v3.0/event-subscriptions ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | O | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | O | 활성화 여부 | +| notifyEmail | Body | Boolean | O | 이메일 발송 여부 | +| notifySms | Body | Boolean | O | SMS 발송 여부 | +| eventCodes | Body | Array | O | 구독할 이벤트 코드 목록 | +| sources | Body | Array | O | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | O | 이벤트 구독할 사용자 그룹의 식별자 목록 | + +

예시 +

+ +```json +{ + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ + { + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" + } + ], + "userGroupIds": [] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | O | 조회할 목록의 페이지
- 최솟값: `1` | -| size | Query | Number | O | 조회할 목록의 페이지 크기
- 최솟값: `1`
- 최댓값: `100` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| eventCategoryType | Query | Enum | O | 조회할 이벤트 카테고리 유형
- `ALL`: 전체
- `INSTANCE`: DB 인스턴스
- `BACKUP`: 백업
- `DB_SECURITY_GROUP`: DB 보안 그룹
- `TENANT`: 테넌트 | -| sourceId | Query | String | X | 이벤트가 발생한 대상 리소스의 식별자 | -| keyword | Query | String | X | 이벤트 메시지에 포함된 문자열 검색어 | -| ascendingOrder | Query | Enum | X | 이벤트 메시지 정렬 순서
- `ASC`: 오름차순
- `DESC`: 내림차순
- 기본값: `DESC` | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|---------------------------------------| -| totalCounts | Body | Number | 전체 이벤트 목록 수 | -| events | Body | Array | 이벤트 목록 | -| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | -| events.sourceId | Body | String | 이벤트 소스의 식별자 | -| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | -| events.messages | Body | Array | 이벤트 메시지 목록 | -| events.messages.langCode | Body | String | 언어 코드 | -| events.messages.message | Body | String | 이벤트 메시지 | -| events.eventYmdt | Body | DateTime | 이벤트 발생 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 |
예시

@@ -4039,34 +4576,7 @@ GET /v3.0/events "resultMessage": "SUCCESS", "isSuccessful": true }, - "totalCounts": 28, - "events": [ - { - "eventCategoryType": "INSTANCE", - "eventCode": "INSTC_02_01", - "sourceId": "76f00947-356e-4a20-8922-428368cc45ed", - "sourceName": "db-instance", - "messages": [ - { - "langCode": "EN", - "message": "DB instance started" - }, - { - "langCode": "JA", - "message": "DBインスタンスの起動" - }, - { - "langCode": "KO", - "message": "DB 인스턴스 시작" - }, - { - "langCode": "ZH", - "message": "DB instance started" - } - ], - "eventYmdt": "2023-03-20T16:31:59+09:00" - } - ] + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4075,44 +4585,75 @@ GET /v3.0/events --- -### 구독 가능한 이벤트 코드 목록 보기 +### 이벤트 구독 삭제하기 ```http -GET /v3.0/event-codes +DELETE /v3.0/event-subscriptions/{eventSubscriptionId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | + #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|-------|-------------| -| eventCodes | Body | Array | 이벤트 코드 목록 | -| eventCodes.eventCode | Body | Enum | 이벤트 코드 | -| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 이벤트 구독 수정하기 + +```http +PUT /v3.0/event-subscriptions/{eventSubscriptionId} +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | +| eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | X | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | X | 활성화 여부 | +| notifyEmail | Body | Boolean | X | 이메일 발송 여부 | +| notifySms | Body | Boolean | X | SMS 발송 여부 | +| eventCodes | Body | Array | X | 구독할 이벤트 코드 목록 | +| sources | Body | Array | X | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | X | 이벤트 구독할 사용자 그룹의 식별자 목록 |

예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "eventCodes": [ + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ { - "eventCode": "INSTC_05_01", - "eventCategoryType": "INSTANCE" + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" } - ] + ], + "userGroupIds": [] } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- + diff --git a/ko/api-guide-v3.0.md b/ko/api-guide-v3.0.md index cd8d9ce0..e0c324c0 100644 --- a/ko/api-guide-v3.0.md +++ b/ko/api-guide-v3.0.md @@ -1,41 +1,42 @@ -## Database > RDS for MySQL > API 가이드 +## Database > RDS for MySQL > API v3.0 가이드 + ## RDS for MySQL API 공통 정보 ### API 엔드포인트 -| 리전 | 엔드포인트 | -|-----------|-----------------------------------------------| + +| 리전 | 엔드포인트 | +|------|----------| | 한국(판교) 리전 | https://kr1-rds-mysql.api.nhncloudservice.com | | 한국(평촌) 리전 | https://kr2-rds-mysql.api.nhncloudservice.com | | 일본 리전 | https://jp1-rds-mysql.api.nhncloudservice.com | + ### 인증 및 권한 RDS for MySQL API를 사용하려면 User Access Key가 필요합니다. User Access Key는 NHN Cloud 계정 또는 IAM 계정을 기반으로 발급되는 인증 키로, Secret Access Key와 함께 사용하여 API 요청에 대한 인증 수단으로 활용됩니다. User Access Key와 Secret Access Key는 콘솔의 **API 보안 설정**에서 발급할 수 있습니다. User Access Key 발급 및 사용에 대한 자세한 내용은 [User Access Key](/nhncloud/ko/public-api/user-access-key)를 참고하세요. - 생성된 Key는 Appkey와 함께 요청 Header에 포함해야 합니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------------|--------|--------|----|-------------------------------------------------------------| -| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | -| X-TC-AUTHENTICATION-ID | Header | String | O | API 보안 설정 메뉴의 User Access Key ID | -| X-TC-AUTHENTICATION-SECRET | Header | String | O | API 보안 설정 메뉴의 Secret Access Key | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | +| X-TC-AUTHENTICATION-ID | Header | String | O | API 보안 설정 메뉴의 User Access Key ID | +| X-TC-AUTHENTICATION-SECRET | Header | String | O | API 보안 설정 메뉴의 Secret Access Key | +또한 프로젝트 권한에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER` 역할에는 아래처럼 기본 권한이 부여돼 있고 프로젝트 내 역할 그룹 관리 메뉴에서 필요한 권한만 부여할 수 있습니다. -또한 프로젝트 멤버 역할에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER`로 구분하여 권한을 부여할 수 있습니다. - -* `RDS for MySQL ADMIN` 권한은 모든 기능을 사용 가능합니다. -* `RDS for MySQL VIEWER` 권한은 정보를 조회하는 기능만 사용 가능합니다. +* `RDS for MySQL ADMIN` 역할은 API 실행에 필요한 모든 권한이 부여됩니다. +* `RDS for MySQL VIEWER` 역할은 정보를 조회하는 권한만 부여됩니다. * DB 인스턴스를 생성, 수정, 삭제하거나, DB 인스턴스를 대상으로 하는 어떠한 기능도 사용할 수 없습니다. - * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용 가능합니다. + * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용할 수 있습니다. API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같은 오류가 발생합니다. -| resultCode | resultMessage | 설명 | -|------------|---------------|-------------| -| 80401 | Unauthorized | 인증에 실패했습니다. | -| 80403 | Forbidden | 권한이 없습니다. | +| resultCode | resultMessage | 설명 | +|------------|---------------|-----| +| 80401 | Unauthorized | 인증에 실패했습니다. | +| 80403 | Forbidden | 권한이 없습니다. | ### 응답 공통 정보 @@ -53,52 +54,50 @@ API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같 ``` #### 필드 -| 이름 | 형식 | 설명 | -|---------------|---------|-----------------------------------------| -| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | -| resultMessage | String | 결과 메시지 | -| isSuccessful | Boolean | 성공 여부 | - - +| 이름 | 형식 | 설명 | +|-----|-----|-----| +| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | +| resultMessage | String | 결과 메시지 | +| isSuccessful | Boolean | 성공 여부 | ### DB 엔진 유형 -| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 정보 | -|--------------|----------|-----------------|--------| -| MYSQL\_V5633 | X | X | NATIVE | -| MYSQL\_V5715 | O | O | NATIVE | -| MYSQL\_V5719 | O | O | NATIVE | -| MYSQL\_V5726 | O | O | NATIVE | -| MYSQL\_V5731 | X | X | NATIVE | -| MYSQL\_V5733 | O | X | NATIVE, SHA256 | -| MYSQL\_V5737 | O | O | NATIVE, SHA256 | -| MYSQL\_V8018 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8023 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8028 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8032 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8033 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8034 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8044 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8045 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8405 | O | O | CACHING_SHA2 | -| MYSQL_V8406 | O | O | CACHING_SHA2 | -| MYSQL_V8407 | O | O | CACHING_SHA2 | -| MYSQL_V8408 | O | O | CACHING_SHA2 | +| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 | +|------------|----------|------------------|------------| +| MYSQL_V5633 | X | X | NATIVE | +| MYSQL_V5715 | O | O | NATIVE | +| MYSQL_V5719 | O | O | NATIVE | +| MYSQL_V5726 | O | O | NATIVE | +| MYSQL_V5731 | X | X | NATIVE | +| MYSQL_V5733 | O | X | NATIVE, SHA256 | +| MYSQL_V5737 | O | O | NATIVE, SHA256 | +| MYSQL_V8018 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8023 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8028 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8032 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8033 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8034 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8044 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8045 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8405 | O | O | CACHING_SHA2 | +| MYSQL_V8406 | O | O | CACHING_SHA2 | +| MYSQL_V8407 | O | O | CACHING_SHA2 | +| MYSQL_V8408 | O | O | CACHING_SHA2 | * ENUM 타입의 dbVersion 필드에 대해 해당 값을 사용할 수 있습니다. * 버전에 따라 생성 또는 복원이 불가능한 경우가 있을 수 있습니다. ## 프로젝트 정보 -### 리전 목록 보기 +### 프로젝트 멤버 목록 보기 ```http -GET /v3.0/project/regions +GET /v3.0/project/members ``` #### 요청 @@ -107,11 +106,13 @@ GET /v3.0/project/regions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------|------|---------|----------------------------------------------------------------------------| -| regions | Body | Array | 리전 목록 | -| regions.regionCode | Body | Enum | 리전 코드
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| members.memberName | Body | String | 프로젝트 멤버의 이름 | +| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | +| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 |
예시

@@ -123,31 +124,26 @@ GET /v3.0/project/regions "resultMessage": "SUCCESS", "isSuccessful": true }, - "regions": [ - { - "regionCode": "KR1", - "isEnabled": true - }, - { - "regionCode": "KR2", - "isEnabled": true - }, + "members": [ { - "regionCode": "JP1", - "isEnabled": true + "memberId": "550e8400-e29b-41d4-a716-446655440000", + "memberName": "memberName-example", + "emailAddress": "emailAddress-example", + "phoneNumber": "phoneNumber-example" } ] } ``` +

--- -### 프로젝트 멤버 목록 보기 +### 리전 목록 보기 ```http -GET /v3.0/project/members +GET /v3.0/project/regions ``` #### 요청 @@ -156,13 +152,11 @@ GET /v3.0/project/members #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|--------|-----------------| -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| members.memberName | Body | String | 프로젝트 멤버의 이름 | -| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | -| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| regions | Body | Array | 리전 목록 | +| regions.regionCode | Body | Enum | 리전 코드
- KR1: `한국(판교)`
- KR2: `한국(평촌)`
- JP1: `일본(도쿄)` | +| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 |
예시

@@ -174,12 +168,10 @@ GET /v3.0/project/members "resultMessage": "SUCCESS", "isSuccessful": true }, - "members": [ + "regions": [ { - "memberId": "1b1d3627-507a-49ea-8cb7-c86dfa9caa58", - "memberName": "홍길동", - "emailAddress": "gildong.hong@nhn.com", - "phoneNumber": "+821012345678" + "regionCode": "KR1", + "isEnabled": false } ] } @@ -204,13 +196,13 @@ GET /v3.0/db-flavors #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------| -| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | -| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | -| dbFlavors.ram | Body | Number | 메모리 용량(MB) | -| dbFlavors.vcpus | Body | Number | CPU 코어 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | +| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | +| dbFlavors.ram | Body | Number | 메모리 용량(MB) | +| dbFlavors.vcpus | Body | Number | CPU 코어 수 |

예시

@@ -224,9 +216,9 @@ GET /v3.0/db-flavors }, "dbFlavors": [ { - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbFlavorName": "m2.c1m2", - "ram": 2048, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbFlavorName": "dbFlavorName-example", + "ram": 1, "vcpus": 1 } ] @@ -252,14 +244,14 @@ GET /v3.0/network/subnets #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|---------|------------------| -| subnets | Body | Array | 서브넷 목록 | -| subnets.subnetId | Body | UUID | 서브넷의 식별자 | -| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | -| subnets.subnetCidr | Body | String | 서브넷의 CIDR | -| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | -| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| subnets | Body | Array | 서브넷 목록 | +| subnets.subnetId | Body | UUID | 서브넷의 식별자 | +| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnets.subnetCidr | Body | String | 서브넷의 CIDR | +| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | +| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 |

예시

@@ -273,11 +265,11 @@ GET /v3.0/network/subnets }, "subnets": [ { - "subnetId": "1b2a9b23-0725-4b92-8c78-35db66b8ad9f", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/24", - "usingGateway": true, - "availableIpCount": 240 + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example", + "usingGateway": false, + "availableIpCount": 1 } ] } @@ -302,11 +294,11 @@ GET /v3.0/db-versions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|---------|-----------------------| -| dbVersions | Body | Array | DB 엔진 목록 | -| dbVersions.dbVersion | Body | String | DB 엔진 유형 | -| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbVersions | Body | Array | DB 엔진 목록 | +| dbVersions.dbVersion | Body | String | DB 엔진 유형 | +| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | | dbVersions.restorableFromObs | Body | Boolean | 오브젝트 스토리지로부터 복원 가능 여부 |

예시 @@ -321,9 +313,9 @@ GET /v3.0/db-versions }, "dbVersions": [ { - "dbVersion": "MYSQL_V8028", - "dbVersionName": "MySQL 8.0.28", - "restorableFromObs": true + "dbVersion": "MYSQL_V8036", + "dbVersionName": "dbVersionName-example", + "restorableFromObs": false } ] } @@ -336,7 +328,7 @@ GET /v3.0/db-versions ## 데이터 스토리지 -### 데이터 스토리지 타입 목록 보기 +### 스토리지 타입 목록 보기 ```http GET /v3.0/storage-types @@ -348,9 +340,9 @@ GET /v3.0/storage-types #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|-------|----------------| -| storageTypes | Body | Array | 데이터 스토리지 타입 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageTypes | Body | Array | 스토리지 타입 목록 |
예시

@@ -362,10 +354,7 @@ GET /v3.0/storage-types "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageTypes": [ - "General SSD", - "General HDD" - ] + "storageTypes": [] } ``` @@ -374,7 +363,7 @@ GET /v3.0/storage-types --- -### 데이터 스토리지 목록 보기 +### 스토리지 목록 보기 ```http GET /v3.0/storages @@ -386,9 +375,9 @@ GET /v3.0/storages #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------|------|-------|-------------| -| storages | Body | Array | 데이터 스토리지 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storages | Body | Array | 스토리지 목록 |

예시

@@ -400,10 +389,7 @@ GET /v3.0/storages "resultMessage": "SUCCESS", "isSuccessful": true }, - "storages": [ - "General SSD", - "General HDD" - ] + "storages": [] } ``` @@ -441,21 +427,21 @@ GET /v3.0/jobs/{jobId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------|-----|------|----|---------| -| jobId | URL | UUID | O | 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| jobId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------|------|----------|-----------------------------------| -| jobId | Body | UUID | 작업의 식별자 | -| jobStatus | Body | Enum | 작업의 현재 상태 | -| resourceRelations | Body | Array | 연관 리소스 목록 | -| resourceRelations.resourceType | Body | Enum | 연관 리소스 유형 | -| resourceRelations.resourceId | Body | UUID | 연관 리소스의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | +| jobStatus | Body | Enum | 작업의 현재 상태
- DELETED
- CANNOT_PROGRESS
- FAILED
- ERROR
- CANCELED
- INTERRUPTED
- COMPLETED
- RUNNING
- PREPARING
- READY
- CREATED
- FAIL_TO_READY
- REGISTERED
- FAIL_TO_REGISTER
- WAIT_TO_REGISTER | +| resourceRelations | Body | Array | 연관 리소스 목록 | +| resourceRelations.resourceType | Body | String | 연관 리소스 유형 | +| resourceRelations.resourceId | Body | String | 연관 리소스의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -467,16 +453,16 @@ GET /v3.0/jobs/{jobId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "jobId": "0ddb042c-5af6-43fb-a914-f4dd0540eb7c", - "jobStatus": "RUNNING", + "jobId": "550e8400-e29b-41d4-a716-446655440000", + "jobStatus": "DELETED", "resourceRelations": [ { - "resourceType": "DB_INSTANCE", - "resourceId": "56b39dcf-65eb-47ec-9d4f-09f160ba2266" + "resourceType": "resourceType-example", + "resourceId": "resourceId-example" } ], - "createdYmdt": "2023-02-22T20:47:12+09:00", - "updatedYmdt": "2023-02-22T20:49:46+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -499,13 +485,13 @@ GET /v3.0/db-instance-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------|------|----------|--------------------------------------------------------------------------| -| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | -| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | +| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -519,10 +505,10 @@ GET /v3.0/db-instance-groups }, "dbInstanceGroups": [ { - "dbInstanceGroupId": "05de0746-89fd-49c8-94f9-9c5b1df97009", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", - "createdYmdt": "2023-02-13T17:35:20+09:00", - "updatedYmdt": "2023-02-13T17:35:20+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -543,22 +529,22 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|-----------------| -| dbInstanceGroupId | URL | UUID | O | DB 인스턴스 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -570,17 +556,17 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbInstanceGroupId": "36617a8e-0df8-4b16-b6ea-6306019e95da", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", "dbInstances": [ { - "dbInstanceId": "6d2db0ef-fe9b-4ed4-97b1-d97fcb4cf1b8", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE" + "dbInstanceStatus": "BEFORE_CREATE" } ], - "createdYmdt": "2023-03-03T17:38:14+09:00", - "updatedYmdt": "2023-03-03T17:38:14+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -613,8 +599,8 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} | `BACKING_UP` | 백업 중 | | `CANCELING` | 취소 중 | | `CREATING` | 생성 중 | -| `CREATING_SCHEMA` | DB 스키마 생성 중 | -| `CREATING_USER` | 사용자 생성 중 | +| `CREATING_SCHEMA` | DB 스키마 생성 중 | +| `CREATING_USER` | 사용자 생성 중 | | `DELETING` | 삭제 중 | | `DELETING_SCHEMA` | DB 스키마 삭제 중 | | `DELETING_USER` | 사용자 삭제 중 | @@ -633,8 +619,8 @@ GET /v3.0/db-instance-groups/{dbInstanceGroupId} | `STARTING` | 시작 중 | | `STOPPING` | 정지 중 | | `SYNCING_SCHEMA` | DB 스키마 동기화 중 | -| `SYNCING_USER` | 사용자 동기화 중 | -| `UPDATING_USER` | 사용자 수정 중 | +| `SYNCING_USER` | 사용자 동기화 중 | +| `UPDATING_USER` | 사용자 수정 중 | ### DB 인스턴스 목록 보기 @@ -648,20 +634,20 @@ GET /v3.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstances | Body | Array | DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | -| dbInstances.dbPort | Body | Number | DB 포트 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태 | -| dbInstances.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstances.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstances | Body | Array | DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | +| dbInstances.dbPort | Body | Number | DB 포트 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbInstances.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstances.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -675,17 +661,17 @@ GET /v3.0/db-instances }, "dbInstances": [ { - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", + "dbInstanceStatus": "BEFORE_CREATE", "progressStatus": "NONE", - "createdYmdt": "2023-01-23T12:03:13+09:00", - "updatedYmdt": "2023-02-02T17:20:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -696,83 +682,6 @@ GET /v3.0/db-instances --- -### DB 인스턴스 상세 보기 - -```http -GET /v3.0/db-instances/{dbInstanceId} -``` - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| dbPort | Body | Number | DB 포트 | -| dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| progressStatus | Body | Enum | DB 인스턴스의 현재 작업 진행 상태 | -| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | -| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | -| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | -| supportAuthenticationPlugin | Body | Boolean | 인증 플러그인 지원 여부 | -| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | -| needMigration | Body | Boolean | 마이그레이션 필요 여부 | -| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", - "progressStatus": "NONE", - "dbFlavorId": "e9ed4ef6-78d7-46fa-ace9-32481e97f3b7", - "parameterGroupId": "b03e8b13-de27-4d04-a488-ff5689589372", - "dbSecurityGroupIds": ["01908c35-d2c9-4852-baf0-17f06ec42c03"], - "notificationGroupIds": ["83a62a33-ddbf-4a04-8653-e54463d5b1ac"], - "useDeletionProtection": false, - "supportAuthenticationPlugin": true, - "needToApplyParameterGroup": false, - "needMigration": false, - "supportDbVersionUpgrade": true, - "createdYmdt": "2022-11-23T12:03:13+09:00", - "updatedYmdt": "2022-12-02T17:20:17+09:00" -} -``` - -

-
- ---- - ### DB 인스턴스 생성하기 ```http @@ -781,61 +690,67 @@ POST /v3.0/db-instances #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|------|---------|----|---------------------------------------------------------------------| -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbUserName | Body | String | O | DB 사용자 계정명 | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 ||network|Body|Object|O|네트워크 정보 객체| -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- 기본값: `NATIVE`(미지원 시 `CACHING_SHA2`)
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| authenticationPlugin | Body | Enum | X | 인증 Plugin
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | TLS Option
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)`
- KR2: `한국(평촌)`
- JP1: `일본(도쿄)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE", "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, "availabilityZone": "kr-pub-a" }, "storage": { @@ -843,11 +758,15 @@ POST /v3.0/db-instances "storageSize": 20 }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 1800, + "replicationRegion": "KR1", + "useBackupLock": true, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR" + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" } ] } @@ -859,45 +778,124 @@ POST /v3.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### DB 인스턴스 수정하기 +### 오브젝트 스토리지를 이용한 DB 인스턴스 복원 ```http -PUT /v3.0/db-instances/{dbInstanceId} +POST /v3.0/db-instances/restore-from-obs ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|------|---------|----|--------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbPort | Body | Number | X | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbVersion | Body | Enum | X | DB 엔진 유형 | -| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
기본값: `false` | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | X | DB 포트 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| imageId | Body | UUID | X | 이미지의 식별자 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)`
- KR2: `한국(평촌)`
- JP1: `일본(도쿄)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | +| restore.username | Body | String | O | NHN Cloud 계정 혹은 IAM 멤버 ID | +| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | +| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | +| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` |
예시

```json { - "dbInstanceName": "db-instance2", - "description": "description2", - "dbPort": 10001, + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "dbVersion": "MYSQL_V8036", + "useHighAvailability": false, + "imageId": "550e8400-e29b-41d4-a716-446655440000", + "pingInterval": 3, + "storage": { + "storageType": "General SSD", + "storageSize": 20 + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "backup": { + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR1", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + }, + "restore": { + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" + }, + "useDefaultNotification": false, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", "dbSecurityGroupIds": [], - "executeBackup": true + "userGroupIds": [], + "useDeletionProtection": false } ``` @@ -906,9 +904,7 @@ PUT /v3.0/db-instances/{dbInstanceId} #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- @@ -922,54 +918,15 @@ DELETE /v3.0/db-instances/{dbInstanceId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 인스턴스 재시작하기 - -```http -POST /v3.0/db-instances/{dbInstanceId}/restart -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- -### DB 인스턴스 강제 재시작하기 -```http -POST /v3.0/db-instances/{dbInstanceId}/force-restart -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |

예시

@@ -980,108 +937,136 @@ POST /v3.0/db-instances/{dbInstanceId}/force-restart "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- ---- - -### DB 인스턴스 시작하기 - -```http -POST /v3.0/db-instances/{dbInstanceId}/start -``` - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### DB 인스턴스 정지하기 +### DB 인스턴스 상세 보기 ```http -POST /v3.0/db-instances/{dbInstanceId}/stop +GET /v3.0/db-instances/{dbInstanceId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| dbPort | Body | Number | DB 포트 | +| dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | +| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | +| supportAuthenticationPlugin | Body | Boolean | 인증 plugin 지원 여부 | +| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | +| needMigration | Body | Boolean | 마이그레이션 필요 여부 | +| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 | -### DB 인스턴스 백업하기 +
예시 +

-```http -POST /v3.0/db-instances/{dbInstanceId}/backup +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbInstanceType": "MASTER", + "dbInstanceStatus": "BEFORE_CREATE", + "progressStatus": "NONE", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "notificationGroupIds": [], + "useDeletionProtection": false, + "supportAuthenticationPlugin": false, + "needToApplyParameterGroup": false, + "needMigration": false, + "supportDbVersionUpgrade": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" +} ``` -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|--------|----|-----------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| backupName | Body | String | O | 백업을 식별할 수 있는 이름 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### DB 인스턴스 백업 후 내보내기 +### DB 인스턴스 수정하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/backup-to-object-storage +PUT /v3.0/db-instances/{dbInstanceId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|-----------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbPort | Body | Number | X | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbVersion | Body | Enum | X | DB 엔진 버전 코드 | +| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
- 기본값: `false` | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` |
예시

```json { - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "backups/backup_file" + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbPort": 1, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "useDummy": false, + "dbSecurityGroupIds": [], + "executeBackup": false, + "useOnlineFailover": false, + "waitReplicationDelay": false, + "useReadOnly": false } ``` @@ -1090,172 +1075,71 @@ POST /v3.0/db-instances/{dbInstanceId}/backup-to-object-storage #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 인스턴스 복제하기 - -```http -POST /v3.0/db-instances/{dbInstanceId}/replicate -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbPort | Body | Number | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록
- 기본값: 원본 DB 인스턴스 값 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: 원본 DB 인스턴스 값 | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전
- 기본값: 원본 DB 인스턴스 값 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각
- 예시: `00:00:00`
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간
- 기본값: 원본 DB 인스턴스 값 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |

예시

```json { - "dbInstanceName": "db-instance-replicate", - "description": "description", - "dbPort": 11000, - "network": { - "availabilityZone": "kr-pub-a" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true }, - "storage": { - "stroageSize": 100 - } + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### DB 인스턴스 승격하기 +### DB 인스턴스 백업하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/promote +POST /v3.0/db-instances/{dbInstanceId}/backup ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| backupName | Body | String | O | 백업을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | ---- - -### 복원 정보 조회 +
예시 +

-```http -GET /v3.0/db-instances/{dbInstanceId}/restoration-info +```json +{ + "backupName": "backupName" +} ``` -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------------|------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| oldestRestorableYmdt | Body | DateTime | 가장 오래된 복원 가능한 시각 | -| latestRestorableYmdt | Body | DateTime | 가장 최신의 복원 가능한 시각 | -| restorableBackups | Body | Array | 복원 가능한 백업 목록 | -| restorableBackups.backup | Body | Object | 백업 정보 객체 | -| restorableBackups.backup.backupId | Body | UUID | 백업의 식별자 | -| restorableBackups.backup.backupName | Body | String | 백업 이름 | -| restorableBackups.backup.useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| restorableBackups.backup.backupSize | Body | Number | 백업 크기 | -| restorableBackups.backup.backupType | Body | Enum | 백업 유형
- `AUTO`: 자동
- `MANUAL`: 수동 | -| restorableBackups.backup.backupStatus | Body | Enum | 백업 상태
- `BACKING_UP`: 백업 중인 경우
- `COMPLETED`: 백업이 완료된 경우
- `DELETING`: 백업이 삭제 중인 경우
- `DELETED`: 백업이 삭제된 경우
- `ERROR`: 오류가 발생한 경우 | -| restorableBackups.backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| restorableBackups.backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | -| restorableBackups.backup.dbVersion | Body | String | DB 엔진 유형 | -| restorableBackups.backup.failoverCount | Body | Number | 장애 조치 횟수 | -| restorableBackups.backup.binLogFileName | Body | String | 바이너리 로그 파일 이름 | -| restorableBackups.backup.binLogPosition | Body | Number | 바이너리 로그 파일 위치 | -| restorableBackups.backup.createdYmdt | Body | DateTime | 백업 생성 일시 | -| restorableBackups.backup.updatedYmdt | Body | DateTime | 백업 갱신 일시 | -| restorableBackups.restorableBinLogs | Body | Array | 해당 백업을 이용하여 복원 가능한 바이너리 로그 이름 목록 | - - +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "oldestRestorableYmdt": "2023-07-09T16:33:33+09:00", - "latestRestorableYmdt": "2023-07-10T15:44:44+09:00", - "restorableBackups": [ - { - "backup": { - "backupId": "145d889a-fe08-474f-8f58-bde576ff96a9", - "backupName": "example-backup-name", - "backupStatus": "COMPLETED", - "dbInstanceId": "dba1be25-9429-4589-9716-7fb6daad7cb9", - "dbInstanceName": "original-db-instance-name", - "dbVersion": "MYSQL_V8028", - "backupType": "MANUAL", - "backupSize": 8299904, - "useBackupLock": true, - "failoverCount": 0, - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 367916037, - "createdYmdt": "2023-07-10T15:44:44+09:00", - "updatedYmdt": "2023-07-10T15:46:07+09:00" - }, - "restorableBinLogs": [ - "mysql-bin.000001" - ] - } - ] + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1264,39 +1148,32 @@ GET /v3.0/db-instances/{dbInstanceId}/restoration-info --- -### 복원될 마지막 쿼리 조회 +### 백업 정보 보기 ```http -GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query +GET /v3.0/db-instances/{dbInstanceId}/backup-info ``` -#### 공통 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|------|----|-----------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restoreType | Query | Enum | O | 복원 타입 종류
- `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
- `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입 | - -#### restoreType이 `TIMESTAMP`인 경우 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-------|----------|----|-------------------------------------------| -| restoreYmdt | Query | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +#### 요청 -#### restoreType이 `BINLOG`인 경우 +이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------|-------|--------|----|--------------------| -| backupId | Query | UUID | O | 복원에 사용할 백업의 식별자 | -| binLogFileName | Query | String | O | 복원에 사용할 바이너리 로그 이름 | -| binLogPosition | Query | Number | O | 복원에 사용할 바이너리 로그 위치 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|----------|--------------------------------------| -| executedYmdt | Body | DateTime | 쿼리 수행 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| lastQuery | Body | String | 마지막 수행 쿼리 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| backupPeriod | Body | Number | 백업 보관 기간(일) | +| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | +| backupRetryCount | Body | Number | 백업 재시도 횟수 | +| replicationRegion | Body | Enum | 백업 복제 리전
- KR1: `한국(판교)`
- KR2: `한국(평촌)`
- JP1: `일본(도쿄)` | +| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration
- HALF_AN_HOUR
- ONE_HOUR
- ONE_HOUR_AND_HALF
- TWO_HOURS
- TWO_HOURS_AND_HALF
- THREE_HOURS |

예시

@@ -1308,8 +1185,17 @@ GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query "resultMessage": "SUCCESS", "isSuccessful": true }, - "executedYmdt": "2023-03-17T14:02:29+09:00", - "lastQuery": "INSERT INTO `test`.`test`SET @1='0123'" + "backupPeriod": 1, + "ftwrlWaitTimeout": 1, + "backupRetryCount": 1, + "replicationRegion": "KR1", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] } ``` @@ -1318,303 +1204,100 @@ GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query --- -### 복원 +### 백업 정보 수정하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/restore -``` - -#### 공통 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------|------|---------|----|------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restore | Body | Object | O | 복원 정보 객체 | -| restore.restoreType | Body | Enum | O | 복원 타입 종류
- `TIMESTAMP`: 복원 가능 시간 범위 내의 특정 시각으로 시점 복원
- `BINLOG`: 복원 가능한 바이너리 로그 위치를 지정하여 시점 복원
- `BACKUP`: 기존에 생성한 백업을 이용하여 스냅숏 복원 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
기본값: `false` | - -#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|----------|----|------------------------------------------------------------------------------------------------| -| restore.restoreYmdt | Body | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD)
복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능하다. | - - -

예시 -

- -```json -{ - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "TIMESTAMP", - "restoreYmdt": "2023-07-10T15:44:44+09:00" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } -} +PUT /v3.0/db-instances/{dbInstanceId}/backup-info ``` -

-
- -#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------------|------|--------|----|--------------------| -| restore.backupId | Body | UUID | O | 복원에 사용할 백업의 식별자 | -| restore.binLog | Body | Object | O | 바이너리 로그 정보 객체 | -| restore.binLog.binLogFileName | Body | String | O | 복원에 사용할 바이너리 로그 이름 | -| restore.binLog.binLogPosition | Body | Number | O | 복원에 사용할 바이너리 로그 위치 | - -* 바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. +#### 요청 +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)`
- KR2: `한국(평촌)`
- JP1: `일본(도쿄)` | +| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BINLOG", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36", - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 1234567 - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "backupPeriod": 0, + "ftwrlWaitTimeout": 0, + "backupRetryCount": 0, + "replicationRegion": "KR1", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] } ```

-#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|------|------------------------------|-----------------| -| restore.backupId | Body | UUID | O(restoreType이 `BACKUP`인 경우) | 복원에 사용할 백업의 식별자 | - +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BACKUP", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - - --- -### 오브젝트 스토리지로부터 복원 +### DB 인스턴스 오브젝트 스토리지로 백업 ```http -POST /v3.0/db-instances/restore-from-obs +POST /v3.0/db-instances/{dbInstanceId}/backup-to-object-storage ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------|------|---------|----|---------------------------------------------------------------------| -| restore | Body | Object | O | 복원 정보 객체 | -| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | -| restore.username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | -| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | -| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | - - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 계정 혹은 IAM 회원 ID | +| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbVersion": "MYSQL_V8028", - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "tenantId":"tenant-id", - "username":"username", - "password":"password", - "targetContainer":"targetContainer", - "objectPath":"objectPath" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" } ``` @@ -1623,30 +1306,9 @@ POST /v3.0/db-instances/restore-from-obs #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - - ---- - - -### DB 인스턴스 삭제 보호 설정 변경하기 - -```http -PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |

예시

@@ -1657,7 +1319,8 @@ PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1666,137 +1329,146 @@ PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection --- -### 고가용성 수정하기 +### 테스트 용 DB 이미지 메타 변경 ```http -PUT /v3.0/db-instances/{dbInstanceId}/high-availability +PUT /v3.0/db-instances/{dbInstanceId}/change-image-meta ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|---------|----|------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 고가용성 다시 시작하기 +### DB 스키마 목록 보기 ```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/resume +GET /v3.0/db-instances/{dbInstanceId}/db-schemas ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSchemas | Body | Array | DB 스키마 목록 | +| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | +| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | +| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- STABLE
- CREATING
- SYNCING
- DELETING
- DELETED | +| dbSchemas.createdYmdt | Body | DateTime | 생성 일시 | -### 고가용성 일시 중지하기 +

예시 +

-```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/pause +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSchemas": [ + { + "dbSchemaId": "550e8400-e29b-41d4-a716-446655440000", + "dbSchemaName": "dbSchemaName-example", + "dbSchemaStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 고가용성 복구하기 +### DB 스키마 생성하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/repair +POST /v3.0/db-instances/{dbInstanceId}/db-schemas ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbSchemaName | Body | String | O | DB 스키마 이름
- 최대 길이: `64`
- 영문 시작, 영문/숫자/_ 허용, 1~64자, MySQL 예약어 불가 | -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### 고가용성 분리하기 +
예시 +

-```http -POST /v3.0/db-instances/{dbInstanceId}/high-availability/split +```json +{ + "dbSchemaName": "dbSchemaName-example" +} ``` -#### 요청 +

+
-이 API는 요청 본문을 요구하지 않습니다. +#### 응답 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -#### 응답 +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 데이터 스토리지 정보 보기 +### DB 스키마 삭제하기 ```http -GET /v3.0/db-instances/{dbInstanceId}/storage-info +DELETE /v3.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbSchemaId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------|------|--------|--------------------------------------------------------------------------------------| -| storageType | Body | Enum | 데이터 스토리지 타입 | -| storageSize | Body | Number | 데이터 스토리지 크기(GB) | -| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- `DETACHED`: 부착되지 않음
- `ATTACHED`: 부착됨
- `DELETED`: 삭제됨 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -1808,66 +1480,43 @@ GET /v3.0/db-instances/{dbInstanceId}/storage-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageType": "General SSD", - "storageSize": 20, - "storageStatus": "ATTACHED" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- --- -### 데이터 스토리지 정보 수정하기 - -```http -PUT /v3.0/db-instances/{dbInstanceId}/storage-info -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: 현재값
- 최댓값: `2048` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### 백업 정보 보기 +### DB 사용자 목록 보기 ```http -GET /v3.0/db-instances/{dbInstanceId}/backup-info +GET /v3.0/db-instances/{dbInstanceId}/db-users ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|---------|----------------| -| backupPeriod | Body | Number | 백업 보관 기간(일) | -| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | -| backupRetryCount | Body | Number | 백업 재시도 횟수 | -| replicationRegion | Body | Enum | 백업 복제 리전 | -| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | -| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbUsers | Body | Array | DB 사용자 목록 | +| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | +| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | +| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | +| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- STABLE
- CREATING
- UPDATING
- SYNCING
- DELETING
- DELETED | +| dbUsers.createdYmdt | Body | DateTime | 생성 일시 | +| dbUsers.updatedYmdt | Body | DateTime | 수정 일시 | +| dbUsers.authenticationPlugin | Body | Enum | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| dbUsers.tlsOption | Body | Enum | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |
예시

@@ -1879,15 +1528,17 @@ GET /v3.0/db-instances/{dbInstanceId}/backup-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "backupPeriod": 1, - "ftwrlWaitTimeout": 1800, - "backupRetryCount": 0, - "replicationRegion": null, - "useBackupLock": false, - "backupSchedules": [ + "dbUsers": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" + "dbUserId": "550e8400-e29b-41d4-a716-446655440000", + "dbUserName": "dbUserName-example", + "host": "host-example", + "authorityType": "CUSTOM", + "dbUserStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" } ] } @@ -1896,42 +1547,37 @@ GET /v3.0/db-instances/{dbInstanceId}/backup-info

- --- -### 백업 정보 수정하기 +### DB 사용자 생성하기 ```http -PUT /v3.0/db-instances/{dbInstanceId}/backup-info +POST /v3.0/db-instances/{dbInstanceId}/db-users ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------------------------|------|---------|----|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | -| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | -| replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| host | Body | String | O | DB 사용자 계정의 호스트명
- 최대 길이: `45` | +| authorityType | Body | Enum | O | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |
예시

```json { - "backupPeriod": 5, - "useBackupLock": true, - "backupSchedules": [ - { - "backupWndBgnTime": "01:00:00", - "backupWndDuration": "TWO_HOURS" - } - ] + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "host": "host-example", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" } ``` @@ -1940,39 +1586,9 @@ PUT /v3.0/db-instances/{dbInstanceId}/backup-info #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### 네트워크 정보 보기 - -```http -GET /v3.0/db-instances/{dbInstanceId}/network-info -``` - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------------------------------------------------------------------------------------------------------------------------------| -| availabilityZone | Body | Enum | DB 인스턴스를 생성할 가용성 영역 | -| subnet | Body | Object | 서브넷 객체 | -| subnet.subnetId | Body | UUID | 서브넷의 식별자 | -| subnet.subnetName | Body | UUID | 서브넷을 식별할 수 있는 이름 | -| subnet.subnetCidr | Body | UUID | 서브넷의 CIDR | -| endPoints | Body | Array | 접속 정보 목록 | -| endPoints.domain | Body | String | 도메인 | -| endPoints.ipAddress | Body | String | IP 주소 | -| endPoints.endPointType | Body | Enum | 접속 정보 타입
-`EXTERNAL`: 외부 접속 도메인
-`INTERNAL`: 내부 접속 도메인
-`PUBLIC`: (Deprecated) 외부 접속 도메인
-`PRIVATE`: (Deprecated) 내부 접속 도메인 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |

예시

@@ -1984,19 +1600,7 @@ GET /v3.0/db-instances/{dbInstanceId}/network-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "availabilityZone": "kr-pub-a", - "subnet": { - "subnetId": "bd453789-34ae-416c-9f78-05b9e43a46be", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/16" - }, - "endPoints": [ - { - "domain": "ea548a78-d85f-43b4-8ddf-c88d999b9905.internal.kr1.mysql.rds.nhncloudservice.com", - "ipAddress": "192.168.0.2", - "endPointType": "INTERNAL" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2005,55 +1609,26 @@ GET /v3.0/db-instances/{dbInstanceId}/network-info --- -### 네트워크 정보 수정하기 - -```http -PUT /v3.0/db-instances/{dbInstanceId}/network-info -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 사용자 목록 보기 +### DB 사용자 삭제하기 ```http -GET /v3.0/db-instances/{dbInstanceId}/db-users +DELETE /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbUserId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|-----------------------------------------------------------------------------------------------------------------------------| -| dbUsers | Body | Array | DB 사용자 목록 | -| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | -| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | -| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | -| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `UPDATING`: 수정 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbUsers.authenticationPlugin | Body | Enum | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| dbUsers.tlsOption | Body | Enum | TLS Option
- NONE
- SSL
- X509 | -| dbUsers.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbUsers.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |

예시

@@ -2065,19 +1640,7 @@ GET /v3.0/db-instances/{dbInstanceId}/db-users "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbUsers": [ - { - "dbUserId": "4b3d530b-fd02-4d59-a620-83d019a67bbb", - "dbUserName": "db-user", - "host": "%", - "authorityType": "DDL", - "dbUserStatus": "STABLE", - "authenticationPlugin": "NATIVE", - "tlsOption": "NONE", - "createdYmdt": "2023-03-17T14:02:29+09:00", - "updatedYmdt": "2023-03-17T14:02:31+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2086,36 +1649,30 @@ GET /v3.0/db-instances/{dbInstanceId}/db-users --- -### DB 사용자 생성하기 +### DB 사용자 수정하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/db-users +PUT /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserName | Body | String | O | DB 사용자 계정 이름
- 최소 길이: `1`
- 최대 길이: `32` | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | -| host | Body | String | O | DB 사용자 계정의 호스트명
- 예시: `1.1.1.%` | -| authorityType | Body | Enum | O | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- 기본값: `NATIVE`(미지원 시 `CACHING_SHA2`)
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | - -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 설정할 수 있습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbUserId | URL | UUID | O | | +| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| authorityType | Body | Enum | X | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |

예시

```json { - "dbUserName": "db-user", - "dbPassword": "password", - "host": "1.1.1.%", - "authorityType": "CRUD", + "dbPassword": "dbPassword", + "authorityType": "CUSTOM", "authenticationPlugin": "NATIVE", "tlsOption": "NONE" } @@ -2126,99 +1683,931 @@ POST /v3.0/db-instances/{dbInstanceId}/db-users #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 사용자 수정하기 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -```http -PUT /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} -``` +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 인스턴스 삭제 보호 설정 변경 + +```http +PUT /v3.0/db-instances/{dbInstanceId}/deletion-protection +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | + +
예시 +

+ +```json +{ + "useDeletionProtection": false +} +``` + +

+
+ +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### DB 인스턴스 강제 재시작하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/force-restart +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 고가용성 수정하기 + +```http +PUT /v3.0/db-instances/{dbInstanceId}/high-availability +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | + +
예시 +

+ +```json +{ + "useHighAvailability": false, + "pingInterval": 1 +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 일시 중지하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/pause +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 복구하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/repair +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 다시 시작하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/resume +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 분리하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/high-availability/split +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 로그 파일 목록 보기 + +```http +GET /v3.0/db-instances/{dbInstanceId}/log-files +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| logFiles | Body | Array | 로그 파일 목록 | +| logFiles.logFileName | Body | String | 로그 파일 이름 | +| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- ERROR
- BINLOG
- GENERAL
- SLOW_QUERY
- AUDIT
- BACKUP | +| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | +| logFiles.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "logFiles": [ + { + "logFileName": "logFileName-example", + "logFileType": "ERROR", + "logFileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### 로그 파일 내보내기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/log-files/export +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| logFileNames | Body | Array | O | 로그 파일 이름 목록 | +| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 회원 또는 IAM 멤버 ID | +| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | + +
예시 +

+ +```json +{ + "logFileNames": [], + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 네트워크 정보 보기 + +```http +GET /v3.0/db-instances/{dbInstanceId}/network-info +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| availabilityZone | Body | String | DB 인스턴스를 생성할 가용성 영역 | +| subnet | Body | Object | 서브넷 객체 | +| subnet.subnetId | Body | UUID | 서브넷의 식별자 | +| subnet.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnet.subnetCidr | Body | String | 서브넷의 CIDR | +| endPoints | Body | Array | 접속 정보 목록 | +| endPoints.domain | Body | String | 도메인 | +| endPoints.ipAddress | Body | String | IP 주소 | +| endPoints.endPointType | Body | String | 접속 정보 타입 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "availabilityZone": "kr-pub-a", + "subnet": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example" + }, + "endPoints": [ + { + "domain": "domain-example", + "ipAddress": "ipAddress-example", + "endPointType": "endPointType-example" + } + ] +} +``` + +

+
+ +--- + +### 네트워크 정보 수정하기 + +```http +PUT /v3.0/db-instances/{dbInstanceId}/network-info +``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | -| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | -| authorityType | Body | Enum | X | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 수정할 수 있습니다. -> `authenticationPlugin`의 값은 `dbPassword`와 동시에 수정을 해야 합니다. +
예시 +

+ +```json +{ + "usePublicAccess": false +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

```json { - "authorityType": "DDL" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

+--- + +### DB 인스턴스 승격하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/promote +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### DB 사용자 삭제하기 +### DB 인스턴스 복제하기 ```http -DELETE /v3.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +POST /v3.0/db-instances/{dbInstanceId}/replicate +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부 | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | X | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | X | 데이터 스토리지 타입 | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| backup | Body | Object | X | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)`
- KR2: `한국(평촌)`
- JP1: `일본(도쿄)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +
예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDefaultNotification": false, + "useDeletionProtection": false, + "network": { + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "storage": { + "storageType": "General SSD", + "storageSize": 20 + }, + "backup": { + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 0, + "replicationRegion": "KR1", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + } +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 인스턴스 재시작하기 + +```http +POST /v3.0/db-instances/{dbInstanceId}/restart +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` | + +
예시 +

+ +```json +{ + "useOnlineFailover": false, + "executeBackup": false, + "waitReplicationDelay": false, + "useReadOnly": false +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 인스턴스 복원 정보 조회 + +```http +GET /v3.0/db-instances/{dbInstanceId}/restoration-info +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 복원될 마지막 쿼리 조회 + +```http +GET /v3.0/db-instances/{dbInstanceId}/restoration-info/last-query +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| executedYmdt | Body | DateTime | 쿼리 수행 일시 | +| lastQuery | Body | String | 마지막 수행 쿼리 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "executedYmdt": "2023-12-31T15:00:00+09:00", + "lastQuery": "lastQuery-example" +} +``` + +

+
+ +--- + +### DB 인스턴스 복원 + +```http +POST /v3.0/db-instances/{dbInstanceId}/restore +``` + +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | X | DB 포트 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| imageId | Body | UUID | X | 이미지의 식별자 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)`
- KR2: `한국(평촌)`
- JP1: `일본(도쿄)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.restoreType | Body | Enum | O | 복원 타입
- TIMESTAMP: `복원 가능한 시간 이내의 시간을 이용한 시점 복원`
- BINLOG: `복원 가능한 바이너리 로그 위치를 이용한 시점 복원`
- BACKUP: `기존에 생성한 백업을 이용한 스냅숏 복원` | +| restore.binLog.binLogFileName | Body | String | X | 복원에 사용할 바이너리 로그 이름 | +| restore.binLog.binLogPosition | Body | Object | X | 복원에 사용할 바이너리 로그 위치 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | + +#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.restoreYmdt | Body | DateTime | X | DB 인스턴스 복원 일시 | + +복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능합니다. + +#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 | +| restore.binLog | Body | Object | X | 복원에 사용할 바이너리 로그 정보 객체 | + +바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. + +#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 | + +
예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "useHighAvailability": false, + "imageId": "550e8400-e29b-41d4-a716-446655440000", + "pingInterval": 3, + "storage": { + "storageType": "General SSD", + "storageSize": 20 + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "backup": { + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR1", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + }, + "restore": { + "restoreType": "TIMESTAMP", + "binLog": { + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + } + } + }, + "useDefaultNotification": false, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDeletionProtection": false +} ``` -#### 요청 +

+
+ +#### 응답 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### DB 스키마 목록 보기 +### DB 인스턴스 시작하기 ```http -GET /v3.0/db-instances/{dbInstanceId}/db-schemas +POST /v3.0/db-instances/{dbInstanceId}/start ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|------------------------------------------------------------------------------------------------------| -| dbSchemas | Body | Array | DB 스키마 목록 | -| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | -| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | -| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbSchemas.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -2230,14 +2619,7 @@ GET /v3.0/db-instances/{dbInstanceId}/db-schemas "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSchemas": [ - { - "dbSchemaId": "7c9a94b8-86c1-435d-8af2-82a5e9d53fd4", - "dbSchemaName": "schema", - "dbSchemaStatus": "STABLE", - "createdYmdt": "2023-03-20T13:37:45+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2246,75 +2628,66 @@ GET /v3.0/db-instances/{dbInstanceId}/db-schemas --- -### DB 스키마 생성하기 +### DB 인스턴스 정지하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/db-schemas +POST /v3.0/db-instances/{dbInstanceId}/stop ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|--------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaName | Body | String | O | DB 스키마 이름 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -### DB 스키마 삭제하기 +

예시 +

-```http -DELETE /v3.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaId | URL | UUID | O | DB 스키마의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 로그 파일 목록 보기 +### 스토리지 정보 보기 ```http -GET /v3.0/db-instances/{dbInstanceId}/log-files +GET /v3.0/db-instances/{dbInstanceId}/storage-info ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|-------|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileTypes | Query | Array | X | 로그 파일 타입 종류 목록
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| logFiles | Body | Array | 로그 파일 목록 | -| logFiles.logFileName | Body | String | 로그 파일 이름 | -| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | -| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | -| logFiles.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageType | Body | Enum | 데이터 스토리지 타입 | +| storageSize | Body | Number | 데이터 스토리지 크기(GB) | +| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- DELETED: `삭제됨`
- PENDING_DELETION: `삭제 유예됨`
- DELETION_RESERVED: `삭제 예약됨 (스냅샷 정리 대기)`
- DETACHED: `해제됨`
- ATTACHED: `할당됨` |
예시

@@ -2326,14 +2699,9 @@ GET /v3.0/db-instances/{dbInstanceId}/log-files "resultMessage": "SUCCESS", "isSuccessful": true }, - "logFiles": [ - { - "logFileName": "xtra_full.log-20230317", - "logFileType": "BACKUP", - "logFileSize": 4096, - "createdYmdt": "2023-03-17T14:02:29+09:00" - } - ] + "storageType": "General SSD", + "storageSize": 1, + "storageStatus": "DELETED" } ``` @@ -2342,35 +2710,25 @@ GET /v3.0/db-instances/{dbInstanceId}/log-files --- -### 로그 파일 내보내기 +### 스토리지 정보 수정하기 ```http -POST /v3.0/db-instances/{dbInstanceId}/log-files/export +PUT /v3.0/db-instances/{dbInstanceId}/storage-info ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|--------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileNames | Body | Array | O | 로그 파일 이름 목록
- 최소 크기: `1` | -| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최댓값: `2048` |

예시

```json { - "logFileNames": ["xtra_full.log-20230317"], - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "logs/backup" + "storageSize": 1 } ``` @@ -2379,9 +2737,26 @@ POST /v3.0/db-instances/{dbInstanceId}/log-files/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -2407,30 +2782,22 @@ GET /v3.0/backups 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|--------|----|----------------------------------------------------------| -| page | Query | Number | O | 조회할 목록의 페이지
- 최솟값: `1` | -| size | Query | Number | O | 조회할 목록의 페이지 크기
- 최솟값: `1`
- 최댓값: `100` | -| backupType | Query | Enum | X | 백업 유형
- `AUTO`: 자동
- `MANUAL`: 수동
- 기본값: 전체 | -| dbInstanceId | Query | UUID | X | 원본 DB 인스턴스의 식별자 | -| dbVersion | Query | Enum | X | DB 엔진 유형 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|-----------------------------------| -| totalCounts | Body | Number | 전체 백업 목록 수 | -| backups | Body | Array | 백업 목록 | -| backups.backupId | Body | UUID | 백업의 식별자 | -| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | -| backups.backupStatus | Body | Enum | 백업의 현재 상태 | -| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| backups.dbVersion | Body | Enum | DB 엔진 유형 | -| backups.utilVersion | Body | String | 백업에 사용된 xtrabackup 유틸리티 버전 | -| backups.backupType | Body | Enum | 백업 유형 | -| backups.backupSize | Body | Number | 백업의 크기(Byte) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 백업 목록 수 | +| backups | Body | Array | 백업 목록 | +| backups.backupId | Body | UUID | 백업의 식별자 | +| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | +| backups.backupStatus | Body | Enum | 백업의 현재 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| backups.dbVersion | Body | Enum | DB 엔진 유형 | +| backups.utilVersion | Body | String | 유틸리티 버전 | +| backups.backupType | Body | Enum | 백업 유형
- AUTO
- MANUAL | +| backups.backupSize | Body | Number | 백업의 크기(Byte) | +| backups.createdYmdt | Body | DateTime | 생성 일시 | +| backups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -2445,16 +2812,16 @@ GET /v3.0/backups "totalCounts": 1, "backups": [ { - "backupId": "0017f136-3e01-4530-94aa-20661afe6632", - "backupName": "backup", - "backupStatus": "COMPLETED", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd", - "dbVersion": "MYSQL_V8028", - "utilVersion": "8.0.28", + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "utilVersion": "utilVersion-example", "backupType": "AUTO", - "backupSize": 4996786, - "createdYmdt": "2023-02-21T00:35:00+09:00", - "updatedYmdt": "2023-02-22T00:35:32+09:00" + "backupSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -2465,6 +2832,45 @@ GET /v3.0/backups --- +### 백업 삭제하기 + +```http +DELETE /v3.0/backups/{backupId} +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + ### 백업 내보내기 ```http @@ -2473,25 +2879,25 @@ POST /v3.0/backups/{backupId}/export #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|-----------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 계정 혹은 IAM 회원 ID | +| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 |
예시

```json { - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "backups/backup_file" + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" } ``` @@ -2500,12 +2906,26 @@ POST /v3.0/backups/{backupId}/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -> [주의] -> 수동 백업의 경우 백업이 수행된 DB 인스턴스가 존재하지 않으면, 백업을 오브젝트 스토리지로 내보낼 수 없습니다. +

+
--- @@ -2517,50 +2937,56 @@ POST /v3.0/backups/{backupId}/restore #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------|------|---------|----|---------------------------------------------------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Integer | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 ||network|Body|Object|O|네트워크 정보 객체| -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)`
- KR2: `한국(평촌)`
- JP1: `일본(도쿄)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json - { - "dbInstanceName": "db-instance-restore", - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbPort": 10000, - "parameterGroupId": "132d383c-38e3-468a-a826-5e9a8fff15d0", + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, "availabilityZone": "kr-pub-a" }, "storage": { @@ -2568,10 +2994,14 @@ POST /v3.0/backups/{backupId}/restore "storageSize": 20 }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 1800, + "replicationRegion": "KR1", + "useBackupLock": true, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", + "backupWndBgnTime": "backupWndBgnTime-example", "backupWndDuration": "HALF_AN_HOUR" } ] @@ -2584,31 +3014,26 @@ POST /v3.0/backups/{backupId}/restore #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -### 백업 삭제하기 +

예시 +

-```http -DELETE /v3.0/backups/{backupId} +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------|-----|------|----|---------| -| backupId | URL | UUID | O | 백업의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -2635,15 +3060,15 @@ GET /v3.0/db-security-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-----------------------------------| -| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | -| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | +| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -2657,12 +3082,12 @@ GET /v3.0/db-security-groups }, "dbSecurityGroups": [ { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", "progressStatus": "NONE", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2022-02-19T19:18:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -2673,42 +3098,59 @@ GET /v3.0/db-security-groups --- -### DB 보안 그룹 상세 보기 +### DB 보안 그룹 생성하기 ```http -GET /v3.0/db-security-groups/{dbSecurityGroupId} +POST /v3.0/db-security-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` | +| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | +| rules.direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| rules.etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| rules.port | Body | Object | O | 포트 객체 | +| rules.port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| rules.cidr | Body | String | O | CIDR | +| rules.description | Body | String | X | 보안 그룹 규칙에 대한 추가 정보 | + +

예시 +

+ +```json +{ + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example", + "rules": [ + { + "direction": "INGRESS", + "etherType": "IPV4", + "port": { + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 + }, + "cidr": "cidr-example", + "description": "description-example" + } + ] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|----------|--------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| rules | Body | Array | DB 보안 그룹 규칙 목록 | -| rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | -| rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.port | Body | Object | 포트 객체 | -| rules.port.portType | Body | Enum | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다.
- `PORT`: 지정된 포트값으로 설정됩니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | 최소 포트 범위 | -| rules.port.maxPort | Body | Number | 최대 포트 범위 | -| rules.cidr | Body | String | 허용할 트래픽의 원격 소스 | -| rules.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| rules.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 |
예시

@@ -2720,30 +3162,7 @@ GET /v3.0/db-security-groups/{dbSecurityGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSecurityGroup": { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", - "progressStatus": "NONE", - "rules": [ - { - "ruleId": "17c88ef6-95f1-4678-84f9-fee1b22e250d", - "description": "description", - "direction": "INGRESS", - "etherType": "IPV4", - "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 - }, - "cidr": "0.0.0.0/0", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } - ], - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2752,131 +3171,159 @@ GET /v3.0/db-security-groups/{dbSecurityGroupId} --- -### DB 보안 그룹 생성하기 +### DB 보안 그룹 삭제하기 ```http -POST /v3.0/db-security-groups +DELETE /v3.0/db-security-groups/{dbSecurityGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | -| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | -| rules.description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | -| rules.port | Body | Object | O | 포트 객체 | -| rules.port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. - -

예시 -

- -```json -{ - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", - "rules": [ - { - "direction": "INGRESS", - "etherType": "IPV4", - "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 - }, - "cidr": "0.0.0.0/0" - } - ] -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|------|---------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### DB 보안 그룹 수정하기 +### DB 보안 그룹 상세 보기 ```http -PUT /v3.0/db-security-groups/{dbSecurityGroupId} +GET /v3.0/db-security-groups/{dbSecurityGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|-----------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroup | Body | Object | DB 보안 그룹 | +| dbSecurityGroup.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroup.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| dbSecurityGroup.description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| dbSecurityGroup.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| dbSecurityGroup.rules | Body | Array | DB 보안 그룹 규칙 목록 | +| dbSecurityGroup.rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | +| dbSecurityGroup.rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | +| dbSecurityGroup.rules.direction | Body | Enum | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| dbSecurityGroup.rules.etherType | Body | Enum | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| dbSecurityGroup.rules.port | Body | Object | 포트 객체 | +| dbSecurityGroup.rules.port.portType | Body | Enum | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| dbSecurityGroup.rules.port.minPort | Body | Number | 최소 포트 범위 | +| dbSecurityGroup.rules.port.maxPort | Body | Number | 최대 포트 범위 | +| dbSecurityGroup.rules.cidr | Body | String | CIDR | +| dbSecurityGroup.rules.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroup.rules.updatedYmdt | Body | DateTime | 수정 일시 | +| dbSecurityGroup.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroup.updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSecurityGroup": { + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", + "progressStatus": "NONE", + "rules": [ + { + "ruleId": "550e8400-e29b-41d4-a716-446655440000", + "description": "description-example", + "direction": "INGRESS", + "etherType": "IPV4", + "port": { + "portType": "ALL", + "minPort": 1, + "maxPort": 1 + }, + "cidr": "cidr-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } } ```

-#### 응답 +--- + +### DB 보안 그룹 수정하기 + +```http +PUT /v3.0/db-security-groups/{dbSecurityGroupId} +``` + +#### 요청 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example" } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. --- -### DB 보안 그룹 삭제하기 +### DB 보안 그룹 규칙 삭제하기 ```http -DELETE /v3.0/db-security-groups/{dbSecurityGroupId} +DELETE /v3.0/db-security-groups/{dbSecurityGroupId}/rules ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleIds | Query | String | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -2887,7 +3334,8 @@ DELETE /v3.0/db-security-groups/{dbSecurityGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2904,20 +3352,17 @@ POST /v3.0/db-security-groups/{dbSecurityGroupId}/rules #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |

예시

@@ -2927,11 +3372,12 @@ POST /v3.0/db-security-groups/{dbSecurityGroupId}/rules "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "PORT", - "minPort": 10000, - "maxPort": 10000 + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -2940,9 +3386,26 @@ POST /v3.0/db-security-groups/{dbSecurityGroupId}/rules #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -2954,21 +3417,18 @@ PUT /v3.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleId | URL | UUID | O | DB 보안 그룹 규칙의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |
예시

@@ -2978,9 +3438,12 @@ PUT /v3.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "DB_PORT" + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -2989,32 +3452,26 @@ PUT /v3.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | ---- - -### DB 보안 그룹 규칙 삭제하기 +

예시 +

-```http -DELETE /v3.0/db-security-groups/{dbSecurityGroupId}/rules +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|-------|----|---------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleIds | Query | Array | O | DB 보안 그룹 규칙의 식별자 목록 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -3030,22 +3487,18 @@ GET /v3.0/parameter-groups 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------|-------|------|----|----------| -| dbVersion | Query | Enum | X | DB 엔진 유형 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-------------------------------------------------------------------| -| parameterGroups | Body | Array | 파라미터 그룹 목록 | -| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameterGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroups | Body | Array | 파라미터 그룹 목록 | +| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameterGroups.createdYmdt | Body | DateTime | 생성 일시 | +| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3059,13 +3512,13 @@ GET /v3.0/parameter-groups }, "parameterGroups": [ { - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", "parameterGroupStatus": "STABLE", - "createdYmdt": "2023-02-31T15:28:17+09:00", - "updatedYmdt": "2023-02-31T15:28:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3074,44 +3527,41 @@ GET /v3.0/parameter-groups

- --- -### 파라미터 그룹 상세 보기 +### 파라미터 그룹 생성하기 ```http -GET /v3.0/parameter-groups/{parameterGroupId} +POST /v3.0/parameter-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` | +| dbVersion | Body | Enum | O | DB 엔진 유형 | + +
예시 +

+ +```json +{ + "parameterGroupName": "parameterGroupName", + "description": "description-example", + "dbVersion": "MYSQL_V8036" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|--------------------------------------------------------------------------------------------------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameters | Body | Array | 파라미터 목록 | -| parameters.parameterId | Body | UUID | 파라미터 식별자 | -| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- `CLIENT`: client
- `MYSQL`: mysql
- `MYSQLD`: mysqld | -| parameters.parameterName | Body | String | 파라미터 이름 | -| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | -| parameters.value | Body | String | 현재 설정된 값 | -| parameters.defaultValue | Body | String | 기본값 | -| parameters.allowedValue | Body | String | 허용된 값 | -| parameters.updateType | Body | Enum | 수정 타입
- `VARIABLE`: 언제든 수정 가능
- `CONSTANT`: 수정 불가능
- `INIT_VARIABLE`: DB 인스턴스 생성 시에만 수정 가능 | -| parameters.applyType | Body | Enum | 적용 타입
- `SESSION`: 세션 적용
- `FILE`: 설정 파일 적용(재시작 필요)
- `BOTH`: 전체(재시작 필요) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |
예시

@@ -3123,91 +3573,130 @@ GET /v3.0/parameter-groups/{parameterGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", - "parameterGroupStatus": "STABLE", - "parameters": [ - { - "parameterId": "fa040b5e-f29f-46de-8f0d-bba4cb82887a", - "parameterFileGroup": "client", - "parameterName": "socket", - "fileParameterName": "socket", - "value": "/home/tcrds/db/mysql/tmp/mysql.sock", - "defaultValue": "/home/tcrds/db/mysql/tmp/mysql.sock", - "allowedValue": "", - "updateType": "CONSTANT", - "applyType": "BOTH" - } - ], - "createdYmdt": "2023-03-13T11:02:28+09:00", - "updatedYmdt": "2023-03-13T11:02:28+09:00" + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ```

+--- + +### 파라미터 그룹 삭제하기 + +```http +DELETE /v3.0/parameter-groups/{parameterGroupId} +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 생성하기 +### 파라미터 그룹 상세 보기 ```http -POST /v3.0/parameter-groups +GET /v3.0/parameter-groups/{parameterGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameters | Body | Array | 파라미터 목록 | +| parameters.parameterId | Body | UUID | 파라미터의 식별자 | +| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- CLIENT
- MYSQL
- MYSQLD | +| parameters.parameterName | Body | String | 파라미터 이름 | +| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | +| parameters.value | Body | String | 현재 설정된 값 | +| parameters.defaultValue | Body | String | 기본값 | +| parameters.allowedValue | Body | String | 허용된 값 | +| parameters.updateType | Body | Enum | 수정 타입
- VARIABLE
- CONSTANT
- INIT_VARIABLE | +| parameters.applyType | Body | Enum | 적용 타입
- BOTH
- SESSION
- FILE | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "parameterGroupName": "parameter-group", - "dbVersion": "MYSQL_V8028" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "parameterGroupStatus": "STABLE", + "parameters": [ + { + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "parameterFileGroup": "CLIENT", + "parameterName": "parameterName-example", + "fileParameterName": "fileParameterName-example", + "value": "value-example", + "defaultValue": "defaultValue-example", + "allowedValue": "allowedValue-example", + "updateType": "VARIABLE", + "applyType": "BOTH" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | - --- -### 파라미터 그룹 복사하기 +### 파라미터 그룹 수정하기 ```http -POST /v3.0/parameter-groups/{parameterGroupId}/copy +PUT /v3.0/parameter-groups/{parameterGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "parameterGroupName": "parameter-group-copy", - "description": "copy" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -3216,32 +3705,31 @@ POST /v3.0/parameter-groups/{parameterGroupId}/copy #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 수정하기 +### 파라미터 그룹 복사하기 ```http -PUT /v3.0/parameter-groups/{parameterGroupId} +POST /v3.0/parameter-groups/{parameterGroupId}/copy ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |

예시

```json { - "parameterGroupName": "parameter-group" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -3250,7 +3738,9 @@ PUT /v3.0/parameter-groups/{parameterGroupId} #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |

예시

@@ -3261,7 +3751,8 @@ PUT /v3.0/parameter-groups/{parameterGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3278,12 +3769,12 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/parameters #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------------|------|--------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | -| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | -| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | +| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | +| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 |

예시

@@ -3292,8 +3783,8 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/parameters { "modifiedParameters": [ { - "parameterId": "3abac558-7274-44e1-9f4a-f100f53f67ba", - "value": "0" + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "value": "value-example" } ] } @@ -3306,39 +3797,49 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/parameters 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

+--- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} +### 파라미터 그룹 재설정하기 + +```http +PUT /v3.0/parameter-groups/{parameterGroupId}/reset ``` -

-
+#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 재설정하기 +## 사용자 그룹 + +### 사용자 그룹 목록 보기 ```http -PUT /v3.0/parameter-groups/{parameterGroupId}/reset +GET /v3.0/user-groups ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroups.createdYmdt | Body | DateTime | 생성 일시 | +| userGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3349,7 +3850,15 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/reset "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "userGroups": [ + { + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -3358,23 +3867,39 @@ PUT /v3.0/parameter-groups/{parameterGroupId}/reset --- -### 파라미터 그룹 삭제하기 +### 사용자 그룹 생성하기 ```http -DELETE /v3.0/parameter-groups/{parameterGroupId} +POST /v3.0/user-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록 | +| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` | + +

예시 +

+ +```json +{ + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAllYN": false +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +

+
#### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 |
예시

@@ -3385,7 +3910,8 @@ DELETE /v3.0/parameter-groups/{parameterGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "userGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3394,51 +3920,23 @@ DELETE /v3.0/parameter-groups/{parameterGroupId} --- -## 사용자 그룹 - -### 사용자 그룹 목록 보기 +### 사용자 그룹 삭제하기 ```http -GET /v3.0/user-groups +DELETE /v3.0/user-groups/{userGroupId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|-----------------------------------| -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| userGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - -

예시 -

+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "userGroups": [ - { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" - } - ] -} -``` +#### 응답 -

-
+이 API는 응답 본문을 반환하지 않습니다. --- @@ -3452,21 +3950,21 @@ GET /v3.0/user-groups/{userGroupId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|----------|-----------------------------------------------------------------------------------------------------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
`ENTIRE`: 프로젝트 멤버 전체를 포함하는 사용자 그룹
`INDIVIDUAL_MEMBER`: 특정 프로젝트 멤버를 포함하는 사용자 그룹 | -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
- ENTIRE
- INDIVIDUAL_MEMBER | +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3478,65 +3976,21 @@ GET /v3.0/user-groups/{userGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "userGroupTypeCode": "INDIVIDUAL_MEMBER", + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "userGroupTypeCode": "ENTIRE", "members": [ { - "memberId": "1321e759-2ef3-4b85-9921-b13e918b24b5" + "memberId": "550e8400-e29b-41d4-a716-446655440000" } ], - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" -} -``` - -

-
- ---- - -### 사용자 그룹 생성하기 - -```http -POST /v3.0/user-groups -``` - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|-------------------------------------------------------------| -| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록
`selectAllYN`이 true인 경우 해당 필드 값은 무시됨 | -| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 유무
true인 경우 해당 그룹은 전체 멤버에 대해 설정됨 | - -
예시 -

- -```json -{ - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5" - ] -} -``` - -```json -{ - "userGroupName": "dev-team", - "selectAllYN":true + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` -

-
- -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------------|------|------|-------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +

+
--- @@ -3548,23 +4002,21 @@ PUT /v3.0/user-groups/{userGroupId} #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|----------------------------------------------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | -| userGroupName | Body | String | X | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | -| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 유무
true인 경우 해당 그룹은 전체 멤버에 대해 설정됨 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | +| selectAllYN | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` |
예시

```json { - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5", - "f9064b09-2b15-442e-a4b0-3a5a2754555e" - ] + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAllYN": false } ``` @@ -3575,39 +4027,32 @@ PUT /v3.0/user-groups/{userGroupId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- -### 사용자 그룹 삭제하기 +## 알림 그룹 + +### 알림 그룹 목록 보기 ```http -DELETE /v3.0/user-groups/{userGroupId} +GET /v3.0/notification-groups ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroups | Body | Array | 알림 그룹 목록 | +| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | +| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | +| notificationGroups.createdYmdt | Body | DateTime | 생성 일시 | +| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3618,7 +4063,18 @@ DELETE /v3.0/user-groups/{userGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "notificationGroups": [ + { + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, + "notifySms": false, + "isEnabled": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -3627,30 +4083,45 @@ DELETE /v3.0/user-groups/{userGroupId} --- -## 알림 그룹 - -### 알림 그룹 목록 보기 +### 알림 그룹 생성하기 ```http -GET /v3.0/notification-groups +POST /v3.0/notification-groups ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | +| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | + +

예시 +

+ +```json +{ + "notificationGroupName": "notificationGroupName", + "notifyEmail": true, + "notifySms": true, + "isEnabled": true, + "dbInstanceIds": [], + "userGroupIds": [] +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------------|------|----------|-----------------------------------| -| notificationGroups | Body | Array | 알림 그룹 목록 | -| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | -| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | -| notificationGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 |
예시

@@ -3662,17 +4133,7 @@ GET /v3.0/notification-groups "resultMessage": "SUCCESS", "isSuccessful": true }, - "notificationGroups": [ - { - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, - "notifySms": false, - "isEnabled": true, - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" - } - ] + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3681,6 +4142,26 @@ GET /v3.0/notification-groups --- +### 알림 그룹 삭제하기 + +```http +DELETE /v3.0/notification-groups/{notificationGroupId} +``` + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + ### 알림 그룹 상세 보기 ```http @@ -3691,27 +4172,27 @@ GET /v3.0/notification-groups/{notificationGroupId} 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------------|------|----------|-----------------------------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notifySms | Body | Boolean | SMS 알림 여부 | -| isEnabled | Body | Boolean | 활성화 여부 | -| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notifySms | Body | Boolean | SMS 알림 여부 | +| isEnabled | Body | Boolean | 활성화 여부 | +| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -3723,25 +4204,25 @@ GET /v3.0/notification-groups/{notificationGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, "notifySms": false, - "isEnabled": true, + "isEnabled": false, "dbInstances": [ { - "dbInstanceId": "ed5cb985-526f-4c54-9ae0-40288593de65", - "dbInstanceName": "database" + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example" } ], "userGroups": [ { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team" + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example" } ], - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -3750,37 +4231,35 @@ GET /v3.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 생성하기 +### 알림 그룹 수정하기 ```http -POST /v3.0/notification-groups +PUT /v3.0/notification-groups/{notificationGroupId} ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------------| -| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | -| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | -| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | -| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | +| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `false` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `false` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `false` | +| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 |

예시

```json { - "notificationGroupName": "dev-team-noti", + "notificationGroupName": "notificationGroupName-example", "notifyEmail": false, - "isEnable": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65" - ], - "userGroupIds": [ - "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0" - ] + "notifySms": false, + "isEnabled": false, + "dbInstanceIds": [], + "userGroupIds": [] } ``` @@ -3789,49 +4268,45 @@ POST /v3.0/notification-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|------|------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 알림 그룹 수정하기 +## 모니터링 + +### 통계 정보 조회 ```http -PUT /v3.0/notification-groups/{notificationGroupId} +GET /v3.0/metric-statistics ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부 | -| notifySms | Body | Boolean | X | SMS 알림 여부 | -| isEnabled | Body | Boolean | X | 활성화 여부 | -| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +이 API는 요청 본문을 요구하지 않습니다. -

예시 -

+#### 응답 -```json -{ - "notifyEmail": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65", - "d51b7da0-682f-47ff-b588-b739f6adc740" - ] -} +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### Metric 목록 보기 + +```http +GET /v3.0/metrics ``` -

-
+#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| metrics | Body | Array | Metric 목록 | +| metrics.measureName | Body | String | 조회 지표 유형 | +| metrics.unit | Body | String | 측정값 단위 |
예시

@@ -3842,7 +4317,13 @@ PUT /v3.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "metrics": [ + { + "measureName": "measureName-example", + "unit": "unit-example" + } + ] } ``` @@ -3851,23 +4332,38 @@ PUT /v3.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 삭제하기 +## 이벤트 + +### 이벤트 카테고리 + +이벤트는 카테고리로 분류할 수 있으며 아래와 같습니다. + +| 이벤트 카테고리 | 설명 | +|-------------|---------| +| ALL | 전체 | +| BACKUP | 백업 | +| DB_INSTANCE | DB 인스턴스 | +| JOB | 작업 | +| TENANT | 테넌트 | +| MONITORING | 모니터링 | + +### 구독 가능한 이벤트 코드 목록 보기 ```http -DELETE /v3.0/notification-groups/{notificationGroupId} +GET /v3.0/event-codes ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | - #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventCodes | Body | Array | 이벤트 코드 목록 | +| eventCodes.eventCode | Body | Enum | 이벤트 코드 | +| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT |

예시

@@ -3878,7 +4374,13 @@ DELETE /v3.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "eventCodes": [ + { + "eventCode": "ENUM_VALUE", + "eventCategoryType": "ALL" + } + ] } ``` @@ -3887,12 +4389,10 @@ DELETE /v3.0/notification-groups/{notificationGroupId} --- -## 모니터링 - -### Metric 목록 보기 +### 이벤트 목록 조회 ```http -GET /v3.0/metrics +GET /v3.0/events ``` #### 요청 @@ -3901,11 +4401,18 @@ GET /v3.0/metrics #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|--------|-----------| -| metrics | Body | Array | Metric 목록 | -| metrics.measureName | Body | Enum | 조회 지표 유형 | -| metrics.unit | Body | String | 측정값 단위 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 목록 수 | +| events | Body | Array | 이벤트 목록 | +| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | +| events.sourceId | Body | String | 이벤트 소스의 식별자 | +| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | +| events.messages | Body | Array | 이벤트 메세지 목록 | +| events.messages.langCode | Body | Enum | 언어 코드
- KO
- EN
- JA
- ZH | +| events.messages.message | Body | String | 이벤트 메세지 | +| events.eventYmdt | Body | DateTime | 이벤트 발생 일시 |

예시

@@ -3917,10 +4424,20 @@ GET /v3.0/metrics "resultMessage": "SUCCESS", "isSuccessful": true }, - "metrics": [ + "totalCounts": 1, + "events": [ { - "measureName": "CPU_USAGE", - "unit": "%" + "eventCategoryType": "ALL", + "eventCode": "ENUM_VALUE", + "sourceId": "sourceId-example", + "sourceName": "sourceName-example", + "messages": [ + { + "langCode": "KO", + "message": "message-example" + } + ], + "eventYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3931,56 +4448,65 @@ GET /v3.0/metrics --- -### 통계 정보 조회 +## 이벤트 구독 + +### 이벤트 구독 목록 조회 ```http -GET /v3.0/metric-statistics +GET /v3.0/event-subscriptions ``` #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|----------|----|-----------------------------------| -| dbInstanceId | Query | UUID | O | DB 인스턴스의 식별자 | -| measureNames | Query | Array | O | 조회 지표 목록
- 최소 크기: `1` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| interval | Query | Number | X | 조회 간격 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|-----------|----------| -| metricStatistics | Body | Array | 통계 정보 목록 | -| metricStatistics.measureName | Body | Enum | 측정 항목 유형 | -| metricStatistics.unit | Body | String | 측정값 단위 | -| metricStatistics.values | Body | Array | 측정값 목록 | -| metricStatistics.values.timestamp | Body | Timestamp | 측정 시간 | -| metricStatistics.values.value | Body | Object | 측정값 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 구독 목록 수 | +| eventSubscriptions | Body | Array | 이벤트 구독 목록 | +| eventSubscriptions.eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 | +| eventSubscriptions.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.eventSubscriptionName | Body | String | 이벤트 구독의 식별할 수 있는 이름 | +| eventSubscriptions.enabled | Body | Boolean | 활성화 여부 | +| eventSubscriptions.notifyEmail | Body | Boolean | 이메일 발송 여부 | +| eventSubscriptions.notifySms | Body | Boolean | SMS 발송 여부 | +| eventSubscriptions.eventCodes | Body | Array | 구독할 이벤트 코드 목록 | +| eventSubscriptions.sources | Body | Array | 구독할 이벤트 소스 목록 | +| eventSubscriptions.sources.sourceId | Body | String | 이벤트 소스의 식별자 | +| eventSubscriptions.sources.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.userGroupIds | Body | Array | 이벤트 구독 중인 사용자 그룹의 식별자 목록 | +| eventSubscriptions.createdYmdt | Body | DateTime | 생성 일시 |

예시

```json { - "metricStatistics": [ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "totalCounts": 1, + "eventSubscriptions": [ { - "measureName": "MYSQL_STATUS", - "unit": "", - "values": [ - [ - 1679298540, - "1" - ], - [ - 1679298600, - "1" - ], - [ - 1679298660, - "1" - ] - ] + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ + { + "sourceId": "sourceId-example", + "eventCategoryType": "ALL" + } + ], + "userGroupIds": [], + "createdYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3991,56 +4517,56 @@ GET /v3.0/metric-statistics --- -## 이벤트 - -### 이벤트 카테고리 - -이벤트는 카테고리로 분류할 수 있으며 아래와 같습니다. - -| 이벤트 카테고리 | 설명 | -|-------------|---------| -| ALL | 전체 | -| BACKUP | 백업 | -| DB_INSTANCE | DB 인스턴스 | -| JOB | 작업 | -| TENANT | 테넌트 | -| MONITORING | 모니터링 | - -### 이벤트 목록 조회 +### 이벤트 구독 생성하기 ```http -GET /v3.0/events +POST /v3.0/event-subscriptions ``` #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | O | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | O | 활성화 여부 | +| notifyEmail | Body | Boolean | O | 이메일 발송 여부 | +| notifySms | Body | Boolean | O | SMS 발송 여부 | +| eventCodes | Body | Array | O | 구독할 이벤트 코드 목록 | +| sources | Body | Array | O | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | O | 이벤트 구독할 사용자 그룹의 식별자 목록 | + +

예시 +

+ +```json +{ + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ + { + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" + } + ], + "userGroupIds": [] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | O | 조회할 목록의 페이지
- 최솟값: `1` | -| size | Query | Number | O | 조회할 목록의 페이지 크기
- 최솟값: `1`
- 최댓값: `100` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| eventCategoryType | Query | Enum | O | 조회할 이벤트 카테고리 유형
- `ALL`: 전체
- `INSTANCE`: DB 인스턴스
- `BACKUP`: 백업
- `DB_SECURITY_GROUP`: DB 보안 그룹
- `TENANT`: 테넌트 | -| sourceId | Query | String | X | 이벤트가 발생한 대상 리소스의 식별자 | -| keyword | Query | String | X | 이벤트 메시지에 포함된 문자열 검색어 | -| ascendingOrder | Query | Enum | X | 이벤트 메시지 정렬 순서
- `ASC`: 오름차순
- `DESC`: 내림차순
- 기본값: `DESC` | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|---------------------------------------| -| totalCounts | Body | Number | 전체 이벤트 목록 수 | -| events | Body | Array | 이벤트 목록 | -| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | -| events.sourceId | Body | String | 이벤트 소스의 식별자 | -| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | -| events.messages | Body | Array | 이벤트 메시지 목록 | -| events.messages.langCode | Body | String | 언어 코드 | -| events.messages.message | Body | String | 이벤트 메시지 | -| events.eventYmdt | Body | DateTime | 이벤트 발생 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 |
예시

@@ -4052,34 +4578,7 @@ GET /v3.0/events "resultMessage": "SUCCESS", "isSuccessful": true }, - "totalCounts": 28, - "events": [ - { - "eventCategoryType": "INSTANCE", - "eventCode": "INSTC_02_01", - "sourceId": "76f00947-356e-4a20-8922-428368cc45ed", - "sourceName": "db-instance", - "messages": [ - { - "langCode": "EN", - "message": "DB instance started" - }, - { - "langCode": "JA", - "message": "DBインスタンスの起動" - }, - { - "langCode": "KO", - "message": "DB 인스턴스 시작" - }, - { - "langCode": "ZH", - "message": "DB instance started" - } - ], - "eventYmdt": "2023-03-20T16:31:59+09:00" - } - ] + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4088,44 +4587,75 @@ GET /v3.0/events --- -### 구독 가능한 이벤트 코드 목록 보기 +### 이벤트 구독 삭제하기 ```http -GET /v3.0/event-codes +DELETE /v3.0/event-subscriptions/{eventSubscriptionId} ``` #### 요청 이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | + #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|-------|-------------| -| eventCodes | Body | Array | 이벤트 코드 목록 | -| eventCodes.eventCode | Body | Enum | 이벤트 코드 | -| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 이벤트 구독 수정하기 + +```http +PUT /v3.0/event-subscriptions/{eventSubscriptionId} +``` + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | +| eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | X | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | X | 활성화 여부 | +| notifyEmail | Body | Boolean | X | 이메일 발송 여부 | +| notifySms | Body | Boolean | X | SMS 발송 여부 | +| eventCodes | Body | Array | X | 구독할 이벤트 코드 목록 | +| sources | Body | Array | X | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | X | 이벤트 구독할 사용자 그룹의 식별자 목록 |

예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "eventCodes": [ + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ { - "eventCode": "INSTC_05_01", - "eventCategoryType": "INSTANCE" + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" } - ] + ], + "userGroupIds": [] } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- + diff --git a/ko/api-guide-v4.0-gov.md b/ko/api-guide-v4.0-gov.md index 7f5f56f6..36bc66ee 100644 --- a/ko/api-guide-v4.0-gov.md +++ b/ko/api-guide-v4.0-gov.md @@ -1,37 +1,37 @@ -## Database > RDS for MySQL > API 가이드 +## Database > RDS for MySQL > API v4.0 가이드 ## RDS for MySQL API 공통 정보 ### API 엔드포인트 -| 리전 | 엔드포인트 | -|-----------|-----------------------------------------------| +| 리전 | 엔드포인트 | +|------|----------| | 한국(판교) 리전 | https://kr1-rds-mysql.api.gov-nhncloudservice.com | + ### 인증 및 권한 RDS for MySQL은(는) API 호출 시 인증/인가를 위해 User Access Key 토큰을 사용합니다. User Access Key 토큰은 User Access Key를 기반으로 발급되는 Bearer 타입의 일시적 액세스 토큰입니다. User Access Key 토큰 발급 및 사용에 대한 자세한 내용은 [User Access Key 토큰](/nhncloud/ko/public-api/user-access-key-token)을 참고하세요. 발급 받은 토큰은 Appkey와 함께 요청 Header에 포함해야 합니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|--------|--------|----|-------------------------------------------------------------| -| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | -| X-NHN-AUTHORIZATION | Header | String | O | Public API로 발급 받은 Bearer 유형 토큰 | - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | +| X-NHN-AUTHORIZATION | Header | String | O | Public API로 발급 받은 Bearer 유형 토큰 | -또한 프로젝트 멤버 역할에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER`로 구분하여 권한을 부여할 수 있습니다. +또한 프로젝트 권한에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER` 역할에는 아래처럼 기본 권한이 부여돼 있고 프로젝트 내 역할 그룹 관리 메뉴에서 필요한 권한만 부여할 수 있습니다. -* `RDS for MySQL ADMIN` 권한은 모든 기능을 사용 가능합니다. -* `RDS for MySQL VIEWER` 권한은 정보를 조회하는 기능만 사용 가능합니다. +* `RDS for MySQL ADMIN` 역할은 API 실행에 필요한 모든 권한이 부여됩니다. +* `RDS for MySQL VIEWER` 역할은 정보를 조회하는 권한만 부여됩니다. * DB 인스턴스를 생성, 수정, 삭제하거나, DB 인스턴스를 대상으로 하는 어떠한 기능도 사용할 수 없습니다. - * 단, 알림 그룹 및 사용자 그룹 관련 기능은 사용 가능합니다. + * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용할 수 있습니다. API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같은 오류가 발생합니다. -| resultCode | resultMessage | 설명 | -|------------|---------------|-------------| -| 80401 | Unauthorized | 인증에 실패했습니다. | -| 80403 | Forbidden | 권한이 없습니다. | +| resultCode | resultMessage | 설명 | +|------------|---------------|-----| +| 80401 | Unauthorized | 인증에 실패했습니다. | +| 80403 | Forbidden | 권한이 없습니다. | ### 응답 공통 정보 @@ -49,59 +49,58 @@ API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같 ``` #### 필드 -| 이름 | 형식 | 설명 | -|---------------|---------|-----------------------------------------| -| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | -| resultMessage | String | 결과 메시지 | -| isSuccessful | Boolean | 성공 여부 | - +| 이름 | 형식 | 설명 | +|-----|-----|-----| +| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | +| resultMessage | String | 결과 메시지 | +| isSuccessful | Boolean | 성공 여부 | ### DB 엔진 유형 -| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 | -|--------------|----------|-----------------|--------| -| MYSQL\_V5633 | X | X | NATIVE | -| MYSQL\_V5715 | O | O | NATIVE | -| MYSQL\_V5719 | O | O | NATIVE | -| MYSQL\_V5726 | O | O | NATIVE | -| MYSQL\_V5731 | X | X | NATIVE | -| MYSQL\_V5733 | O | X | NATIVE, SHA256 | -| MYSQL\_V5737 | O | O | NATIVE, SHA256 | -| MYSQL\_V8018 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8023 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8028 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8032 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8033 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8034 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8044 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8045 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8405 | O | O | CACHING_SHA2 | -| MYSQL_V8406 | O | O | CACHING_SHA2 | -| MYSQL_V8407 | O | O | CACHING_SHA2 | -| MYSQL_V8408 | O | O | CACHING_SHA2 | - -* ENUM 타입의 dbVersion 필드에서 해당 값을 사용할 수 있습니다. +| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 | +|------------|----------|------------------|------------| +| MYSQL_V5633 | X | X | NATIVE | +| MYSQL_V5715 | O | O | NATIVE | +| MYSQL_V5719 | O | O | NATIVE | +| MYSQL_V5726 | O | O | NATIVE | +| MYSQL_V5731 | X | X | NATIVE | +| MYSQL_V5733 | O | X | NATIVE, SHA256 | +| MYSQL_V5737 | O | O | NATIVE, SHA256 | +| MYSQL_V8018 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8023 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8028 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8032 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8033 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8034 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8044 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8045 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8405 | O | O | CACHING_SHA2 | +| MYSQL_V8406 | O | O | CACHING_SHA2 | +| MYSQL_V8407 | O | O | CACHING_SHA2 | +| MYSQL_V8408 | O | O | CACHING_SHA2 | + +* ENUM 타입의 dbVersion 필드에 대해 해당 값을 사용할 수 있습니다. * 버전에 따라 생성 또는 복원이 불가능한 경우가 있을 수 있습니다. ## 프로젝트 정보 -### 리전 목록 보기 +### 프로젝트 멤버 목록 보기 ```http -GET /v4.0/project/regions +GET /v4.0/project/members ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|------------| -| RDSforMySQL:Project.Get | 프로젝트 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Project.Get | 프로젝트 멤버 목록 보기 | #### 요청 @@ -109,11 +108,13 @@ GET /v4.0/project/regions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------|------|---------|----------------------------------------------------------------------------| -| regions | Body | Array | 리전 목록 | -| regions.regionCode | Body | Enum | 리전 코드
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| members.memberName | Body | String | 프로젝트 멤버의 이름 | +| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | +| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 |
예시

@@ -125,38 +126,33 @@ GET /v4.0/project/regions "resultMessage": "SUCCESS", "isSuccessful": true }, - "regions": [ - { - "regionCode": "KR1", - "isEnabled": true - }, - { - "regionCode": "KR2", - "isEnabled": true - }, + "members": [ { - "regionCode": "JP1", - "isEnabled": true + "memberId": "550e8400-e29b-41d4-a716-446655440000", + "memberName": "memberName-example", + "emailAddress": "emailAddress-example", + "phoneNumber": "phoneNumber-example" } ] } ``` +

--- -### 프로젝트 멤버 목록 보기 +### 리전 목록 보기 ```http -GET /v4.0/project/members +GET /v4.0/project/regions ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|------------| -| RDSforMySQL:Project.Get | 프로젝트 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Project.Get | 리전 목록 보기 | #### 요청 @@ -164,13 +160,11 @@ GET /v4.0/project/members #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|--------|-----------------| -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| members.memberName | Body | String | 프로젝트 멤버의 이름 | -| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | -| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| regions | Body | Array | 리전 목록 | +| regions.regionCode | Body | Enum | 리전 코드
- KR1: `한국(판교)` | +| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 |
예시

@@ -182,12 +176,10 @@ GET /v4.0/project/members "resultMessage": "SUCCESS", "isSuccessful": true }, - "members": [ + "regions": [ { - "memberId": "1b1d3627-507a-49ea-8cb7-c86dfa9caa58", - "memberName": "홍길동", - "emailAddress": "gildong.hong@nhn.com", - "phoneNumber": "+821012345678" + "regionCode": "KR1", + "isEnabled": false } ] } @@ -208,8 +200,8 @@ GET /v4.0/db-flavors #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbFlavor.List | DB 인스턴스 사양 목록 보기 | #### 요청 @@ -218,13 +210,13 @@ GET /v4.0/db-flavors #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------| -| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | -| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | -| dbFlavors.ram | Body | Number | 메모리 용량(MB) | -| dbFlavors.vcpus | Body | Number | CPU 코어 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | +| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | +| dbFlavors.ram | Body | Number | 메모리 용량(MB) | +| dbFlavors.vcpus | Body | Number | CPU 코어 수 |

예시

@@ -238,9 +230,9 @@ GET /v4.0/db-flavors }, "dbFlavors": [ { - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbFlavorName": "m2.c1m2", - "ram": 2048, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbFlavorName": "dbFlavorName-example", + "ram": 1, "vcpus": 1 } ] @@ -262,8 +254,8 @@ GET /v4.0/network/subnets #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------|-----------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Network.List | 서브넷 목록 보기 | #### 요청 @@ -272,14 +264,14 @@ GET /v4.0/network/subnets #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|---------|------------------| -| subnets | Body | Array | 서브넷 목록 | -| subnets.subnetId | Body | UUID | 서브넷의 식별자 | -| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | -| subnets.subnetCidr | Body | String | 서브넷의 CIDR | -| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | -| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| subnets | Body | Array | 서브넷 목록 | +| subnets.subnetId | Body | UUID | 서브넷의 식별자 | +| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnets.subnetCidr | Body | String | 서브넷의 CIDR | +| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | +| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 |

예시

@@ -293,11 +285,11 @@ GET /v4.0/network/subnets }, "subnets": [ { - "subnetId": "1b2a9b23-0725-4b92-8c78-35db66b8ad9f", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/24", - "usingGateway": true, - "availableIpCount": 240 + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example", + "usingGateway": false, + "availableIpCount": 1 } ] } @@ -318,8 +310,8 @@ GET /v4.0/db-versions #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbVersion.List | DB 엔진 목록 보기 | #### 요청 @@ -328,11 +320,11 @@ GET /v4.0/db-versions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|---------|-----------------------| -| dbVersions | Body | Array | DB 엔진 목록 | -| dbVersions.dbVersion | Body | String | DB 엔진 유형 | -| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbVersions | Body | Array | DB 엔진 목록 | +| dbVersions.dbVersion | Body | String | DB 엔진 유형 | +| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | | dbVersions.restorableFromObs | Body | Boolean | 오브젝트 스토리지로부터 복원 가능 여부 |

예시 @@ -347,9 +339,9 @@ GET /v4.0/db-versions }, "dbVersions": [ { - "dbVersion": "MYSQL_V8028", - "dbVersionName": "MySQL 8.0.28", - "restorableFromObs": true + "dbVersion": "MYSQL_V8036", + "dbVersionName": "dbVersionName-example", + "restorableFromObs": false } ] } @@ -362,7 +354,7 @@ GET /v4.0/db-versions ## 데이터 스토리지 -### 데이터 스토리지 타입 목록 보기 +### 스토리지 타입 목록 보기 ```http GET /v4.0/storage-types @@ -370,9 +362,9 @@ GET /v4.0/storage-types #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------|-------------------| -| RDSforMySQL:Storage.List | 데이터 스토리지 타입 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Storage.List | 스토리지 타입 목록 보기 | #### 요청 @@ -380,9 +372,9 @@ GET /v4.0/storage-types #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|-------|----------------| -| storageTypes | Body | Array | 데이터 스토리지 타입 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageTypes | Body | Array | 스토리지 타입 목록 |
예시

@@ -394,10 +386,7 @@ GET /v4.0/storage-types "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageTypes": [ - "General SSD", - "General HDD" - ] + "storageTypes": [] } ``` @@ -433,29 +422,29 @@ GET /v4.0/jobs/{jobId} #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Job.Get | 작업 정보 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------|-----|------|----|---------| -| jobId | URL | UUID | O | 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| jobId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------|------|----------|-----------------------------------| -| jobId | Body | UUID | 작업의 식별자 | -| jobStatus | Body | Enum | 작업의 현재 상태 | -| resourceRelations | Body | Array | 연관 리소스 목록 | -| resourceRelations.resourceType | Body | Enum | 연관 리소스 유형 | -| resourceRelations.resourceId | Body | UUID | 연관 리소스의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | +| jobStatus | Body | Enum | 작업의 현재 상태
- DELETED
- CANNOT_PROGRESS
- FAILED
- ERROR
- CANCELED
- INTERRUPTED
- COMPLETED
- RUNNING
- PREPARING
- READY
- CREATED
- FAIL_TO_READY
- REGISTERED
- FAIL_TO_REGISTER
- WAIT_TO_REGISTER | +| resourceRelations | Body | Array | 연관 리소스 목록 | +| resourceRelations.resourceType | Body | String | 연관 리소스 유형 | +| resourceRelations.resourceId | Body | String | 연관 리소스의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -467,16 +456,16 @@ GET /v4.0/jobs/{jobId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "jobId": "0ddb042c-5af6-43fb-a914-f4dd0540eb7c", - "jobStatus": "RUNNING", + "jobId": "550e8400-e29b-41d4-a716-446655440000", + "jobStatus": "DELETED", "resourceRelations": [ { - "resourceType": "DB_INSTANCE", - "resourceId": "56b39dcf-65eb-47ec-9d4f-09f160ba2266" + "resourceType": "resourceType-example", + "resourceId": "resourceId-example" } ], - "createdYmdt": "2023-02-22T20:47:12+09:00", - "updatedYmdt": "2023-02-22T20:49:46+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -495,8 +484,8 @@ GET /v4.0/db-instance-groups #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstanceGroup.List | DB 인스턴스 그룹 목록 보기 | #### 요청 @@ -505,13 +494,13 @@ GET /v4.0/db-instance-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------|------|----------|--------------------------------------------------------------------------| -| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | -| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | +| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -525,10 +514,10 @@ GET /v4.0/db-instance-groups }, "dbInstanceGroups": [ { - "dbInstanceGroupId": "05de0746-89fd-49c8-94f9-9c5b1df97009", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", - "createdYmdt": "2023-02-13T17:35:20+09:00", - "updatedYmdt": "2023-02-13T17:35:20+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -547,30 +536,30 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstanceGroup.Get | DB 인스턴스 그룹 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|-----------------| -| dbInstanceGroupId | URL | UUID | O | DB 인스턴스 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -582,17 +571,17 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbInstanceGroupId": "36617a8e-0df8-4b16-b6ea-6306019e95da", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", "dbInstances": [ { - "dbInstanceId": "6d2db0ef-fe9b-4ed4-97b1-d97fcb4cf1b8", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE" + "dbInstanceStatus": "BEFORE_CREATE" } ], - "createdYmdt": "2023-03-03T17:38:14+09:00", - "updatedYmdt": "2023-03-03T17:38:14+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -625,8 +614,8 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} | `BACKING_UP` | 백업 중 | | `CANCELING` | 취소 중 | | `CREATING` | 생성 중 | -| `CREATING_SCHEMA` | DB 스키마 생성 중 | -| `CREATING_USER` | 사용자 생성 중 | +| `CREATING_SCHEMA` | DB 스키마 생성 중 | +| `CREATING_USER` | 사용자 생성 중 | | `DELETING` | 삭제 중 | | `DELETING_SCHEMA` | DB 스키마 삭제 중 | | `DELETING_USER` | 사용자 삭제 중 | @@ -645,8 +634,8 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} | `STARTING` | 시작 중 | | `STOPPING` | 정지 중 | | `SYNCING_SCHEMA` | DB 스키마 동기화 중 | -| `SYNCING_USER` | 사용자 동기화 중 | -| `UPDATING_USER` | 사용자 수정 중 | +| `SYNCING_USER` | 사용자 동기화 중 | +| `UPDATING_USER` | 사용자 수정 중 | ### DB 인스턴스 목록 보기 @@ -656,8 +645,8 @@ GET /v4.0/db-instances #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstance.List | DB 인스턴스 목록 보기 | #### 요청 @@ -666,20 +655,20 @@ GET /v4.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstances | Body | Array | DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | -| dbInstances.dbPort | Body | Number | DB 포트 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태 | -| dbInstances.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstances.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstances | Body | Array | DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | +| dbInstances.dbPort | Body | Number | DB 포트 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbInstances.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstances.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -693,17 +682,17 @@ GET /v4.0/db-instances }, "dbInstances": [ { - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", + "dbInstanceStatus": "BEFORE_CREATE", "progressStatus": "NONE", - "createdYmdt": "2023-01-23T12:03:13+09:00", - "updatedYmdt": "2023-02-02T17:20:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -714,51 +703,130 @@ GET /v4.0/db-instances --- -### DB 인스턴스 상세 보기 +### DB 인스턴스 생성하기 ```http -GET /v4.0/db-instances/{dbInstanceId} +POST /v4.0/db-instances ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Create | DB 인스턴스 생성하기 | -#### 요청 +#### 공통 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| authenticationPlugin | Body | Enum | X | 인증 Plugin
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | TLS Option
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 데이터 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | + +

예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE", + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "backup": { + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 1800, + "replicationRegion": "KR1", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + } +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| dbPort | Body | Number | DB 포트 | -| dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| progressStatus | Body | Enum | DB 인스턴스의 현재 작업 진행 상태 | -| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | -| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | -| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | -| useSlowQueryAnalysis | Body | Boolean | Slow query 분석 여부 | -| supportAuthenticationPlugin | Body | Boolean | 인증 플러그인 지원 여부 | -| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | -| needMigration | Body | Boolean | 마이그레이션 필요 여부 | -| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -770,27 +838,7 @@ GET /v4.0/db-instances/{dbInstanceId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", - "progressStatus": "NONE", - "dbFlavorId": "e9ed4ef6-78d7-46fa-ace9-32481e97f3b7", - "parameterGroupId": "b03e8b13-de27-4d04-a488-ff5689589372", - "dbSecurityGroupIds": ["01908c35-d2c9-4852-baf0-17f06ec42c03"], - "notificationGroupIds": ["83a62a33-ddbf-4a04-8653-e54463d5b1ac"], - "useDeletionProtection": false, - "useSlowQueryAnalysis": true, - "supportAuthenticationPlugin": true, - "needToApplyParameterGroup": false, - "needMigration": false, - "supportDbVersionUpgrade": true, - "createdYmdt": "2022-11-23T12:03:13+09:00", - "updatedYmdt": "2022-12-02T17:20:17+09:00" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -799,97 +847,124 @@ GET /v4.0/db-instances/{dbInstanceId} --- -### DB 인스턴스 생성하기 +### 오브젝트 스토리지를 이용한 DB 인스턴스 복원 ```http -POST /v4.0/db-instances +POST /v4.0/db-instances/restore-from-obs ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Create | DB 인스턴스 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.RestoreFromObs | 오브젝트 스토리지를 이용한 DB 인스턴스 복원 | -#### 요청 +#### 공통 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|-------|---------|----|---------------------------------------------------------------------| -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbUserName | Body | String | O | DB 사용자 계정명 | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| pingType | Body | Enum | X | 고가용성 사용 시 Ping 타입
- 기본값: `INSERT`
- `INSERT`
- `SELECT` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- 기본값: `NATIVE`(미지원 시 `CACHING_SHA2`)
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | O | DB 포트 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | +| restore.username | Body | String | O | NHN Cloud 계정 혹은 IAM 멤버 ID | +| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | +| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | +| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` |

예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", - "availabilityZone": "kr-pub-a" - }, + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "dbVersion": "MYSQL_V8036", + "useHighAvailability": false, + "pingInterval": 3, "storage": { "storageType": "General SSD", - "storageSize": 20 + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR1", + "useBackupLock": true, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR" + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" } ] - } + }, + "restore": { + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" + }, + "useDefaultNotification": false, + "useSlowQueryAnalysis": true, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDeletionProtection": false } ``` @@ -898,66 +973,27 @@ POST /v4.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### DB 인스턴스 수정하기 - -```http -PUT /v4.0/db-instances/{dbInstanceId} -``` - -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|------|---------|----|---------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbPort | Body | Number | X | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbVersion | Body | Enum | X | DB 엔진 유형 | -| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| useReadOnly | Body | Boolean | X | 읽기 전용으로 변경 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -

예시

```json { - "dbInstanceName": "db-instance2", - "description": "description2", - "dbPort": 10001, - "dbSecurityGroupIds": [], - "executeBackup": true + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- ### DB 인스턴스 삭제하기 @@ -968,79 +1004,99 @@ DELETE /v4.0/db-instances/{dbInstanceId} #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstance.Delete | DB 인스턴스 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| deleteAutoBackup | Body | Boolean | X | 자동 백업 삭제 여부
- 기본값: `false` | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| deleteAutoBackup | Body | Boolean | X | 자동 백업 삭제 여부
- 기본값: `false` | -### DB 인스턴스 재시작하기 +
예시 +

-```http -POST /v4.0/db-instances/{dbInstanceId}/restart +```json +{ + "deleteAutoBackup": false +} ``` -#### 필요 권한 +

+
-| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Restart | DB 인스턴스 재시작하기 | +#### 응답 -#### 요청 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | -| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| useReadOnly | Body | Boolean | X | 읽기 전용으로 변경 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### DB 인스턴스 강제 재시작하기 + +### DB 인스턴스 상세 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/force-restart +GET /v4.0/db-instances/{dbInstanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|------------------| -| RDSforMySQL:DbInstance.ForceRestart | DB 인스턴스 강제 재시작하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| dbPort | Body | Number | DB 포트 | +| dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | +| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | +| useSlowQueryAnalysis | Body | Boolean | Slow query 분석 여부 | +| supportAuthenticationPlugin | Body | Boolean | 인증 plugin 지원 여부 | +| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | +| needMigration | Body | Boolean | 마이그레이션 필요 여부 | +| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -1051,134 +1107,222 @@ POST /v4.0/db-instances/{dbInstanceId}/force-restart "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbInstanceType": "MASTER", + "dbInstanceStatus": "BEFORE_CREATE", + "progressStatus": "NONE", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "notificationGroupIds": [], + "useDeletionProtection": false, + "useSlowQueryAnalysis": false, + "supportAuthenticationPlugin": false, + "needToApplyParameterGroup": false, + "needMigration": false, + "supportDbVersionUpgrade": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

- --- -### DB 인스턴스 시작하기 +### DB 인스턴스 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/start +PUT /v4.0/db-instances/{dbInstanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Start | DB 인스턴스 시작하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbPort | Body | Number | X | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbVersion | Body | Enum | X | DB 엔진 버전 코드 | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부 | +| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
- 기본값: `false` | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` | + +
예시 +

-| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +```json +{ + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbPort": 1, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "useSlowQueryAnalysis": false, + "useDummy": false, + "dbSecurityGroupIds": [], + "executeBackup": false, + "useOnlineFailover": false, + "waitReplicationDelay": false, + "useReadOnly": false +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 인스턴스 정지하기 +### 백업 정보 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/stop +GET /v4.0/db-instances/{dbInstanceId}/backup-info ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Stop | DB 인스턴스 정지하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 백업 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| backupPeriod | Body | Number | 백업 보관 기간(일) | +| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | +| backupRetryCount | Body | Number | 백업 재시도 횟수 | +| replicationRegion | Body | Enum | 백업 복제 리전
- KR1: `한국(판교)` | +| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration
- HALF_AN_HOUR
- ONE_HOUR
- ONE_HOUR_AND_HALF
- TWO_HOURS
- TWO_HOURS_AND_HALF
- THREE_HOURS | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "backupPeriod": 1, + "ftwrlWaitTimeout": 1, + "backupRetryCount": 1, + "replicationRegion": "KR1", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] +} +``` + +

+
--- -### DB 인스턴스 복제하기 +### 백업 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/replicate +PUT /v4.0/db-instances/{dbInstanceId}/backup-info ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Replicate | DB 인스턴스 복제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | 백업 정보 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------------------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbPort | Body | Number | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록
- 기본값: 원본 DB 인스턴스 값 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: 원본 DB 인스턴스 값 | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입
- 기본값: 원본 DB 인스턴스 값
- 예시: `General SSD` | -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전
- 기본값: 원본 DB 인스턴스 값 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각
- 예시: `00:00:00`
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간
- 기본값: 원본 DB 인스턴스 값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json { - "dbInstanceName": "db-instance-replicate", - "description": "description", - "dbPort": 11000, - "network": { - "availabilityZone": "kr-pub-a" - }, - "storage": { - "stroageSize": 100 - } + "backupPeriod": 0, + "ftwrlWaitTimeout": 0, + "backupRetryCount": 0, + "replicationRegion": "KR1", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] } ``` @@ -1187,147 +1331,234 @@ POST /v4.0/db-instances/{dbInstanceId}/replicate #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- +

예시 +

-### DB 인스턴스 승격하기 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 바이너리 로그 목록 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/promote +GET /v4.0/db-instances/{dbInstanceId}/binlogs ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Promote | DB 인스턴스 승격하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceBinLog.List | 바이너리 로그 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| binLogs | Body | Array | BinLog 파일 목록 | +| binLogs.binLogFileName | Body | String | BinLog 파일 이름 | +| binLogs.binLogFileSize | Body | Number | BinLog 파일 크기 (Byte) | +| binLogs.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "binLogs": [ + { + "binLogFileName": "binLogFileName-example", + "binLogFileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
--- -### DB 인스턴스 재구축하기 +### 바이너리 로그 삭제 ```http -POST /v4.0/db-instances/{dbInstanceId}/rebuild +POST /v4.0/db-instances/{dbInstanceId}/binlogs/purge ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Rebuild | DB 인스턴스 재구축하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceBinLog.Purge | 바이너리 로그 삭제 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| lastBinLogFileName | Body | String | O | 삭제할 마지막 BinLog 파일 이름 (해당 파일 직전까지 삭제됨) | + +
예시 +

+ +```json +{ + "lastBinLogFileName": "mysql-bin.000010" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 복원 정보 조회 +### 인증서 파일 목록 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/restoration-info +GET /v4.0/db-instances/{dbInstanceId}/certificates ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceCertificate.List | 인증서 파일 목록 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------------|------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| oldestRestorableYmdt | Body | DateTime | 가장 오래된 복원 가능한 시각 | -| latestRestorableYmdt | Body | DateTime | 가장 최신의 복원 가능한 시각 | -| restorableBackups | Body | Array | 복원 가능한 백업 목록 | -| restorableBackups.backup | Body | Object | 백업 정보 객체 | -| restorableBackups.backup.backupId | Body | UUID | 백업의 식별자 | -| restorableBackups.backup.backupName | Body | String | 백업 이름 | -| restorableBackups.backup.useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| restorableBackups.backup.backupSize | Body | Number | 백업 크기 | -| restorableBackups.backup.backupType | Body | Enum | 백업 유형
- `AUTO`: 자동
- `MANUAL`: 수동 | -| restorableBackups.backup.backupStatus | Body | Enum | 백업 상태
- `BACKING_UP`: 백업 중인 경우
- `COMPLETED`: 백업이 완료된 경우
- `DELETING`: 백업이 삭제 중인 경우
- `DELETED`: 백업이 삭제된 경우
- `ERROR`: 오류가 발생한 경우 | -| restorableBackups.backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| restorableBackups.backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | -| restorableBackups.backup.dbVersion | Body | String | DB 엔진 유형 | -| restorableBackups.backup.failoverCount | Body | Number | 장애 조치 횟수 | -| restorableBackups.backup.binLogFileName | Body | String | 바이너리 로그 파일명 | -| restorableBackups.backup.binLogPosition | Body | Number | 바이너리 로그 파일 위치 | -| restorableBackups.backup.createdYmdt | Body | DateTime | 백업 생성 일시 | -| restorableBackups.backup.updatedYmdt | Body | DateTime | 백업 갱신 일시 | -| restorableBackups.restorableBinLogs | Body | Array | 해당 백업을 이용하여 복원 가능한 바이너리 로그 이름 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| certificates | Body | Array | 인증서 파일 목록 | +| certificates.fileName | Body | String | 인증서 파일 이름 | +| certificates.certificateType | Body | Enum | 인증서 타입
- CA_FILE
- CERT_FILE
- KEY_FILE | +| certificates.fileSize | Body | Number | 인증서 파일 크기(Byte) | +| certificates.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "certificates": [ + { + "fileName": "fileName-example", + "certificateType": "CA_FILE", + "fileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### 인증서 파일 내보내기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/certificates/upload +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceCertificate.Export | 인증서 파일 내보내기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| certificateTypes | Body | Array | O | 업로드할 인증서 타입 목록 | +| tenantId | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 회원 또는 IAM 멤버 ID | +| password | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 인증서 파일의 경로 | + +
예시 +

+ +```json +{ + "certificateTypes": [], + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" +} +``` +

+
+ +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "oldestRestorableYmdt": "2023-07-09T16:33:33+09:00", - "latestRestorableYmdt": "2023-07-10T15:44:44+09:00", - "restorableBackups": [ - { - "backup": { - "backupId": "145d889a-fe08-474f-8f58-bde576ff96a9", - "backupName": "example-backup-name", - "backupStatus": "COMPLETED", - "dbInstanceId": "dba1be25-9429-4589-9716-7fb6daad7cb9", - "dbInstanceName": "original-db-instance-name", - "dbVersion": "MYSQL_V8028", - "backupType": "MANUAL", - "backupSize": 8299904, - "useBackupLock": true, - "failoverCount": 0, - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 367916037, - "createdYmdt": "2023-07-10T15:44:44+09:00", - "updatedYmdt": "2023-07-10T15:46:07+09:00" - }, - "restorableBinLogs": [ - "mysql-bin.000001" - ] - } - ] + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1336,45 +1567,98 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info --- -### 복원될 마지막 쿼리 조회 +### DB 스키마 목록 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query +GET /v4.0/db-instances/{dbInstanceId}/db-schemas ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceSchema.List | DB 스키마 목록 보기 | -#### 공통 요청 +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSchemas | Body | Array | DB 스키마 목록 | +| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | +| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | +| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- STABLE
- CREATING
- SYNCING
- DELETING
- DELETED | +| dbSchemas.createdYmdt | Body | DateTime | 생성 일시 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSchemas": [ + { + "dbSchemaId": "550e8400-e29b-41d4-a716-446655440000", + "dbSchemaName": "dbSchemaName-example", + "dbSchemaStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|------|----|-----------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restoreType | Query | Enum | O | 복원 타입 종류
- `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
- `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입 | +### DB 스키마 생성하기 -#### restoreType이 `TIMESTAMP`인 경우 +```http +POST /v4.0/db-instances/{dbInstanceId}/db-schemas +``` + +#### 필요 권한 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-------|----------|----|-------------------------------------------| -| restoreYmdt | Query | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceSchema.Create | DB 스키마 생성하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbSchemaName | Body | String | O | DB 스키마 이름
- 최대 길이: `64`
- 영문 시작, 영문/숫자/_ 허용, 1~64자, MySQL 예약어 불가 | + +
예시 +

-#### restoreType이 `BINLOG`인 경우 +```json +{ + "dbSchemaName": "dbSchemaName-example" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------|-------|--------|----|--------------------| -| backupId | Query | UUID | O | 복원에 사용할 백업의 식별자 | -| binLogFileName | Query | String | O | 복원에 사용할 바이너리 로그 이름 | -| binLogPosition | Query | Number | O | 복원에 사용할 바이너리 로그 위치 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|----------|--------------------------------------| -| executedYmdt | Body | DateTime | 쿼리 수행 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| lastQuery | Body | String | 마지막 수행 쿼리 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -1386,8 +1670,7 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query "resultMessage": "SUCCESS", "isSuccessful": true }, - "executedYmdt": "2023-03-17T14:02:29+09:00", - "lastQuery": "INSERT INTO `test`.`test`SET @1='0123'" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1396,213 +1679,153 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query --- -### 복원 +### DB 스키마 삭제하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/restore +DELETE /v4.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Restore | DB 인스턴스 복원하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceSchema.Delete | DB 스키마 삭제하기 | -#### 공통 요청 +#### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restore | Body | Object | O | 복원 정보 객체 | -| restore.restoreType | Body | Enum | O | 복원 타입 종류
- `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
- `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입
- `BACKUP`: 기존에 생성한 백업을 이용한 스냅숏 복원 타입 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 고가용성 사용 시 필수 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| pingType | Body | Enum | X | 고가용성 사용 시 Ping 타입
- 기본값: `INSERT`
- `INSERT`
- `SELECT` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | X | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | X | 서브넷의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a`
- 기본값: 랜덤 선택 | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입
- 예시: `General SSD`
- 기본값: 원본 DB 인스턴스 값 | -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +이 API는 요청 본문을 요구하지 않습니다. -#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbSchemaId | URL | UUID | O | DB 스키마의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|----------|----|------------------------------------------------------------------------------------------------| -| restore.restoreYmdt | Body | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD)
복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능합니다. | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |

예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "TIMESTAMP", - "restoreYmdt": "2023-07-10T15:44:44+09:00" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) +--- -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------------|------|--------|----|--------------------| -| restore.backupId | Body | UUID | O | 복원에 사용할 백업의 식별자 | -| restore.binLog | Body | Object | O | 바이너리 로그 정보 객체 | -| restore.binLog.binLogFileName | Body | String | O | 복원에 사용할 바이너리 로그 이름 | -| restore.binLog.binLogPosition | Body | Number | O | 복원에 사용할 바이너리 로그 위치 | +### DB 사용자 목록 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/db-users +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.List | DB 사용자 목록 보기 | + +#### 요청 -* 바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그를 복원할 수 있습니다. +이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbUsers | Body | Array | DB 사용자 목록 | +| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | +| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | +| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | +| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- STABLE
- CREATING
- UPDATING
- SYNCING
- DELETING
- DELETED | +| dbUsers.createdYmdt | Body | DateTime | 생성 일시 | +| dbUsers.updatedYmdt | Body | DateTime | 수정 일시 | +| dbUsers.authenticationPlugin | Body | Enum | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| dbUsers.tlsOption | Body | Enum | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BINLOG", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36", - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 1234567 - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbUsers": [ + { + "dbUserId": "550e8400-e29b-41d4-a716-446655440000", + "dbUserName": "dbUserName-example", + "host": "host-example", + "authorityType": "CUSTOM", + "dbUserStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" + } + ] } ```

-#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) +--- -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|------|------------------------------|-----------------| -| restore.backupId | Body | UUID | O(restoreType이 `BACKUP`인 경우) | 복원에 사용할 백업의 식별자 | +### DB 사용자 생성하기 +```http +POST /v4.0/db-instances/{dbInstanceId}/db-users +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.Create | DB 사용자 생성하기 | +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| host | Body | String | O | DB 사용자 계정의 호스트명
- 최대 길이: `45` | +| authorityType | Body | Enum | O | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BACKUP", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "host": "host-example", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" } ``` @@ -1611,115 +1834,107 @@ POST /v4.0/db-instances/{dbInstanceId}/restore #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### 오브젝트 스토리지로부터 복원 +### DB 사용자 삭제하기 ```http -POST /v4.0/db-instances/restore-from-obs +DELETE /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------------|-------------------------| -| RDSforMySQL:DbInstance.RestoreFromObs | DB 인스턴스 오브젝트 스토리지로부터 복원 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.Delete | DB 사용자 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|----------------------------------------------------------------------------------------| -| restore | Body | Object | O | 복원 정보 객체 | -| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | -| restore.username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | -| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | -| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| pingType | Body | Enum | X | 고가용성 사용 시 Ping 타입
- 기본값: `INSERT`
- `INSERT`
- `SELECT` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbVersion": "MYSQL_V8028", - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "tenantId":"tenant-id", - "username":"username", - "password":"password", - "targetContainer":"targetContainer", - "objectPath":"objectPath" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 사용자 수정하기 + +```http +PUT /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.Modify | DB 사용자 수정하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| authorityType | Body | Enum | X | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | + +
예시 +

+ +```json +{ + "dbPassword": "dbPassword", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" } ``` @@ -1728,15 +1943,30 @@ POST /v4.0/db-instances/restore-from-obs #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

---- +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` +

+
+ +--- -### DB 인스턴스 삭제 보호 설정 변경하기 +### DB 인스턴스 삭제 보호 설정 변경 ```http PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection @@ -1744,21 +1974,90 @@ PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | DB 인스턴스 삭제 보호 설정 변경 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | + +
예시 +

+ +```json +{ + "useDeletionProtection": false +} +``` + +

+
#### 응답 이 API는 응답 본문을 반환하지 않습니다. +--- + +### DB 인스턴스 강제 재시작하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/force-restart +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.ForceRestart | DB 인스턴스 강제 재시작하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 고가용성 정보 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/high-availability +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 고가용성 정보 보기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| useHighAvailability | Body | Boolean | 고가용성 사용 여부
- 기본값: `false` | +| haStatus | Body | Enum | 고가용성 상태
- CREATED: `생성됨`
- STABLE: `정상`
- PAUSING: `일시 중지 중`
- DISABLE: `정지`
- DISABLE_MASTER_IN_REPLICATION: `마스터 비정상 복제 감지로 인한 고가용성 중단`
- DISABLE_MHA_PROCESS: `고가용성 프로세스 중단`
- DISABLE_REPLICATION_STOP: `복제 중단으로 인한 고가용성 중단`
- DISABLE_REPLICATION_DELAY: `복제 지연으로 인한 고가용성 중단`
- FAILOVER_STARTED: `장애 조치 시작`
- FAILOVER_FAILED: `장애 조치 실패`
- FAILOVER_COMPLETED: `장애 조치 완료`
- DELETED: `삭제됨`
- PAUSED: `일시 중지`
- PAUSED_DUE_TO_TASK: `작업으로 인한 일시 중지`
- MASTER_FAILURE_DETECTION: `마스터 장애 감지` | +| pingInterval | Body | Number | Ping 간격(초) | +| pingType | Body | String | Ping 방식 | +
예시

@@ -1768,7 +2067,11 @@ PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "useHighAvailability": false, + "haStatus": "CREATED", + "pingInterval": 1, + "pingType": "pingType-example" } ``` @@ -1777,58 +2080,97 @@ PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection --- -### 고가용성 상태 - -| 상태 | 설명 | -|----------------------------------|---------------------------------| -| `CREATED` | 고가용성이 생성된 경우 | -| `STABLE` | 고가용성이 정상인 경우 | -| `PAUSING` | 고가용성이 일시 중지 중인 경우 | -| `PAUSED` | 고가용성이 일시 중지된 경우 | -| `PAUSED_DUE_TO_TASK` | 작업으로 인해 고가용성이 일시 중지된 경우 | -| `DISABLE_MASTER_IN_REPLICATION` | 마스터 비정상 복제 감지로 고가용성이 중단된 경우 | -| `DISABLE_MHA_PROCESS` | 고가용성 프로세스가 중단된 경우 | -| `DISABLE_REPLICATION_STOP` | 복제 중단으로 인해 고가용성이 중단된 경우 | -| `DISABLE_REPLICATION_DELAY` | 복제 지연으로 인해 고가용성이 중단된 경우 | -| `MASTER_FAILURE_DETECTION` | 마스터 장애가 감지된 경우 | -| `FAILOVER_STARTED` | 장애 조치가 시작된 경우 | -| `FAILOVER_FAILED` | 장애 조치가 실패한 경우 | -| `FAILOVER_COMPLETED` | 장애 조치가 완료된 경우 | -| `DELETED` | 고가용성이 삭제된 경우 | +### 고가용성 수정하기 + +```http +PUT /v4.0/db-instances/{dbInstanceId}/high-availability +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Modify | 고가용성 수정하기 | + +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +

예시 +

+ +```json +{ + "useHighAvailability": false, + "pingInterval": 1 +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### 고가용성 정보 보기 +### 고가용성 일시 중지하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/high-availability +POST /v4.0/db-instances/{dbInstanceId}/high-availability/pause ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Pause | 고가용성 일시 중지하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|---------|---------------------------------------------------------------------------------------------------------------------| -| useHighAvailability | Body | Boolean | 고가용성 사용 여부 | -| haStatus | Body | Enum | 고가용성 상태 | -| pingInterval | Body | Number | Ping 간격(초) | -| pingType | Body | Enum | Ping 타입
- `INSERT`
- `SELECT` | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시 -

```json @@ -1838,47 +2180,58 @@ GET /v4.0/db-instances/{dbInstanceId}/high-availability "resultMessage": "SUCCESS", "isSuccessful": true }, - "useHighAvailability": true, - "haStatus": "STABLE", - "pingInterval": 3, - "pingType": "INSERT" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-
--- -### 고가용성 수정하기 +### 고가용성 복구하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/high-availability +POST /v4.0/db-instances/{dbInstanceId}/high-availability/repair ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|-----------| -| RDSforMySQL:HighAvailability.Modify | 고가용성 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Repair | 고가용성 복구하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|---------|----|------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | -| pingType | Body | Enum | X | 고가용성 사용 시 Ping 타입
- `INSERT`
- `SELECT` | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 고가용성 사용 시 필수값 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- ### 고가용성 다시 시작하기 @@ -1889,142 +2242,190 @@ POST /v4.0/db-instances/{dbInstanceId}/high-availability/resume #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:HighAvailability.Resume | 고가용성 다시 시작하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### 고가용성 일시 중지하기 +
예시 +

-```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/pause +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|----------------------------------------------------|--------------| -| RDSforMySQL:HighAvailability.Pause | 고가용성 일시 중지하기 | - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 고가용성 복구하기 +### 고가용성 분리하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/repair +POST /v4.0/db-instances/{dbInstanceId}/high-availability/split ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|-----------| -| RDSforMySQL:HighAvailability.Repair | 고가용성 복구하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Split | 고가용성 분리하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 고가용성 분리하기 +### 로그 파일 목록 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/split +GET /v4.0/db-instances/{dbInstanceId}/log-files ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|-----------| -| RDSforMySQL:HighAvailability.Split | 고가용성 분리하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceLog.List | 로그 파일 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| logFiles | Body | Array | 로그 파일 목록 | +| logFiles.logFileName | Body | String | 로그 파일 이름 | +| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- ERROR
- BINLOG
- GENERAL
- SLOW_QUERY
- AUDIT
- BACKUP | +| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | +| logFiles.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "logFiles": [ + { + "logFileName": "logFileName-example", + "logFileType": "ERROR", + "logFileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
--- -### 데이터 스토리지 정보 보기 +### 로그 파일 내보내기 ```http -GET /v4.0/db-instances/{dbInstanceId}/storage-info +POST /v4.0/db-instances/{dbInstanceId}/log-files/export ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceLog.Export | 로그 파일 내보내기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| logFileNames | Body | Array | O | 로그 파일 이름 목록 | +| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 회원 또는 IAM 멤버 ID | +| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | + +
예시 +

-| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +```json +{ + "logFileNames": [], + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|---------|--------------------------------------------------------------------------------------| -| storageType | Body | Enum | 데이터 스토리지 타입 | -| storageSize | Body | Number | 데이터 스토리지 크기(GB) | -| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- `DETACHED`: 부착되지 않음
- `ATTACHED`: 부착됨
- `DELETED`: 삭제됨 | -| storageAutoscale | Body | Object | 데이터 스토리지 자동 확장 객체 | -| storageAutoscale.useStorageAutoscale | Body | Boolean | 스토리지 자동 확장 여부 | -| storageAutoscale.threshold | Body | Number | 자동 확장 조건(%) | -| storageAutoscale.maxStorageSize | Body | Number | 자동 확장 최대 크기(GB) | -| storageAutoscale.cooldownTime | Body | Number | 자동 확장 쿨다운 시간(분) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2036,89 +2437,103 @@ GET /v4.0/db-instances/{dbInstanceId}/storage-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageType": "General SSD", - "storageSize": 20, - "storageStatus": "ATTACHED", - "storageAutoscale": { - "useStorageAutoscale": true, - "threshold": 80, - "maxStorageSize": 100, - "cooldownTime": 10 - } + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- --- -### 데이터 스토리지 정보 수정하기 +### 로그 파일 내용 보기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/storage-info +GET /v4.0/db-instances/{dbInstanceId}/log-files/{logFileName} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceLog.Get | 로그 파일 내용 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: 현재값
- 최댓값: `2048` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| logFileName | URL | UUID | O | 로그 파일 이름 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| content | Body | String | 로그 파일 내용 (최대 65533 bytes) | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "content": "content-example" +} +``` + +

+
--- -### 백업 정보 보기 +### DB 인스턴스 유지 관리 목록 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/backup-info +GET /v4.0/db-instances/{dbInstanceId}/maintenances ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.List | DB 인스턴스 유지 관리 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| type | Query | String | X | | +| statuses | Query | String | X | | +| category | Query | String | X | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|---------|----------------| -| backupPeriod | Body | Number | 백업 보관 기간(일) | -| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | -| backupRetryCount | Body | Number | 백업 재시도 횟수 | -| replicationRegion | Body | Enum | 백업 복제 리전 | -| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | -| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 유지 관리 목록 갯수 | +| maintenances | Body | Array | 유지 관리 목록 | +| maintenances.maintenanceId | Body | UUID | 유지 관리 아이디 | +| maintenances.dbInstanceId | Body | UUID | DB 인스턴스 아이디 | +| maintenances.category | Body | Enum | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| maintenances.description | Body | String | 유지 관리 설명 | +| maintenances.type | Body | Enum | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| maintenances.payload | Body | Object | 유지 관리 타입에 따른 Payload | +| maintenances.required | Body | Boolean | 유지 관리 필수 여부 | +| maintenances.deadlineYmdt | Body | DateTime | 유지 관리 강제 적용 일시 | +| maintenances.status | Body | Enum | 유지 관리 상태
- PENDING: `대기`
- READY: `준비`
- RUNNING: `실행 중`
- COMPLETED: `완료`
- FAILED: `실패`
- EXCLUDED: `제외`
- DELETED: `삭제`
- UNKNOWN | +| maintenances.executionType | Body | Enum | 유지 관리 실행 타입
- SCHEDULED: `예약 실행 (유지 관리 기간 자동 실행)`
- MANUAL: `수동 실행 (즉시 실행)`
- FORCED: `강제 실행 (데드라인 초과 자동 실행)` | +| maintenances.addedYmdt | Body | DateTime | 유지 관리 스케줄 등록 일시 | +| maintenances.executionStartedYmdt | Body | DateTime | 유지 관리 시작 일시 | +| maintenances.executionCompletedYmdt | Body | DateTime | 유지 관리 종료 일시 |
예시

@@ -2130,15 +2545,23 @@ GET /v4.0/db-instances/{dbInstanceId}/backup-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "backupPeriod": 1, - "ftwrlWaitTimeout": 1800, - "backupRetryCount": 0, - "replicationRegion": null, - "useBackupLock": false, - "backupSchedules": [ + "totalCounts": 1, + "maintenances": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" + "maintenanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": { + }, + "required": false, + "deadlineYmdt": "2023-12-31T15:00:00+09:00", + "status": "PENDING", + "executionType": "SCHEDULED", + "addedYmdt": "2023-12-31T15:00:00+09:00", + "executionStartedYmdt": "2023-12-31T15:00:00+09:00", + "executionCompletedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -2147,48 +2570,41 @@ GET /v4.0/db-instances/{dbInstanceId}/backup-info

- --- -### 백업 정보 수정하기 +### DB 인스턴스 유지 관리 즉시 실행하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/backup-info +POST /v4.0/db-instances/{dbInstanceId}/maintenances/execute-now ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.Execute | DB 인스턴스 유지 관리 즉시 실행하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------------------------|------|---------|----|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | -| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | -| replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| configId | Body | String | O | 설정 아이디 | +| category | Body | Enum | O | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| description | Body | String | X | 유지 관리 설명 | +| type | Body | Enum | O | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| payload | Body | String | O | 유지 관리 타입에 따른 Payload |
예시

```json { - "backupPeriod": 5, - "useBackupLock": true, - "backupSchedules": [ - { - "backupWndBgnTime": "01:00:00", - "backupWndDuration": "TWO_HOURS" - } - ] + "configId": "configId-example", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": "payload-example" } ``` @@ -2197,138 +2613,134 @@ PUT /v4.0/db-instances/{dbInstanceId}/backup-info #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 네트워크 정보 보기 +### DB 인스턴스 유지 관리 예약하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/network-info +POST /v4.0/db-instances/{dbInstanceId}/maintenances/schedule ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.Update | DB 인스턴스 유지 관리 예약하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------------------------------------------------------------------------------------------------------------------------------| -| availabilityZone | Body | Enum | DB 인스턴스를 생성할 가용성 영역 | -| subnet | Body | Object | 서브넷 객체 | -| subnet.subnetId | Body | UUID | 서브넷의 식별자 | -| subnet.subnetName | Body | UUID | 서브넷을 식별할 수 있는 이름 | -| subnet.subnetCidr | Body | UUID | 서브넷의 CIDR | -| endPoints | Body | Array | 접속 정보 목록 | -| endPoints.domain | Body | String | 도메인 | -| endPoints.ipAddress | Body | String | IP 주소 | -| endPoints.endPointType | Body | Enum | 접속 정보 타입
-`EXTERNAL`: 외부 접속 도메인
-`INTERNAL`: 내부 접속 도메인
-`PUBLIC`: (Deprecated) 외부 접속 도메인
-`PRIVATE`: (Deprecated) 내부 접속 도메인 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| configId | Body | String | O | 설정 아이디 | +| category | Body | Enum | O | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| description | Body | String | X | 유지 관리 설명 | +| type | Body | Enum | O | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| payload | Body | String | O | 유지 관리 타입에 따른 Payload |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "availabilityZone": "kr-pub-a", - "subnet": { - "subnetId": "bd453789-34ae-416c-9f78-05b9e43a46be", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/16" - }, - "endPoints": [ - { - "domain": "ea548a78-d85f-43b4-8ddf-c88d999b9905.internal.kr1.mysql.rds.nhncloudservice.com", - "ipAddress": "192.168.0.2", - "endPointType": "INTERNAL" - } - ] + "configId": "configId-example", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": "payload-example" } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- -### 네트워크 정보 수정하기 +### DB 인스턴스 유지 관리 삭제하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/network-info +DELETE /v4.0/db-instances/{dbInstanceId}/maintenances/{maintenanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.Delete | DB 인스턴스 유지 관리 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| maintenanceId | URL | UUID | O | 유지 관리 아이디 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### DB 사용자 목록 보기 +### 네트워크 정보 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/db-users +GET /v4.0/db-instances/{dbInstanceId}/network-info ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|---------------------| -| RDSforMySQL:DbInstanceUser.List | DB 인스턴스 내 사용자 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 네트워크 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|-----------------------------------------------------------------------------------------------------------------------------| -| dbUsers | Body | Array | DB 사용자 목록 | -| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | -| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | -| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | -| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `UPDATING`: 수정 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbUsers.authenticationPlugin | Body | Enum | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| dbUsers.tlsOption | Body | Enum | TLS Option
- NONE
- SSL
- X509 | -| dbUsers.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbUsers.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| availabilityZone | Body | String | DB 인스턴스를 생성할 가용성 영역 | +| subnet | Body | Object | 서브넷 객체 | +| subnet.subnetId | Body | UUID | 서브넷의 식별자 | +| subnet.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnet.subnetCidr | Body | String | 서브넷의 CIDR | +| endPoints | Body | Array | 접속 정보 목록 | +| endPoints.domain | Body | String | 도메인 | +| endPoints.ipAddress | Body | String | IP 주소 | +| endPoints.endPointType | Body | String | 접속 정보 타입 |
예시

@@ -2340,17 +2752,17 @@ GET /v4.0/db-instances/{dbInstanceId}/db-users "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbUsers": [ + "availabilityZone": "kr-pub-a", + "subnet": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example" + }, + "endPoints": [ { - "dbUserId": "4b3d530b-fd02-4d59-a620-83d019a67bbb", - "dbUserName": "db-user", - "host": "%", - "authorityType": "DDL", - "dbUserStatus": "STABLE", - "authenticationPlugin": "NATIVE", - "tlsOption": "NONE", - "createdYmdt": "2023-03-17T14:02:29+09:00", - "updatedYmdt": "2023-03-17T14:02:31+09:00" + "domain": "domain-example", + "ipAddress": "ipAddress-example", + "endPointType": "endPointType-example" } ] } @@ -2361,45 +2773,31 @@ GET /v4.0/db-instances/{dbInstanceId}/db-users --- -### DB 사용자 생성하기 +### 네트워크 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/db-users +PUT /v4.0/db-instances/{dbInstanceId}/network-info ``` - #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceUser.Create | DB 인스턴스 내 사용자 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | 네트워크 정보 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserName | Body | String | O | DB 사용자 계정 이름
- 최소 길이: `1`
- 최대 길이: `32` | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | -| host | Body | String | O | DB 사용자 계정의 호스트명
- 예시: `1.1.1.%` | -| authorityType | Body | Enum | O | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- 기본값: `NATIVE`(미지원 시 `CACHING_SHA2`)
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | - -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 설정할 수 있습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 |

예시

```json { - "dbUserName": "db-user", - "dbPassword": "password", - "host": "1.1.1.%", - "authorityType": "CRUD", - "authenticationPlugin": "NATIVE", - "tlsOption": "NONE" + "usePublicAccess": false } ``` @@ -2408,117 +2806,222 @@ POST /v4.0/db-instances/{dbInstanceId}/db-users #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 사용자 수정하기 +### DB 인스턴스 승격하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +POST /v4.0/db-instances/{dbInstanceId}/promote ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceUser.Modify | DB 인스턴스 내 사용자 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Promote | DB 인스턴스 승격하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | -| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | -| authorityType | Body | Enum | X | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 수정할 수 있습니다. -> `authenticationPlugin`의 값은 `dbPassword`와 동시에 수정을 해야 합니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "authorityType": "DDL" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### DB 사용자 삭제하기 +### DB 인스턴스 재구축하기 ```http -DELETE /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +POST /v4.0/db-instances/{dbInstanceId}/rebuild ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceUser.Delete | DB 인스턴스 내 사용자 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Rebuild | DB 인스턴스 재구축하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 스키마 목록 보기 +### DB 인스턴스 복제하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/db-schemas +POST /v4.0/db-instances/{dbInstanceId}/replicate ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|---------------------| -| RDSforMySQL:DbInstanceSchema.List | DB 인스턴스 내 스키마 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Replicate | DB 인스턴스 복제하기 | -#### 요청 +#### 공통 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | X | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부 | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | X | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | X | 데이터 스토리지 타입 | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | X | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | + +
예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, + "network": { + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "backup": { + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 0, + "replicationRegion": "KR1", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + } +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|------------------------------------------------------------------------------------------------------| -| dbSchemas | Body | Array | DB 스키마 목록 | -| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | -| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | -| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbSchemas.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2530,14 +3033,7 @@ GET /v4.0/db-instances/{dbInstanceId}/db-schemas "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSchemas": [ - { - "dbSchemaId": "7c9a94b8-86c1-435d-8af2-82a5e9d53fd4", - "dbSchemaName": "schema", - "dbSchemaStatus": "STABLE", - "createdYmdt": "2023-03-20T13:37:45+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2546,93 +3042,111 @@ GET /v4.0/db-instances/{dbInstanceId}/db-schemas --- -### DB 스키마 생성하기 +### DB 인스턴스 재시작하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/db-schemas +POST /v4.0/db-instances/{dbInstanceId}/restart ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceSchema.Create | DB 인스턴스 내 스키마 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Restart | DB 인스턴스 재시작하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|--------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaName | Body | String | O | DB 스키마 이름 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` | -### DB 스키마 삭제하기 +

예시 +

-```http -DELETE /v4.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} +```json +{ + "useOnlineFailover": false, + "executeBackup": false, + "waitReplicationDelay": false, + "useReadOnly": false +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceSchema.Delete | DB 인스턴스 내 스키마 삭제하기 | +

+
-#### 요청 +#### 응답 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaId | URL | UUID | O | DB 스키마의 식별자 | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 로그 파일 목록 보기 +### DB 인스턴스 복원 정보 조회 ```http -GET /v4.0/db-instances/{dbInstanceId}/log-files +GET /v4.0/db-instances/{dbInstanceId}/restoration-info ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|-----------------------| -| RDSforMySQL:DbInstanceLog.List | DB 인스턴스 내 로그 파일 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | DB 인스턴스 복원 정보 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|-------|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileTypes | Query | Array | X | 로그 파일 타입 종류 목록
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| logFiles | Body | Array | 로그 파일 목록 | -| logFiles.logFileName | Body | String | 로그 파일명 | -| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | -| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | -| logFiles.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| oldestRestorableYmdt | Body | DateTime | 가장 오래된 복원 가능한 시각 | +| latestRestorableYmdt | Body | DateTime | 가장 최신의 복원 가능한 시각 | +| restorableBackups | Body | Array | 복원 가능한 백업 목록 | +| restorableBackups.backup | Body | Object | 백업 정보 객체 | +| restorableBackups.backup.backupId | Body | UUID | 백업의 식별자 | +| restorableBackups.backup.backupName | Body | String | 백업 이름 | +| restorableBackups.backup.backupStatus | Body | Enum | 백업 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| restorableBackups.backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| restorableBackups.backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | +| restorableBackups.backup.dbVersion | Body | Enum | DB 엔진 유형 | +| restorableBackups.backup.backupType | Body | Enum | 백업 유형
- AUTO
- MANUAL | +| restorableBackups.backup.backupSize | Body | Number | 백업 크기 | +| restorableBackups.backup.useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | +| restorableBackups.backup.failoverCount | Body | Number | 장애 조치 횟수 | +| restorableBackups.backup.binLogFileName | Body | String | 바이너리 로그 파일 이름 | +| restorableBackups.backup.binLogPosition | Body | Object | 바이너리 로그 파일 위치 | +| restorableBackups.backup.createdYmdt | Body | DateTime | 백업 생성 일시 | +| restorableBackups.backup.updatedYmdt | Body | DateTime | 백업 갱신 일시 | +| restorableBackups.restorableBinLogs | Body | Array | 해당 백업을 이용하여 복원 가능한 바이너리 로그 이름 목록 |
예시

@@ -2644,12 +3158,28 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files "resultMessage": "SUCCESS", "isSuccessful": true }, - "logFiles": [ + "oldestRestorableYmdt": "2023-12-31T15:00:00+09:00", + "latestRestorableYmdt": "2023-12-31T15:00:00+09:00", + "restorableBackups": [ { - "logFileName": "xtra_full.log-20230317", - "logFileType": "BACKUP", - "logFileSize": 4096, - "createdYmdt": "2023-03-17T14:02:29+09:00" + "backup": { + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "dbVersion": "MYSQL_V8036", + "backupType": "AUTO", + "backupSize": 1, + "useBackupLock": false, + "failoverCount": 1, + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + }, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + }, + "restorableBinLogs": [] } ] } @@ -2660,33 +3190,32 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files --- -### 로그 파일 내용 보기 +### 복원될 마지막 쿼리 조회 ```http -GET /v4.0/db-instances/{dbInstanceId}/log-files/{logFileName} +GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|-----------------------| -| RDSforMySQL:DbInstanceLog.Get | DB 인스턴스 내 로그 파일 내용 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 복원될 마지막 쿼리 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|--------|----|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileName | URL | String | O | 로그 파일명 | -| logFileType | Query | Enum | O | 로그 파일 타입 종류
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------|------|--------|---------------------------| -| content | Body | String | 로그 파일 내용(최대 65533 Bytes) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| executedYmdt | Body | DateTime | 쿼리 수행 일시 | +| lastQuery | Body | String | 마지막 수행 쿼리 |

예시

@@ -2698,7 +3227,8 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files/{logFileName} "resultMessage": "SUCCESS", "isSuccessful": true }, - "content": "..." + "executedYmdt": "2023-12-31T15:00:00+09:00", + "lastQuery": "lastQuery-example" } ``` @@ -2707,41 +3237,145 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files/{logFileName} --- -### 로그 파일 내보내기 +### DB 인스턴스 복원 ```http -POST /v4.0/db-instances/{dbInstanceId}/log-files/export +POST /v4.0/db-instances/{dbInstanceId}/restore ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|----------------------| -| RDSforMySQL:DbInstanceLog.Export | DB 인스턴스 내 로그 파일 내보내기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Restore | DB 인스턴스 복원 | -#### 요청 +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자. 미입력 시 원본 인스턴스의 사양이 적용됩니다. | +| dbPort | Body | Number | X | DB 포트 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | X | 스토리지 정보 객체. 미입력 시 원본 인스턴스의 스토리지 설정이 적용됩니다. | +| storage.storageType | Body | Enum | X | 스토리지 타입. 미입력 시 원본 인스턴스의 스토리지 타입이 적용됩니다. | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB). 미입력 시 원본 인스턴스의 스토리지 크기가 적용됩니다.
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| network | Body | Object | X | 네트워크 정보 객체. 미입력 시 원본 인스턴스의 네트워크 설정이 적용됩니다. | +| network.subnetId | Body | UUID | X | 서브넷의 식별자. 미입력 시 원본 인스턴스 값 사용 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역. 미입력 시 랜덤 선택 | +| backup | Body | Object | X | 백업 정보 객체. 미입력 시 원본 인스턴스의 백업 설정이 적용됩니다. | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일). 미입력 시 원본 인스턴스의 백업 보관 기간이 적용됩니다.
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록. 미입력 시 원본 인스턴스의 백업 스케쥴이 적용됩니다. | +| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.restoreType | Body | Enum | O | 복원 타입
- TIMESTAMP: `복원 가능한 시간 이내의 시간을 이용한 시점 복원`
- BINLOG: `복원 가능한 바이너리 로그 위치를 이용한 시점 복원`
- BACKUP: `기존에 생성한 백업을 이용한 스냅숏 복원` | +| restore.binLog.binLogFileName | Body | String | X | 복원에 사용할 바이너리 로그 이름 | +| restore.binLog.binLogPosition | Body | Object | X | 복원에 사용할 바이너리 로그 위치 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자. 미입력 시 원본 인스턴스의 파라미터 그룹이 적용됩니다. | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록. 미입력 시 원본 인스턴스의 보안 그룹이 적용됩니다. | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | + +#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.restoreYmdt | Body | DateTime | X | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | + +복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능합니다. + +#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 | +| restore.binLog | Body | Object | X | 복원에 사용할 바이너리 로그 정보 객체 | + +바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. + +#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|--------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileNames | Body | Array | O | 로그 파일명 목록
- 최소 크기: `1` | -| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 |

예시

```json { - "logFileNames": ["xtra_full.log-20230317"], - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "logs/backup" + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "useHighAvailability": false, + "pingInterval": 3, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "backup": { + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR1", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + }, + "restore": { + "restoreType": "TIMESTAMP", + "binLog": { + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + } + } + }, + "useDefaultNotification": false, + "useSlowQueryAnalysis": true, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDeletionProtection": false } ``` @@ -2750,41 +3384,54 @@ POST /v4.0/db-instances/{dbInstanceId}/log-files/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### BinLog 목록 보기 +### DB 인스턴스 시작하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/binlogs +POST /v4.0/db-instances/{dbInstanceId}/start ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|---------------| -| RDSforMySQL:DbInstanceBinLog.List | BinLog 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Start | DB 인스턴스 시작하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|---------|----|---------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| deletable | Query | Boolean | X | 삭제 가능한 BinLog만 조회할지 여부
- `true`: 마지막 BinLog 제외
- `false`: 전체
- 기본값: `false` | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|----------|-----------------------------------| -| binLogs | Body | Array | BinLog 파일 목록 | -| binLogs.binLogFileName | Body | String | BinLog 파일명 | -| binLogs.binLogFileSize | Body | Number | BinLog 파일 크기(Byte) | -| binLogs.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2796,13 +3443,7 @@ GET /v4.0/db-instances/{dbInstanceId}/binlogs "resultMessage": "SUCCESS", "isSuccessful": true }, - "binLogs": [ - { - "binLogFileName": "mysql-bin.000001", - "binLogFileSize": 1073741824, - "createdYmdt": "2023-03-17T14:02:29+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2811,40 +3452,31 @@ GET /v4.0/db-instances/{dbInstanceId}/binlogs --- -### BinLog 삭제 +### DB 인스턴스 정지하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/binlogs/purge +POST /v4.0/db-instances/{dbInstanceId}/stop ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|------------| -| RDSforMySQL:DbInstanceBinLog.Purge | BinLog 삭제 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Stop | DB 인스턴스 정지하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| lastBinLogFileName | Body | String | O | 삭제할 마지막 BinLog 파일명(해당 파일 직전까지 삭제됩니다) | - -

예시 -

- -```json -{ - "lastBinLogFileName": "mysql-bin.000010" -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2855,7 +3487,8 @@ POST /v4.0/db-instances/{dbInstanceId}/binlogs/purge "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2864,35 +3497,38 @@ POST /v4.0/db-instances/{dbInstanceId}/binlogs/purge --- -### 인증서 파일 목록 보기 +### 스토리지 정보 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/certificates +GET /v4.0/db-instances/{dbInstanceId}/storage-info ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------------|---------------| -| RDSforMySQL:DbInstanceCertificate.List | 인증서 파일 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 스토리지 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|---------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|------------------------------------------------------------------------------| -| certificates | Body | Array | 인증서 파일 목록 | -| certificates.fileName | Body | String | 인증서 파일명 | -| certificates.certificateType | Body | Enum | 인증서 타입
- `CA_FILE`: CA 인증서
- `CERT_FILE`: 인증서
- `KEY_FILE`: 비밀 키 | -| certificates.fileSize | Body | Number | 인증서 파일 크기(Byte) | -| certificates.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageType | Body | String | 데이터 스토리지 타입 | +| storageSize | Body | Number | 데이터 스토리지 크기(GB) | +| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- DELETED: `삭제됨`
- PENDING_DELETION: `삭제 유예됨`
- DELETION_RESERVED: `삭제 예약됨 (스냅샷 정리 대기)`
- DETACHED: `해제됨`
- ATTACHED: `할당됨` | +| storageAutoscale | Body | Object | 데이터 스토리지 자동 확장 객체 | +| storageAutoscale.useStorageAutoscale | Body | Boolean | 스토리지 자동 확장 여부 | +| storageAutoscale.threshold | Body | Number | 자동 확장 조건(%) | +| storageAutoscale.maxStorageSize | Body | Number | 자동 확장 최대 크기(GB) | +| storageAutoscale.cooldownTime | Body | Number | 자동 확장 쿨다운 시간(분) |

예시

@@ -2904,14 +3540,15 @@ GET /v4.0/db-instances/{dbInstanceId}/certificates "resultMessage": "SUCCESS", "isSuccessful": true }, - "certificates": [ - { - "fileName": "ca.pem", - "certificateType": "CA_FILE", - "fileSize": 2048, - "createdYmdt": "2023-03-17T14:02:29+09:00" - } - ] + "storageType": "General SSD", + "storageSize": 1, + "storageStatus": "DELETED", + "storageAutoscale": { + "useStorageAutoscale": false, + "threshold": 1, + "maxStorageSize": 1, + "cooldownTime": 1 + } } ``` @@ -2920,41 +3557,44 @@ GET /v4.0/db-instances/{dbInstanceId}/certificates --- -### 인증서 파일 내보내기 +### 스토리지 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/certificates/upload +PUT /v4.0/db-instances/{dbInstanceId}/storage-info ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------------|-------------| -| RDSforMySQL:DbInstanceCertificate.Export | 인증서 파일 내보내기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | 스토리지 정보 수정하기 | -#### 요청 +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최댓값: `2048` | +| storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|--------|----|------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| certificateTypes | Body | Array | O | 업로드할 인증서 타입
- `CA_FILE`: CA 인증서
- `CERT_FILE`: 인증서
- `KEY_FILE`: 비밀 키 | -| tenantId | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 인증서 파일의 경로 | +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` |

예시

```json { - "certificateTypes": ["CA_FILE", "CERT_FILE", "KEY_FILE"], - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "certificates/" + "storageSize": 1, + "storageAutoscale": { + "useStorageAutoscale": false + } } ``` @@ -2963,10 +3603,27 @@ POST /v4.0/db-instances/{dbInstanceId}/certificates/upload #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- ## 백업 @@ -2981,48 +3638,38 @@ POST /v4.0/db-instances/{dbInstanceId}/certificates/upload | `DELETED` | 백업이 삭제된 경우 | | `ERROR` | 오류가 발생한 경우 | -### 백업 상세 보기 +### 백업 목록 조회 ```http -GET /v4.0/backups/{backupId} +GET /v4.0/backups ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------|----------| -| RDSforMySQL:Backup.Get | 백업 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.List | 백업 목록 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------|-----|------|----|---------| -| backupId | URL | UUID | O | 백업의 식별자 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------|------|----------|-----------------| -| backup | Body | Object | 백업 상세 정보 | -| backup.backupId | Body | UUID | 백업의 식별자 | -| backup.regionCode | Body | Enum | 리전 코드 | -| backup.backupName | Body | String | 백업을 식별할 수 있는 이름 | -| backup.backupStatus | Body | Enum | 백업의 현재 상태 | -| backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | -| backup.dbVersion | Body | Enum | DB 엔진 버전 | -| backup.utilVersion | Body | String | 백업에 사용된 xtrabackup 유틸리티 버전 | -| backup.backupType | Body | Enum | 백업 유형 | -| backup.backupMethodType | Body | Enum | 백업 방식 | -| backup.backupFileType | Body | Enum | 백업 파일 유형 | -| backup.backupSize | Body | Number | 백업의 크기(Byte) | -| backup.isReplicable | Body | Boolean | 복제 가능 여부 | -| backup.binLogFileName | Body | String | 바이너리 로그 파일명 | -| backup.binLogPosition | Body | Number | 바이너리 로그 위치 | -| backup.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| backup.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 백업 목록 수 | +| backups | Body | Array | 백업 목록 | +| backups.backupId | Body | UUID | 백업의 식별자 | +| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | +| backups.backupStatus | Body | Enum | 백업의 현재 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| backups.dbVersion | Body | Enum | DB 엔진 유형 | +| backups.utilVersion | Body | String | 유틸리티 버전 | +| backups.backupType | Body | Enum | 백업 유형
- AUTO
- MANUAL | +| backups.backupSize | Body | Number | 백업의 크기(Byte) | +| backups.createdYmdt | Body | DateTime | 생성 일시 | +| backups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3034,25 +3681,21 @@ GET /v4.0/backups/{backupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "backup": { - "backupId": "0017f136-3e01-4530-94aa-20661afe6632", - "regionCode": "KR1", - "backupName": "backup", - "backupStatus": "COMPLETED", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd", - "dbInstanceName": "db-instance", - "dbVersion": "MYSQL_V8028", - "utilVersion": "8.0.28", - "backupType": "AUTO", - "backupMethodType": "FULL", - "backupFileType": "XTRA_BACKUP", - "backupSize": 4996786, - "isReplicable": true, - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 154, - "createdYmdt": "2023-02-21T00:35:00+09:00", - "updatedYmdt": "2023-02-22T00:35:32+09:00" - } + "totalCounts": 1, + "backups": [ + { + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "utilVersion": "utilVersion-example", + "backupType": "AUTO", + "backupSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -3061,46 +3704,47 @@ GET /v4.0/backups/{backupId} --- -### 백업 목록 조회 +### 백업 생성하기 ```http -GET /v4.0/backups +POST /v4.0/backups ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| -| RDSforMySQL:Backup.List | 백업 목록 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.Create | 백업 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupName | Body | String | O | 백업을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| baseBackupId | Body | UUID | X | 원본 백업의 식별자 | +| dbInstanceId | Body | UUID | X | DB 인스턴스의 식별자 | +| backupMethodType | Body | Enum | O | 백업 방식 타입
- FULL: `전체 백업`
- INCREMENTAL: `증분 백업`
- SNAPSHOT: `스냅숏 백업` | + +

예시 +

+ +```json +{ + "backupName": "backupName", + "baseBackupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "backupMethodType": "FULL" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | X | 조회할 목록의 페이지
- 기본값: 1
- 최솟값: `1` | -| size | Query | Number | X | 조회할 목록의 페이지 크기
- 기본값: 20 | -| backupType | Query | Enum | X | 백업 유형
- `AUTO`: 자동
- `MANUAL`: 수동
- 기본값: 전체 | -| dbInstanceId | Query | UUID | X | 원본 DB 인스턴스의 식별자 | -| dbVersion | Query | Enum | X | DB 엔진 유형 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|-----------------------------------| -| totalCounts | Body | Number | 전체 백업 목록 수 | -| backups | Body | Array | 백업 목록 | -| backups.backupId | Body | UUID | 백업의 식별자 | -| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | -| backups.backupStatus | Body | Enum | 백업의 현재 상태 | -| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| backups.dbVersion | Body | Enum | DB 엔진 유형 | -| backups.utilVersion | Body | String | 백업에 사용된 xtrabackup 유틸리티 버전 | -| backups.backupType | Body | Enum | 백업 유형 | -| backups.backupSize | Body | Number | 백업의 크기(Byte) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -3112,21 +3756,7 @@ GET /v4.0/backups "resultMessage": "SUCCESS", "isSuccessful": true }, - "totalCounts": 1, - "backups": [ - { - "backupId": "0017f136-3e01-4530-94aa-20661afe6632", - "backupName": "backup", - "backupStatus": "COMPLETED", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd", - "dbVersion": "MYSQL_V8028", - "utilVersion": "8.0.28", - "backupType": "AUTO", - "backupSize": 4996786, - "createdYmdt": "2023-02-21T00:35:00+09:00", - "updatedYmdt": "2023-02-22T00:35:32+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3135,96 +3765,130 @@ GET /v4.0/backups --- -### 백업 생성하기 +### 백업 삭제하기 ```http -POST /v4.0/backups +DELETE /v4.0/backups/{backupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|---------| -| RDSforMySQL:Backup.Create | 백업 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.Delete | 백업 삭제하기 | -#### 공통 요청 +#### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|--------|----|--------------------------------------------------------------------------------------| -| backupName | Body | String | O | 백업을 식별할 수 있는 이름 | -| backupMethodType | Body | Enum | O | 백업 방식 타입 종류
- `FULL`: 전체 백업
- `INCREMENTAL`: 증분 백업
- `SNAPSHOT`: 스냅숏 백업 | +이 API는 요청 본문을 요구하지 않습니다. -#### 전체 백업(backupMethodType이 `FULL`인 경우) +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|------|----|--------------| -| dbInstanceId | Body | UUID | O | DB 인스턴스의 식별자 | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |

예시

```json { - "backupName": "example-backup-name", - "backupMethodType": "FULL", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 증분 백업(backupMethodType이 `INCREMENTAL`인 경우) +--- -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|------|----|------------| -| baseBackupId | Body | UUID | O | 기준 백업의 식별자 | +### 백업 단건 조회 +```http +GET /v4.0/backups/{backupId} +``` -
예시 -

+#### 필요 권한 -```json -{ - "backupName": "example-backup-name", - "backupMethodType": "INCREMENTAL", - "baseBackupId": "3ae7914f-9b42-4729-b125-87417b72cf36" -} -``` +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.Get | 백업 단건 조회 | -

-
+#### 요청 +이 API는 요청 본문을 요구하지 않습니다. -#### 스냅숏 백업(backupMethodType이 `SNAPSHOT`인 경우) +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|------|----|--------------| -| dbInstanceId | Body | UUID | O | DB 인스턴스의 식별자 | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| backup | Body | Object | 백업 상세 정보 | +| backup.backupId | Body | UUID | 백업의 식별자 | +| backup.regionCode | Body | Enum | 리전 코드
- KR1: `한국(판교)` | +| backup.backupName | Body | String | 백업을 식별할 수 있는 이름 | +| backup.backupStatus | Body | Enum | 백업의 현재 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | +| backup.dbVersion | Body | Enum | DB 엔진 버전 | +| backup.utilVersion | Body | String | 유틸리티 버전 | +| backup.backupType | Body | Enum | 백업 유형 (AUTO, MANUAL)
- AUTO
- MANUAL | +| backup.backupMethodType | Body | Enum | 백업 방식 (FULL, SNAPSHOT, INCREMENTAL)
- FULL
- INCREMENTAL
- SNAPSHOT | +| backup.backupFileType | Body | Enum | 백업 파일 유형
- XBSTREAM
- TAR_ZSTD
- TAR_LZ4
- TAR_GZIP
- SNAPSHOT | +| backup.backupSize | Body | Number | 백업의 크기(Byte) | +| backup.isReplicable | Body | Boolean | 복제 가능 여부 | +| backup.binLogFileName | Body | String | 바이너리 로그 파일명 | +| backup.binLogPosition | Body | Object | 바이너리 로그 위치 | +| backup.createdYmdt | Body | DateTime | 생성 일시 | +| backup.updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "backupName": "example-backup-name", - "backupMethodType": "SNAPSHOT", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "backup": { + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "regionCode": "KR1", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "dbVersion": "MYSQL_V8036", + "utilVersion": "utilVersion-example", + "backupType": "AUTO", + "backupMethodType": "FULL", + "backupFileType": "XBSTREAM", + "backupSize": 1, + "isReplicable": false, + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + }, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } } ```

- -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- ### 백업 내보내기 @@ -3235,31 +3899,31 @@ POST /v4.0/backups/{backupId}/export #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|---------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Backup.Export | 백업 내보내기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|-----------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 계정 혹은 IAM 회원 ID | +| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 |
예시

```json { - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "backups/backup_file" + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" } ``` @@ -3268,12 +3932,26 @@ POST /v4.0/backups/{backupId}/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | -> [주의] -> 수동 백업의 경우 백업이 수행된 DB 인스턴스가 존재하지 않으면, 백업을 오브젝트 스토리지로 내보낼 수 없습니다. +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -3285,74 +3963,98 @@ POST /v4.0/backups/{backupId}/restore #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Backup.Restore | 백업 복원하기 | -#### 요청 +#### 공통 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------------------------------|------|---------|----|---------------------------------------------------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbPort | Body | Integer | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 ||network|Body|Object|O|네트워크 정보 객체| -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| pingType | Body | Enum | X | 고가용성 사용 시 Ping 타입
- 기본값: `INSERT`
- `INSERT`
- `SELECT` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | X | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | X | 서브넷의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a`
- 기본값: 랜덤 선택 | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입
- 예시: `General SSD`
- 기본값: 원본 DB 인스턴스 값 | -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: 원본 DB 인스턴스 값 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| dbPort | Body | Number | X | DB 포트. 미지정 시 원본 인스턴스 값 사용
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| network | Body | Object | X | 네트워크 정보 객체. 미지정 시 원본 인스턴스 값 사용 | +| network.subnetId | Body | UUID | X | 서브넷의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역. 미지정 시 랜덤 선택 | +| storage | Body | Object | X | 스토리지 정보 객체. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageType | Body | Enum | X | 스토리지 타입. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | X | 백업 정보 객체. 미지정 시 원본 인스턴스 백업 설정 사용 | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수. 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부. 미지정 시 원본 인스턴스 값 사용 | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록. 미지정 시 원본 인스턴스 값 사용 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` |
예시

```json - { - "dbInstanceName": "db-instance-restore", - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbPort": 10000, - "parameterGroupId": "132d383c-38e3-468a-a826-5e9a8fff15d0", + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, "availabilityZone": "kr-pub-a" }, "storage": { "storageType": "General SSD", - "storageSize": 20 + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 0, + "replicationRegion": "KR1", + "useBackupLock": false, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", + "backupWndBgnTime": "backupWndBgnTime-example", "backupWndDuration": "HALF_AN_HOUR" } ] @@ -3365,37 +4067,26 @@ POST /v4.0/backups/{backupId}/restore #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### 백업 삭제하기 +

예시 +

-```http -DELETE /v4.0/backups/{backupId} +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|-------------------------------------------|---------| -| RDSforMySQL:Backup.Delete | 백업 삭제하기 | - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------|-----|------|----|---------| -| backupId | URL | UUID | O | 백업의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -3418,30 +4109,26 @@ GET /v4.0/db-security-groups #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|----------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroup.List | DB 보안 그룹 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | X | 조회할 목록의 페이지
- 기본값: 1
- 최솟값: `1` | -| size | Query | Number | X | 조회할 목록의 페이지 크기
- 기본값: 20 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-----------------------------------| -| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | -| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 DB 보안 그룹 목록 수 | +| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | +| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3453,14 +4140,15 @@ GET /v4.0/db-security-groups "resultMessage": "SUCCESS", "isSuccessful": true }, + "totalCounts": 1, "dbSecurityGroups": [ { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", "progressStatus": "NONE", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2022-02-19T19:18:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3471,48 +4159,65 @@ GET /v4.0/db-security-groups --- -### DB 보안 그룹 상세 보기 +### DB 보안 그룹 생성하기 ```http -GET /v4.0/db-security-groups/{dbSecurityGroupId} +POST /v4.0/db-security-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|----------------| -| RDSforMySQL:DbSecurityGroup.Get | DB 보안 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroup.Create | DB 보안 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` | +| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | +| rules.direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| rules.etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| rules.port | Body | Object | O | 포트 객체 | +| rules.port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| rules.cidr | Body | String | O | CIDR | +| rules.description | Body | String | X | 보안 그룹 규칙에 대한 추가 정보 | + +

예시 +

+ +```json +{ + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example", + "rules": [ + { + "direction": "INGRESS", + "etherType": "IPV4", + "port": { + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 + }, + "cidr": "cidr-example", + "description": "description-example" + } + ] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|----------|--------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| rules | Body | Array | DB 보안 그룹 규칙 목록 | -| rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | -| rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.port | Body | Object | 포트 객체 | -| rules.port.portType | Body | Enum | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다.
- `PORT`: 지정된 포트값으로 설정됩니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | 최소 포트 범위 | -| rules.port.maxPort | Body | Number | 최대 포트 범위 | -| rules.cidr | Body | String | 허용할 트래픽의 원격 소스 | -| rules.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| rules.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 |
예시

@@ -3524,30 +4229,7 @@ GET /v4.0/db-security-groups/{dbSecurityGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSecurityGroup": { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", - "progressStatus": "NONE", - "rules": [ - { - "ruleId": "17c88ef6-95f1-4678-84f9-fee1b22e250d", - "description": "description", - "direction": "INGRESS", - "etherType": "IPV4", - "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 - }, - "cidr": "0.0.0.0/0", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } - ], - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3556,68 +4238,113 @@ GET /v4.0/db-security-groups/{dbSecurityGroupId} --- -### DB 보안 그룹 생성하기 +### DB 보안 그룹 삭제하기 ```http -POST /v4.0/db-security-groups +DELETE /v4.0/db-security-groups/{dbSecurityGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| -| RDSforMySQL:DbSecurityGroup.Create | DB 보안 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroup.Delete | DB 보안 그룹 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### DB 보안 그룹 상세 보기 + +```http +GET /v4.0/db-security-groups/{dbSecurityGroupId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroup.Get | DB 보안 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | -| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | -| rules.description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | -| rules.port | Body | Object | O | 포트 객체 | -| rules.port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 필요하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| rules | Body | Array | DB 보안 그룹 규칙 목록 | +| rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | +| rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | +| rules.direction | Body | Enum | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| rules.etherType | Body | Enum | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| rules.port | Body | Object | 포트 객체 | +| rules.port.portType | Body | Enum | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| rules.port.minPort | Body | Number | 최소 포트 범위 | +| rules.port.maxPort | Body | Number | 최대 포트 범위 | +| rules.cidr | Body | String | CIDR | +| rules.createdYmdt | Body | DateTime | 생성 일시 | +| rules.updatedYmdt | Body | DateTime | 수정 일시 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

```json { - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", + "progressStatus": "NONE", "rules": [ { + "ruleId": "550e8400-e29b-41d4-a716-446655440000", + "description": "description-example", "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 + "portType": "ALL", + "minPort": 1, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } - ] + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|------|---------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | - --- ### DB 보안 그룹 수정하기 @@ -3628,25 +4355,25 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId} #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroup.Modify | DB 보안 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|-----------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description" + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example" } ``` @@ -3657,48 +4384,34 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- - --- -### DB 보안 그룹 삭제하기 +### DB 보안 그룹 규칙 삭제하기 ```http -DELETE /v4.0/db-security-groups/{dbSecurityGroupId} +DELETE /v4.0/db-security-groups/{dbSecurityGroupId}/rules ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| -| RDSforMySQL:DbSecurityGroup.Delete | DB 보안 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroupRule.Delete | DB 보안 그룹 규칙 삭제하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleIds | Query | String | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -3709,7 +4422,8 @@ DELETE /v4.0/db-security-groups/{dbSecurityGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3726,26 +4440,23 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroupRule.Create | DB 보안 그룹 규칙 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 필요하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |

예시

@@ -3755,11 +4466,12 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "PORT", - "minPort": 10000, - "maxPort": 10000 + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -3768,9 +4480,26 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -3782,27 +4511,24 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroupRule.Modify | DB 보안 그룹 규칙 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleId | URL | UUID | O | DB 보안 그룹 규칙의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 필요하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |
예시

@@ -3812,9 +4538,12 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "DB_PORT" + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -3823,38 +4552,26 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -### DB 보안 그룹 규칙 삭제하기 +

예시 +

-```http -DELETE /v4.0/db-security-groups/{dbSecurityGroupId}/rules +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| -| RDSforMySQL:DbSecurityGroupRule.Create | DB 보안 그룹 규칙 삭제하기 | - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|-------|----|---------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleIds | Query | Array | O | DB 보안 그룹 규칙의 식별자 목록 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -3868,30 +4585,28 @@ GET /v4.0/parameter-groups #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:ParameterGroup.List | 파라미터 그룹 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------|-------|------|----|----------| -| dbVersion | Query | Enum | X | DB 엔진 유형 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-------------------------------------------------------------------| -| parameterGroups | Body | Array | 파라미터 그룹 목록 | -| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameterGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 파라미터 그룹 수 | +| parameterGroups | Body | Array | 파라미터 그룹 목록 | +| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroups.parameterGroupType | Body | Enum | 파라미터 그룹 유형
- USER
- ADMIN
- DEFAULT
- CLUSTER_USER | +| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameterGroups.createdYmdt | Body | DateTime | 생성 일시 | +| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3903,15 +4618,17 @@ GET /v4.0/parameter-groups "resultMessage": "SUCCESS", "isSuccessful": true }, + "totalCounts": 1, "parameterGroups": [ { - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "parameterGroupType": "USER", "parameterGroupStatus": "STABLE", - "createdYmdt": "2023-02-31T15:28:17+09:00", - "updatedYmdt": "2023-02-31T15:28:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3920,50 +4637,47 @@ GET /v4.0/parameter-groups

- --- -### 파라미터 그룹 상세 보기 +### 파라미터 그룹 생성하기 ```http -GET /v4.0/parameter-groups/{parameterGroupId} +POST /v4.0/parameter-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMySQL:ParameterGroup.Get | 파라미터 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Create | 파라미터 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` | +| dbVersion | Body | Enum | O | DB 엔진 유형 | + +
예시 +

+ +```json +{ + "parameterGroupName": "parameterGroupName", + "description": "description-example", + "dbVersion": "MYSQL_V8036" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|--------------------------------------------------------------------------------------------------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameters | Body | Array | 파라미터 목록 | -| parameters.parameterId | Body | UUID | 파라미터 식별자 | -| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- `CLIENT`: client
- `MYSQL`: mysql
- `MYSQLD`: mysqld | -| parameters.parameterName | Body | String | 파라미터 이름 | -| parameters.fileParameterName | Body | String | 파라미터 파일명 | -| parameters.value | Body | String | 현재 설정된 값 | -| parameters.defaultValue | Body | String | 기본값 | -| parameters.allowedValue | Body | String | 허용된 값 | -| parameters.updateType | Body | Enum | 수정 타입
- `VARIABLE`: 언제든 수정 가능
- `CONSTANT`: 수정 불가능
- `INIT_VARIABLE`: DB 인스턴스 생성 시에만 수정 가능 | -| parameters.applyType | Body | Enum | 적용 타입
- `SESSION`: 세션 적용
- `FILE`: 설정 파일 적용(재시작 필요)
- `BOTH`: 전체(재시작 필요) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |
예시

@@ -3975,115 +4689,119 @@ GET /v4.0/parameter-groups/{parameterGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", - "parameterGroupStatus": "STABLE", - "parameters": [ - { - "parameterId": "fa040b5e-f29f-46de-8f0d-bba4cb82887a", - "parameterFileGroup": "client", - "parameterName": "socket", - "fileParameterName": "socket", - "value": "/home/tcrds/db/mysql/tmp/mysql.sock", - "defaultValue": "/home/tcrds/db/mysql/tmp/mysql.sock", - "allowedValue": "", - "updateType": "CONSTANT", - "applyType": "BOTH" - } - ], - "createdYmdt": "2023-03-13T11:02:28+09:00", - "updatedYmdt": "2023-03-13T11:02:28+09:00" + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ```

- --- -### 파라미터 그룹 생성하기 +### 파라미터 그룹 삭제하기 ```http -POST /v4.0/parameter-groups +DELETE /v4.0/parameter-groups/{parameterGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Create | 파라미터 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Delete | 파라미터 그룹 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | - -
예시 -

- -```json -{ - "parameterGroupName": "parameter-group", - "dbVersion": "MYSQL_V8028" -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 복사하기 +### 파라미터 그룹 상세 보기 ```http -POST /v4.0/parameter-groups/{parameterGroupId}/copy +GET /v4.0/parameter-groups/{parameterGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Copy | 파라미터 그룹 복사하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Get | 파라미터 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameters | Body | Array | 파라미터 목록 | +| parameters.parameterId | Body | UUID | 파라미터의 식별자 | +| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- CLIENT
- MYSQL
- MYSQLD | +| parameters.parameterName | Body | String | 파라미터 이름 | +| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | +| parameters.value | Body | String | 현재 설정된 값 | +| parameters.defaultValue | Body | String | 기본값 | +| parameters.allowedValue | Body | String | 허용된 값 | +| parameters.updateType | Body | Enum | 수정 타입
- VARIABLE
- CONSTANT
- INIT_VARIABLE | +| parameters.applyType | Body | Enum | 적용 타입
- BOTH
- SESSION
- FILE | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "parameterGroupName": "parameter-group-copy", - "description": "copy" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "parameterGroupStatus": "STABLE", + "parameters": [ + { + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "parameterFileGroup": "CLIENT", + "parameterName": "parameterName-example", + "fileParameterName": "fileParameterName-example", + "value": "value-example", + "defaultValue": "defaultValue-example", + "allowedValue": "allowedValue-example", + "updateType": "VARIABLE", + "applyType": "BOTH" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | - --- ### 파라미터 그룹 수정하기 @@ -4094,24 +4812,25 @@ PUT /v4.0/parameter-groups/{parameterGroupId} #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:ParameterGroup.Modify | 파라미터 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "parameterGroupName": "parameter-group" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -4122,56 +4841,35 @@ PUT /v4.0/parameter-groups/{parameterGroupId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- -### 파라미터 수정하기 +### 파라미터 그룹 복사하기 ```http -PUT /v4.0/parameter-groups/{parameterGroupId}/parameters +POST /v4.0/parameter-groups/{parameterGroupId}/copy ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Modify | 파라미터 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Copy | 파라미터 그룹 복사하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------------|------|--------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | -| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | -| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "modifiedParameters": [ - { - "parameterId": "3abac558-7274-44e1-9f4a-f100f53f67ba", - "value": "0" - } - ] + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -4180,7 +4878,9 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |

예시

@@ -4191,7 +4891,8 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4200,86 +4901,74 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters --- -### 파라미터 그룹 재설정하기 +### 파라미터 수정하기 ```http -PUT /v4.0/parameter-groups/{parameterGroupId}/reset +PUT /v4.0/parameter-groups/{parameterGroupId}/parameters ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|---------------| -| RDSforMySQL:ParameterGroup.Reset | 파라미터 그룹 재설정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Modify | 파라미터 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | +| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | +| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 |

예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } + "modifiedParameters": [ + { + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "value": "value-example" + } + ] } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- -### 파라미터 그룹 삭제하기 +### 파라미터 그룹 재설정하기 ```http -DELETE /v4.0/parameter-groups/{parameterGroupId} +PUT /v4.0/parameter-groups/{parameterGroupId}/reset ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Delete | 파라미터 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Reset | 파라미터 그룹 재설정하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | #### 응답 이 API는 응답 본문을 반환하지 않습니다. -
예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- ## 사용자 그룹 @@ -4292,8 +4981,8 @@ GET /v4.0/user-groups #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:UserGroup.List | 사용자 그룹 목록 보기 | #### 요청 @@ -4302,13 +4991,14 @@ GET /v4.0/user-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|-----------------------------------| -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| userGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 사용자 그룹 목록 수 | +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroups.createdYmdt | Body | DateTime | 생성 일시 | +| userGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4320,12 +5010,13 @@ GET /v4.0/user-groups "resultMessage": "SUCCESS", "isSuccessful": true }, + "totalCounts": 1, "userGroups": [ { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -4336,37 +5027,45 @@ GET /v4.0/user-groups --- -### 사용자 그룹 상세 보기 +### 사용자 그룹 생성하기 ```http -GET /v4.0/user-groups/{userGroupId} +POST /v4.0/user-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|--------------| -| RDSforMySQL:UserGroup.Get | 사용자 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.Create | 사용자 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록 | +| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` | + +

예시 +

+ +```json +{ + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAll": false +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|----------|-----------------------------------------------------------------------------------------------------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
`ENTIRE`: 프로젝트 멤버 전체를 포함하는 사용자 그룹
`INDIVIDUAL_MEMBER`: 특정 프로젝트 멤버를 포함하는 사용자 그룹 | -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 |
예시

@@ -4378,16 +5077,7 @@ GET /v4.0/user-groups/{userGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "userGroupTypeCode": "INDIVIDUAL_MEMBER", - "members": [ - { - "memberId": "1321e759-2ef3-4b85-9921-b13e918b24b5" - } - ], - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" + "userGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4396,96 +5086,63 @@ GET /v4.0/user-groups/{userGroupId} --- -### 사용자 그룹 생성하기 +### 사용자 그룹 삭제하기 ```http -POST /v4.0/user-groups +DELETE /v4.0/user-groups/{userGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMySQL:UserGroup.Create | 사용자 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.Delete | 사용자 그룹 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|-----------------------------------------------------------| -| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록
`selectAll`이 true인 경우 해당 필드 값은 무시됩니다 | -| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 여부
true인 경우 해당 그룹은 전체 멤버를 대상으로 설정됩니다 | - -

예시 -

- -```json -{ - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5" - ] -} -``` - -```json -{ - "userGroupName": "dev-team", - "selectAll": true -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------|------|------|-------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 사용자 그룹 수정하기 +### 사용자 그룹 상세 보기 ```http -PUT /v4.0/user-groups/{userGroupId} +GET /v4.0/user-groups/{userGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMySQL:UserGroup.Modify | 사용자 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.Get | 사용자 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|----------------------------------------------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | -| userGroupName | Body | String | X | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | -| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 여부
true인 경우 해당 그룹은 전체 멤버를 대상으로 설정됩니다 | - -
예시 -

- -```json -{ - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5", - "f9064b09-2b15-442e-a4b0-3a5a2754555e" - ] -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
- ENTIRE
- INDIVIDUAL_MEMBER | +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4496,7 +5153,17 @@ PUT /v4.0/user-groups/{userGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "userGroupTypeCode": "ENTIRE", + "members": [ + { + "memberId": "550e8400-e29b-41d4-a716-446655440000" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -4505,44 +5172,45 @@ PUT /v4.0/user-groups/{userGroupId} --- -### 사용자 그룹 삭제하기 +### 사용자 그룹 수정하기 ```http -DELETE /v4.0/user-groups/{userGroupId} +PUT /v4.0/user-groups/{userGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMySQL:UserGroup.Delete | 사용자 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.Modify | 사용자 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | +| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` |

예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAll": false } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- ## 알림 그룹 @@ -4555,8 +5223,8 @@ GET /v4.0/notification-groups #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:NotificationGroup.List | 알림 그룹 목록 보기 | #### 요청 @@ -4565,16 +5233,16 @@ GET /v4.0/notification-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------------|------|----------|-----------------------------------| -| notificationGroups | Body | Array | 알림 그룹 목록 | -| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | -| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | -| notificationGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroups | Body | Array | 알림 그룹 목록 | +| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | +| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | +| notificationGroups.createdYmdt | Body | DateTime | 생성 일시 | +| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4588,13 +5256,13 @@ GET /v4.0/notification-groups }, "notificationGroups": [ { - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, "notifySms": false, - "isEnabled": true, - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" + "isEnabled": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -4605,43 +5273,51 @@ GET /v4.0/notification-groups --- -### 알림 그룹 상세 보기 +### 알림 그룹 생성하기 ```http -GET /v4.0/notification-groups/{notificationGroupId} +POST /v4.0/notification-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|-------------| -| RDSforMySQL:NotificationGroup.Get | 알림 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.Create | 알림 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | +| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | + +

예시 +

+ +```json +{ + "notificationGroupName": "notificationGroupName", + "notifyEmail": true, + "notifySms": true, + "isEnabled": true, + "dbInstanceIds": [], + "userGroupIds": [] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------------|------|----------|-----------------------------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notifySms | Body | Boolean | SMS 알림 여부 | -| isEnabled | Body | Boolean | 활성화 여부 | -| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 |
예시

@@ -4653,25 +5329,7 @@ GET /v4.0/notification-groups/{notificationGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, - "notifySms": false, - "isEnabled": true, - "dbInstances": [ - { - "dbInstanceId": "ed5cb985-526f-4c54-9ae0-40288593de65", - "dbInstanceName": "database" - } - ], - "userGroups": [ - { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team" - } - ], - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4680,100 +5338,69 @@ GET /v4.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 생성하기 +### 알림 그룹 삭제하기 ```http -POST /v4.0/notification-groups +DELETE /v4.0/notification-groups/{notificationGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMySQL:NotificationGroup.Create | 알림 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.Delete | 알림 그룹 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------------| -| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | -| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | -| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | -| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | - -

예시 -

- -```json -{ - "notificationGroupName": "dev-team-noti", - "notifyEmail": false, - "isEnable": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65" - ], - "userGroupIds": [ - "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0" - ] -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|------|------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 알림 그룹 수정하기 +### 알림 그룹 상세 보기 ```http -PUT /v4.0/notification-groups/{notificationGroupId} +GET /v4.0/notification-groups/{notificationGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMySQL:NotificationGroup.Modify | 알림 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.Get | 알림 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부 | -| notifySms | Body | Boolean | X | SMS 알림 여부 | -| isEnabled | Body | Boolean | X | 활성화 여부 | -| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | - -
예시 -

- -```json -{ - "notifyEmail": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65", - "d51b7da0-682f-47ff-b588-b739f6adc740" - ] -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notifySms | Body | Boolean | SMS 알림 여부 | +| isEnabled | Body | Boolean | 활성화 여부 | +| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4784,7 +5411,26 @@ PUT /v4.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, + "notifySms": false, + "isEnabled": false, + "dbInstances": [ + { + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example" + } + ], + "userGroups": [ + { + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -4793,60 +5439,65 @@ PUT /v4.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 삭제하기 +### 알림 그룹 수정하기 ```http -DELETE /v4.0/notification-groups/{notificationGroupId} +PUT /v4.0/notification-groups/{notificationGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMySQL:NotificationGroup.Delete | 알림 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.Modify | 알림 그룹 수정하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | +| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `false` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `false` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `false` | +| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 |

예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, + "notifySms": false, + "isEnabled": false, + "dbInstanceIds": [], + "userGroupIds": [] } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- ## 모니터링 -### Metric 목록 보기 +### 통계 정보 조회 ```http -GET /v4.0/metrics +GET /v4.0/metric-statistics ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Metric.List | 통계 정보 조회 | #### 요청 @@ -4855,92 +5506,48 @@ GET /v4.0/metrics #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|--------|-----------| -| metrics | Body | Array | Metric 목록 | -| metrics.measureName | Body | Enum | 조회 지표 유형 | -| metrics.unit | Body | String | 측정값 단위 | - -
예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "metrics": [ - { - "measureName": "CPU_USAGE", - "unit": "%" - } - ] -} -``` - -

-
+이 API는 응답 본문을 반환하지 않습니다. --- -### 통계 정보 조회 +### Metric 목록 보기 ```http -GET /v4.0/metric-statistics +GET /v4.0/metrics ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| -| RDSforMySQL:Metric.List | 통계 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Metric.List | Metric 목록 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|----------|----|-----------------------------------| -| dbInstanceId | Query | UUID | O | DB 인스턴스의 식별자 | -| measureNames | Query | Array | O | 조회 지표 목록
- 최소 크기: `1` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| interval | Query | Number | X | 조회 간격 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|-----------|----------| -| metricStatistics | Body | Array | 통계 정보 목록 | -| metricStatistics.measureName | Body | Enum | 측정 항목 유형 | -| metricStatistics.unit | Body | String | 측정값 단위 | -| metricStatistics.values | Body | Array | 측정값 목록 | -| metricStatistics.values.timestamp | Body | Timestamp | 측정 시간 | -| metricStatistics.values.value | Body | Object | 측정값 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| metrics | Body | Array | Metric 목록 | +| metrics.measureName | Body | String | 조회 지표 유형 | +| metrics.unit | Body | String | 측정값 단위 |
예시

```json { - "metricStatistics": [ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "metrics": [ { - "measureName": "MYSQL_STATUS", - "unit": "", - "values": [ - [ - 1679298540, - "1" - ], - [ - 1679298600, - "1" - ], - [ - 1679298660, - "1" - ] - ] + "measureName": "measureName-example", + "unit": "unit-example" } ] } @@ -4966,47 +5573,29 @@ GET /v4.0/metric-statistics | TENANT | 테넌트 | | MONITORING | 모니터링 | -### 이벤트 목록 조회 +### 구독 가능한 이벤트 코드 목록 보기 ```http -GET /v4.0/events +GET /v4.0/event-codes ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------|-----------| -| RDSforMySQL:Event.List | 이벤트 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Event.List | 구독 가능한 이벤트 코드 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | X | 조회할 목록의 페이지
- 기본값: 1
- 최솟값: `1` | -| size | Query | Number | X | 조회할 목록의 페이지 크기
- 기본값: 20 | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| eventCategoryType | Query | Enum | O | 조회할 이벤트 카테고리 유형
- `ALL`: 전체
- `INSTANCE`: DB 인스턴스
- `BACKUP`: 백업
- `DB_SECURITY_GROUP`: DB 보안 그룹
- `TENANT`: 테넌트 | -| sourceId | Query | String | X | 이벤트가 발생한 대상 리소스의 식별자 | -| keyword | Query | String | X | 이벤트 메시지에 포함된 문자열 검색어 | -| ascendingOrder | Query | Enum | X | 이벤트 메시지 정렬 순서
- `ASC`: 오름차순
- `DESC`: 내림차순
- 기본값: `DESC` | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|---------------------------------------| -| totalCounts | Body | Number | 전체 이벤트 목록 수 | -| events | Body | Array | 이벤트 목록 | -| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | -| events.sourceId | Body | String | 이벤트 소스의 식별자 | -| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | -| events.messages | Body | Array | 이벤트 메시지 목록 | -| events.messages.langCode | Body | String | 언어 코드 | -| events.messages.message | Body | String | 이벤트 메시지 | -| events.eventYmdt | Body | DateTime | 이벤트 발생 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventCodes | Body | Array | 이벤트 코드 목록 | +| eventCodes.eventCode | Body | Enum | 이벤트 코드 | +| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT |

예시

@@ -5018,32 +5607,10 @@ GET /v4.0/events "resultMessage": "SUCCESS", "isSuccessful": true }, - "totalCounts": 28, - "events": [ + "eventCodes": [ { - "eventCategoryType": "INSTANCE", - "eventCode": "INSTC_02_01", - "sourceId": "76f00947-356e-4a20-8922-428368cc45ed", - "sourceName": "db-instance", - "messages": [ - { - "langCode": "EN", - "message": "DB instance started" - }, - { - "langCode": "JA", - "message": "DBインスタンスの起動" - }, - { - "langCode": "KO", - "message": "DB 인스턴스 시작" - }, - { - "langCode": "ZH", - "message": "DB instance started" - } - ], - "eventYmdt": "2023-03-20T16:31:59+09:00" + "eventCode": "ENUM_VALUE", + "eventCategoryType": "ALL" } ] } @@ -5054,17 +5621,17 @@ GET /v4.0/events --- -### 구독 가능한 이벤트 코드 목록 보기 +### 이벤트 목록 조회 ```http -GET /v4.0/event-codes +GET /v4.0/events ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------|-----------| -| RDSforMySQL:Event.List | 이벤트 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Event.List | 이벤트 목록 조회 | #### 요청 @@ -5072,11 +5639,18 @@ GET /v4.0/event-codes #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|-------|-------------| -| eventCodes | Body | Array | 이벤트 코드 목록 | -| eventCodes.eventCode | Body | Enum | 이벤트 코드 | -| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 목록 수 | +| events | Body | Array | 이벤트 목록 | +| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | +| events.sourceId | Body | String | 이벤트 소스의 식별자 | +| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | +| events.messages | Body | Array | 이벤트 메세지 목록 | +| events.messages.langCode | Body | Enum | 언어 코드
- KO
- EN
- JA
- ZH | +| events.messages.message | Body | String | 이벤트 메세지 | +| events.eventYmdt | Body | DateTime | 이벤트 발생 일시 |

예시

@@ -5088,10 +5662,20 @@ GET /v4.0/event-codes "resultMessage": "SUCCESS", "isSuccessful": true }, - "eventCodes": [ + "totalCounts": 1, + "events": [ { - "eventCode": "INSTC_05_01", - "eventCategoryType": "INSTANCE" + "eventCategoryType": "ALL", + "eventCode": "ENUM_VALUE", + "sourceId": "sourceId-example", + "sourceName": "sourceName-example", + "messages": [ + { + "langCode": "KO", + "message": "message-example" + } + ], + "eventYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -5112,38 +5696,32 @@ GET /v4.0/event-subscriptions #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:EventSubscription.List | 이벤트 구독 목록 조회 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|------------------------------------------| -| page | Query | Number | X | 조회할 목록의 페이지
- 기본값: 1
- 최솟값: `1` | -| size | Query | Number | X | 조회할 목록의 페이지 크기
- 기본값: 20 | -| eventSubscriptionId | Query | UUID | X | 이벤트 구독의 식별자 | -| eventSubscriptionName | Query | String | X | 이벤트 구독을 식별할 수 있는 이름 | -| userGroupId | Query | UUID | X | 사용자 그룹의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------------------|------|----------|--------------------------| -| totalCounts | Body | Number | 전체 이벤트 구독 목록 수 | -| eventSubscriptions | Body | Array | 이벤트 구독 목록 | -| eventSubscriptions.eventSubscriptionId | Body | UUID | 이벤트의 구독 식별자 | -| eventSubscriptions.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| eventSubscriptions.eventSubscriptionName | Body | String | 이벤트 구독을 식별할 수 있는 이름 | -| eventSubscriptions.enabled | Body | Boolean | 활성화 여부 | -| eventSubscriptions.notifyEmail | Body | Boolean | 이메일 발송 여부 | -| eventSubscriptions.notifySms | Body | Boolean | SMS 발송 여부 | -| eventSubscriptions.eventCodes | Body | Array | 구독할 이벤트 코드 목록 | -| eventSubscriptions.sources | Body | Array | 구독할 이벤트 소스 목록 | -| eventSubscriptions.sources.sourceId | Body | UUID | 이벤트 소스의 식별자 | -| eventSubscriptions.sources.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| eventSubscriptions.userGroupIds | Body | Array | 이벤트 구독 중인 사용자 그룹의 식별자 목록 | -| eventSubscriptions.createdYmdt | Body | DateTime | 생성 일시 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 구독 목록 수 | +| eventSubscriptions | Body | Array | 이벤트 구독 목록 | +| eventSubscriptions.eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 | +| eventSubscriptions.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.eventSubscriptionName | Body | String | 이벤트 구독의 식별할 수 있는 이름 | +| eventSubscriptions.enabled | Body | Boolean | 활성화 여부 | +| eventSubscriptions.notifyEmail | Body | Boolean | 이메일 발송 여부 | +| eventSubscriptions.notifySms | Body | Boolean | SMS 발송 여부 | +| eventSubscriptions.eventCodes | Body | Array | 구독할 이벤트 코드 목록 | +| eventSubscriptions.sources | Body | Array | 구독할 이벤트 소스 목록 | +| eventSubscriptions.sources.sourceId | Body | String | 이벤트 소스의 식별자 | +| eventSubscriptions.sources.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.userGroupIds | Body | Array | 이벤트 구독 중인 사용자 그룹의 식별자 목록 | +| eventSubscriptions.createdYmdt | Body | DateTime | 생성 일시 |

예시

@@ -5158,25 +5736,21 @@ GET /v4.0/event-subscriptions "totalCounts": 1, "eventSubscriptions": [ { - "eventSubscriptionId": "12345678-1234-1234-1234-123456789012", - "eventCategoryType": "INSTANCE", - "eventSubscriptionName": "example-event-subscription", - "enabled": true, - "notifyEmail": true, + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, "notifySms": false, - "eventCodes": [ - "INSTC_05_01" - ], + "eventCodes": [], "sources": [ { - "sourceId": "87654321-4321-4321-4321-210987654321", - "eventCategoryType": "INSTANCE" + "sourceId": "sourceId-example", + "eventCategoryType": "ALL" } ], - "userGroupIds": [ - "11111111-2222-3333-4444-555555555555" - ], - "createdYmdt": "2024-01-01T12:00:00+09:00" + "userGroupIds": [], + "createdYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -5195,47 +5769,43 @@ POST /v4.0/event-subscriptions #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:EventSubscription.Create | 이벤트 구독 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------------------|------|---------|----|-----------------------------------------| -| eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형 | -| eventSubscriptionName | Body | String | O | 이벤트 구독을 식별할 수 있는 이름
- 최대 길이: `100` | -| enabled | Body | Boolean | O | 활성화 여부 | -| notifyEmail | Body | Boolean | O | 이메일 발송 여부 | -| notifySms | Body | Boolean | O | SMS 발송 여부 | -| eventCodes | Body | Array | O | 구독할 이벤트 코드 목록 | -| sources | Body | Array | O | 구독할 이벤트 소스 목록 | -| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | -| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형 | -| userGroupIds | Body | Array | O | 이벤트 구독할 사용자 그룹의 식별자 목록 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | O | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | O | 활성화 여부 | +| notifyEmail | Body | Boolean | O | 이메일 발송 여부 | +| notifySms | Body | Boolean | O | SMS 발송 여부 | +| eventCodes | Body | Array | O | 구독할 이벤트 코드 목록 | +| sources | Body | Array | O | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | O | 이벤트 구독할 사용자 그룹의 식별자 목록 |

예시

```json { - "eventCategoryType": "INSTANCE", - "eventSubscriptionName": "example-event-subscription", - "enabled": true, - "notifyEmail": true, + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, "notifySms": false, - "eventCodes": [ - "INSTC_05_01" - ], + "eventCodes": [], "sources": [ { - "sourceId": "87654321-4321-4321-4321-210987654321", - "eventCategoryType": "INSTANCE" + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" } ], - "userGroupIds": [ - "11111111-2222-3333-4444-555555555555" - ] + "userGroupIds": [] } ``` @@ -5244,9 +5814,9 @@ POST /v4.0/event-subscriptions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------|------|------|-------------| -| eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 |

예시

@@ -5258,7 +5828,7 @@ POST /v4.0/event-subscriptions "resultMessage": "SUCCESS", "isSuccessful": true }, - "eventSubscriptionId": "12345678-1234-1234-1234-123456789012" + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -5267,6 +5837,32 @@ POST /v4.0/event-subscriptions --- +### 이벤트 구독 삭제하기 + +```http +DELETE /v4.0/event-subscriptions/{eventSubscriptionId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:EventSubscription.Delete | 이벤트 구독 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + ### 이벤트 구독 수정하기 ```http @@ -5275,49 +5871,44 @@ PUT /v4.0/event-subscriptions/{eventSubscriptionId} #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:EventSubscription.Modify | 이벤트 구독 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------------------|------|---------|----|-----------------------------------| -| eventSubscriptionId | URL | UUID | O | 이벤트 구독의 식별자 | -| eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형 | -| eventSubscriptionName | Body | String | X | 이벤트 구독을 식별할 수 있는 이름 | -| enabled | Body | Boolean | X | 활성화 여부 | -| notifyEmail | Body | Boolean | X | 이메일 발송 여부 | -| notifySms | Body | Boolean | X | SMS 발송 여부 | -| eventCodes | Body | Array | X | 구독할 이벤트 코드 목록 | -| sources | Body | Array | X | 구독할 이벤트 소스 목록 | -| sources.sourceId | Body | UUID | X | 이벤트 소스의 식별자 | -| sources.eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형 | -| userGroupIds | Body | Array | X | 이벤트 구독할 사용자 그룹의 식별자 목록 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | +| eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | X | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | X | 활성화 여부 | +| notifyEmail | Body | Boolean | X | 이메일 발송 여부 | +| notifySms | Body | Boolean | X | SMS 발송 여부 | +| eventCodes | Body | Array | X | 구독할 이벤트 코드 목록 | +| sources | Body | Array | X | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | X | 이벤트 구독할 사용자 그룹의 식별자 목록 |

예시

```json { - "eventSubscriptionName": "updated-event-subscription", + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", "enabled": false, "notifyEmail": false, - "notifySms": true, - "eventCodes": [ - "INSTC_05_01", - "INSTC_06_01" - ], + "notifySms": false, + "eventCodes": [], "sources": [ { - "sourceId": "87654321-4321-4321-4321-210987654321", - "eventCategoryType": "INSTANCE" + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" } ], - "userGroupIds": [ - "11111111-2222-3333-4444-555555555555", - "22222222-3333-4444-5555-666666666666" - ] + "userGroupIds": [] } ``` @@ -5328,45 +5919,34 @@ PUT /v4.0/event-subscriptions/{eventSubscriptionId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- -### 이벤트 구독 삭제하기 +## 가용성 영역 + +### 가용성 영역 목록 보기 ```http -DELETE /v4.0/event-subscriptions/{eventSubscriptionId} +GET /v4.0/availability-zones ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------------|--------------| -| RDSforMySQL:EventSubscription.Delete | 이벤트 구독 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:AvailabilityZone.List | 가용성 영역 목록 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|-----|------|----|-------------| -| eventSubscriptionId | URL | UUID | O | 이벤트 구독의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| availabilityZones | Body | Array | 가용성 영역 목록 | +| availabilityZones.availabilityZoneName | Body | String | 가용성 영역 이름 | +| availabilityZones.zoneState | Body | Object | 가용성 영역 상태 | +| availabilityZones.zoneState.available | Body | Boolean | 가용성 영역의 사용 가능 여부 |
예시

@@ -5377,7 +5957,15 @@ DELETE /v4.0/event-subscriptions/{eventSubscriptionId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "availabilityZones": [ + { + "availabilityZoneName": "availabilityZoneName-example", + "zoneState": { + "available": false + } + } + ] } ``` @@ -5385,3 +5973,4 @@ DELETE /v4.0/event-subscriptions/{eventSubscriptionId}

--- + diff --git a/ko/api-guide-v4.0-ncgn.md b/ko/api-guide-v4.0-ncgn.md index ccc8e4d8..b7295042 100644 --- a/ko/api-guide-v4.0-ncgn.md +++ b/ko/api-guide-v4.0-ncgn.md @@ -1,37 +1,37 @@ -## Database > RDS for MySQL > API 가이드 +## Database > RDS for MySQL > API v4.0 가이드 ## RDS for MySQL API 공통 정보 ### API 엔드포인트 -| 리전 | 엔드포인트 | -|-----------|-----------------------------------------------| +| 리전 | 엔드포인트 | +|------|----------| | 한국(판교) 리전 | https://kr1-rds-mysql.api.gncloud.go.kr | + ### 인증 및 권한 RDS for MySQL은(는) API 호출 시 인증/인가를 위해 User Access Key 토큰을 사용합니다. User Access Key 토큰은 User Access Key를 기반으로 발급되는 Bearer 타입의 일시적 액세스 토큰입니다. User Access Key 토큰 발급 및 사용에 대한 자세한 내용은 [User Access Key 토큰](/nhncloud/ko/public-api/user-access-key-token)을 참고하세요. 발급 받은 토큰은 Appkey와 함께 요청 Header에 포함해야 합니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|--------|--------|----|-------------------------------------------------------------| -| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | -| X-NHN-AUTHORIZATION | Header | String | O | Public API로 발급 받은 Bearer 유형 토큰 | - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | +| X-NHN-AUTHORIZATION | Header | String | O | Public API로 발급 받은 Bearer 유형 토큰 | -또한 프로젝트 멤버 역할에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER`로 구분하여 권한을 부여할 수 있습니다. +또한 프로젝트 권한에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER` 역할에는 아래처럼 기본 권한이 부여돼 있고 프로젝트 내 역할 그룹 관리 메뉴에서 필요한 권한만 부여할 수 있습니다. -* `RDS for MySQL ADMIN` 권한은 모든 기능을 사용 가능합니다. -* `RDS for MySQL VIEWER` 권한은 정보를 조회하는 기능만 사용 가능합니다. +* `RDS for MySQL ADMIN` 역할은 API 실행에 필요한 모든 권한이 부여됩니다. +* `RDS for MySQL VIEWER` 역할은 정보를 조회하는 권한만 부여됩니다. * DB 인스턴스를 생성, 수정, 삭제하거나, DB 인스턴스를 대상으로 하는 어떠한 기능도 사용할 수 없습니다. - * 단, 알림 그룹 및 사용자 그룹 관련 기능은 사용 가능합니다. + * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용할 수 있습니다. API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같은 오류가 발생합니다. -| resultCode | resultMessage | 설명 | -|------------|---------------|-------------| -| 80401 | Unauthorized | 인증에 실패했습니다. | -| 80403 | Forbidden | 권한이 없습니다. | +| resultCode | resultMessage | 설명 | +|------------|---------------|-----| +| 80401 | Unauthorized | 인증에 실패했습니다. | +| 80403 | Forbidden | 권한이 없습니다. | ### 응답 공통 정보 @@ -49,59 +49,58 @@ API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같 ``` #### 필드 -| 이름 | 형식 | 설명 | -|---------------|---------|-----------------------------------------| -| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | -| resultMessage | String | 결과 메시지 | -| isSuccessful | Boolean | 성공 여부 | - +| 이름 | 형식 | 설명 | +|-----|-----|-----| +| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | +| resultMessage | String | 결과 메시지 | +| isSuccessful | Boolean | 성공 여부 | ### DB 엔진 유형 -| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 | -|--------------|----------|-----------------|--------| -| MYSQL\_V5633 | X | X | NATIVE | -| MYSQL\_V5715 | O | O | NATIVE | -| MYSQL\_V5719 | O | O | NATIVE | -| MYSQL\_V5726 | O | O | NATIVE | -| MYSQL\_V5731 | X | X | NATIVE | -| MYSQL\_V5733 | O | X | NATIVE, SHA256 | -| MYSQL\_V5737 | O | O | NATIVE, SHA256 | -| MYSQL\_V8018 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8023 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8028 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8032 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8033 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8034 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8044 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8045 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8405 | O | O | CACHING_SHA2 | -| MYSQL_V8406 | O | O | CACHING_SHA2 | -| MYSQL_V8407 | O | O | CACHING_SHA2 | -| MYSQL_V8408 | O | O | CACHING_SHA2 | - -* ENUM 타입의 dbVersion 필드에서 해당 값을 사용할 수 있습니다. +| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 | +|------------|----------|------------------|------------| +| MYSQL_V5633 | X | X | NATIVE | +| MYSQL_V5715 | O | O | NATIVE | +| MYSQL_V5719 | O | O | NATIVE | +| MYSQL_V5726 | O | O | NATIVE | +| MYSQL_V5731 | X | X | NATIVE | +| MYSQL_V5733 | O | X | NATIVE, SHA256 | +| MYSQL_V5737 | O | O | NATIVE, SHA256 | +| MYSQL_V8018 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8023 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8028 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8032 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8033 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8034 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8044 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8045 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8405 | O | O | CACHING_SHA2 | +| MYSQL_V8406 | O | O | CACHING_SHA2 | +| MYSQL_V8407 | O | O | CACHING_SHA2 | +| MYSQL_V8408 | O | O | CACHING_SHA2 | + +* ENUM 타입의 dbVersion 필드에 대해 해당 값을 사용할 수 있습니다. * 버전에 따라 생성 또는 복원이 불가능한 경우가 있을 수 있습니다. ## 프로젝트 정보 -### 리전 목록 보기 +### 프로젝트 멤버 목록 보기 ```http -GET /v4.0/project/regions +GET /v4.0/project/members ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|------------| -| RDSforMySQL:Project.Get | 프로젝트 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Project.Get | 프로젝트 멤버 목록 보기 | #### 요청 @@ -109,11 +108,13 @@ GET /v4.0/project/regions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------|------|---------|----------------------------------------------------------------------------| -| regions | Body | Array | 리전 목록 | -| regions.regionCode | Body | Enum | 리전 코드
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| members.memberName | Body | String | 프로젝트 멤버의 이름 | +| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | +| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 |
예시

@@ -125,38 +126,33 @@ GET /v4.0/project/regions "resultMessage": "SUCCESS", "isSuccessful": true }, - "regions": [ - { - "regionCode": "KR1", - "isEnabled": true - }, - { - "regionCode": "KR2", - "isEnabled": true - }, + "members": [ { - "regionCode": "JP1", - "isEnabled": true + "memberId": "550e8400-e29b-41d4-a716-446655440000", + "memberName": "memberName-example", + "emailAddress": "emailAddress-example", + "phoneNumber": "phoneNumber-example" } ] } ``` +

--- -### 프로젝트 멤버 목록 보기 +### 리전 목록 보기 ```http -GET /v4.0/project/members +GET /v4.0/project/regions ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|------------| -| RDSforMySQL:Project.Get | 프로젝트 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Project.Get | 리전 목록 보기 | #### 요청 @@ -164,13 +160,11 @@ GET /v4.0/project/members #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|--------|-----------------| -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| members.memberName | Body | String | 프로젝트 멤버의 이름 | -| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | -| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| regions | Body | Array | 리전 목록 | +| regions.regionCode | Body | Enum | 리전 코드
- KR1: `한국(판교)` | +| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 |
예시

@@ -182,12 +176,10 @@ GET /v4.0/project/members "resultMessage": "SUCCESS", "isSuccessful": true }, - "members": [ + "regions": [ { - "memberId": "1b1d3627-507a-49ea-8cb7-c86dfa9caa58", - "memberName": "홍길동", - "emailAddress": "gildong.hong@nhn.com", - "phoneNumber": "+821012345678" + "regionCode": "KR1", + "isEnabled": false } ] } @@ -208,8 +200,8 @@ GET /v4.0/db-flavors #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbFlavor.List | DB 인스턴스 사양 목록 보기 | #### 요청 @@ -218,13 +210,13 @@ GET /v4.0/db-flavors #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------| -| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | -| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | -| dbFlavors.ram | Body | Number | 메모리 용량(MB) | -| dbFlavors.vcpus | Body | Number | CPU 코어 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | +| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | +| dbFlavors.ram | Body | Number | 메모리 용량(MB) | +| dbFlavors.vcpus | Body | Number | CPU 코어 수 |

예시

@@ -238,9 +230,9 @@ GET /v4.0/db-flavors }, "dbFlavors": [ { - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbFlavorName": "m2.c1m2", - "ram": 2048, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbFlavorName": "dbFlavorName-example", + "ram": 1, "vcpus": 1 } ] @@ -262,8 +254,8 @@ GET /v4.0/network/subnets #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------|-----------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Network.List | 서브넷 목록 보기 | #### 요청 @@ -272,14 +264,14 @@ GET /v4.0/network/subnets #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|---------|------------------| -| subnets | Body | Array | 서브넷 목록 | -| subnets.subnetId | Body | UUID | 서브넷의 식별자 | -| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | -| subnets.subnetCidr | Body | String | 서브넷의 CIDR | -| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | -| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| subnets | Body | Array | 서브넷 목록 | +| subnets.subnetId | Body | UUID | 서브넷의 식별자 | +| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnets.subnetCidr | Body | String | 서브넷의 CIDR | +| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | +| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 |

예시

@@ -293,11 +285,11 @@ GET /v4.0/network/subnets }, "subnets": [ { - "subnetId": "1b2a9b23-0725-4b92-8c78-35db66b8ad9f", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/24", - "usingGateway": true, - "availableIpCount": 240 + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example", + "usingGateway": false, + "availableIpCount": 1 } ] } @@ -318,8 +310,8 @@ GET /v4.0/db-versions #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbVersion.List | DB 엔진 목록 보기 | #### 요청 @@ -328,11 +320,11 @@ GET /v4.0/db-versions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|---------|-----------------------| -| dbVersions | Body | Array | DB 엔진 목록 | -| dbVersions.dbVersion | Body | String | DB 엔진 유형 | -| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbVersions | Body | Array | DB 엔진 목록 | +| dbVersions.dbVersion | Body | String | DB 엔진 유형 | +| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | | dbVersions.restorableFromObs | Body | Boolean | 오브젝트 스토리지로부터 복원 가능 여부 |

예시 @@ -347,9 +339,9 @@ GET /v4.0/db-versions }, "dbVersions": [ { - "dbVersion": "MYSQL_V8028", - "dbVersionName": "MySQL 8.0.28", - "restorableFromObs": true + "dbVersion": "MYSQL_V8036", + "dbVersionName": "dbVersionName-example", + "restorableFromObs": false } ] } @@ -362,7 +354,7 @@ GET /v4.0/db-versions ## 데이터 스토리지 -### 데이터 스토리지 타입 목록 보기 +### 스토리지 타입 목록 보기 ```http GET /v4.0/storage-types @@ -370,9 +362,9 @@ GET /v4.0/storage-types #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------|-------------------| -| RDSforMySQL:Storage.List | 데이터 스토리지 타입 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Storage.List | 스토리지 타입 목록 보기 | #### 요청 @@ -380,9 +372,9 @@ GET /v4.0/storage-types #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|-------|----------------| -| storageTypes | Body | Array | 데이터 스토리지 타입 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageTypes | Body | Array | 스토리지 타입 목록 |
예시

@@ -394,10 +386,7 @@ GET /v4.0/storage-types "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageTypes": [ - "General SSD", - "General HDD" - ] + "storageTypes": [] } ``` @@ -433,29 +422,29 @@ GET /v4.0/jobs/{jobId} #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Job.Get | 작업 정보 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------|-----|------|----|---------| -| jobId | URL | UUID | O | 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| jobId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------|------|----------|-----------------------------------| -| jobId | Body | UUID | 작업의 식별자 | -| jobStatus | Body | Enum | 작업의 현재 상태 | -| resourceRelations | Body | Array | 연관 리소스 목록 | -| resourceRelations.resourceType | Body | Enum | 연관 리소스 유형 | -| resourceRelations.resourceId | Body | UUID | 연관 리소스의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | +| jobStatus | Body | Enum | 작업의 현재 상태
- DELETED
- CANNOT_PROGRESS
- FAILED
- ERROR
- CANCELED
- INTERRUPTED
- COMPLETED
- RUNNING
- PREPARING
- READY
- CREATED
- FAIL_TO_READY
- REGISTERED
- FAIL_TO_REGISTER
- WAIT_TO_REGISTER | +| resourceRelations | Body | Array | 연관 리소스 목록 | +| resourceRelations.resourceType | Body | String | 연관 리소스 유형 | +| resourceRelations.resourceId | Body | String | 연관 리소스의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -467,16 +456,16 @@ GET /v4.0/jobs/{jobId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "jobId": "0ddb042c-5af6-43fb-a914-f4dd0540eb7c", - "jobStatus": "RUNNING", + "jobId": "550e8400-e29b-41d4-a716-446655440000", + "jobStatus": "DELETED", "resourceRelations": [ { - "resourceType": "DB_INSTANCE", - "resourceId": "56b39dcf-65eb-47ec-9d4f-09f160ba2266" + "resourceType": "resourceType-example", + "resourceId": "resourceId-example" } ], - "createdYmdt": "2023-02-22T20:47:12+09:00", - "updatedYmdt": "2023-02-22T20:49:46+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -495,8 +484,8 @@ GET /v4.0/db-instance-groups #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstanceGroup.List | DB 인스턴스 그룹 목록 보기 | #### 요청 @@ -505,13 +494,13 @@ GET /v4.0/db-instance-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------|------|----------|--------------------------------------------------------------------------| -| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | -| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | +| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -525,10 +514,10 @@ GET /v4.0/db-instance-groups }, "dbInstanceGroups": [ { - "dbInstanceGroupId": "05de0746-89fd-49c8-94f9-9c5b1df97009", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", - "createdYmdt": "2023-02-13T17:35:20+09:00", - "updatedYmdt": "2023-02-13T17:35:20+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -547,30 +536,30 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstanceGroup.Get | DB 인스턴스 그룹 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|-----------------| -| dbInstanceGroupId | URL | UUID | O | DB 인스턴스 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -582,17 +571,17 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbInstanceGroupId": "36617a8e-0df8-4b16-b6ea-6306019e95da", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", "dbInstances": [ { - "dbInstanceId": "6d2db0ef-fe9b-4ed4-97b1-d97fcb4cf1b8", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE" + "dbInstanceStatus": "BEFORE_CREATE" } ], - "createdYmdt": "2023-03-03T17:38:14+09:00", - "updatedYmdt": "2023-03-03T17:38:14+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -625,8 +614,8 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} | `BACKING_UP` | 백업 중 | | `CANCELING` | 취소 중 | | `CREATING` | 생성 중 | -| `CREATING_SCHEMA` | DB 스키마 생성 중 | -| `CREATING_USER` | 사용자 생성 중 | +| `CREATING_SCHEMA` | DB 스키마 생성 중 | +| `CREATING_USER` | 사용자 생성 중 | | `DELETING` | 삭제 중 | | `DELETING_SCHEMA` | DB 스키마 삭제 중 | | `DELETING_USER` | 사용자 삭제 중 | @@ -645,8 +634,8 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} | `STARTING` | 시작 중 | | `STOPPING` | 정지 중 | | `SYNCING_SCHEMA` | DB 스키마 동기화 중 | -| `SYNCING_USER` | 사용자 동기화 중 | -| `UPDATING_USER` | 사용자 수정 중 | +| `SYNCING_USER` | 사용자 동기화 중 | +| `UPDATING_USER` | 사용자 수정 중 | ### DB 인스턴스 목록 보기 @@ -656,8 +645,8 @@ GET /v4.0/db-instances #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstance.List | DB 인스턴스 목록 보기 | #### 요청 @@ -666,20 +655,20 @@ GET /v4.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstances | Body | Array | DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | -| dbInstances.dbPort | Body | Number | DB 포트 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태 | -| dbInstances.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstances.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstances | Body | Array | DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | +| dbInstances.dbPort | Body | Number | DB 포트 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbInstances.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstances.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -693,17 +682,17 @@ GET /v4.0/db-instances }, "dbInstances": [ { - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", + "dbInstanceStatus": "BEFORE_CREATE", "progressStatus": "NONE", - "createdYmdt": "2023-01-23T12:03:13+09:00", - "updatedYmdt": "2023-02-02T17:20:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -714,51 +703,130 @@ GET /v4.0/db-instances --- -### DB 인스턴스 상세 보기 +### DB 인스턴스 생성하기 ```http -GET /v4.0/db-instances/{dbInstanceId} +POST /v4.0/db-instances ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Create | DB 인스턴스 생성하기 | -#### 요청 +#### 공통 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| authenticationPlugin | Body | Enum | X | 인증 Plugin
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | TLS Option
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 데이터 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | + +

예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE", + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "backup": { + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 1800, + "replicationRegion": "KR1", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + } +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| dbPort | Body | Number | DB 포트 | -| dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| progressStatus | Body | Enum | DB 인스턴스의 현재 작업 진행 상태 | -| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | -| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | -| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | -| useSlowQueryAnalysis | Body | Boolean | Slow query 분석 여부 | -| supportAuthenticationPlugin | Body | Boolean | 인증 플러그인 지원 여부 | -| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | -| needMigration | Body | Boolean | 마이그레이션 필요 여부 | -| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -770,27 +838,7 @@ GET /v4.0/db-instances/{dbInstanceId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", - "progressStatus": "NONE", - "dbFlavorId": "e9ed4ef6-78d7-46fa-ace9-32481e97f3b7", - "parameterGroupId": "b03e8b13-de27-4d04-a488-ff5689589372", - "dbSecurityGroupIds": ["01908c35-d2c9-4852-baf0-17f06ec42c03"], - "notificationGroupIds": ["83a62a33-ddbf-4a04-8653-e54463d5b1ac"], - "useDeletionProtection": false, - "useSlowQueryAnalysis": true, - "supportAuthenticationPlugin": true, - "needToApplyParameterGroup": false, - "needMigration": false, - "supportDbVersionUpgrade": true, - "createdYmdt": "2022-11-23T12:03:13+09:00", - "updatedYmdt": "2022-12-02T17:20:17+09:00" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -799,97 +847,124 @@ GET /v4.0/db-instances/{dbInstanceId} --- -### DB 인스턴스 생성하기 +### 오브젝트 스토리지를 이용한 DB 인스턴스 복원 ```http -POST /v4.0/db-instances +POST /v4.0/db-instances/restore-from-obs ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Create | DB 인스턴스 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.RestoreFromObs | 오브젝트 스토리지를 이용한 DB 인스턴스 복원 | -#### 요청 +#### 공통 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|-------|---------|----|---------------------------------------------------------------------| -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbUserName | Body | String | O | DB 사용자 계정명 | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| pingType | Body | Enum | X | 고가용성 사용 시 Ping 타입
- 기본값: `INSERT`
- `INSERT`
- `SELECT` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- 기본값: `NATIVE`(미지원 시 `CACHING_SHA2`)
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | O | DB 포트 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | +| restore.username | Body | String | O | NHN Cloud 계정 혹은 IAM 멤버 ID | +| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | +| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | +| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` |

예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", - "availabilityZone": "kr-pub-a" - }, + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "dbVersion": "MYSQL_V8036", + "useHighAvailability": false, + "pingInterval": 3, "storage": { "storageType": "General SSD", - "storageSize": 20 + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR1", + "useBackupLock": true, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR" + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" } ] - } + }, + "restore": { + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" + }, + "useDefaultNotification": false, + "useSlowQueryAnalysis": true, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDeletionProtection": false } ``` @@ -898,66 +973,27 @@ POST /v4.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### DB 인스턴스 수정하기 - -```http -PUT /v4.0/db-instances/{dbInstanceId} -``` - -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|------|---------|----|---------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbPort | Body | Number | X | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbVersion | Body | Enum | X | DB 엔진 유형 | -| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| useReadOnly | Body | Boolean | X | 읽기 전용으로 변경 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -

예시

```json { - "dbInstanceName": "db-instance2", - "description": "description2", - "dbPort": 10001, - "dbSecurityGroupIds": [], - "executeBackup": true + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- ### DB 인스턴스 삭제하기 @@ -968,79 +1004,99 @@ DELETE /v4.0/db-instances/{dbInstanceId} #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstance.Delete | DB 인스턴스 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| deleteAutoBackup | Body | Boolean | X | 자동 백업 삭제 여부
- 기본값: `false` | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| deleteAutoBackup | Body | Boolean | X | 자동 백업 삭제 여부
- 기본값: `false` | -### DB 인스턴스 재시작하기 +
예시 +

-```http -POST /v4.0/db-instances/{dbInstanceId}/restart +```json +{ + "deleteAutoBackup": false +} ``` -#### 필요 권한 +

+
-| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Restart | DB 인스턴스 재시작하기 | +#### 응답 -#### 요청 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | -| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| useReadOnly | Body | Boolean | X | 읽기 전용으로 변경 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### DB 인스턴스 강제 재시작하기 + +### DB 인스턴스 상세 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/force-restart +GET /v4.0/db-instances/{dbInstanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|------------------| -| RDSforMySQL:DbInstance.ForceRestart | DB 인스턴스 강제 재시작하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| dbPort | Body | Number | DB 포트 | +| dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | +| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | +| useSlowQueryAnalysis | Body | Boolean | Slow query 분석 여부 | +| supportAuthenticationPlugin | Body | Boolean | 인증 plugin 지원 여부 | +| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | +| needMigration | Body | Boolean | 마이그레이션 필요 여부 | +| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -1051,134 +1107,222 @@ POST /v4.0/db-instances/{dbInstanceId}/force-restart "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbInstanceType": "MASTER", + "dbInstanceStatus": "BEFORE_CREATE", + "progressStatus": "NONE", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "notificationGroupIds": [], + "useDeletionProtection": false, + "useSlowQueryAnalysis": false, + "supportAuthenticationPlugin": false, + "needToApplyParameterGroup": false, + "needMigration": false, + "supportDbVersionUpgrade": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

- --- -### DB 인스턴스 시작하기 +### DB 인스턴스 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/start +PUT /v4.0/db-instances/{dbInstanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Start | DB 인스턴스 시작하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbPort | Body | Number | X | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbVersion | Body | Enum | X | DB 엔진 버전 코드 | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부 | +| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
- 기본값: `false` | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` | + +
예시 +

-| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +```json +{ + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbPort": 1, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "useSlowQueryAnalysis": false, + "useDummy": false, + "dbSecurityGroupIds": [], + "executeBackup": false, + "useOnlineFailover": false, + "waitReplicationDelay": false, + "useReadOnly": false +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 인스턴스 정지하기 +### 백업 정보 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/stop +GET /v4.0/db-instances/{dbInstanceId}/backup-info ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Stop | DB 인스턴스 정지하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 백업 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| backupPeriod | Body | Number | 백업 보관 기간(일) | +| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | +| backupRetryCount | Body | Number | 백업 재시도 횟수 | +| replicationRegion | Body | Enum | 백업 복제 리전
- KR1: `한국(판교)` | +| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration
- HALF_AN_HOUR
- ONE_HOUR
- ONE_HOUR_AND_HALF
- TWO_HOURS
- TWO_HOURS_AND_HALF
- THREE_HOURS | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "backupPeriod": 1, + "ftwrlWaitTimeout": 1, + "backupRetryCount": 1, + "replicationRegion": "KR1", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] +} +``` + +

+
--- -### DB 인스턴스 복제하기 +### 백업 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/replicate +PUT /v4.0/db-instances/{dbInstanceId}/backup-info ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Replicate | DB 인스턴스 복제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | 백업 정보 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------------------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbPort | Body | Number | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록
- 기본값: 원본 DB 인스턴스 값 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: 원본 DB 인스턴스 값 | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입
- 기본값: 원본 DB 인스턴스 값
- 예시: `General SSD` | -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전
- 기본값: 원본 DB 인스턴스 값 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각
- 예시: `00:00:00`
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간
- 기본값: 원본 DB 인스턴스 값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json { - "dbInstanceName": "db-instance-replicate", - "description": "description", - "dbPort": 11000, - "network": { - "availabilityZone": "kr-pub-a" - }, - "storage": { - "stroageSize": 100 - } + "backupPeriod": 0, + "ftwrlWaitTimeout": 0, + "backupRetryCount": 0, + "replicationRegion": "KR1", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] } ``` @@ -1187,147 +1331,234 @@ POST /v4.0/db-instances/{dbInstanceId}/replicate #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- +

예시 +

-### DB 인스턴스 승격하기 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 바이너리 로그 목록 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/promote +GET /v4.0/db-instances/{dbInstanceId}/binlogs ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Promote | DB 인스턴스 승격하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceBinLog.List | 바이너리 로그 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| binLogs | Body | Array | BinLog 파일 목록 | +| binLogs.binLogFileName | Body | String | BinLog 파일 이름 | +| binLogs.binLogFileSize | Body | Number | BinLog 파일 크기 (Byte) | +| binLogs.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "binLogs": [ + { + "binLogFileName": "binLogFileName-example", + "binLogFileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
--- -### DB 인스턴스 재구축하기 +### 바이너리 로그 삭제 ```http -POST /v4.0/db-instances/{dbInstanceId}/rebuild +POST /v4.0/db-instances/{dbInstanceId}/binlogs/purge ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Rebuild | DB 인스턴스 재구축하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceBinLog.Purge | 바이너리 로그 삭제 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| lastBinLogFileName | Body | String | O | 삭제할 마지막 BinLog 파일 이름 (해당 파일 직전까지 삭제됨) | + +
예시 +

+ +```json +{ + "lastBinLogFileName": "mysql-bin.000010" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 복원 정보 조회 +### 인증서 파일 목록 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/restoration-info +GET /v4.0/db-instances/{dbInstanceId}/certificates ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceCertificate.List | 인증서 파일 목록 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------------|------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| oldestRestorableYmdt | Body | DateTime | 가장 오래된 복원 가능한 시각 | -| latestRestorableYmdt | Body | DateTime | 가장 최신의 복원 가능한 시각 | -| restorableBackups | Body | Array | 복원 가능한 백업 목록 | -| restorableBackups.backup | Body | Object | 백업 정보 객체 | -| restorableBackups.backup.backupId | Body | UUID | 백업의 식별자 | -| restorableBackups.backup.backupName | Body | String | 백업 이름 | -| restorableBackups.backup.useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| restorableBackups.backup.backupSize | Body | Number | 백업 크기 | -| restorableBackups.backup.backupType | Body | Enum | 백업 유형
- `AUTO`: 자동
- `MANUAL`: 수동 | -| restorableBackups.backup.backupStatus | Body | Enum | 백업 상태
- `BACKING_UP`: 백업 중인 경우
- `COMPLETED`: 백업이 완료된 경우
- `DELETING`: 백업이 삭제 중인 경우
- `DELETED`: 백업이 삭제된 경우
- `ERROR`: 오류가 발생한 경우 | -| restorableBackups.backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| restorableBackups.backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | -| restorableBackups.backup.dbVersion | Body | String | DB 엔진 유형 | -| restorableBackups.backup.failoverCount | Body | Number | 장애 조치 횟수 | -| restorableBackups.backup.binLogFileName | Body | String | 바이너리 로그 파일명 | -| restorableBackups.backup.binLogPosition | Body | Number | 바이너리 로그 파일 위치 | -| restorableBackups.backup.createdYmdt | Body | DateTime | 백업 생성 일시 | -| restorableBackups.backup.updatedYmdt | Body | DateTime | 백업 갱신 일시 | -| restorableBackups.restorableBinLogs | Body | Array | 해당 백업을 이용하여 복원 가능한 바이너리 로그 이름 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| certificates | Body | Array | 인증서 파일 목록 | +| certificates.fileName | Body | String | 인증서 파일 이름 | +| certificates.certificateType | Body | Enum | 인증서 타입
- CA_FILE
- CERT_FILE
- KEY_FILE | +| certificates.fileSize | Body | Number | 인증서 파일 크기(Byte) | +| certificates.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "certificates": [ + { + "fileName": "fileName-example", + "certificateType": "CA_FILE", + "fileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### 인증서 파일 내보내기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/certificates/upload +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceCertificate.Export | 인증서 파일 내보내기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| certificateTypes | Body | Array | O | 업로드할 인증서 타입 목록 | +| tenantId | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 회원 또는 IAM 멤버 ID | +| password | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 인증서 파일의 경로 | + +
예시 +

+ +```json +{ + "certificateTypes": [], + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" +} +``` +

+
+ +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "oldestRestorableYmdt": "2023-07-09T16:33:33+09:00", - "latestRestorableYmdt": "2023-07-10T15:44:44+09:00", - "restorableBackups": [ - { - "backup": { - "backupId": "145d889a-fe08-474f-8f58-bde576ff96a9", - "backupName": "example-backup-name", - "backupStatus": "COMPLETED", - "dbInstanceId": "dba1be25-9429-4589-9716-7fb6daad7cb9", - "dbInstanceName": "original-db-instance-name", - "dbVersion": "MYSQL_V8028", - "backupType": "MANUAL", - "backupSize": 8299904, - "useBackupLock": true, - "failoverCount": 0, - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 367916037, - "createdYmdt": "2023-07-10T15:44:44+09:00", - "updatedYmdt": "2023-07-10T15:46:07+09:00" - }, - "restorableBinLogs": [ - "mysql-bin.000001" - ] - } - ] + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1336,45 +1567,98 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info --- -### 복원될 마지막 쿼리 조회 +### DB 스키마 목록 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query +GET /v4.0/db-instances/{dbInstanceId}/db-schemas ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceSchema.List | DB 스키마 목록 보기 | -#### 공통 요청 +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSchemas | Body | Array | DB 스키마 목록 | +| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | +| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | +| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- STABLE
- CREATING
- SYNCING
- DELETING
- DELETED | +| dbSchemas.createdYmdt | Body | DateTime | 생성 일시 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSchemas": [ + { + "dbSchemaId": "550e8400-e29b-41d4-a716-446655440000", + "dbSchemaName": "dbSchemaName-example", + "dbSchemaStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|------|----|-----------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restoreType | Query | Enum | O | 복원 타입 종류
- `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
- `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입 | +### DB 스키마 생성하기 -#### restoreType이 `TIMESTAMP`인 경우 +```http +POST /v4.0/db-instances/{dbInstanceId}/db-schemas +``` + +#### 필요 권한 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-------|----------|----|-------------------------------------------| -| restoreYmdt | Query | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceSchema.Create | DB 스키마 생성하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbSchemaName | Body | String | O | DB 스키마 이름
- 최대 길이: `64`
- 영문 시작, 영문/숫자/_ 허용, 1~64자, MySQL 예약어 불가 | + +
예시 +

-#### restoreType이 `BINLOG`인 경우 +```json +{ + "dbSchemaName": "dbSchemaName-example" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------|-------|--------|----|--------------------| -| backupId | Query | UUID | O | 복원에 사용할 백업의 식별자 | -| binLogFileName | Query | String | O | 복원에 사용할 바이너리 로그 이름 | -| binLogPosition | Query | Number | O | 복원에 사용할 바이너리 로그 위치 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|----------|--------------------------------------| -| executedYmdt | Body | DateTime | 쿼리 수행 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| lastQuery | Body | String | 마지막 수행 쿼리 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -1386,8 +1670,7 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query "resultMessage": "SUCCESS", "isSuccessful": true }, - "executedYmdt": "2023-03-17T14:02:29+09:00", - "lastQuery": "INSERT INTO `test`.`test`SET @1='0123'" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1396,213 +1679,153 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query --- -### 복원 +### DB 스키마 삭제하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/restore +DELETE /v4.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Restore | DB 인스턴스 복원하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceSchema.Delete | DB 스키마 삭제하기 | -#### 공통 요청 +#### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restore | Body | Object | O | 복원 정보 객체 | -| restore.restoreType | Body | Enum | O | 복원 타입 종류
- `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
- `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입
- `BACKUP`: 기존에 생성한 백업을 이용한 스냅숏 복원 타입 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 고가용성 사용 시 필수 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| pingType | Body | Enum | X | 고가용성 사용 시 Ping 타입
- 기본값: `INSERT`
- `INSERT`
- `SELECT` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | X | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | X | 서브넷의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a`
- 기본값: 랜덤 선택 | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입
- 예시: `General SSD`
- 기본값: 원본 DB 인스턴스 값 | -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +이 API는 요청 본문을 요구하지 않습니다. -#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbSchemaId | URL | UUID | O | DB 스키마의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|----------|----|------------------------------------------------------------------------------------------------| -| restore.restoreYmdt | Body | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD)
복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능합니다. | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |

예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "TIMESTAMP", - "restoreYmdt": "2023-07-10T15:44:44+09:00" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) +--- -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------------|------|--------|----|--------------------| -| restore.backupId | Body | UUID | O | 복원에 사용할 백업의 식별자 | -| restore.binLog | Body | Object | O | 바이너리 로그 정보 객체 | -| restore.binLog.binLogFileName | Body | String | O | 복원에 사용할 바이너리 로그 이름 | -| restore.binLog.binLogPosition | Body | Number | O | 복원에 사용할 바이너리 로그 위치 | +### DB 사용자 목록 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/db-users +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.List | DB 사용자 목록 보기 | + +#### 요청 -* 바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그를 복원할 수 있습니다. +이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbUsers | Body | Array | DB 사용자 목록 | +| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | +| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | +| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | +| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- STABLE
- CREATING
- UPDATING
- SYNCING
- DELETING
- DELETED | +| dbUsers.createdYmdt | Body | DateTime | 생성 일시 | +| dbUsers.updatedYmdt | Body | DateTime | 수정 일시 | +| dbUsers.authenticationPlugin | Body | Enum | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| dbUsers.tlsOption | Body | Enum | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BINLOG", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36", - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 1234567 - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbUsers": [ + { + "dbUserId": "550e8400-e29b-41d4-a716-446655440000", + "dbUserName": "dbUserName-example", + "host": "host-example", + "authorityType": "CUSTOM", + "dbUserStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" + } + ] } ```

-#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) +--- -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|------|------------------------------|-----------------| -| restore.backupId | Body | UUID | O(restoreType이 `BACKUP`인 경우) | 복원에 사용할 백업의 식별자 | +### DB 사용자 생성하기 +```http +POST /v4.0/db-instances/{dbInstanceId}/db-users +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.Create | DB 사용자 생성하기 | +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| host | Body | String | O | DB 사용자 계정의 호스트명
- 최대 길이: `45` | +| authorityType | Body | Enum | O | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BACKUP", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "host": "host-example", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" } ``` @@ -1611,115 +1834,107 @@ POST /v4.0/db-instances/{dbInstanceId}/restore #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### 오브젝트 스토리지로부터 복원 +### DB 사용자 삭제하기 ```http -POST /v4.0/db-instances/restore-from-obs +DELETE /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------------|-------------------------| -| RDSforMySQL:DbInstance.RestoreFromObs | DB 인스턴스 오브젝트 스토리지로부터 복원 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.Delete | DB 사용자 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|----------------------------------------------------------------------------------------| -| restore | Body | Object | O | 복원 정보 객체 | -| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | -| restore.username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | -| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | -| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| pingType | Body | Enum | X | 고가용성 사용 시 Ping 타입
- 기본값: `INSERT`
- `INSERT`
- `SELECT` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbVersion": "MYSQL_V8028", - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "tenantId":"tenant-id", - "username":"username", - "password":"password", - "targetContainer":"targetContainer", - "objectPath":"objectPath" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 사용자 수정하기 + +```http +PUT /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.Modify | DB 사용자 수정하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| authorityType | Body | Enum | X | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | + +
예시 +

+ +```json +{ + "dbPassword": "dbPassword", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" } ``` @@ -1728,15 +1943,30 @@ POST /v4.0/db-instances/restore-from-obs #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

---- +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` +

+
+ +--- -### DB 인스턴스 삭제 보호 설정 변경하기 +### DB 인스턴스 삭제 보호 설정 변경 ```http PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection @@ -1744,21 +1974,90 @@ PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | DB 인스턴스 삭제 보호 설정 변경 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | + +
예시 +

+ +```json +{ + "useDeletionProtection": false +} +``` + +

+
#### 응답 이 API는 응답 본문을 반환하지 않습니다. +--- + +### DB 인스턴스 강제 재시작하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/force-restart +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.ForceRestart | DB 인스턴스 강제 재시작하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 고가용성 정보 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/high-availability +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 고가용성 정보 보기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| useHighAvailability | Body | Boolean | 고가용성 사용 여부
- 기본값: `false` | +| haStatus | Body | Enum | 고가용성 상태
- CREATED: `생성됨`
- STABLE: `정상`
- PAUSING: `일시 중지 중`
- DISABLE: `정지`
- DISABLE_MASTER_IN_REPLICATION: `마스터 비정상 복제 감지로 인한 고가용성 중단`
- DISABLE_MHA_PROCESS: `고가용성 프로세스 중단`
- DISABLE_REPLICATION_STOP: `복제 중단으로 인한 고가용성 중단`
- DISABLE_REPLICATION_DELAY: `복제 지연으로 인한 고가용성 중단`
- FAILOVER_STARTED: `장애 조치 시작`
- FAILOVER_FAILED: `장애 조치 실패`
- FAILOVER_COMPLETED: `장애 조치 완료`
- DELETED: `삭제됨`
- PAUSED: `일시 중지`
- PAUSED_DUE_TO_TASK: `작업으로 인한 일시 중지`
- MASTER_FAILURE_DETECTION: `마스터 장애 감지` | +| pingInterval | Body | Number | Ping 간격(초) | +| pingType | Body | String | Ping 방식 | +
예시

@@ -1768,7 +2067,11 @@ PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "useHighAvailability": false, + "haStatus": "CREATED", + "pingInterval": 1, + "pingType": "pingType-example" } ``` @@ -1777,58 +2080,97 @@ PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection --- -### 고가용성 상태 - -| 상태 | 설명 | -|----------------------------------|---------------------------------| -| `CREATED` | 고가용성이 생성된 경우 | -| `STABLE` | 고가용성이 정상인 경우 | -| `PAUSING` | 고가용성이 일시 중지 중인 경우 | -| `PAUSED` | 고가용성이 일시 중지된 경우 | -| `PAUSED_DUE_TO_TASK` | 작업으로 인해 고가용성이 일시 중지된 경우 | -| `DISABLE_MASTER_IN_REPLICATION` | 마스터 비정상 복제 감지로 고가용성이 중단된 경우 | -| `DISABLE_MHA_PROCESS` | 고가용성 프로세스가 중단된 경우 | -| `DISABLE_REPLICATION_STOP` | 복제 중단으로 인해 고가용성이 중단된 경우 | -| `DISABLE_REPLICATION_DELAY` | 복제 지연으로 인해 고가용성이 중단된 경우 | -| `MASTER_FAILURE_DETECTION` | 마스터 장애가 감지된 경우 | -| `FAILOVER_STARTED` | 장애 조치가 시작된 경우 | -| `FAILOVER_FAILED` | 장애 조치가 실패한 경우 | -| `FAILOVER_COMPLETED` | 장애 조치가 완료된 경우 | -| `DELETED` | 고가용성이 삭제된 경우 | +### 고가용성 수정하기 + +```http +PUT /v4.0/db-instances/{dbInstanceId}/high-availability +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Modify | 고가용성 수정하기 | + +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +

예시 +

+ +```json +{ + "useHighAvailability": false, + "pingInterval": 1 +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### 고가용성 정보 보기 +### 고가용성 일시 중지하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/high-availability +POST /v4.0/db-instances/{dbInstanceId}/high-availability/pause ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Pause | 고가용성 일시 중지하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|---------|---------------------------------------------------------------------------------------------------------------------| -| useHighAvailability | Body | Boolean | 고가용성 사용 여부 | -| haStatus | Body | Enum | 고가용성 상태 | -| pingInterval | Body | Number | Ping 간격(초) | -| pingType | Body | Enum | Ping 타입
- `INSERT`
- `SELECT` | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시 -

```json @@ -1838,47 +2180,58 @@ GET /v4.0/db-instances/{dbInstanceId}/high-availability "resultMessage": "SUCCESS", "isSuccessful": true }, - "useHighAvailability": true, - "haStatus": "STABLE", - "pingInterval": 3, - "pingType": "INSERT" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-
--- -### 고가용성 수정하기 +### 고가용성 복구하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/high-availability +POST /v4.0/db-instances/{dbInstanceId}/high-availability/repair ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|-----------| -| RDSforMySQL:HighAvailability.Modify | 고가용성 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Repair | 고가용성 복구하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|---------|----|------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | -| pingType | Body | Enum | X | 고가용성 사용 시 Ping 타입
- `INSERT`
- `SELECT` | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 고가용성 사용 시 필수값 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- ### 고가용성 다시 시작하기 @@ -1889,142 +2242,190 @@ POST /v4.0/db-instances/{dbInstanceId}/high-availability/resume #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:HighAvailability.Resume | 고가용성 다시 시작하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### 고가용성 일시 중지하기 +
예시 +

-```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/pause +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|----------------------------------------------------|--------------| -| RDSforMySQL:HighAvailability.Pause | 고가용성 일시 중지하기 | - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 고가용성 복구하기 +### 고가용성 분리하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/repair +POST /v4.0/db-instances/{dbInstanceId}/high-availability/split ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|-----------| -| RDSforMySQL:HighAvailability.Repair | 고가용성 복구하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Split | 고가용성 분리하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 고가용성 분리하기 +### 로그 파일 목록 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/split +GET /v4.0/db-instances/{dbInstanceId}/log-files ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|-----------| -| RDSforMySQL:HighAvailability.Split | 고가용성 분리하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceLog.List | 로그 파일 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| logFiles | Body | Array | 로그 파일 목록 | +| logFiles.logFileName | Body | String | 로그 파일 이름 | +| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- ERROR
- BINLOG
- GENERAL
- SLOW_QUERY
- AUDIT
- BACKUP | +| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | +| logFiles.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "logFiles": [ + { + "logFileName": "logFileName-example", + "logFileType": "ERROR", + "logFileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
--- -### 데이터 스토리지 정보 보기 +### 로그 파일 내보내기 ```http -GET /v4.0/db-instances/{dbInstanceId}/storage-info +POST /v4.0/db-instances/{dbInstanceId}/log-files/export ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceLog.Export | 로그 파일 내보내기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| logFileNames | Body | Array | O | 로그 파일 이름 목록 | +| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 회원 또는 IAM 멤버 ID | +| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | + +
예시 +

-| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +```json +{ + "logFileNames": [], + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|---------|--------------------------------------------------------------------------------------| -| storageType | Body | Enum | 데이터 스토리지 타입 | -| storageSize | Body | Number | 데이터 스토리지 크기(GB) | -| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- `DETACHED`: 부착되지 않음
- `ATTACHED`: 부착됨
- `DELETED`: 삭제됨 | -| storageAutoscale | Body | Object | 데이터 스토리지 자동 확장 객체 | -| storageAutoscale.useStorageAutoscale | Body | Boolean | 스토리지 자동 확장 여부 | -| storageAutoscale.threshold | Body | Number | 자동 확장 조건(%) | -| storageAutoscale.maxStorageSize | Body | Number | 자동 확장 최대 크기(GB) | -| storageAutoscale.cooldownTime | Body | Number | 자동 확장 쿨다운 시간(분) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2036,89 +2437,103 @@ GET /v4.0/db-instances/{dbInstanceId}/storage-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageType": "General SSD", - "storageSize": 20, - "storageStatus": "ATTACHED", - "storageAutoscale": { - "useStorageAutoscale": true, - "threshold": 80, - "maxStorageSize": 100, - "cooldownTime": 10 - } + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- --- -### 데이터 스토리지 정보 수정하기 +### 로그 파일 내용 보기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/storage-info +GET /v4.0/db-instances/{dbInstanceId}/log-files/{logFileName} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceLog.Get | 로그 파일 내용 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: 현재값
- 최댓값: `2048` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| logFileName | URL | UUID | O | 로그 파일 이름 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| content | Body | String | 로그 파일 내용 (최대 65533 bytes) | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "content": "content-example" +} +``` + +

+
--- -### 백업 정보 보기 +### DB 인스턴스 유지 관리 목록 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/backup-info +GET /v4.0/db-instances/{dbInstanceId}/maintenances ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.List | DB 인스턴스 유지 관리 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| type | Query | String | X | | +| statuses | Query | String | X | | +| category | Query | String | X | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|---------|----------------| -| backupPeriod | Body | Number | 백업 보관 기간(일) | -| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | -| backupRetryCount | Body | Number | 백업 재시도 횟수 | -| replicationRegion | Body | Enum | 백업 복제 리전 | -| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | -| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 유지 관리 목록 갯수 | +| maintenances | Body | Array | 유지 관리 목록 | +| maintenances.maintenanceId | Body | UUID | 유지 관리 아이디 | +| maintenances.dbInstanceId | Body | UUID | DB 인스턴스 아이디 | +| maintenances.category | Body | Enum | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| maintenances.description | Body | String | 유지 관리 설명 | +| maintenances.type | Body | Enum | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| maintenances.payload | Body | Object | 유지 관리 타입에 따른 Payload | +| maintenances.required | Body | Boolean | 유지 관리 필수 여부 | +| maintenances.deadlineYmdt | Body | DateTime | 유지 관리 강제 적용 일시 | +| maintenances.status | Body | Enum | 유지 관리 상태
- PENDING: `대기`
- READY: `준비`
- RUNNING: `실행 중`
- COMPLETED: `완료`
- FAILED: `실패`
- EXCLUDED: `제외`
- DELETED: `삭제`
- UNKNOWN | +| maintenances.executionType | Body | Enum | 유지 관리 실행 타입
- SCHEDULED: `예약 실행 (유지 관리 기간 자동 실행)`
- MANUAL: `수동 실행 (즉시 실행)`
- FORCED: `강제 실행 (데드라인 초과 자동 실행)` | +| maintenances.addedYmdt | Body | DateTime | 유지 관리 스케줄 등록 일시 | +| maintenances.executionStartedYmdt | Body | DateTime | 유지 관리 시작 일시 | +| maintenances.executionCompletedYmdt | Body | DateTime | 유지 관리 종료 일시 |
예시

@@ -2130,15 +2545,23 @@ GET /v4.0/db-instances/{dbInstanceId}/backup-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "backupPeriod": 1, - "ftwrlWaitTimeout": 1800, - "backupRetryCount": 0, - "replicationRegion": null, - "useBackupLock": false, - "backupSchedules": [ + "totalCounts": 1, + "maintenances": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" + "maintenanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": { + }, + "required": false, + "deadlineYmdt": "2023-12-31T15:00:00+09:00", + "status": "PENDING", + "executionType": "SCHEDULED", + "addedYmdt": "2023-12-31T15:00:00+09:00", + "executionStartedYmdt": "2023-12-31T15:00:00+09:00", + "executionCompletedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -2147,48 +2570,41 @@ GET /v4.0/db-instances/{dbInstanceId}/backup-info

- --- -### 백업 정보 수정하기 +### DB 인스턴스 유지 관리 즉시 실행하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/backup-info +POST /v4.0/db-instances/{dbInstanceId}/maintenances/execute-now ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.Execute | DB 인스턴스 유지 관리 즉시 실행하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------------------------|------|---------|----|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | -| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | -| replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| configId | Body | String | O | 설정 아이디 | +| category | Body | Enum | O | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| description | Body | String | X | 유지 관리 설명 | +| type | Body | Enum | O | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| payload | Body | String | O | 유지 관리 타입에 따른 Payload |
예시

```json { - "backupPeriod": 5, - "useBackupLock": true, - "backupSchedules": [ - { - "backupWndBgnTime": "01:00:00", - "backupWndDuration": "TWO_HOURS" - } - ] + "configId": "configId-example", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": "payload-example" } ``` @@ -2197,138 +2613,134 @@ PUT /v4.0/db-instances/{dbInstanceId}/backup-info #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 네트워크 정보 보기 +### DB 인스턴스 유지 관리 예약하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/network-info +POST /v4.0/db-instances/{dbInstanceId}/maintenances/schedule ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.Update | DB 인스턴스 유지 관리 예약하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------------------------------------------------------------------------------------------------------------------------------| -| availabilityZone | Body | Enum | DB 인스턴스를 생성할 가용성 영역 | -| subnet | Body | Object | 서브넷 객체 | -| subnet.subnetId | Body | UUID | 서브넷의 식별자 | -| subnet.subnetName | Body | UUID | 서브넷을 식별할 수 있는 이름 | -| subnet.subnetCidr | Body | UUID | 서브넷의 CIDR | -| endPoints | Body | Array | 접속 정보 목록 | -| endPoints.domain | Body | String | 도메인 | -| endPoints.ipAddress | Body | String | IP 주소 | -| endPoints.endPointType | Body | Enum | 접속 정보 타입
-`EXTERNAL`: 외부 접속 도메인
-`INTERNAL`: 내부 접속 도메인
-`PUBLIC`: (Deprecated) 외부 접속 도메인
-`PRIVATE`: (Deprecated) 내부 접속 도메인 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| configId | Body | String | O | 설정 아이디 | +| category | Body | Enum | O | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| description | Body | String | X | 유지 관리 설명 | +| type | Body | Enum | O | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| payload | Body | String | O | 유지 관리 타입에 따른 Payload |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "availabilityZone": "kr-pub-a", - "subnet": { - "subnetId": "bd453789-34ae-416c-9f78-05b9e43a46be", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/16" - }, - "endPoints": [ - { - "domain": "ea548a78-d85f-43b4-8ddf-c88d999b9905.internal.kr1.mysql.rds.nhncloudservice.com", - "ipAddress": "192.168.0.2", - "endPointType": "INTERNAL" - } - ] + "configId": "configId-example", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": "payload-example" } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- -### 네트워크 정보 수정하기 +### DB 인스턴스 유지 관리 삭제하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/network-info +DELETE /v4.0/db-instances/{dbInstanceId}/maintenances/{maintenanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.Delete | DB 인스턴스 유지 관리 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| maintenanceId | URL | UUID | O | 유지 관리 아이디 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### DB 사용자 목록 보기 +### 네트워크 정보 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/db-users +GET /v4.0/db-instances/{dbInstanceId}/network-info ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|---------------------| -| RDSforMySQL:DbInstanceUser.List | DB 인스턴스 내 사용자 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 네트워크 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|-----------------------------------------------------------------------------------------------------------------------------| -| dbUsers | Body | Array | DB 사용자 목록 | -| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | -| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | -| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | -| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `UPDATING`: 수정 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbUsers.authenticationPlugin | Body | Enum | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| dbUsers.tlsOption | Body | Enum | TLS Option
- NONE
- SSL
- X509 | -| dbUsers.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbUsers.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| availabilityZone | Body | String | DB 인스턴스를 생성할 가용성 영역 | +| subnet | Body | Object | 서브넷 객체 | +| subnet.subnetId | Body | UUID | 서브넷의 식별자 | +| subnet.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnet.subnetCidr | Body | String | 서브넷의 CIDR | +| endPoints | Body | Array | 접속 정보 목록 | +| endPoints.domain | Body | String | 도메인 | +| endPoints.ipAddress | Body | String | IP 주소 | +| endPoints.endPointType | Body | String | 접속 정보 타입 |
예시

@@ -2340,17 +2752,17 @@ GET /v4.0/db-instances/{dbInstanceId}/db-users "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbUsers": [ + "availabilityZone": "kr-pub-a", + "subnet": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example" + }, + "endPoints": [ { - "dbUserId": "4b3d530b-fd02-4d59-a620-83d019a67bbb", - "dbUserName": "db-user", - "host": "%", - "authorityType": "DDL", - "dbUserStatus": "STABLE", - "authenticationPlugin": "NATIVE", - "tlsOption": "NONE", - "createdYmdt": "2023-03-17T14:02:29+09:00", - "updatedYmdt": "2023-03-17T14:02:31+09:00" + "domain": "domain-example", + "ipAddress": "ipAddress-example", + "endPointType": "endPointType-example" } ] } @@ -2361,45 +2773,31 @@ GET /v4.0/db-instances/{dbInstanceId}/db-users --- -### DB 사용자 생성하기 +### 네트워크 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/db-users +PUT /v4.0/db-instances/{dbInstanceId}/network-info ``` - #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceUser.Create | DB 인스턴스 내 사용자 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | 네트워크 정보 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserName | Body | String | O | DB 사용자 계정 이름
- 최소 길이: `1`
- 최대 길이: `32` | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | -| host | Body | String | O | DB 사용자 계정의 호스트명
- 예시: `1.1.1.%` | -| authorityType | Body | Enum | O | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- 기본값: `NATIVE`(미지원 시 `CACHING_SHA2`)
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | - -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 설정할 수 있습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 |

예시

```json { - "dbUserName": "db-user", - "dbPassword": "password", - "host": "1.1.1.%", - "authorityType": "CRUD", - "authenticationPlugin": "NATIVE", - "tlsOption": "NONE" + "usePublicAccess": false } ``` @@ -2408,117 +2806,222 @@ POST /v4.0/db-instances/{dbInstanceId}/db-users #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 사용자 수정하기 +### DB 인스턴스 승격하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +POST /v4.0/db-instances/{dbInstanceId}/promote ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceUser.Modify | DB 인스턴스 내 사용자 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Promote | DB 인스턴스 승격하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | -| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | -| authorityType | Body | Enum | X | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 수정할 수 있습니다. -> `authenticationPlugin`의 값은 `dbPassword`와 동시에 수정을 해야 합니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "authorityType": "DDL" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### DB 사용자 삭제하기 +### DB 인스턴스 재구축하기 ```http -DELETE /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +POST /v4.0/db-instances/{dbInstanceId}/rebuild ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceUser.Delete | DB 인스턴스 내 사용자 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Rebuild | DB 인스턴스 재구축하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 스키마 목록 보기 +### DB 인스턴스 복제하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/db-schemas +POST /v4.0/db-instances/{dbInstanceId}/replicate ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|---------------------| -| RDSforMySQL:DbInstanceSchema.List | DB 인스턴스 내 스키마 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Replicate | DB 인스턴스 복제하기 | -#### 요청 +#### 공통 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | X | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부 | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | X | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | X | 데이터 스토리지 타입 | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | X | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | + +
예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, + "network": { + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "backup": { + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 0, + "replicationRegion": "KR1", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + } +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|------------------------------------------------------------------------------------------------------| -| dbSchemas | Body | Array | DB 스키마 목록 | -| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | -| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | -| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbSchemas.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2530,14 +3033,7 @@ GET /v4.0/db-instances/{dbInstanceId}/db-schemas "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSchemas": [ - { - "dbSchemaId": "7c9a94b8-86c1-435d-8af2-82a5e9d53fd4", - "dbSchemaName": "schema", - "dbSchemaStatus": "STABLE", - "createdYmdt": "2023-03-20T13:37:45+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2546,93 +3042,111 @@ GET /v4.0/db-instances/{dbInstanceId}/db-schemas --- -### DB 스키마 생성하기 +### DB 인스턴스 재시작하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/db-schemas +POST /v4.0/db-instances/{dbInstanceId}/restart ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceSchema.Create | DB 인스턴스 내 스키마 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Restart | DB 인스턴스 재시작하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|--------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaName | Body | String | O | DB 스키마 이름 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` | -### DB 스키마 삭제하기 +

예시 +

-```http -DELETE /v4.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} +```json +{ + "useOnlineFailover": false, + "executeBackup": false, + "waitReplicationDelay": false, + "useReadOnly": false +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceSchema.Delete | DB 인스턴스 내 스키마 삭제하기 | +

+
-#### 요청 +#### 응답 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaId | URL | UUID | O | DB 스키마의 식별자 | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 로그 파일 목록 보기 +### DB 인스턴스 복원 정보 조회 ```http -GET /v4.0/db-instances/{dbInstanceId}/log-files +GET /v4.0/db-instances/{dbInstanceId}/restoration-info ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|-----------------------| -| RDSforMySQL:DbInstanceLog.List | DB 인스턴스 내 로그 파일 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | DB 인스턴스 복원 정보 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|-------|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileTypes | Query | Array | X | 로그 파일 타입 종류 목록
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| logFiles | Body | Array | 로그 파일 목록 | -| logFiles.logFileName | Body | String | 로그 파일명 | -| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | -| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | -| logFiles.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| oldestRestorableYmdt | Body | DateTime | 가장 오래된 복원 가능한 시각 | +| latestRestorableYmdt | Body | DateTime | 가장 최신의 복원 가능한 시각 | +| restorableBackups | Body | Array | 복원 가능한 백업 목록 | +| restorableBackups.backup | Body | Object | 백업 정보 객체 | +| restorableBackups.backup.backupId | Body | UUID | 백업의 식별자 | +| restorableBackups.backup.backupName | Body | String | 백업 이름 | +| restorableBackups.backup.backupStatus | Body | Enum | 백업 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| restorableBackups.backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| restorableBackups.backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | +| restorableBackups.backup.dbVersion | Body | Enum | DB 엔진 유형 | +| restorableBackups.backup.backupType | Body | Enum | 백업 유형
- AUTO
- MANUAL | +| restorableBackups.backup.backupSize | Body | Number | 백업 크기 | +| restorableBackups.backup.useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | +| restorableBackups.backup.failoverCount | Body | Number | 장애 조치 횟수 | +| restorableBackups.backup.binLogFileName | Body | String | 바이너리 로그 파일 이름 | +| restorableBackups.backup.binLogPosition | Body | Object | 바이너리 로그 파일 위치 | +| restorableBackups.backup.createdYmdt | Body | DateTime | 백업 생성 일시 | +| restorableBackups.backup.updatedYmdt | Body | DateTime | 백업 갱신 일시 | +| restorableBackups.restorableBinLogs | Body | Array | 해당 백업을 이용하여 복원 가능한 바이너리 로그 이름 목록 |
예시

@@ -2644,12 +3158,28 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files "resultMessage": "SUCCESS", "isSuccessful": true }, - "logFiles": [ + "oldestRestorableYmdt": "2023-12-31T15:00:00+09:00", + "latestRestorableYmdt": "2023-12-31T15:00:00+09:00", + "restorableBackups": [ { - "logFileName": "xtra_full.log-20230317", - "logFileType": "BACKUP", - "logFileSize": 4096, - "createdYmdt": "2023-03-17T14:02:29+09:00" + "backup": { + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "dbVersion": "MYSQL_V8036", + "backupType": "AUTO", + "backupSize": 1, + "useBackupLock": false, + "failoverCount": 1, + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + }, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + }, + "restorableBinLogs": [] } ] } @@ -2660,33 +3190,32 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files --- -### 로그 파일 내용 보기 +### 복원될 마지막 쿼리 조회 ```http -GET /v4.0/db-instances/{dbInstanceId}/log-files/{logFileName} +GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|-----------------------| -| RDSforMySQL:DbInstanceLog.Get | DB 인스턴스 내 로그 파일 내용 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 복원될 마지막 쿼리 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|--------|----|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileName | URL | String | O | 로그 파일명 | -| logFileType | Query | Enum | O | 로그 파일 타입 종류
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------|------|--------|---------------------------| -| content | Body | String | 로그 파일 내용(최대 65533 Bytes) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| executedYmdt | Body | DateTime | 쿼리 수행 일시 | +| lastQuery | Body | String | 마지막 수행 쿼리 |

예시

@@ -2698,7 +3227,8 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files/{logFileName} "resultMessage": "SUCCESS", "isSuccessful": true }, - "content": "..." + "executedYmdt": "2023-12-31T15:00:00+09:00", + "lastQuery": "lastQuery-example" } ``` @@ -2707,41 +3237,145 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files/{logFileName} --- -### 로그 파일 내보내기 +### DB 인스턴스 복원 ```http -POST /v4.0/db-instances/{dbInstanceId}/log-files/export +POST /v4.0/db-instances/{dbInstanceId}/restore ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|----------------------| -| RDSforMySQL:DbInstanceLog.Export | DB 인스턴스 내 로그 파일 내보내기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Restore | DB 인스턴스 복원 | -#### 요청 +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자. 미입력 시 원본 인스턴스의 사양이 적용됩니다. | +| dbPort | Body | Number | X | DB 포트 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | X | 스토리지 정보 객체. 미입력 시 원본 인스턴스의 스토리지 설정이 적용됩니다. | +| storage.storageType | Body | Enum | X | 스토리지 타입. 미입력 시 원본 인스턴스의 스토리지 타입이 적용됩니다. | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB). 미입력 시 원본 인스턴스의 스토리지 크기가 적용됩니다.
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| network | Body | Object | X | 네트워크 정보 객체. 미입력 시 원본 인스턴스의 네트워크 설정이 적용됩니다. | +| network.subnetId | Body | UUID | X | 서브넷의 식별자. 미입력 시 원본 인스턴스 값 사용 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역. 미입력 시 랜덤 선택 | +| backup | Body | Object | X | 백업 정보 객체. 미입력 시 원본 인스턴스의 백업 설정이 적용됩니다. | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일). 미입력 시 원본 인스턴스의 백업 보관 기간이 적용됩니다.
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록. 미입력 시 원본 인스턴스의 백업 스케쥴이 적용됩니다. | +| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.restoreType | Body | Enum | O | 복원 타입
- TIMESTAMP: `복원 가능한 시간 이내의 시간을 이용한 시점 복원`
- BINLOG: `복원 가능한 바이너리 로그 위치를 이용한 시점 복원`
- BACKUP: `기존에 생성한 백업을 이용한 스냅숏 복원` | +| restore.binLog.binLogFileName | Body | String | X | 복원에 사용할 바이너리 로그 이름 | +| restore.binLog.binLogPosition | Body | Object | X | 복원에 사용할 바이너리 로그 위치 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자. 미입력 시 원본 인스턴스의 파라미터 그룹이 적용됩니다. | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록. 미입력 시 원본 인스턴스의 보안 그룹이 적용됩니다. | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | + +#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.restoreYmdt | Body | DateTime | X | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | + +복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능합니다. + +#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 | +| restore.binLog | Body | Object | X | 복원에 사용할 바이너리 로그 정보 객체 | + +바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. + +#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|--------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileNames | Body | Array | O | 로그 파일명 목록
- 최소 크기: `1` | -| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 |

예시

```json { - "logFileNames": ["xtra_full.log-20230317"], - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "logs/backup" + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "useHighAvailability": false, + "pingInterval": 3, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "backup": { + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR1", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + }, + "restore": { + "restoreType": "TIMESTAMP", + "binLog": { + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + } + } + }, + "useDefaultNotification": false, + "useSlowQueryAnalysis": true, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDeletionProtection": false } ``` @@ -2750,41 +3384,54 @@ POST /v4.0/db-instances/{dbInstanceId}/log-files/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### BinLog 목록 보기 +### DB 인스턴스 시작하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/binlogs +POST /v4.0/db-instances/{dbInstanceId}/start ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|---------------| -| RDSforMySQL:DbInstanceBinLog.List | BinLog 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Start | DB 인스턴스 시작하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|---------|----|---------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| deletable | Query | Boolean | X | 삭제 가능한 BinLog만 조회할지 여부
- `true`: 마지막 BinLog 제외
- `false`: 전체
- 기본값: `false` | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|----------|-----------------------------------| -| binLogs | Body | Array | BinLog 파일 목록 | -| binLogs.binLogFileName | Body | String | BinLog 파일명 | -| binLogs.binLogFileSize | Body | Number | BinLog 파일 크기(Byte) | -| binLogs.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2796,13 +3443,7 @@ GET /v4.0/db-instances/{dbInstanceId}/binlogs "resultMessage": "SUCCESS", "isSuccessful": true }, - "binLogs": [ - { - "binLogFileName": "mysql-bin.000001", - "binLogFileSize": 1073741824, - "createdYmdt": "2023-03-17T14:02:29+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2811,40 +3452,31 @@ GET /v4.0/db-instances/{dbInstanceId}/binlogs --- -### BinLog 삭제 +### DB 인스턴스 정지하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/binlogs/purge +POST /v4.0/db-instances/{dbInstanceId}/stop ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|------------| -| RDSforMySQL:DbInstanceBinLog.Purge | BinLog 삭제 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Stop | DB 인스턴스 정지하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| lastBinLogFileName | Body | String | O | 삭제할 마지막 BinLog 파일명(해당 파일 직전까지 삭제됩니다) | - -

예시 -

- -```json -{ - "lastBinLogFileName": "mysql-bin.000010" -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2855,7 +3487,8 @@ POST /v4.0/db-instances/{dbInstanceId}/binlogs/purge "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2864,35 +3497,38 @@ POST /v4.0/db-instances/{dbInstanceId}/binlogs/purge --- -### 인증서 파일 목록 보기 +### 스토리지 정보 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/certificates +GET /v4.0/db-instances/{dbInstanceId}/storage-info ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------------|---------------| -| RDSforMySQL:DbInstanceCertificate.List | 인증서 파일 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 스토리지 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|---------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|------------------------------------------------------------------------------| -| certificates | Body | Array | 인증서 파일 목록 | -| certificates.fileName | Body | String | 인증서 파일명 | -| certificates.certificateType | Body | Enum | 인증서 타입
- `CA_FILE`: CA 인증서
- `CERT_FILE`: 인증서
- `KEY_FILE`: 비밀 키 | -| certificates.fileSize | Body | Number | 인증서 파일 크기(Byte) | -| certificates.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageType | Body | String | 데이터 스토리지 타입 | +| storageSize | Body | Number | 데이터 스토리지 크기(GB) | +| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- DELETED: `삭제됨`
- PENDING_DELETION: `삭제 유예됨`
- DELETION_RESERVED: `삭제 예약됨 (스냅샷 정리 대기)`
- DETACHED: `해제됨`
- ATTACHED: `할당됨` | +| storageAutoscale | Body | Object | 데이터 스토리지 자동 확장 객체 | +| storageAutoscale.useStorageAutoscale | Body | Boolean | 스토리지 자동 확장 여부 | +| storageAutoscale.threshold | Body | Number | 자동 확장 조건(%) | +| storageAutoscale.maxStorageSize | Body | Number | 자동 확장 최대 크기(GB) | +| storageAutoscale.cooldownTime | Body | Number | 자동 확장 쿨다운 시간(분) |

예시

@@ -2904,14 +3540,15 @@ GET /v4.0/db-instances/{dbInstanceId}/certificates "resultMessage": "SUCCESS", "isSuccessful": true }, - "certificates": [ - { - "fileName": "ca.pem", - "certificateType": "CA_FILE", - "fileSize": 2048, - "createdYmdt": "2023-03-17T14:02:29+09:00" - } - ] + "storageType": "General SSD", + "storageSize": 1, + "storageStatus": "DELETED", + "storageAutoscale": { + "useStorageAutoscale": false, + "threshold": 1, + "maxStorageSize": 1, + "cooldownTime": 1 + } } ``` @@ -2920,41 +3557,44 @@ GET /v4.0/db-instances/{dbInstanceId}/certificates --- -### 인증서 파일 내보내기 +### 스토리지 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/certificates/upload +PUT /v4.0/db-instances/{dbInstanceId}/storage-info ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------------|-------------| -| RDSforMySQL:DbInstanceCertificate.Export | 인증서 파일 내보내기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | 스토리지 정보 수정하기 | -#### 요청 +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최댓값: `2048` | +| storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|--------|----|------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| certificateTypes | Body | Array | O | 업로드할 인증서 타입
- `CA_FILE`: CA 인증서
- `CERT_FILE`: 인증서
- `KEY_FILE`: 비밀 키 | -| tenantId | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 인증서 파일의 경로 | +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` |

예시

```json { - "certificateTypes": ["CA_FILE", "CERT_FILE", "KEY_FILE"], - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "certificates/" + "storageSize": 1, + "storageAutoscale": { + "useStorageAutoscale": false + } } ``` @@ -2963,10 +3603,27 @@ POST /v4.0/db-instances/{dbInstanceId}/certificates/upload #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- ## 백업 @@ -2981,48 +3638,38 @@ POST /v4.0/db-instances/{dbInstanceId}/certificates/upload | `DELETED` | 백업이 삭제된 경우 | | `ERROR` | 오류가 발생한 경우 | -### 백업 상세 보기 +### 백업 목록 조회 ```http -GET /v4.0/backups/{backupId} +GET /v4.0/backups ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------|----------| -| RDSforMySQL:Backup.Get | 백업 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.List | 백업 목록 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------|-----|------|----|---------| -| backupId | URL | UUID | O | 백업의 식별자 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------|------|----------|-----------------| -| backup | Body | Object | 백업 상세 정보 | -| backup.backupId | Body | UUID | 백업의 식별자 | -| backup.regionCode | Body | Enum | 리전 코드 | -| backup.backupName | Body | String | 백업을 식별할 수 있는 이름 | -| backup.backupStatus | Body | Enum | 백업의 현재 상태 | -| backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | -| backup.dbVersion | Body | Enum | DB 엔진 버전 | -| backup.utilVersion | Body | String | 백업에 사용된 xtrabackup 유틸리티 버전 | -| backup.backupType | Body | Enum | 백업 유형 | -| backup.backupMethodType | Body | Enum | 백업 방식 | -| backup.backupFileType | Body | Enum | 백업 파일 유형 | -| backup.backupSize | Body | Number | 백업의 크기(Byte) | -| backup.isReplicable | Body | Boolean | 복제 가능 여부 | -| backup.binLogFileName | Body | String | 바이너리 로그 파일명 | -| backup.binLogPosition | Body | Number | 바이너리 로그 위치 | -| backup.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| backup.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 백업 목록 수 | +| backups | Body | Array | 백업 목록 | +| backups.backupId | Body | UUID | 백업의 식별자 | +| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | +| backups.backupStatus | Body | Enum | 백업의 현재 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| backups.dbVersion | Body | Enum | DB 엔진 유형 | +| backups.utilVersion | Body | String | 유틸리티 버전 | +| backups.backupType | Body | Enum | 백업 유형
- AUTO
- MANUAL | +| backups.backupSize | Body | Number | 백업의 크기(Byte) | +| backups.createdYmdt | Body | DateTime | 생성 일시 | +| backups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3034,25 +3681,21 @@ GET /v4.0/backups/{backupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "backup": { - "backupId": "0017f136-3e01-4530-94aa-20661afe6632", - "regionCode": "KR1", - "backupName": "backup", - "backupStatus": "COMPLETED", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd", - "dbInstanceName": "db-instance", - "dbVersion": "MYSQL_V8028", - "utilVersion": "8.0.28", - "backupType": "AUTO", - "backupMethodType": "FULL", - "backupFileType": "XTRA_BACKUP", - "backupSize": 4996786, - "isReplicable": true, - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 154, - "createdYmdt": "2023-02-21T00:35:00+09:00", - "updatedYmdt": "2023-02-22T00:35:32+09:00" - } + "totalCounts": 1, + "backups": [ + { + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "utilVersion": "utilVersion-example", + "backupType": "AUTO", + "backupSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -3061,46 +3704,47 @@ GET /v4.0/backups/{backupId} --- -### 백업 목록 조회 +### 백업 생성하기 ```http -GET /v4.0/backups +POST /v4.0/backups ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| -| RDSforMySQL:Backup.List | 백업 목록 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.Create | 백업 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupName | Body | String | O | 백업을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| baseBackupId | Body | UUID | X | 원본 백업의 식별자 | +| dbInstanceId | Body | UUID | X | DB 인스턴스의 식별자 | +| backupMethodType | Body | Enum | O | 백업 방식 타입
- FULL: `전체 백업`
- INCREMENTAL: `증분 백업`
- SNAPSHOT: `스냅숏 백업` | + +

예시 +

+ +```json +{ + "backupName": "backupName", + "baseBackupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "backupMethodType": "FULL" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | X | 조회할 목록의 페이지
- 기본값: 1
- 최솟값: `1` | -| size | Query | Number | X | 조회할 목록의 페이지 크기
- 기본값: 20 | -| backupType | Query | Enum | X | 백업 유형
- `AUTO`: 자동
- `MANUAL`: 수동
- 기본값: 전체 | -| dbInstanceId | Query | UUID | X | 원본 DB 인스턴스의 식별자 | -| dbVersion | Query | Enum | X | DB 엔진 유형 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|-----------------------------------| -| totalCounts | Body | Number | 전체 백업 목록 수 | -| backups | Body | Array | 백업 목록 | -| backups.backupId | Body | UUID | 백업의 식별자 | -| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | -| backups.backupStatus | Body | Enum | 백업의 현재 상태 | -| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| backups.dbVersion | Body | Enum | DB 엔진 유형 | -| backups.utilVersion | Body | String | 백업에 사용된 xtrabackup 유틸리티 버전 | -| backups.backupType | Body | Enum | 백업 유형 | -| backups.backupSize | Body | Number | 백업의 크기(Byte) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -3112,21 +3756,7 @@ GET /v4.0/backups "resultMessage": "SUCCESS", "isSuccessful": true }, - "totalCounts": 1, - "backups": [ - { - "backupId": "0017f136-3e01-4530-94aa-20661afe6632", - "backupName": "backup", - "backupStatus": "COMPLETED", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd", - "dbVersion": "MYSQL_V8028", - "utilVersion": "8.0.28", - "backupType": "AUTO", - "backupSize": 4996786, - "createdYmdt": "2023-02-21T00:35:00+09:00", - "updatedYmdt": "2023-02-22T00:35:32+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3135,96 +3765,130 @@ GET /v4.0/backups --- -### 백업 생성하기 +### 백업 삭제하기 ```http -POST /v4.0/backups +DELETE /v4.0/backups/{backupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|---------| -| RDSforMySQL:Backup.Create | 백업 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.Delete | 백업 삭제하기 | -#### 공통 요청 +#### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|--------|----|--------------------------------------------------------------------------------------| -| backupName | Body | String | O | 백업을 식별할 수 있는 이름 | -| backupMethodType | Body | Enum | O | 백업 방식 타입 종류
- `FULL`: 전체 백업
- `INCREMENTAL`: 증분 백업
- `SNAPSHOT`: 스냅숏 백업 | +이 API는 요청 본문을 요구하지 않습니다. -#### 전체 백업(backupMethodType이 `FULL`인 경우) +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|------|----|--------------| -| dbInstanceId | Body | UUID | O | DB 인스턴스의 식별자 | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |

예시

```json { - "backupName": "example-backup-name", - "backupMethodType": "FULL", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 증분 백업(backupMethodType이 `INCREMENTAL`인 경우) +--- -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|------|----|------------| -| baseBackupId | Body | UUID | O | 기준 백업의 식별자 | +### 백업 단건 조회 +```http +GET /v4.0/backups/{backupId} +``` -
예시 -

+#### 필요 권한 -```json -{ - "backupName": "example-backup-name", - "backupMethodType": "INCREMENTAL", - "baseBackupId": "3ae7914f-9b42-4729-b125-87417b72cf36" -} -``` +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.Get | 백업 단건 조회 | -

-
+#### 요청 +이 API는 요청 본문을 요구하지 않습니다. -#### 스냅숏 백업(backupMethodType이 `SNAPSHOT`인 경우) +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|------|----|--------------| -| dbInstanceId | Body | UUID | O | DB 인스턴스의 식별자 | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| backup | Body | Object | 백업 상세 정보 | +| backup.backupId | Body | UUID | 백업의 식별자 | +| backup.regionCode | Body | Enum | 리전 코드
- KR1: `한국(판교)` | +| backup.backupName | Body | String | 백업을 식별할 수 있는 이름 | +| backup.backupStatus | Body | Enum | 백업의 현재 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | +| backup.dbVersion | Body | Enum | DB 엔진 버전 | +| backup.utilVersion | Body | String | 유틸리티 버전 | +| backup.backupType | Body | Enum | 백업 유형 (AUTO, MANUAL)
- AUTO
- MANUAL | +| backup.backupMethodType | Body | Enum | 백업 방식 (FULL, SNAPSHOT, INCREMENTAL)
- FULL
- INCREMENTAL
- SNAPSHOT | +| backup.backupFileType | Body | Enum | 백업 파일 유형
- XBSTREAM
- TAR_ZSTD
- TAR_LZ4
- TAR_GZIP
- SNAPSHOT | +| backup.backupSize | Body | Number | 백업의 크기(Byte) | +| backup.isReplicable | Body | Boolean | 복제 가능 여부 | +| backup.binLogFileName | Body | String | 바이너리 로그 파일명 | +| backup.binLogPosition | Body | Object | 바이너리 로그 위치 | +| backup.createdYmdt | Body | DateTime | 생성 일시 | +| backup.updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "backupName": "example-backup-name", - "backupMethodType": "SNAPSHOT", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "backup": { + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "regionCode": "KR1", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "dbVersion": "MYSQL_V8036", + "utilVersion": "utilVersion-example", + "backupType": "AUTO", + "backupMethodType": "FULL", + "backupFileType": "XBSTREAM", + "backupSize": 1, + "isReplicable": false, + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + }, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } } ```

- -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- ### 백업 내보내기 @@ -3235,31 +3899,31 @@ POST /v4.0/backups/{backupId}/export #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|---------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Backup.Export | 백업 내보내기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|-----------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 계정 혹은 IAM 회원 ID | +| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 |
예시

```json { - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "backups/backup_file" + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" } ``` @@ -3268,12 +3932,26 @@ POST /v4.0/backups/{backupId}/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | -> [주의] -> 수동 백업의 경우 백업이 수행된 DB 인스턴스가 존재하지 않으면, 백업을 오브젝트 스토리지로 내보낼 수 없습니다. +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -3285,74 +3963,98 @@ POST /v4.0/backups/{backupId}/restore #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Backup.Restore | 백업 복원하기 | -#### 요청 +#### 공통 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------------------------------|------|---------|----|---------------------------------------------------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbPort | Body | Integer | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 ||network|Body|Object|O|네트워크 정보 객체| -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| pingType | Body | Enum | X | 고가용성 사용 시 Ping 타입
- 기본값: `INSERT`
- `INSERT`
- `SELECT` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | X | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | X | 서브넷의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a`
- 기본값: 랜덤 선택 | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입
- 예시: `General SSD`
- 기본값: 원본 DB 인스턴스 값 | -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: 원본 DB 인스턴스 값 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| dbPort | Body | Number | X | DB 포트. 미지정 시 원본 인스턴스 값 사용
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| network | Body | Object | X | 네트워크 정보 객체. 미지정 시 원본 인스턴스 값 사용 | +| network.subnetId | Body | UUID | X | 서브넷의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역. 미지정 시 랜덤 선택 | +| storage | Body | Object | X | 스토리지 정보 객체. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageType | Body | Enum | X | 스토리지 타입. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | X | 백업 정보 객체. 미지정 시 원본 인스턴스 백업 설정 사용 | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수. 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부. 미지정 시 원본 인스턴스 값 사용 | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록. 미지정 시 원본 인스턴스 값 사용 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` |
예시

```json - { - "dbInstanceName": "db-instance-restore", - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbPort": 10000, - "parameterGroupId": "132d383c-38e3-468a-a826-5e9a8fff15d0", + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, "availabilityZone": "kr-pub-a" }, "storage": { "storageType": "General SSD", - "storageSize": 20 + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 0, + "replicationRegion": "KR1", + "useBackupLock": false, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", + "backupWndBgnTime": "backupWndBgnTime-example", "backupWndDuration": "HALF_AN_HOUR" } ] @@ -3365,37 +4067,26 @@ POST /v4.0/backups/{backupId}/restore #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### 백업 삭제하기 +

예시 +

-```http -DELETE /v4.0/backups/{backupId} +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|-------------------------------------------|---------| -| RDSforMySQL:Backup.Delete | 백업 삭제하기 | - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------|-----|------|----|---------| -| backupId | URL | UUID | O | 백업의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -3418,30 +4109,26 @@ GET /v4.0/db-security-groups #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|----------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroup.List | DB 보안 그룹 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | X | 조회할 목록의 페이지
- 기본값: 1
- 최솟값: `1` | -| size | Query | Number | X | 조회할 목록의 페이지 크기
- 기본값: 20 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-----------------------------------| -| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | -| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 DB 보안 그룹 목록 수 | +| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | +| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3453,14 +4140,15 @@ GET /v4.0/db-security-groups "resultMessage": "SUCCESS", "isSuccessful": true }, + "totalCounts": 1, "dbSecurityGroups": [ { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", "progressStatus": "NONE", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2022-02-19T19:18:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3471,48 +4159,65 @@ GET /v4.0/db-security-groups --- -### DB 보안 그룹 상세 보기 +### DB 보안 그룹 생성하기 ```http -GET /v4.0/db-security-groups/{dbSecurityGroupId} +POST /v4.0/db-security-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|----------------| -| RDSforMySQL:DbSecurityGroup.Get | DB 보안 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroup.Create | DB 보안 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` | +| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | +| rules.direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| rules.etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| rules.port | Body | Object | O | 포트 객체 | +| rules.port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| rules.cidr | Body | String | O | CIDR | +| rules.description | Body | String | X | 보안 그룹 규칙에 대한 추가 정보 | + +

예시 +

+ +```json +{ + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example", + "rules": [ + { + "direction": "INGRESS", + "etherType": "IPV4", + "port": { + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 + }, + "cidr": "cidr-example", + "description": "description-example" + } + ] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|----------|--------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| rules | Body | Array | DB 보안 그룹 규칙 목록 | -| rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | -| rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.port | Body | Object | 포트 객체 | -| rules.port.portType | Body | Enum | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다.
- `PORT`: 지정된 포트값으로 설정됩니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | 최소 포트 범위 | -| rules.port.maxPort | Body | Number | 최대 포트 범위 | -| rules.cidr | Body | String | 허용할 트래픽의 원격 소스 | -| rules.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| rules.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 |
예시

@@ -3524,30 +4229,7 @@ GET /v4.0/db-security-groups/{dbSecurityGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSecurityGroup": { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", - "progressStatus": "NONE", - "rules": [ - { - "ruleId": "17c88ef6-95f1-4678-84f9-fee1b22e250d", - "description": "description", - "direction": "INGRESS", - "etherType": "IPV4", - "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 - }, - "cidr": "0.0.0.0/0", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } - ], - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3556,68 +4238,113 @@ GET /v4.0/db-security-groups/{dbSecurityGroupId} --- -### DB 보안 그룹 생성하기 +### DB 보안 그룹 삭제하기 ```http -POST /v4.0/db-security-groups +DELETE /v4.0/db-security-groups/{dbSecurityGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| -| RDSforMySQL:DbSecurityGroup.Create | DB 보안 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroup.Delete | DB 보안 그룹 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### DB 보안 그룹 상세 보기 + +```http +GET /v4.0/db-security-groups/{dbSecurityGroupId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroup.Get | DB 보안 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | -| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | -| rules.description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | -| rules.port | Body | Object | O | 포트 객체 | -| rules.port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 필요하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| rules | Body | Array | DB 보안 그룹 규칙 목록 | +| rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | +| rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | +| rules.direction | Body | Enum | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| rules.etherType | Body | Enum | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| rules.port | Body | Object | 포트 객체 | +| rules.port.portType | Body | Enum | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| rules.port.minPort | Body | Number | 최소 포트 범위 | +| rules.port.maxPort | Body | Number | 최대 포트 범위 | +| rules.cidr | Body | String | CIDR | +| rules.createdYmdt | Body | DateTime | 생성 일시 | +| rules.updatedYmdt | Body | DateTime | 수정 일시 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

```json { - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", + "progressStatus": "NONE", "rules": [ { + "ruleId": "550e8400-e29b-41d4-a716-446655440000", + "description": "description-example", "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 + "portType": "ALL", + "minPort": 1, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } - ] + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|------|---------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | - --- ### DB 보안 그룹 수정하기 @@ -3628,25 +4355,25 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId} #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroup.Modify | DB 보안 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|-----------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description" + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example" } ``` @@ -3657,48 +4384,34 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- - --- -### DB 보안 그룹 삭제하기 +### DB 보안 그룹 규칙 삭제하기 ```http -DELETE /v4.0/db-security-groups/{dbSecurityGroupId} +DELETE /v4.0/db-security-groups/{dbSecurityGroupId}/rules ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| -| RDSforMySQL:DbSecurityGroup.Delete | DB 보안 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroupRule.Delete | DB 보안 그룹 규칙 삭제하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleIds | Query | String | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -3709,7 +4422,8 @@ DELETE /v4.0/db-security-groups/{dbSecurityGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3726,26 +4440,23 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroupRule.Create | DB 보안 그룹 규칙 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 필요하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |

예시

@@ -3755,11 +4466,12 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "PORT", - "minPort": 10000, - "maxPort": 10000 + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -3768,9 +4480,26 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -3782,27 +4511,24 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroupRule.Modify | DB 보안 그룹 규칙 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleId | URL | UUID | O | DB 보안 그룹 규칙의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 필요하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |
예시

@@ -3812,9 +4538,12 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "DB_PORT" + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -3823,38 +4552,26 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -### DB 보안 그룹 규칙 삭제하기 +

예시 +

-```http -DELETE /v4.0/db-security-groups/{dbSecurityGroupId}/rules +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| -| RDSforMySQL:DbSecurityGroupRule.Create | DB 보안 그룹 규칙 삭제하기 | - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|-------|----|---------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleIds | Query | Array | O | DB 보안 그룹 규칙의 식별자 목록 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -3868,30 +4585,28 @@ GET /v4.0/parameter-groups #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:ParameterGroup.List | 파라미터 그룹 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------|-------|------|----|----------| -| dbVersion | Query | Enum | X | DB 엔진 유형 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-------------------------------------------------------------------| -| parameterGroups | Body | Array | 파라미터 그룹 목록 | -| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameterGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 파라미터 그룹 수 | +| parameterGroups | Body | Array | 파라미터 그룹 목록 | +| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroups.parameterGroupType | Body | Enum | 파라미터 그룹 유형
- USER
- ADMIN
- DEFAULT
- CLUSTER_USER | +| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameterGroups.createdYmdt | Body | DateTime | 생성 일시 | +| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3903,15 +4618,17 @@ GET /v4.0/parameter-groups "resultMessage": "SUCCESS", "isSuccessful": true }, + "totalCounts": 1, "parameterGroups": [ { - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "parameterGroupType": "USER", "parameterGroupStatus": "STABLE", - "createdYmdt": "2023-02-31T15:28:17+09:00", - "updatedYmdt": "2023-02-31T15:28:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3920,50 +4637,47 @@ GET /v4.0/parameter-groups

- --- -### 파라미터 그룹 상세 보기 +### 파라미터 그룹 생성하기 ```http -GET /v4.0/parameter-groups/{parameterGroupId} +POST /v4.0/parameter-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMySQL:ParameterGroup.Get | 파라미터 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Create | 파라미터 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` | +| dbVersion | Body | Enum | O | DB 엔진 유형 | + +
예시 +

+ +```json +{ + "parameterGroupName": "parameterGroupName", + "description": "description-example", + "dbVersion": "MYSQL_V8036" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|--------------------------------------------------------------------------------------------------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameters | Body | Array | 파라미터 목록 | -| parameters.parameterId | Body | UUID | 파라미터 식별자 | -| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- `CLIENT`: client
- `MYSQL`: mysql
- `MYSQLD`: mysqld | -| parameters.parameterName | Body | String | 파라미터 이름 | -| parameters.fileParameterName | Body | String | 파라미터 파일명 | -| parameters.value | Body | String | 현재 설정된 값 | -| parameters.defaultValue | Body | String | 기본값 | -| parameters.allowedValue | Body | String | 허용된 값 | -| parameters.updateType | Body | Enum | 수정 타입
- `VARIABLE`: 언제든 수정 가능
- `CONSTANT`: 수정 불가능
- `INIT_VARIABLE`: DB 인스턴스 생성 시에만 수정 가능 | -| parameters.applyType | Body | Enum | 적용 타입
- `SESSION`: 세션 적용
- `FILE`: 설정 파일 적용(재시작 필요)
- `BOTH`: 전체(재시작 필요) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |
예시

@@ -3975,115 +4689,119 @@ GET /v4.0/parameter-groups/{parameterGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", - "parameterGroupStatus": "STABLE", - "parameters": [ - { - "parameterId": "fa040b5e-f29f-46de-8f0d-bba4cb82887a", - "parameterFileGroup": "client", - "parameterName": "socket", - "fileParameterName": "socket", - "value": "/home/tcrds/db/mysql/tmp/mysql.sock", - "defaultValue": "/home/tcrds/db/mysql/tmp/mysql.sock", - "allowedValue": "", - "updateType": "CONSTANT", - "applyType": "BOTH" - } - ], - "createdYmdt": "2023-03-13T11:02:28+09:00", - "updatedYmdt": "2023-03-13T11:02:28+09:00" + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ```

- --- -### 파라미터 그룹 생성하기 +### 파라미터 그룹 삭제하기 ```http -POST /v4.0/parameter-groups +DELETE /v4.0/parameter-groups/{parameterGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Create | 파라미터 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Delete | 파라미터 그룹 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | - -
예시 -

- -```json -{ - "parameterGroupName": "parameter-group", - "dbVersion": "MYSQL_V8028" -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 복사하기 +### 파라미터 그룹 상세 보기 ```http -POST /v4.0/parameter-groups/{parameterGroupId}/copy +GET /v4.0/parameter-groups/{parameterGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Copy | 파라미터 그룹 복사하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Get | 파라미터 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameters | Body | Array | 파라미터 목록 | +| parameters.parameterId | Body | UUID | 파라미터의 식별자 | +| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- CLIENT
- MYSQL
- MYSQLD | +| parameters.parameterName | Body | String | 파라미터 이름 | +| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | +| parameters.value | Body | String | 현재 설정된 값 | +| parameters.defaultValue | Body | String | 기본값 | +| parameters.allowedValue | Body | String | 허용된 값 | +| parameters.updateType | Body | Enum | 수정 타입
- VARIABLE
- CONSTANT
- INIT_VARIABLE | +| parameters.applyType | Body | Enum | 적용 타입
- BOTH
- SESSION
- FILE | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "parameterGroupName": "parameter-group-copy", - "description": "copy" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "parameterGroupStatus": "STABLE", + "parameters": [ + { + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "parameterFileGroup": "CLIENT", + "parameterName": "parameterName-example", + "fileParameterName": "fileParameterName-example", + "value": "value-example", + "defaultValue": "defaultValue-example", + "allowedValue": "allowedValue-example", + "updateType": "VARIABLE", + "applyType": "BOTH" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | - --- ### 파라미터 그룹 수정하기 @@ -4094,24 +4812,25 @@ PUT /v4.0/parameter-groups/{parameterGroupId} #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:ParameterGroup.Modify | 파라미터 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "parameterGroupName": "parameter-group" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -4122,56 +4841,35 @@ PUT /v4.0/parameter-groups/{parameterGroupId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- -### 파라미터 수정하기 +### 파라미터 그룹 복사하기 ```http -PUT /v4.0/parameter-groups/{parameterGroupId}/parameters +POST /v4.0/parameter-groups/{parameterGroupId}/copy ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Modify | 파라미터 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Copy | 파라미터 그룹 복사하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------------|------|--------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | -| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | -| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "modifiedParameters": [ - { - "parameterId": "3abac558-7274-44e1-9f4a-f100f53f67ba", - "value": "0" - } - ] + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -4180,7 +4878,9 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |

예시

@@ -4191,7 +4891,8 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4200,86 +4901,74 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters --- -### 파라미터 그룹 재설정하기 +### 파라미터 수정하기 ```http -PUT /v4.0/parameter-groups/{parameterGroupId}/reset +PUT /v4.0/parameter-groups/{parameterGroupId}/parameters ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|---------------| -| RDSforMySQL:ParameterGroup.Reset | 파라미터 그룹 재설정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Modify | 파라미터 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | +| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | +| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 |

예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } + "modifiedParameters": [ + { + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "value": "value-example" + } + ] } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- -### 파라미터 그룹 삭제하기 +### 파라미터 그룹 재설정하기 ```http -DELETE /v4.0/parameter-groups/{parameterGroupId} +PUT /v4.0/parameter-groups/{parameterGroupId}/reset ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Delete | 파라미터 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Reset | 파라미터 그룹 재설정하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | #### 응답 이 API는 응답 본문을 반환하지 않습니다. -
예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- ## 사용자 그룹 @@ -4292,8 +4981,8 @@ GET /v4.0/user-groups #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:UserGroup.List | 사용자 그룹 목록 보기 | #### 요청 @@ -4302,13 +4991,14 @@ GET /v4.0/user-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|-----------------------------------| -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| userGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 사용자 그룹 목록 수 | +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroups.createdYmdt | Body | DateTime | 생성 일시 | +| userGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4320,12 +5010,13 @@ GET /v4.0/user-groups "resultMessage": "SUCCESS", "isSuccessful": true }, + "totalCounts": 1, "userGroups": [ { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -4336,37 +5027,45 @@ GET /v4.0/user-groups --- -### 사용자 그룹 상세 보기 +### 사용자 그룹 생성하기 ```http -GET /v4.0/user-groups/{userGroupId} +POST /v4.0/user-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|--------------| -| RDSforMySQL:UserGroup.Get | 사용자 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.Create | 사용자 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록 | +| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` | + +

예시 +

+ +```json +{ + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAll": false +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|----------|-----------------------------------------------------------------------------------------------------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
`ENTIRE`: 프로젝트 멤버 전체를 포함하는 사용자 그룹
`INDIVIDUAL_MEMBER`: 특정 프로젝트 멤버를 포함하는 사용자 그룹 | -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 |
예시

@@ -4378,16 +5077,7 @@ GET /v4.0/user-groups/{userGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "userGroupTypeCode": "INDIVIDUAL_MEMBER", - "members": [ - { - "memberId": "1321e759-2ef3-4b85-9921-b13e918b24b5" - } - ], - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" + "userGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4396,96 +5086,63 @@ GET /v4.0/user-groups/{userGroupId} --- -### 사용자 그룹 생성하기 +### 사용자 그룹 삭제하기 ```http -POST /v4.0/user-groups +DELETE /v4.0/user-groups/{userGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMySQL:UserGroup.Create | 사용자 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.Delete | 사용자 그룹 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|-----------------------------------------------------------| -| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록
`selectAll`이 true인 경우 해당 필드 값은 무시됩니다 | -| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 여부
true인 경우 해당 그룹은 전체 멤버를 대상으로 설정됩니다 | - -

예시 -

- -```json -{ - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5" - ] -} -``` - -```json -{ - "userGroupName": "dev-team", - "selectAll": true -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------|------|------|-------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 사용자 그룹 수정하기 +### 사용자 그룹 상세 보기 ```http -PUT /v4.0/user-groups/{userGroupId} +GET /v4.0/user-groups/{userGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMySQL:UserGroup.Modify | 사용자 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.Get | 사용자 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|----------------------------------------------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | -| userGroupName | Body | String | X | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | -| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 여부
true인 경우 해당 그룹은 전체 멤버를 대상으로 설정됩니다 | - -
예시 -

- -```json -{ - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5", - "f9064b09-2b15-442e-a4b0-3a5a2754555e" - ] -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
- ENTIRE
- INDIVIDUAL_MEMBER | +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4496,7 +5153,17 @@ PUT /v4.0/user-groups/{userGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "userGroupTypeCode": "ENTIRE", + "members": [ + { + "memberId": "550e8400-e29b-41d4-a716-446655440000" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -4505,44 +5172,45 @@ PUT /v4.0/user-groups/{userGroupId} --- -### 사용자 그룹 삭제하기 +### 사용자 그룹 수정하기 ```http -DELETE /v4.0/user-groups/{userGroupId} +PUT /v4.0/user-groups/{userGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMySQL:UserGroup.Delete | 사용자 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.Modify | 사용자 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | +| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` |

예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAll": false } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- ## 알림 그룹 @@ -4555,8 +5223,8 @@ GET /v4.0/notification-groups #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:NotificationGroup.List | 알림 그룹 목록 보기 | #### 요청 @@ -4565,16 +5233,16 @@ GET /v4.0/notification-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------------|------|----------|-----------------------------------| -| notificationGroups | Body | Array | 알림 그룹 목록 | -| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | -| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | -| notificationGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroups | Body | Array | 알림 그룹 목록 | +| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | +| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | +| notificationGroups.createdYmdt | Body | DateTime | 생성 일시 | +| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4588,13 +5256,13 @@ GET /v4.0/notification-groups }, "notificationGroups": [ { - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, "notifySms": false, - "isEnabled": true, - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" + "isEnabled": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -4605,43 +5273,51 @@ GET /v4.0/notification-groups --- -### 알림 그룹 상세 보기 +### 알림 그룹 생성하기 ```http -GET /v4.0/notification-groups/{notificationGroupId} +POST /v4.0/notification-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|-------------| -| RDSforMySQL:NotificationGroup.Get | 알림 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.Create | 알림 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | +| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | + +

예시 +

+ +```json +{ + "notificationGroupName": "notificationGroupName", + "notifyEmail": true, + "notifySms": true, + "isEnabled": true, + "dbInstanceIds": [], + "userGroupIds": [] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------------|------|----------|-----------------------------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notifySms | Body | Boolean | SMS 알림 여부 | -| isEnabled | Body | Boolean | 활성화 여부 | -| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 |
예시

@@ -4653,25 +5329,7 @@ GET /v4.0/notification-groups/{notificationGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, - "notifySms": false, - "isEnabled": true, - "dbInstances": [ - { - "dbInstanceId": "ed5cb985-526f-4c54-9ae0-40288593de65", - "dbInstanceName": "database" - } - ], - "userGroups": [ - { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team" - } - ], - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4680,100 +5338,69 @@ GET /v4.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 생성하기 +### 알림 그룹 삭제하기 ```http -POST /v4.0/notification-groups +DELETE /v4.0/notification-groups/{notificationGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMySQL:NotificationGroup.Create | 알림 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.Delete | 알림 그룹 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------------| -| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | -| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | -| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | -| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | - -

예시 -

- -```json -{ - "notificationGroupName": "dev-team-noti", - "notifyEmail": false, - "isEnable": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65" - ], - "userGroupIds": [ - "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0" - ] -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|------|------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 알림 그룹 수정하기 +### 알림 그룹 상세 보기 ```http -PUT /v4.0/notification-groups/{notificationGroupId} +GET /v4.0/notification-groups/{notificationGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMySQL:NotificationGroup.Modify | 알림 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.Get | 알림 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부 | -| notifySms | Body | Boolean | X | SMS 알림 여부 | -| isEnabled | Body | Boolean | X | 활성화 여부 | -| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | - -
예시 -

- -```json -{ - "notifyEmail": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65", - "d51b7da0-682f-47ff-b588-b739f6adc740" - ] -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notifySms | Body | Boolean | SMS 알림 여부 | +| isEnabled | Body | Boolean | 활성화 여부 | +| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4784,7 +5411,26 @@ PUT /v4.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, + "notifySms": false, + "isEnabled": false, + "dbInstances": [ + { + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example" + } + ], + "userGroups": [ + { + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -4793,60 +5439,65 @@ PUT /v4.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 삭제하기 +### 알림 그룹 수정하기 ```http -DELETE /v4.0/notification-groups/{notificationGroupId} +PUT /v4.0/notification-groups/{notificationGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMySQL:NotificationGroup.Delete | 알림 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.Modify | 알림 그룹 수정하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | +| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `false` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `false` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `false` | +| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 |

예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, + "notifySms": false, + "isEnabled": false, + "dbInstanceIds": [], + "userGroupIds": [] } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- ## 모니터링 -### Metric 목록 보기 +### 통계 정보 조회 ```http -GET /v4.0/metrics +GET /v4.0/metric-statistics ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Metric.List | 통계 정보 조회 | #### 요청 @@ -4855,92 +5506,48 @@ GET /v4.0/metrics #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|--------|-----------| -| metrics | Body | Array | Metric 목록 | -| metrics.measureName | Body | Enum | 조회 지표 유형 | -| metrics.unit | Body | String | 측정값 단위 | - -
예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "metrics": [ - { - "measureName": "CPU_USAGE", - "unit": "%" - } - ] -} -``` - -

-
+이 API는 응답 본문을 반환하지 않습니다. --- -### 통계 정보 조회 +### Metric 목록 보기 ```http -GET /v4.0/metric-statistics +GET /v4.0/metrics ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| -| RDSforMySQL:Metric.List | 통계 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Metric.List | Metric 목록 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|----------|----|-----------------------------------| -| dbInstanceId | Query | UUID | O | DB 인스턴스의 식별자 | -| measureNames | Query | Array | O | 조회 지표 목록
- 최소 크기: `1` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| interval | Query | Number | X | 조회 간격 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|-----------|----------| -| metricStatistics | Body | Array | 통계 정보 목록 | -| metricStatistics.measureName | Body | Enum | 측정 항목 유형 | -| metricStatistics.unit | Body | String | 측정값 단위 | -| metricStatistics.values | Body | Array | 측정값 목록 | -| metricStatistics.values.timestamp | Body | Timestamp | 측정 시간 | -| metricStatistics.values.value | Body | Object | 측정값 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| metrics | Body | Array | Metric 목록 | +| metrics.measureName | Body | String | 조회 지표 유형 | +| metrics.unit | Body | String | 측정값 단위 |
예시

```json { - "metricStatistics": [ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "metrics": [ { - "measureName": "MYSQL_STATUS", - "unit": "", - "values": [ - [ - 1679298540, - "1" - ], - [ - 1679298600, - "1" - ], - [ - 1679298660, - "1" - ] - ] + "measureName": "measureName-example", + "unit": "unit-example" } ] } @@ -4966,47 +5573,29 @@ GET /v4.0/metric-statistics | TENANT | 테넌트 | | MONITORING | 모니터링 | -### 이벤트 목록 조회 +### 구독 가능한 이벤트 코드 목록 보기 ```http -GET /v4.0/events +GET /v4.0/event-codes ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------|-----------| -| RDSforMySQL:Event.List | 이벤트 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Event.List | 구독 가능한 이벤트 코드 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | X | 조회할 목록의 페이지
- 기본값: 1
- 최솟값: `1` | -| size | Query | Number | X | 조회할 목록의 페이지 크기
- 기본값: 20 | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| eventCategoryType | Query | Enum | O | 조회할 이벤트 카테고리 유형
- `ALL`: 전체
- `INSTANCE`: DB 인스턴스
- `BACKUP`: 백업
- `DB_SECURITY_GROUP`: DB 보안 그룹
- `TENANT`: 테넌트 | -| sourceId | Query | String | X | 이벤트가 발생한 대상 리소스의 식별자 | -| keyword | Query | String | X | 이벤트 메시지에 포함된 문자열 검색어 | -| ascendingOrder | Query | Enum | X | 이벤트 메시지 정렬 순서
- `ASC`: 오름차순
- `DESC`: 내림차순
- 기본값: `DESC` | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|---------------------------------------| -| totalCounts | Body | Number | 전체 이벤트 목록 수 | -| events | Body | Array | 이벤트 목록 | -| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | -| events.sourceId | Body | String | 이벤트 소스의 식별자 | -| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | -| events.messages | Body | Array | 이벤트 메시지 목록 | -| events.messages.langCode | Body | String | 언어 코드 | -| events.messages.message | Body | String | 이벤트 메시지 | -| events.eventYmdt | Body | DateTime | 이벤트 발생 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventCodes | Body | Array | 이벤트 코드 목록 | +| eventCodes.eventCode | Body | Enum | 이벤트 코드 | +| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT |

예시

@@ -5018,32 +5607,10 @@ GET /v4.0/events "resultMessage": "SUCCESS", "isSuccessful": true }, - "totalCounts": 28, - "events": [ + "eventCodes": [ { - "eventCategoryType": "INSTANCE", - "eventCode": "INSTC_02_01", - "sourceId": "76f00947-356e-4a20-8922-428368cc45ed", - "sourceName": "db-instance", - "messages": [ - { - "langCode": "EN", - "message": "DB instance started" - }, - { - "langCode": "JA", - "message": "DBインスタンスの起動" - }, - { - "langCode": "KO", - "message": "DB 인스턴스 시작" - }, - { - "langCode": "ZH", - "message": "DB instance started" - } - ], - "eventYmdt": "2023-03-20T16:31:59+09:00" + "eventCode": "ENUM_VALUE", + "eventCategoryType": "ALL" } ] } @@ -5054,17 +5621,17 @@ GET /v4.0/events --- -### 구독 가능한 이벤트 코드 목록 보기 +### 이벤트 목록 조회 ```http -GET /v4.0/event-codes +GET /v4.0/events ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------|-----------| -| RDSforMySQL:Event.List | 이벤트 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Event.List | 이벤트 목록 조회 | #### 요청 @@ -5072,11 +5639,18 @@ GET /v4.0/event-codes #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|-------|-------------| -| eventCodes | Body | Array | 이벤트 코드 목록 | -| eventCodes.eventCode | Body | Enum | 이벤트 코드 | -| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 목록 수 | +| events | Body | Array | 이벤트 목록 | +| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | +| events.sourceId | Body | String | 이벤트 소스의 식별자 | +| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | +| events.messages | Body | Array | 이벤트 메세지 목록 | +| events.messages.langCode | Body | Enum | 언어 코드
- KO
- EN
- JA
- ZH | +| events.messages.message | Body | String | 이벤트 메세지 | +| events.eventYmdt | Body | DateTime | 이벤트 발생 일시 |

예시

@@ -5088,10 +5662,20 @@ GET /v4.0/event-codes "resultMessage": "SUCCESS", "isSuccessful": true }, - "eventCodes": [ + "totalCounts": 1, + "events": [ { - "eventCode": "INSTC_05_01", - "eventCategoryType": "INSTANCE" + "eventCategoryType": "ALL", + "eventCode": "ENUM_VALUE", + "sourceId": "sourceId-example", + "sourceName": "sourceName-example", + "messages": [ + { + "langCode": "KO", + "message": "message-example" + } + ], + "eventYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -5112,38 +5696,32 @@ GET /v4.0/event-subscriptions #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:EventSubscription.List | 이벤트 구독 목록 조회 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|------------------------------------------| -| page | Query | Number | X | 조회할 목록의 페이지
- 기본값: 1
- 최솟값: `1` | -| size | Query | Number | X | 조회할 목록의 페이지 크기
- 기본값: 20 | -| eventSubscriptionId | Query | UUID | X | 이벤트 구독의 식별자 | -| eventSubscriptionName | Query | String | X | 이벤트 구독을 식별할 수 있는 이름 | -| userGroupId | Query | UUID | X | 사용자 그룹의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------------------|------|----------|--------------------------| -| totalCounts | Body | Number | 전체 이벤트 구독 목록 수 | -| eventSubscriptions | Body | Array | 이벤트 구독 목록 | -| eventSubscriptions.eventSubscriptionId | Body | UUID | 이벤트의 구독 식별자 | -| eventSubscriptions.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| eventSubscriptions.eventSubscriptionName | Body | String | 이벤트 구독을 식별할 수 있는 이름 | -| eventSubscriptions.enabled | Body | Boolean | 활성화 여부 | -| eventSubscriptions.notifyEmail | Body | Boolean | 이메일 발송 여부 | -| eventSubscriptions.notifySms | Body | Boolean | SMS 발송 여부 | -| eventSubscriptions.eventCodes | Body | Array | 구독할 이벤트 코드 목록 | -| eventSubscriptions.sources | Body | Array | 구독할 이벤트 소스 목록 | -| eventSubscriptions.sources.sourceId | Body | UUID | 이벤트 소스의 식별자 | -| eventSubscriptions.sources.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| eventSubscriptions.userGroupIds | Body | Array | 이벤트 구독 중인 사용자 그룹의 식별자 목록 | -| eventSubscriptions.createdYmdt | Body | DateTime | 생성 일시 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 구독 목록 수 | +| eventSubscriptions | Body | Array | 이벤트 구독 목록 | +| eventSubscriptions.eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 | +| eventSubscriptions.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.eventSubscriptionName | Body | String | 이벤트 구독의 식별할 수 있는 이름 | +| eventSubscriptions.enabled | Body | Boolean | 활성화 여부 | +| eventSubscriptions.notifyEmail | Body | Boolean | 이메일 발송 여부 | +| eventSubscriptions.notifySms | Body | Boolean | SMS 발송 여부 | +| eventSubscriptions.eventCodes | Body | Array | 구독할 이벤트 코드 목록 | +| eventSubscriptions.sources | Body | Array | 구독할 이벤트 소스 목록 | +| eventSubscriptions.sources.sourceId | Body | String | 이벤트 소스의 식별자 | +| eventSubscriptions.sources.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.userGroupIds | Body | Array | 이벤트 구독 중인 사용자 그룹의 식별자 목록 | +| eventSubscriptions.createdYmdt | Body | DateTime | 생성 일시 |

예시

@@ -5158,25 +5736,21 @@ GET /v4.0/event-subscriptions "totalCounts": 1, "eventSubscriptions": [ { - "eventSubscriptionId": "12345678-1234-1234-1234-123456789012", - "eventCategoryType": "INSTANCE", - "eventSubscriptionName": "example-event-subscription", - "enabled": true, - "notifyEmail": true, + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, "notifySms": false, - "eventCodes": [ - "INSTC_05_01" - ], + "eventCodes": [], "sources": [ { - "sourceId": "87654321-4321-4321-4321-210987654321", - "eventCategoryType": "INSTANCE" + "sourceId": "sourceId-example", + "eventCategoryType": "ALL" } ], - "userGroupIds": [ - "11111111-2222-3333-4444-555555555555" - ], - "createdYmdt": "2024-01-01T12:00:00+09:00" + "userGroupIds": [], + "createdYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -5195,47 +5769,43 @@ POST /v4.0/event-subscriptions #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:EventSubscription.Create | 이벤트 구독 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------------------|------|---------|----|-----------------------------------------| -| eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형 | -| eventSubscriptionName | Body | String | O | 이벤트 구독을 식별할 수 있는 이름
- 최대 길이: `100` | -| enabled | Body | Boolean | O | 활성화 여부 | -| notifyEmail | Body | Boolean | O | 이메일 발송 여부 | -| notifySms | Body | Boolean | O | SMS 발송 여부 | -| eventCodes | Body | Array | O | 구독할 이벤트 코드 목록 | -| sources | Body | Array | O | 구독할 이벤트 소스 목록 | -| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | -| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형 | -| userGroupIds | Body | Array | O | 이벤트 구독할 사용자 그룹의 식별자 목록 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | O | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | O | 활성화 여부 | +| notifyEmail | Body | Boolean | O | 이메일 발송 여부 | +| notifySms | Body | Boolean | O | SMS 발송 여부 | +| eventCodes | Body | Array | O | 구독할 이벤트 코드 목록 | +| sources | Body | Array | O | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | O | 이벤트 구독할 사용자 그룹의 식별자 목록 |

예시

```json { - "eventCategoryType": "INSTANCE", - "eventSubscriptionName": "example-event-subscription", - "enabled": true, - "notifyEmail": true, + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, "notifySms": false, - "eventCodes": [ - "INSTC_05_01" - ], + "eventCodes": [], "sources": [ { - "sourceId": "87654321-4321-4321-4321-210987654321", - "eventCategoryType": "INSTANCE" + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" } ], - "userGroupIds": [ - "11111111-2222-3333-4444-555555555555" - ] + "userGroupIds": [] } ``` @@ -5244,9 +5814,9 @@ POST /v4.0/event-subscriptions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------|------|------|-------------| -| eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 |

예시

@@ -5258,7 +5828,7 @@ POST /v4.0/event-subscriptions "resultMessage": "SUCCESS", "isSuccessful": true }, - "eventSubscriptionId": "12345678-1234-1234-1234-123456789012" + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -5267,6 +5837,32 @@ POST /v4.0/event-subscriptions --- +### 이벤트 구독 삭제하기 + +```http +DELETE /v4.0/event-subscriptions/{eventSubscriptionId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:EventSubscription.Delete | 이벤트 구독 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + ### 이벤트 구독 수정하기 ```http @@ -5275,49 +5871,44 @@ PUT /v4.0/event-subscriptions/{eventSubscriptionId} #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:EventSubscription.Modify | 이벤트 구독 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------------------|------|---------|----|-----------------------------------| -| eventSubscriptionId | URL | UUID | O | 이벤트 구독의 식별자 | -| eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형 | -| eventSubscriptionName | Body | String | X | 이벤트 구독을 식별할 수 있는 이름 | -| enabled | Body | Boolean | X | 활성화 여부 | -| notifyEmail | Body | Boolean | X | 이메일 발송 여부 | -| notifySms | Body | Boolean | X | SMS 발송 여부 | -| eventCodes | Body | Array | X | 구독할 이벤트 코드 목록 | -| sources | Body | Array | X | 구독할 이벤트 소스 목록 | -| sources.sourceId | Body | UUID | X | 이벤트 소스의 식별자 | -| sources.eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형 | -| userGroupIds | Body | Array | X | 이벤트 구독할 사용자 그룹의 식별자 목록 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | +| eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | X | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | X | 활성화 여부 | +| notifyEmail | Body | Boolean | X | 이메일 발송 여부 | +| notifySms | Body | Boolean | X | SMS 발송 여부 | +| eventCodes | Body | Array | X | 구독할 이벤트 코드 목록 | +| sources | Body | Array | X | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | X | 이벤트 구독할 사용자 그룹의 식별자 목록 |

예시

```json { - "eventSubscriptionName": "updated-event-subscription", + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", "enabled": false, "notifyEmail": false, - "notifySms": true, - "eventCodes": [ - "INSTC_05_01", - "INSTC_06_01" - ], + "notifySms": false, + "eventCodes": [], "sources": [ { - "sourceId": "87654321-4321-4321-4321-210987654321", - "eventCategoryType": "INSTANCE" + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" } ], - "userGroupIds": [ - "11111111-2222-3333-4444-555555555555", - "22222222-3333-4444-5555-666666666666" - ] + "userGroupIds": [] } ``` @@ -5328,45 +5919,34 @@ PUT /v4.0/event-subscriptions/{eventSubscriptionId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- -### 이벤트 구독 삭제하기 +## 가용성 영역 + +### 가용성 영역 목록 보기 ```http -DELETE /v4.0/event-subscriptions/{eventSubscriptionId} +GET /v4.0/availability-zones ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------------|--------------| -| RDSforMySQL:EventSubscription.Delete | 이벤트 구독 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:AvailabilityZone.List | 가용성 영역 목록 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|-----|------|----|-------------| -| eventSubscriptionId | URL | UUID | O | 이벤트 구독의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| availabilityZones | Body | Array | 가용성 영역 목록 | +| availabilityZones.availabilityZoneName | Body | String | 가용성 영역 이름 | +| availabilityZones.zoneState | Body | Object | 가용성 영역 상태 | +| availabilityZones.zoneState.available | Body | Boolean | 가용성 영역의 사용 가능 여부 |
예시

@@ -5377,7 +5957,15 @@ DELETE /v4.0/event-subscriptions/{eventSubscriptionId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "availabilityZones": [ + { + "availabilityZoneName": "availabilityZoneName-example", + "zoneState": { + "available": false + } + } + ] } ``` @@ -5385,3 +5973,4 @@ DELETE /v4.0/event-subscriptions/{eventSubscriptionId}

--- + diff --git a/ko/api-guide-v4.0-ngoic.md b/ko/api-guide-v4.0-ngoic.md index 230463f2..1a9008f7 100644 --- a/ko/api-guide-v4.0-ngoic.md +++ b/ko/api-guide-v4.0-ngoic.md @@ -1,35 +1,39 @@ -## Database > RDS for MySQL > API 가이드 +## Database > RDS for MySQL > API v4.0 가이드 -| 리전 | 엔드포인트 | -|-----------|-----------------------------------------------| -| 한국(판교) 리전 | https://kr4-rds-mysql-api.ngoic.com | +## RDS for MySQL API 공통 정보 -## 인증 및 권한 +### API 엔드포인트 + +| 리전 | 엔드포인트 | +|------|----------| +| 한국(대구) 리전 | https://ngoic-kr4-rds-proxy.cloud.toastoven.net | -API를 사용하려면 [Public API > API 호출 및 인증](/nhncloud/ko/public-api/api-authentication-ngoic/)을 통해 발급 받은 Bearer 유형의 토큰이 필요합니다. -발급 받은 토큰은 Appkey와 함께 요청 Header에 포함해야 합니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|--------|--------|----|-------------------------------------------------------------| -| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | -| X-NHN-AUTHORIZATION | Header | String | O | Public API로 발급 받은 Bearer 유형 토큰 | +### 인증 및 권한 + +RDS for MySQL은(는) API 호출 시 인증/인가를 위해 User Access Key 토큰을 사용합니다. User Access Key 토큰은 User Access Key를 기반으로 발급되는 Bearer 타입의 일시적 액세스 토큰입니다. User Access Key 토큰 발급 및 사용에 대한 자세한 내용은 [User Access Key 토큰](/nhncloud/ko/public-api/user-access-key-token)을 참고하세요. +발급 받은 토큰은 Appkey와 함께 요청 Header에 포함해야 합니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | +| X-NHN-AUTHORIZATION | Header | String | O | Public API로 발급 받은 Bearer 유형 토큰 | -또한 프로젝트 멤버 역할에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER`로 구분하여 권한을 부여할 수 있습니다. +또한 프로젝트 권한에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER` 역할에는 아래처럼 기본 권한이 부여돼 있고 프로젝트 내 역할 그룹 관리 메뉴에서 필요한 권한만 부여할 수 있습니다. -* `RDS for MySQL ADMIN` 권한은 모든 기능을 사용 가능합니다. -* `RDS for MySQL VIEWER` 권한은 정보를 조회하는 기능만 사용 가능합니다. +* `RDS for MySQL ADMIN` 역할은 API 실행에 필요한 모든 권한이 부여됩니다. +* `RDS for MySQL VIEWER` 역할은 정보를 조회하는 권한만 부여됩니다. * DB 인스턴스를 생성, 수정, 삭제하거나, DB 인스턴스를 대상으로 하는 어떠한 기능도 사용할 수 없습니다. - * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용 가능합니다. + * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용할 수 있습니다. API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같은 오류가 발생합니다. -| resultCode | resultMessage | 설명 | -|------------|---------------|-------------| -| 80401 | Unauthorized | 인증에 실패했습니다. | -| 80403 | Forbidden | 권한이 없습니다. | +| resultCode | resultMessage | 설명 | +|------------|---------------|-----| +| 80401 | Unauthorized | 인증에 실패했습니다. | +| 80403 | Forbidden | 권한이 없습니다. | -## 응답 공통 정보 +### 응답 공통 정보 모든 API 요청에 '200 OK'로 응답합니다. 자세한 응답 결과는 응답 본문의 헤더를 참고합니다. @@ -45,54 +49,58 @@ API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같 ``` #### 필드 -| 이름 | 형식 | 설명 | -|---------------|---------|-----------------------------------------| -| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | -| resultMessage | String | 결과 메시지 | -| isSuccessful | Boolean | 성공 여부 | - - -## DB 엔진 유형 - -| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 | -|--------------|----------|-----------------|--------| -| MYSQL\_V5633 | X | X | NATIVE | -| MYSQL\_V5715 | O | O | NATIVE | -| MYSQL\_V5719 | O | O | NATIVE | -| MYSQL\_V5726 | O | O | NATIVE | -| MYSQL\_V5731 | X | X | NATIVE | -| MYSQL\_V5733 | O | X | NATIVE, SHA256 | -| MYSQL\_V5737 | O | O | NATIVE, SHA256 | -| MYSQL\_V8018 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8023 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8028 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8032 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8033 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8034 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8405 | O | O | CACHING_SHA2 | +| 이름 | 형식 | 설명 | +|-----|-----|-----| +| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | +| resultMessage | String | 결과 메시지 | +| isSuccessful | Boolean | 성공 여부 | + +### DB 엔진 유형 + +| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 | +|------------|----------|------------------|------------| +| MYSQL_V5633 | X | X | NATIVE | +| MYSQL_V5715 | O | O | NATIVE | +| MYSQL_V5719 | O | O | NATIVE | +| MYSQL_V5726 | O | O | NATIVE | +| MYSQL_V5731 | X | X | NATIVE | +| MYSQL_V5733 | O | X | NATIVE, SHA256 | +| MYSQL_V5737 | O | O | NATIVE, SHA256 | +| MYSQL_V8018 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8023 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8028 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8032 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8033 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8034 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8044 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8045 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8405 | O | O | CACHING_SHA2 | +| MYSQL_V8406 | O | O | CACHING_SHA2 | +| MYSQL_V8407 | O | O | CACHING_SHA2 | +| MYSQL_V8408 | O | O | CACHING_SHA2 | * ENUM 타입의 dbVersion 필드에 대해 해당 값을 사용할 수 있습니다. * 버전에 따라 생성 또는 복원이 불가능한 경우가 있을 수 있습니다. ## 프로젝트 정보 -### 리전 목록 보기 +### 프로젝트 멤버 목록 보기 ```http -GET /v4.0/project/regions +GET /v4.0/project/members ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|------------| -| RDSforMySQL:Project.Get | 프로젝트 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Project.Get | 프로젝트 멤버 목록 보기 | #### 요청 @@ -100,11 +108,13 @@ GET /v4.0/project/regions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------|------|---------|----------------------------------------------------------------------------| -| regions | Body | Array | 리전 목록 | -| regions.regionCode | Body | Enum | 리전 코드
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| members.memberName | Body | String | 프로젝트 멤버의 이름 | +| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | +| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 |
예시

@@ -116,38 +126,33 @@ GET /v4.0/project/regions "resultMessage": "SUCCESS", "isSuccessful": true }, - "regions": [ - { - "regionCode": "KR1", - "isEnabled": true - }, - { - "regionCode": "KR2", - "isEnabled": true - }, + "members": [ { - "regionCode": "JP1", - "isEnabled": true + "memberId": "550e8400-e29b-41d4-a716-446655440000", + "memberName": "memberName-example", + "emailAddress": "emailAddress-example", + "phoneNumber": "phoneNumber-example" } ] } ``` +

--- -### 프로젝트 멤버 목록 보기 +### 리전 목록 보기 ```http -GET /v4.0/project/members +GET /v4.0/project/regions ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|------------| -| RDSforMySQL:Project.Get | 프로젝트 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Project.Get | 리전 목록 보기 | #### 요청 @@ -155,13 +160,11 @@ GET /v4.0/project/members #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|--------|-----------------| -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| members.memberName | Body | String | 프로젝트 멤버의 이름 | -| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | -| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| regions | Body | Array | 리전 목록 | +| regions.regionCode | Body | Enum | 리전 코드
- KR4: `한국(대구)` | +| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 |
예시

@@ -173,12 +176,10 @@ GET /v4.0/project/members "resultMessage": "SUCCESS", "isSuccessful": true }, - "members": [ + "regions": [ { - "memberId": "1b1d3627-507a-49ea-8cb7-c86dfa9caa58", - "memberName": "홍길동", - "emailAddress": "gildong.hong@nhn.com", - "phoneNumber": "+821012345678" + "regionCode": "KR4", + "isEnabled": false } ] } @@ -199,8 +200,8 @@ GET /v4.0/db-flavors #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbFlavor.List | DB 인스턴스 사양 목록 보기 | #### 요청 @@ -209,13 +210,13 @@ GET /v4.0/db-flavors #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------| -| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | -| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | -| dbFlavors.ram | Body | Number | 메모리 용량(MB) | -| dbFlavors.vcpus | Body | Number | CPU 코어 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | +| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | +| dbFlavors.ram | Body | Number | 메모리 용량(MB) | +| dbFlavors.vcpus | Body | Number | CPU 코어 수 |

예시

@@ -229,9 +230,9 @@ GET /v4.0/db-flavors }, "dbFlavors": [ { - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbFlavorName": "m2.c1m2", - "ram": 2048, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbFlavorName": "dbFlavorName-example", + "ram": 1, "vcpus": 1 } ] @@ -253,8 +254,8 @@ GET /v4.0/network/subnets #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------|-----------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Network.List | 서브넷 목록 보기 | #### 요청 @@ -263,14 +264,14 @@ GET /v4.0/network/subnets #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|---------|------------------| -| subnets | Body | Array | 서브넷 목록 | -| subnets.subnetId | Body | UUID | 서브넷의 식별자 | -| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | -| subnets.subnetCidr | Body | String | 서브넷의 CIDR | -| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | -| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| subnets | Body | Array | 서브넷 목록 | +| subnets.subnetId | Body | UUID | 서브넷의 식별자 | +| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnets.subnetCidr | Body | String | 서브넷의 CIDR | +| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | +| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 |

예시

@@ -284,11 +285,11 @@ GET /v4.0/network/subnets }, "subnets": [ { - "subnetId": "1b2a9b23-0725-4b92-8c78-35db66b8ad9f", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/24", - "usingGateway": true, - "availableIpCount": 240 + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example", + "usingGateway": false, + "availableIpCount": 1 } ] } @@ -309,8 +310,8 @@ GET /v4.0/db-versions #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbVersion.List | DB 엔진 목록 보기 | #### 요청 @@ -319,11 +320,11 @@ GET /v4.0/db-versions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|---------|-----------------------| -| dbVersions | Body | Array | DB 엔진 목록 | -| dbVersions.dbVersion | Body | String | DB 엔진 유형 | -| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbVersions | Body | Array | DB 엔진 목록 | +| dbVersions.dbVersion | Body | String | DB 엔진 유형 | +| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | | dbVersions.restorableFromObs | Body | Boolean | 오브젝트 스토리지로부터 복원 가능 여부 |

예시 @@ -338,9 +339,9 @@ GET /v4.0/db-versions }, "dbVersions": [ { - "dbVersion": "MYSQL_V8028", - "dbVersionName": "MySQL 8.0.28", - "restorableFromObs": true + "dbVersion": "MYSQL_V8036", + "dbVersionName": "dbVersionName-example", + "restorableFromObs": false } ] } @@ -353,7 +354,7 @@ GET /v4.0/db-versions ## 데이터 스토리지 -### 데이터 스토리지 타입 목록 보기 +### 스토리지 타입 목록 보기 ```http GET /v4.0/storage-types @@ -361,9 +362,9 @@ GET /v4.0/storage-types #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------|-------------------| -| RDSforMySQL:Storage.List | 데이터 스토리지 타입 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Storage.List | 스토리지 타입 목록 보기 | #### 요청 @@ -371,9 +372,9 @@ GET /v4.0/storage-types #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|-------|----------------| -| storageTypes | Body | Array | 데이터 스토리지 타입 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageTypes | Body | Array | 스토리지 타입 목록 |
예시

@@ -385,10 +386,7 @@ GET /v4.0/storage-types "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageTypes": [ - "General SSD", - "General HDD" - ] + "storageTypes": [] } ``` @@ -424,29 +422,29 @@ GET /v4.0/jobs/{jobId} #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Job.Get | 작업 정보 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------|-----|------|----|---------| -| jobId | URL | UUID | O | 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| jobId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------|------|----------|-----------------------------------| -| jobId | Body | UUID | 작업의 식별자 | -| jobStatus | Body | Enum | 작업의 현재 상태 | -| resourceRelations | Body | Array | 연관 리소스 목록 | -| resourceRelations.resourceType | Body | Enum | 연관 리소스 유형 | -| resourceRelations.resourceId | Body | UUID | 연관 리소스의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | +| jobStatus | Body | Enum | 작업의 현재 상태
- DELETED
- CANNOT_PROGRESS
- FAILED
- ERROR
- CANCELED
- INTERRUPTED
- COMPLETED
- RUNNING
- PREPARING
- READY
- CREATED
- FAIL_TO_READY
- REGISTERED
- FAIL_TO_REGISTER
- WAIT_TO_REGISTER | +| resourceRelations | Body | Array | 연관 리소스 목록 | +| resourceRelations.resourceType | Body | String | 연관 리소스 유형 | +| resourceRelations.resourceId | Body | String | 연관 리소스의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -458,16 +456,16 @@ GET /v4.0/jobs/{jobId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "jobId": "0ddb042c-5af6-43fb-a914-f4dd0540eb7c", - "jobStatus": "RUNNING", + "jobId": "550e8400-e29b-41d4-a716-446655440000", + "jobStatus": "DELETED", "resourceRelations": [ { - "resourceType": "DB_INSTANCE", - "resourceId": "56b39dcf-65eb-47ec-9d4f-09f160ba2266" + "resourceType": "resourceType-example", + "resourceId": "resourceId-example" } ], - "createdYmdt": "2023-02-22T20:47:12+09:00", - "updatedYmdt": "2023-02-22T20:49:46+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -486,8 +484,8 @@ GET /v4.0/db-instance-groups #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstanceGroup.List | DB 인스턴스 그룹 목록 보기 | #### 요청 @@ -496,13 +494,13 @@ GET /v4.0/db-instance-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------|------|----------|--------------------------------------------------------------------------| -| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | -| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | +| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -516,10 +514,10 @@ GET /v4.0/db-instance-groups }, "dbInstanceGroups": [ { - "dbInstanceGroupId": "05de0746-89fd-49c8-94f9-9c5b1df97009", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", - "createdYmdt": "2023-02-13T17:35:20+09:00", - "updatedYmdt": "2023-02-13T17:35:20+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -538,30 +536,30 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstanceGroup.Get | DB 인스턴스 그룹 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|-----------------| -| dbInstanceGroupId | URL | UUID | O | DB 인스턴스 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -573,17 +571,17 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbInstanceGroupId": "36617a8e-0df8-4b16-b6ea-6306019e95da", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", "dbInstances": [ { - "dbInstanceId": "6d2db0ef-fe9b-4ed4-97b1-d97fcb4cf1b8", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE" + "dbInstanceStatus": "BEFORE_CREATE" } ], - "createdYmdt": "2023-03-03T17:38:14+09:00", - "updatedYmdt": "2023-03-03T17:38:14+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -616,8 +614,8 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} | `BACKING_UP` | 백업 중 | | `CANCELING` | 취소 중 | | `CREATING` | 생성 중 | -| `CREATING_SCHEMA` | DB 스키마 생성 중 | -| `CREATING_USER` | 사용자 생성 중 | +| `CREATING_SCHEMA` | DB 스키마 생성 중 | +| `CREATING_USER` | 사용자 생성 중 | | `DELETING` | 삭제 중 | | `DELETING_SCHEMA` | DB 스키마 삭제 중 | | `DELETING_USER` | 사용자 삭제 중 | @@ -636,8 +634,8 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} | `STARTING` | 시작 중 | | `STOPPING` | 정지 중 | | `SYNCING_SCHEMA` | DB 스키마 동기화 중 | -| `SYNCING_USER` | 사용자 동기화 중 | -| `UPDATING_USER` | 사용자 수정 중 | +| `SYNCING_USER` | 사용자 동기화 중 | +| `UPDATING_USER` | 사용자 수정 중 | ### DB 인스턴스 목록 보기 @@ -647,8 +645,8 @@ GET /v4.0/db-instances #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstance.List | DB 인스턴스 목록 보기 | #### 요청 @@ -657,20 +655,20 @@ GET /v4.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstances | Body | Array | DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | -| dbInstances.dbPort | Body | Number | DB 포트 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태 | -| dbInstances.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstances.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstances | Body | Array | DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | +| dbInstances.dbPort | Body | Number | DB 포트 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbInstances.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstances.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -684,17 +682,17 @@ GET /v4.0/db-instances }, "dbInstances": [ { - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", + "dbInstanceStatus": "BEFORE_CREATE", "progressStatus": "NONE", - "createdYmdt": "2023-01-23T12:03:13+09:00", - "updatedYmdt": "2023-02-02T17:20:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -705,51 +703,130 @@ GET /v4.0/db-instances --- -### DB 인스턴스 상세 보기 +### DB 인스턴스 생성하기 ```http -GET /v4.0/db-instances/{dbInstanceId} +POST /v4.0/db-instances ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Create | DB 인스턴스 생성하기 | -#### 요청 +#### 공통 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| authenticationPlugin | Body | Enum | X | 인증 Plugin
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | TLS Option
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 데이터 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | + +

예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE", + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "backup": { + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 1800, + "replicationRegion": "KR4", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + } +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| dbPort | Body | Number | DB 포트 | -| dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| progressStatus | Body | Enum | DB 인스턴스의 현재 작업 진행 상태 | -| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | -| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | -| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | -| useSlowQueryAnalysis | Body | Boolean | Slow query 분석 여부 | -| supportAuthenticationPlugin | Body | Boolean | 인증 플러그인 지원 여부 | -| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | -| needMigration | Body | Boolean | 마이그레이션 필요 여부 | -| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -761,27 +838,7 @@ GET /v4.0/db-instances/{dbInstanceId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", - "progressStatus": "NONE", - "dbFlavorId": "e9ed4ef6-78d7-46fa-ace9-32481e97f3b7", - "parameterGroupId": "b03e8b13-de27-4d04-a488-ff5689589372", - "dbSecurityGroupIds": ["01908c35-d2c9-4852-baf0-17f06ec42c03"], - "notificationGroupIds": ["83a62a33-ddbf-4a04-8653-e54463d5b1ac"], - "useDeletionProtection": false, - "useSlowQueryAnalysis": true, - "supportAuthenticationPlugin": true, - "needToApplyParameterGroup": false, - "needMigration": false, - "supportDbVersionUpgrade": true, - "createdYmdt": "2022-11-23T12:03:13+09:00", - "updatedYmdt": "2022-12-02T17:20:17+09:00" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -790,96 +847,124 @@ GET /v4.0/db-instances/{dbInstanceId} --- -### DB 인스턴스 생성하기 +### 오브젝트 스토리지를 이용한 DB 인스턴스 복원 ```http -POST /v4.0/db-instances +POST /v4.0/db-instances/restore-from-obs ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Create | DB 인스턴스 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.RestoreFromObs | 오브젝트 스토리지를 이용한 DB 인스턴스 복원 | -#### 요청 +#### 공통 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|-------|---------|----|---------------------------------------------------------------------| -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbUserName | Body | String | O | DB 사용자 계정명 | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `16` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄) | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | O | DB 포트 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | +| restore.username | Body | String | O | NHN Cloud 계정 혹은 IAM 멤버 ID | +| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | +| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | +| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` |

예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", - "availabilityZone": "kr-pub-a" - }, + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "dbVersion": "MYSQL_V8036", + "useHighAvailability": false, + "pingInterval": 3, "storage": { "storageType": "General SSD", - "storageSize": 20 + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR4", + "useBackupLock": true, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR" + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" } ] - } + }, + "restore": { + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" + }, + "useDefaultNotification": false, + "useSlowQueryAnalysis": true, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDeletionProtection": false } ``` @@ -888,64 +973,27 @@ POST /v4.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### DB 인스턴스 수정하기 - -```http -PUT /v4.0/db-instances/{dbInstanceId} -``` - -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|------|---------|----|---------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbPort | Body | Number | X | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbVersion | Body | Enum | X | DB 엔진 유형 | -| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -

예시

```json { - "dbInstanceName": "db-instance2", - "description": "description2", - "dbPort": 10001, - "dbSecurityGroupIds": [], - "executeBackup": true + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- ### DB 인스턴스 삭제하기 @@ -956,75 +1004,99 @@ DELETE /v4.0/db-instances/{dbInstanceId} #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstance.Delete | DB 인스턴스 삭제하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| deleteAutoBackup | Body | Boolean | X | 자동 백업 삭제 여부
- 기본값: `false` | -### DB 인스턴스 재시작하기 +
예시 +

-```http -POST /v4.0/db-instances/{dbInstanceId}/restart +```json +{ + "deleteAutoBackup": false +} ``` -#### 필요 권한 +

+
-| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Restart | DB 인스턴스 재시작하기 | +#### 응답 -#### 요청 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### DB 인스턴스 강제 재시작하기 + +### DB 인스턴스 상세 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/force-restart +GET /v4.0/db-instances/{dbInstanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|------------------| -| RDSforMySQL:DbInstance.ForceRestart | DB 인스턴스 강제 재시작하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| dbPort | Body | Number | DB 포트 | +| dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | +| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | +| useSlowQueryAnalysis | Body | Boolean | Slow query 분석 여부 | +| supportAuthenticationPlugin | Body | Boolean | 인증 plugin 지원 여부 | +| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | +| needMigration | Body | Boolean | 마이그레이션 필요 여부 | +| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -1035,135 +1107,222 @@ POST /v4.0/db-instances/{dbInstanceId}/force-restart "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbInstanceType": "MASTER", + "dbInstanceStatus": "BEFORE_CREATE", + "progressStatus": "NONE", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "notificationGroupIds": [], + "useDeletionProtection": false, + "useSlowQueryAnalysis": false, + "supportAuthenticationPlugin": false, + "needToApplyParameterGroup": false, + "needMigration": false, + "supportDbVersionUpgrade": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

- --- -### DB 인스턴스 시작하기 +### DB 인스턴스 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/start +PUT /v4.0/db-instances/{dbInstanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Start | DB 인스턴스 시작하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbPort | Body | Number | X | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbVersion | Body | Enum | X | DB 엔진 버전 코드 | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부 | +| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
- 기본값: `false` | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` | + +
예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbPort": 1, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "useSlowQueryAnalysis": false, + "useDummy": false, + "dbSecurityGroupIds": [], + "executeBackup": false, + "useOnlineFailover": false, + "waitReplicationDelay": false, + "useReadOnly": false +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 인스턴스 정지하기 +### 백업 정보 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/stop +GET /v4.0/db-instances/{dbInstanceId}/backup-info ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Stop | DB 인스턴스 정지하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 백업 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| backupPeriod | Body | Number | 백업 보관 기간(일) | +| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | +| backupRetryCount | Body | Number | 백업 재시도 횟수 | +| replicationRegion | Body | Enum | 백업 복제 리전
- KR4: `한국(대구)` | +| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration
- HALF_AN_HOUR
- ONE_HOUR
- ONE_HOUR_AND_HALF
- TWO_HOURS
- TWO_HOURS_AND_HALF
- THREE_HOURS | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "backupPeriod": 1, + "ftwrlWaitTimeout": 1, + "backupRetryCount": 1, + "replicationRegion": "KR4", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] +} +``` + +

+
--- -### DB 인스턴스 복제하기 +### 백업 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/replicate +PUT /v4.0/db-instances/{dbInstanceId}/backup-info ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Replicate | DB 인스턴스 복제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | 백업 정보 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------------------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbPort | Body | Number | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록
- 기본값: 원본 DB 인스턴스 값 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: 원본 DB 인스턴스 값 | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입
  • 예시: `General SSD`
| -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄)
- 기본값: 원본 DB 인스턴스 값 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각
- 예시: `00:00:00`
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간
- 기본값: 원본 DB 인스턴스 값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json { - "dbInstanceName": "db-instance-replicate", - "description": "description", - "dbPort": 11000, - "network": { - "availabilityZone": "kr-pub-a" - }, - "storage": { - "stroageSize": 100 - } + "backupPeriod": 0, + "ftwrlWaitTimeout": 0, + "backupRetryCount": 0, + "replicationRegion": "KR4", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] } ``` @@ -1172,147 +1331,991 @@ POST /v4.0/db-instances/{dbInstanceId}/replicate #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### DB 인스턴스 승격하기 +

예시 +

-```http -POST /v4.0/db-instances/{dbInstanceId}/promote +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 바이너리 로그 목록 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/binlogs +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceBinLog.List | 바이너리 로그 목록 보기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| binLogs | Body | Array | BinLog 파일 목록 | +| binLogs.binLogFileName | Body | String | BinLog 파일 이름 | +| binLogs.binLogFileSize | Body | Number | BinLog 파일 크기 (Byte) | +| binLogs.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "binLogs": [ + { + "binLogFileName": "binLogFileName-example", + "binLogFileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### 바이너리 로그 삭제 + +```http +POST /v4.0/db-instances/{dbInstanceId}/binlogs/purge +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceBinLog.Purge | 바이너리 로그 삭제 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| lastBinLogFileName | Body | String | O | 삭제할 마지막 BinLog 파일 이름 (해당 파일 직전까지 삭제됨) | + +
예시 +

+ +```json +{ + "lastBinLogFileName": "mysql-bin.000010" +} +``` + +

+
+ +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 인증서 파일 목록 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/certificates +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceCertificate.List | 인증서 파일 목록 보기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| certificates | Body | Array | 인증서 파일 목록 | +| certificates.fileName | Body | String | 인증서 파일 이름 | +| certificates.certificateType | Body | Enum | 인증서 타입
- CA_FILE
- CERT_FILE
- KEY_FILE | +| certificates.fileSize | Body | Number | 인증서 파일 크기(Byte) | +| certificates.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "certificates": [ + { + "fileName": "fileName-example", + "certificateType": "CA_FILE", + "fileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### 인증서 파일 내보내기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/certificates/upload +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceCertificate.Export | 인증서 파일 내보내기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| certificateTypes | Body | Array | O | 업로드할 인증서 타입 목록 | +| tenantId | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 회원 또는 IAM 멤버 ID | +| password | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 인증서 파일의 경로 | + +
예시 +

+ +```json +{ + "certificateTypes": [], + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 스키마 목록 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/db-schemas +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceSchema.List | DB 스키마 목록 보기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSchemas | Body | Array | DB 스키마 목록 | +| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | +| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | +| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- STABLE
- CREATING
- SYNCING
- DELETING
- DELETED | +| dbSchemas.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSchemas": [ + { + "dbSchemaId": "550e8400-e29b-41d4-a716-446655440000", + "dbSchemaName": "dbSchemaName-example", + "dbSchemaStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### DB 스키마 생성하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/db-schemas +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceSchema.Create | DB 스키마 생성하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbSchemaName | Body | String | O | DB 스키마 이름
- 최대 길이: `64`
- 영문 시작, 영문/숫자/_ 허용, 1~64자, MySQL 예약어 불가 | + +
예시 +

+ +```json +{ + "dbSchemaName": "dbSchemaName-example" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 스키마 삭제하기 + +```http +DELETE /v4.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceSchema.Delete | DB 스키마 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbSchemaId | URL | UUID | O | DB 스키마의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 사용자 목록 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/db-users +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.List | DB 사용자 목록 보기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbUsers | Body | Array | DB 사용자 목록 | +| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | +| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | +| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | +| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- STABLE
- CREATING
- UPDATING
- SYNCING
- DELETING
- DELETED | +| dbUsers.createdYmdt | Body | DateTime | 생성 일시 | +| dbUsers.updatedYmdt | Body | DateTime | 수정 일시 | +| dbUsers.authenticationPlugin | Body | Enum | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| dbUsers.tlsOption | Body | Enum | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbUsers": [ + { + "dbUserId": "550e8400-e29b-41d4-a716-446655440000", + "dbUserName": "dbUserName-example", + "host": "host-example", + "authorityType": "CUSTOM", + "dbUserStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" + } + ] +} +``` + +

+
+ +--- + +### DB 사용자 생성하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/db-users +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.Create | DB 사용자 생성하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| host | Body | String | O | DB 사용자 계정의 호스트명
- 최대 길이: `45` | +| authorityType | Body | Enum | O | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | + +
예시 +

+ +```json +{ + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "host": "host-example", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 사용자 삭제하기 + +```http +DELETE /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.Delete | DB 사용자 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserId | URL | UUID | O | DB 사용자의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 사용자 수정하기 + +```http +PUT /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.Modify | DB 사용자 수정하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| authorityType | Body | Enum | X | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | + +
예시 +

+ +```json +{ + "dbPassword": "dbPassword", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 인스턴스 삭제 보호 설정 변경 + +```http +PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | DB 인스턴스 삭제 보호 설정 변경 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | + +
예시 +

+ +```json +{ + "useDeletionProtection": false +} +``` + +

+
+ +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### DB 인스턴스 강제 재시작하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/force-restart ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Promote | DB 인스턴스 승격하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.ForceRestart | DB 인스턴스 강제 재시작하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 고가용성 정보 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/high-availability +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 고가용성 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| useHighAvailability | Body | Boolean | 고가용성 사용 여부
- 기본값: `false` | +| haStatus | Body | Enum | 고가용성 상태
- CREATED: `생성됨`
- STABLE: `정상`
- PAUSING: `일시 중지 중`
- DISABLE: `정지`
- DISABLE_MASTER_IN_REPLICATION: `마스터 비정상 복제 감지로 인한 고가용성 중단`
- DISABLE_MHA_PROCESS: `고가용성 프로세스 중단`
- DISABLE_REPLICATION_STOP: `복제 중단으로 인한 고가용성 중단`
- DISABLE_REPLICATION_DELAY: `복제 지연으로 인한 고가용성 중단`
- FAILOVER_STARTED: `장애 조치 시작`
- FAILOVER_FAILED: `장애 조치 실패`
- FAILOVER_COMPLETED: `장애 조치 완료`
- DELETED: `삭제됨`
- PAUSED: `일시 중지`
- PAUSED_DUE_TO_TASK: `작업으로 인한 일시 중지`
- MASTER_FAILURE_DETECTION: `마스터 장애 감지` | +| pingInterval | Body | Number | Ping 간격(초) | +| pingType | Body | String | Ping 방식 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "useHighAvailability": false, + "haStatus": "CREATED", + "pingInterval": 1, + "pingType": "pingType-example" +} +``` + +

+
+ +--- + +### 고가용성 수정하기 + +```http +PUT /v4.0/db-instances/{dbInstanceId}/high-availability +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Modify | 고가용성 수정하기 | + +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +
예시 +

+ +```json +{ + "useHighAvailability": false, + "pingInterval": 1 +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 인스턴스 재구축하기 +### 고가용성 일시 중지하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/rebuild +POST /v4.0/db-instances/{dbInstanceId}/high-availability/pause ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Rebuild | DB 인스턴스 재구축하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Pause | 고가용성 일시 중지하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 복원 정보 조회 +### 고가용성 복구하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/restoration-info +POST /v4.0/db-instances/{dbInstanceId}/high-availability/repair ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Repair | 고가용성 복구하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 다시 시작하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/high-availability/resume +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Resume | 고가용성 다시 시작하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------------|------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| oldestRestorableYmdt | Body | DateTime | 가장 오래된 복원 가능한 시각 | -| latestRestorableYmdt | Body | DateTime | 가장 최신의 복원 가능한 시각 | -| restorableBackups | Body | Array | 복원 가능한 백업 목록 | -| restorableBackups.backup | Body | Object | 백업 정보 객체 | -| restorableBackups.backup.backupId | Body | UUID | 백업의 식별자 | -| restorableBackups.backup.backupName | Body | String | 백업 이름 | -| restorableBackups.backup.useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| restorableBackups.backup.backupSize | Body | Number | 백업 크기 | -| restorableBackups.backup.backupType | Body | Enum | 백업 유형
  • `AUTO`: 자동
  • `MANUAL`: 수동
| -| restorableBackups.backup.backupStatus | Body | Enum | 백업 상태
  • `BACKING_UP`: 백업 중인 경우
  • `COMPLETED`: 백업이 완료된 경우
  • `DELETING`: 백업이 삭제 중인 경우
  • `DELETED`: 백업이 삭제된 경우
  • `ERROR`: 오류가 발생한 경우
| -| restorableBackups.backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| restorableBackups.backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | -| restorableBackups.backup.dbVersion | Body | String | DB 엔진 유형 | -| restorableBackups.backup.failoverCount | Body | Number | 장애 조치 횟수 | -| restorableBackups.backup.binLogFileName | Body | String | 바이너리 로그 파일 이름 | -| restorableBackups.backup.binLogPosition | Body | Number | 바이너리 로그 파일 위치 | -| restorableBackups.backup.createdYmdt | Body | DateTime | 백업 생성 일시 | -| restorableBackups.backup.updatedYmdt | Body | DateTime | 백업 갱신 일시 | -| restorableBackups.restorableBinLogs | Body | Array | 해당 백업을 이용하여 복원 가능한 바이너리 로그 이름 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 분리하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/high-availability/split +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Split | 고가용성 분리하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "oldestRestorableYmdt": "2023-07-09T16:33:33+09:00", - "latestRestorableYmdt": "2023-07-10T15:44:44+09:00", - "restorableBackups": [ - { - "backup": { - "backupId": "145d889a-fe08-474f-8f58-bde576ff96a9", - "backupName": "example-backup-name", - "backupStatus": "COMPLETED", - "dbInstanceId": "dba1be25-9429-4589-9716-7fb6daad7cb9", - "dbInstanceName": "original-db-instance-name", - "dbVersion": "MYSQL_V8028", - "backupType": "MANUAL", - "backupSize": 8299904, - "useBackupLock": true, - "failoverCount": 0, - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 367916037, - "createdYmdt": "2023-07-10T15:44:44+09:00", - "updatedYmdt": "2023-07-10T15:46:07+09:00" - }, - "restorableBinLogs": [ - "mysql-bin.000001" - ] - } - ] + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1321,45 +2324,108 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info --- -### 복원될 마지막 쿼리 조회 +### 로그 파일 목록 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query +GET /v4.0/db-instances/{dbInstanceId}/log-files ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceLog.List | 로그 파일 목록 보기 | -#### 공통 요청 +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| logFiles | Body | Array | 로그 파일 목록 | +| logFiles.logFileName | Body | String | 로그 파일 이름 | +| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- ERROR
- BINLOG
- GENERAL
- SLOW_QUERY
- AUDIT
- BACKUP | +| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | +| logFiles.createdYmdt | Body | DateTime | 생성 일시 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "logFiles": [ + { + "logFileName": "logFileName-example", + "logFileType": "ERROR", + "logFileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### 로그 파일 내보내기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/log-files/export +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceLog.Export | 로그 파일 내보내기 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|------|----|-----------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restoreType | Query | Enum | O | 복원 타입 종류
  • `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
  • `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입
| +#### 요청 -#### restoreType이 `TIMESTAMP`인 경우 +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| logFileNames | Body | Array | O | 로그 파일 이름 목록 | +| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 회원 또는 IAM 멤버 ID | +| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-------|----------|----|-------------------------------------------| -| restoreYmdt | Query | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +
예시 +

-#### restoreType이 `BINLOG`인 경우 +```json +{ + "logFileNames": [], + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------|-------|--------|----|--------------------| -| backupId | Query | UUID | O | 복원에 사용할 백업의 식별자 | -| binLogFileName | Query | String | O | 복원에 사용할 바이너리 로그 이름 | -| binLogPosition | Query | Number | O | 복원에 사용할 바이너리 로그 위치 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|----------|--------------------------------------| -| executedYmdt | Body | DateTime | 쿼리 수행 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| lastQuery | Body | String | 마지막 수행 쿼리 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -1371,8 +2437,7 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query "resultMessage": "SUCCESS", "isSuccessful": true }, - "executedYmdt": "2023-03-17T14:02:29+09:00", - "lastQuery": "INSERT INTO `test`.`test`SET @1='0123'" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1381,328 +2446,165 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query --- -### 복원 +### 로그 파일 내용 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/restore +GET /v4.0/db-instances/{dbInstanceId}/log-files/{logFileName} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Restore | DB 인스턴스 복원하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceLog.Get | 로그 파일 내용 보기 | -#### 공통 요청 +#### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restore | Body | Object | O | 복원 정보 객체 | -| restore.restoreType | Body | Enum | O | 복원 타입 종류

  • `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
  • `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입
  • `BACKUP`: 기존에 생성한 백업을 이용한 스냅숏 복원 타입
| -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
  • 최솟값: `3306`
  • 최댓값: `43306`
| -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
  • 기본값: `false`
| -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
  • 기본값: `3`
  • 최솟값: `1`
  • 최댓값: `600`
| -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
  • 기본값: `false`
| -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
  • 기본값: `false`
| -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
  • 예시: `kr-pub-a`
| -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
  • 예시: `General SSD`
| -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
  • 최솟값: `20`
  • 최댓값: `2048`
| -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
  • 최솟값: `0`
  • 최댓값: `730`
| -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
  • 기본값: `1800`
  • 최솟값: `0`
  • 최댓값: `21600`
| -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
  • 기본값: `0`
  • 최솟값: `0`
  • 최댓값: `10`
| -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
  • `KR1`: 한국(판교)
  • `KR2`: 한국(평촌)
  • `JP1`: 일본(도쿄)
| -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
  • 기본값: `true`
| -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
  • 예시: `00:00:00`
| -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
  • `HALF_AN_HOUR`: 30분
  • `ONE_HOUR`: 1시간
  • `ONE_HOUR_AND_HALF`: 1시간 30분
  • `TWO_HOURS`: 2시간
  • `TWO_HOURS_AND_HALF`: 2시간 30분
  • `THREE_HOURS`: 3시간
| +이 API는 요청 본문을 요구하지 않습니다. -#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| logFileName | URL | UUID | O | 로그 파일 이름 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|----------|----|------------------------------------------------------------------------------------------------| -| restore.restoreYmdt | Body | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD)
복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능하다. | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| content | Body | String | 로그 파일 내용 (최대 65533 bytes) |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "TIMESTAMP", - "restoreYmdt": "2023-07-10T15:44:44+09:00" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "content": "content-example" } ```

-#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------------|------|--------|----|--------------------| -| restore.backupId | Body | UUID | O | 복원에 사용할 백업의 식별자 | -| restore.binLog | Body | Object | O | 바이너리 로그 정보 객체 | -| restore.binLog.binLogFileName | Body | String | O | 복원에 사용할 바이너리 로그 이름 | -| restore.binLog.binLogPosition | Body | Number | O | 복원에 사용할 바이너리 로그 위치 | +--- -* 바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. +### DB 인스턴스 유지 관리 목록 보기 +```http +GET /v4.0/db-instances/{dbInstanceId}/maintenances +``` -
예시 -

+#### 필요 권한 -```json -{ - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BINLOG", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36", - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 1234567 - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } -} -``` +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.List | DB 인스턴스 유지 관리 목록 보기 | -

-
+#### 요청 -#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) +이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|------|------------------------------|-----------------| -| restore.backupId | Body | UUID | O(restoreType이 `BACKUP`인 경우) | 복원에 사용할 백업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| type | Query | String | X | | +| statuses | Query | String | X | | +| category | Query | String | X | | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 유지 관리 목록 갯수 | +| maintenances | Body | Array | 유지 관리 목록 | +| maintenances.maintenanceId | Body | UUID | 유지 관리 아이디 | +| maintenances.dbInstanceId | Body | UUID | DB 인스턴스 아이디 | +| maintenances.category | Body | Enum | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| maintenances.description | Body | String | 유지 관리 설명 | +| maintenances.type | Body | Enum | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| maintenances.payload | Body | Object | 유지 관리 타입에 따른 Payload | +| maintenances.required | Body | Boolean | 유지 관리 필수 여부 | +| maintenances.deadlineYmdt | Body | DateTime | 유지 관리 강제 적용 일시 | +| maintenances.status | Body | Enum | 유지 관리 상태
- PENDING: `대기`
- READY: `준비`
- RUNNING: `실행 중`
- COMPLETED: `완료`
- FAILED: `실패`
- EXCLUDED: `제외`
- DELETED: `삭제`
- UNKNOWN | +| maintenances.executionType | Body | Enum | 유지 관리 실행 타입
- SCHEDULED: `예약 실행 (유지 관리 기간 자동 실행)`
- MANUAL: `수동 실행 (즉시 실행)`
- FORCED: `강제 실행 (데드라인 초과 자동 실행)` | +| maintenances.addedYmdt | Body | DateTime | 유지 관리 스케줄 등록 일시 | +| maintenances.executionStartedYmdt | Body | DateTime | 유지 관리 시작 일시 | +| maintenances.executionCompletedYmdt | Body | DateTime | 유지 관리 종료 일시 |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BACKUP", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "totalCounts": 1, + "maintenances": [ + { + "maintenanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": { + }, + "required": false, + "deadlineYmdt": "2023-12-31T15:00:00+09:00", + "status": "PENDING", + "executionType": "SCHEDULED", + "addedYmdt": "2023-12-31T15:00:00+09:00", + "executionStartedYmdt": "2023-12-31T15:00:00+09:00", + "executionCompletedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - - --- -### 오브젝트 스토리지로부터 복원 +### DB 인스턴스 유지 관리 즉시 실행하기 ```http -POST /v4.0/db-instances/restore-from-obs +POST /v4.0/db-instances/{dbInstanceId}/maintenances/execute-now ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------------|-------------------------| -| RDSforMySQL:DbInstance.RestoreFromObs | DB 인스턴스 오브젝트 스토리지로부터 복원 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.Execute | DB 인스턴스 유지 관리 즉시 실행하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|----------------------------------------------------------------------------------------| -| restore | Body | Object | O | 복원 정보 객체 | -| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | -| restore.username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | -| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | -| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
  • 최솟값: `3306`
  • 최댓값: `43306`
| -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
  • 기본값: `false`
| -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
  • 기본값: `3`
  • 최솟값: `1`
  • 최댓값: `600`
| -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
  • 기본값: `false`
| -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
  • 기본값: `false`
| -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
  • 예시: `kr-pub-a`
| -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
  • 예시: `General SSD`
| -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
  • 최솟값: `20`
  • 최댓값: `2048`
| -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
  • 최솟값: `0`
  • 최댓값: `730`
| -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
  • 기본값: `1800`
  • 최솟값: `0`
  • 최댓값: `21600`
| -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
  • 기본값: `0`
  • 최솟값: `0`
  • 최댓값: `10`
| -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
  • `KR1`: 한국(판교)
  • `KR2`: 한국(평촌)
  • `JP1`: 일본(도쿄)
| -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
  • 기본값: `true`
| -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
  • 예시: `00:00:00`
| -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
  • `HALF_AN_HOUR`: 30분
  • `ONE_HOUR`: 1시간
  • `ONE_HOUR_AND_HALF`: 1시간 30분
  • `TWO_HOURS`: 2시간
  • `TWO_HOURS_AND_HALF`: 2시간 30분
  • `THREE_HOURS`: 3시간
| - - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| configId | Body | String | O | 설정 아이디 | +| category | Body | Enum | O | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| description | Body | String | X | 유지 관리 설명 | +| type | Body | Enum | O | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| payload | Body | String | O | 유지 관리 타입에 따른 Payload |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbVersion": "MYSQL_V8028", - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "tenantId":"tenant-id", - "username":"username", - "password":"password", - "targetContainer":"targetContainer", - "objectPath":"objectPath" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "configId": "configId-example", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": "payload-example" } ``` @@ -1711,37 +2613,10 @@ POST /v4.0/db-instances/restore-from-obs #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - - -### DB 인스턴스 삭제 보호 설정 변경하기 - -```http -PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection -``` - -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. -

예시

@@ -1751,7 +2626,8 @@ PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1760,178 +2636,269 @@ PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection --- -### 고가용성 수정하기 +### DB 인스턴스 유지 관리 예약하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/high-availability +POST /v4.0/db-instances/{dbInstanceId}/maintenances/schedule ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|-----------| -| RDSforMySQL:HighAvailability.Modify | 고가용성 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.Update | DB 인스턴스 유지 관리 예약하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|---------|----|------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| configId | Body | String | O | 설정 아이디 | +| category | Body | Enum | O | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| description | Body | String | X | 유지 관리 설명 | +| type | Body | Enum | O | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| payload | Body | String | O | 유지 관리 타입에 따른 Payload | + +

예시 +

+ +```json +{ + "configId": "configId-example", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": "payload-example" +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 고가용성 다시 시작하기 +### DB 인스턴스 유지 관리 삭제하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/resume +DELETE /v4.0/db-instances/{dbInstanceId}/maintenances/{maintenanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|--------------| -| RDSforMySQL:HighAvailability.Resume | 고가용성 다시 시작하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.Delete | DB 인스턴스 유지 관리 삭제하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| maintenanceId | URL | UUID | O | 유지 관리 아이디 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 고가용성 일시 중지하기 +### 네트워크 정보 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/pause +GET /v4.0/db-instances/{dbInstanceId}/network-info ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|--------------| -| RDSforMySQL:HighAvailability.Pause | 고가용성 일시 중지하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 네트워크 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| availabilityZone | Body | String | DB 인스턴스를 생성할 가용성 영역 | +| subnet | Body | Object | 서브넷 객체 | +| subnet.subnetId | Body | UUID | 서브넷의 식별자 | +| subnet.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnet.subnetCidr | Body | String | 서브넷의 CIDR | +| endPoints | Body | Array | 접속 정보 목록 | +| endPoints.domain | Body | String | 도메인 | +| endPoints.ipAddress | Body | String | IP 주소 | +| endPoints.endPointType | Body | String | 접속 정보 타입 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "availabilityZone": "kr-pub-a", + "subnet": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example" + }, + "endPoints": [ + { + "domain": "domain-example", + "ipAddress": "ipAddress-example", + "endPointType": "endPointType-example" + } + ] +} +``` + +

+
--- -### 고가용성 복구하기 +### 네트워크 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/repair +PUT /v4.0/db-instances/{dbInstanceId}/network-info ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|-----------| -| RDSforMySQL:HighAvailability.Repair | 고가용성 복구하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | 네트워크 정보 수정하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | + +
예시 +

+ +```json +{ + "usePublicAccess": false +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 고가용성 분리하기 +### DB 인스턴스 승격하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/split +POST /v4.0/db-instances/{dbInstanceId}/promote ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|-----------| -| RDSforMySQL:HighAvailability.Split | 고가용성 분리하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Promote | DB 인스턴스 승격하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 데이터 스토리지 정보 보기 +### DB 인스턴스 재구축하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/storage-info +POST /v4.0/db-instances/{dbInstanceId}/rebuild ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Rebuild | DB 인스턴스 재구축하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|---------|--------------------------------------------------------------------------------------| -| storageType | Body | Enum | 데이터 스토리지 타입 | -| storageSize | Body | Number | 데이터 스토리지 크기(GB) | -| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- `DETACHED`: 부착되지 않음
- `ATTACHED`: 부착됨
- `DELETED`: 삭제됨 | -| storageAutoscale | Body | Object | 데이터 스토리지 자동 확장 객체 | -| storageAutoscale.useStorageAutoscale | Body | Boolean | 스토리지 자동 확장 여부 | -| storageAutoscale.threshold | Body | Number | 자동 확장 조건(%) | -| storageAutoscale.maxStorageSize | Body | Number | 자동 확장 최대 크기(GB) | -| storageAutoscale.cooldownTime | Body | Number | 자동 확장 쿨다운 시간(분) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -1943,89 +2910,118 @@ GET /v4.0/db-instances/{dbInstanceId}/storage-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageType": "General SSD", - "storageSize": 20, - "storageStatus": "ATTACHED", - "storageAutoscale": { - "useStorageAutoscale": true, - "threshold": 80, - "maxStorageSize": 100, - "cooldownTime": 10 - } + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- --- -### 데이터 스토리지 정보 수정하기 +### DB 인스턴스 복제하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/storage-info +POST /v4.0/db-instances/{dbInstanceId}/replicate ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: 현재값
- 최댓값: `2048` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | - -#### 응답 +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Replicate | DB 인스턴스 복제하기 | -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +#### 공통 요청 ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | X | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부 | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | X | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | X | 데이터 스토리지 타입 | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | X | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -### 백업 정보 보기 +
예시 +

-```http -GET /v4.0/db-instances/{dbInstanceId}/backup-info +```json +{ + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, + "network": { + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "backup": { + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 0, + "replicationRegion": "KR4", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + } +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|---------|----------------| -| backupPeriod | Body | Number | 백업 보관 기간(일) | -| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | -| backupRetryCount | Body | Number | 백업 재시도 횟수 | -| replicationRegion | Body | Enum | 백업 복제 리전 | -| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | -| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2035,67 +3031,48 @@ GET /v4.0/db-instances/{dbInstanceId}/backup-info "header": { "resultCode": 0, "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "backupPeriod": 1, - "ftwrlWaitTimeout": 1800, - "backupRetryCount": 0, - "replicationRegion": null, - "useBackupLock": false, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- --- -### 백업 정보 수정하기 +### DB 인스턴스 재시작하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/backup-info +POST /v4.0/db-instances/{dbInstanceId}/restart ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Restart | DB 인스턴스 재시작하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------------------------|------|---------|----|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | -| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | -| replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄) | -| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` |
예시

```json { - "backupPeriod": 5, - "useBackupLock": true, - "backupSchedules": [ - { - "backupWndBgnTime": "01:00:00", - "backupWndDuration": "TWO_HOURS" - } - ] + "useOnlineFailover": false, + "executeBackup": false, + "waitReplicationDelay": false, + "useReadOnly": false } ``` @@ -2104,45 +3081,72 @@ PUT /v4.0/db-instances/{dbInstanceId}/backup-info #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 네트워크 정보 보기 +### DB 인스턴스 복원 정보 조회 ```http -GET /v4.0/db-instances/{dbInstanceId}/network-info +GET /v4.0/db-instances/{dbInstanceId}/restoration-info ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | DB 인스턴스 복원 정보 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------------------------------------------------------------------------------------------------------------------------------| -| availabilityZone | Body | Enum | DB 인스턴스를 생성할 가용성 영역 | -| subnet | Body | Object | 서브넷 객체 | -| subnet.subnetId | Body | UUID | 서브넷의 식별자 | -| subnet.subnetName | Body | UUID | 서브넷을 식별할 수 있는 이름 | -| subnet.subnetCidr | Body | UUID | 서브넷의 CIDR | -| endPoints | Body | Array | 접속 정보 목록 | -| endPoints.domain | Body | String | 도메인 | -| endPoints.ipAddress | Body | String | IP 주소 | -| endPoints.endPointType | Body | Enum | 접속 정보 타입
-`EXTERNAL`: 외부 접속 도메인
-`INTERNAL`: 내부 접속 도메인
-`PUBLIC`: (Deprecated) 외부 접속 도메인
-`PRIVATE`: (Deprecated) 내부 접속 도메인 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| oldestRestorableYmdt | Body | DateTime | 가장 오래된 복원 가능한 시각 | +| latestRestorableYmdt | Body | DateTime | 가장 최신의 복원 가능한 시각 | +| restorableBackups | Body | Array | 복원 가능한 백업 목록 | +| restorableBackups.backup | Body | Object | 백업 정보 객체 | +| restorableBackups.backup.backupId | Body | UUID | 백업의 식별자 | +| restorableBackups.backup.backupName | Body | String | 백업 이름 | +| restorableBackups.backup.backupStatus | Body | Enum | 백업 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| restorableBackups.backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| restorableBackups.backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | +| restorableBackups.backup.dbVersion | Body | Enum | DB 엔진 유형 | +| restorableBackups.backup.backupType | Body | Enum | 백업 유형
- AUTO
- MANUAL | +| restorableBackups.backup.backupSize | Body | Number | 백업 크기 | +| restorableBackups.backup.useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | +| restorableBackups.backup.failoverCount | Body | Number | 장애 조치 횟수 | +| restorableBackups.backup.binLogFileName | Body | String | 바이너리 로그 파일 이름 | +| restorableBackups.backup.binLogPosition | Body | Object | 바이너리 로그 파일 위치 | +| restorableBackups.backup.createdYmdt | Body | DateTime | 백업 생성 일시 | +| restorableBackups.backup.updatedYmdt | Body | DateTime | 백업 갱신 일시 | +| restorableBackups.restorableBinLogs | Body | Array | 해당 백업을 이용하여 복원 가능한 바이너리 로그 이름 목록 |
예시

@@ -2154,17 +3158,28 @@ GET /v4.0/db-instances/{dbInstanceId}/network-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "availabilityZone": "kr-pub-a", - "subnet": { - "subnetId": "bd453789-34ae-416c-9f78-05b9e43a46be", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/16" - }, - "endPoints": [ + "oldestRestorableYmdt": "2023-12-31T15:00:00+09:00", + "latestRestorableYmdt": "2023-12-31T15:00:00+09:00", + "restorableBackups": [ { - "domain": "ea548a78-d85f-43b4-8ddf-c88d999b9905.internal.kr1.mysql.rds.nhncloudservice.com", - "ipAddress": "192.168.0.2", - "endPointType": "INTERNAL" + "backup": { + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "dbVersion": "MYSQL_V8036", + "backupType": "AUTO", + "backupSize": 1, + "useBackupLock": false, + "failoverCount": 1, + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + }, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + }, + "restorableBinLogs": [] } ] } @@ -2175,67 +3190,32 @@ GET /v4.0/db-instances/{dbInstanceId}/network-info --- -### 네트워크 정보 수정하기 - -```http -PUT /v4.0/db-instances/{dbInstanceId}/network-info -``` - -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 사용자 목록 보기 +### 복원될 마지막 쿼리 조회 ```http -GET /v4.0/db-instances/{dbInstanceId}/db-users +GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|---------------------| -| RDSforMySQL:DbInstanceUser.List | DB 인스턴스 내 사용자 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 복원될 마지막 쿼리 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|-----------------------------------------------------------------------------------------------------------------------------| -| dbUsers | Body | Array | DB 사용자 목록 | -| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | -| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | -| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | -| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `UPDATING`: 수정 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbUsers.authenticationPlugin | Body | Enum | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| dbUsers.tlsOption | Body | Enum | TLS Option
- NONE
- SSL
- X509 | -| dbUsers.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbUsers.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| executedYmdt | Body | DateTime | 쿼리 수행 일시 | +| lastQuery | Body | String | 마지막 수행 쿼리 |

예시

@@ -2247,19 +3227,8 @@ GET /v4.0/db-instances/{dbInstanceId}/db-users "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbUsers": [ - { - "dbUserId": "4b3d530b-fd02-4d59-a620-83d019a67bbb", - "dbUserName": "db-user", - "host": "%", - "authorityType": "DDL", - "dbUserStatus": "STABLE", - "authenticationPlugin": "NATIVE", - "tlsOption": "NONE", - "createdYmdt": "2023-03-17T14:02:29+09:00", - "updatedYmdt": "2023-03-17T14:02:31+09:00" - } - ] + "executedYmdt": "2023-12-31T15:00:00+09:00", + "lastQuery": "lastQuery-example" } ``` @@ -2268,45 +3237,145 @@ GET /v4.0/db-instances/{dbInstanceId}/db-users --- -### DB 사용자 생성하기 +### DB 인스턴스 복원 ```http -POST /v4.0/db-instances/{dbInstanceId}/db-users +POST /v4.0/db-instances/{dbInstanceId}/restore ``` - #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceUser.Create | DB 인스턴스 내 사용자 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Restore | DB 인스턴스 복원 | -#### 요청 +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자. 미입력 시 원본 인스턴스의 사양이 적용됩니다. | +| dbPort | Body | Number | X | DB 포트 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | X | 스토리지 정보 객체. 미입력 시 원본 인스턴스의 스토리지 설정이 적용됩니다. | +| storage.storageType | Body | Enum | X | 스토리지 타입. 미입력 시 원본 인스턴스의 스토리지 타입이 적용됩니다. | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB). 미입력 시 원본 인스턴스의 스토리지 크기가 적용됩니다.
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| network | Body | Object | X | 네트워크 정보 객체. 미입력 시 원본 인스턴스의 네트워크 설정이 적용됩니다. | +| network.subnetId | Body | UUID | X | 서브넷의 식별자. 미입력 시 원본 인스턴스 값 사용 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역. 미입력 시 랜덤 선택 | +| backup | Body | Object | X | 백업 정보 객체. 미입력 시 원본 인스턴스의 백업 설정이 적용됩니다. | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일). 미입력 시 원본 인스턴스의 백업 보관 기간이 적용됩니다.
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록. 미입력 시 원본 인스턴스의 백업 스케쥴이 적용됩니다. | +| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.restoreType | Body | Enum | O | 복원 타입
- TIMESTAMP: `복원 가능한 시간 이내의 시간을 이용한 시점 복원`
- BINLOG: `복원 가능한 바이너리 로그 위치를 이용한 시점 복원`
- BACKUP: `기존에 생성한 백업을 이용한 스냅숏 복원` | +| restore.binLog.binLogFileName | Body | String | X | 복원에 사용할 바이너리 로그 이름 | +| restore.binLog.binLogPosition | Body | Object | X | 복원에 사용할 바이너리 로그 위치 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자. 미입력 시 원본 인스턴스의 파라미터 그룹이 적용됩니다. | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록. 미입력 시 원본 인스턴스의 보안 그룹이 적용됩니다. | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | + +#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.restoreYmdt | Body | DateTime | X | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | + +복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능합니다. + +#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 | +| restore.binLog | Body | Object | X | 복원에 사용할 바이너리 로그 정보 객체 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|-------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserName | Body | String | O | DB 사용자 계정 이름
- 최소 길이: `1`
- 최대 길이: `32` | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `16` | -| host | Body | String | O | DB 사용자 계정의 호스트명
- 예시: `1.1.1.%` | -| authorityType | Body | Enum | O | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | +바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. + +#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 설정할 수 있습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 |

예시

```json { - "dbUserName": "db-user", - "dbPassword": "password", - "host": "1.1.1.%", - "authorityType": "CRUD", - "authenticationPlugin": "NATIVE", - "tlsOption": "NONE" + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "useHighAvailability": false, + "pingInterval": 3, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "backup": { + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR4", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + }, + "restore": { + "restoreType": "TIMESTAMP", + "binLog": { + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + } + } + }, + "useDefaultNotification": false, + "useSlowQueryAnalysis": true, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDeletionProtection": false } ``` @@ -2315,117 +3384,151 @@ POST /v4.0/db-instances/{dbInstanceId}/db-users #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 사용자 수정하기 +### DB 인스턴스 시작하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +POST /v4.0/db-instances/{dbInstanceId}/start ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceUser.Modify | DB 인스턴스 내 사용자 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Start | DB 인스턴스 시작하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|-------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | -| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `16` | -| authorityType | Body | Enum | X | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 수정할 수 있습니다. -> `authenticationPlugin`의 값은 `dbPassword`와 동시에 수정을 해야 합니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "authorityType": "DDL" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### DB 사용자 삭제하기 +### DB 인스턴스 정지하기 ```http -DELETE /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +POST /v4.0/db-instances/{dbInstanceId}/stop ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceUser.Delete | DB 인스턴스 내 사용자 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Stop | DB 인스턴스 정지하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 스키마 목록 보기 +### 스토리지 정보 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/db-schemas +GET /v4.0/db-instances/{dbInstanceId}/storage-info ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|---------------------| -| RDSforMySQL:DbInstanceSchema.List | DB 인스턴스 내 스키마 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 스토리지 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|------------------------------------------------------------------------------------------------------| -| dbSchemas | Body | Array | DB 스키마 목록 | -| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | -| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | -| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbSchemas.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageType | Body | String | 데이터 스토리지 타입 | +| storageSize | Body | Number | 데이터 스토리지 크기(GB) | +| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- DELETED: `삭제됨`
- PENDING_DELETION: `삭제 유예됨`
- DELETION_RESERVED: `삭제 예약됨 (스냅샷 정리 대기)`
- DETACHED: `해제됨`
- ATTACHED: `할당됨` | +| storageAutoscale | Body | Object | 데이터 스토리지 자동 확장 객체 | +| storageAutoscale.useStorageAutoscale | Body | Boolean | 스토리지 자동 확장 여부 | +| storageAutoscale.threshold | Body | Number | 자동 확장 조건(%) | +| storageAutoscale.maxStorageSize | Body | Number | 자동 확장 최대 크기(GB) | +| storageAutoscale.cooldownTime | Body | Number | 자동 확장 쿨다운 시간(분) |
예시

@@ -2437,14 +3540,15 @@ GET /v4.0/db-instances/{dbInstanceId}/db-schemas "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSchemas": [ - { - "dbSchemaId": "7c9a94b8-86c1-435d-8af2-82a5e9d53fd4", - "dbSchemaName": "schema", - "dbSchemaStatus": "STABLE", - "createdYmdt": "2023-03-20T13:37:45+09:00" - } - ] + "storageType": "General SSD", + "storageSize": 1, + "storageStatus": "DELETED", + "storageAutoscale": { + "useStorageAutoscale": false, + "threshold": 1, + "maxStorageSize": 1, + "cooldownTime": 1 + } } ``` @@ -2453,93 +3557,119 @@ GET /v4.0/db-instances/{dbInstanceId}/db-schemas --- -### DB 스키마 생성하기 +### 스토리지 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/db-schemas +PUT /v4.0/db-instances/{dbInstanceId}/storage-info ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceSchema.Create | DB 인스턴스 내 스키마 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | 스토리지 정보 수정하기 | -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|--------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaName | Body | String | O | DB 스키마 이름 | +#### 공통 요청 -#### 응답 +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최댓값: `2048` | +| storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +#### 스토리지 자동 확장 사용 시 ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -### DB 스키마 삭제하기 +

예시 +

-```http -DELETE /v4.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} +```json +{ + "storageSize": 1, + "storageAutoscale": { + "useStorageAutoscale": false + } +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceSchema.Delete | DB 인스턴스 내 스키마 삭제하기 | +

+
-#### 요청 +#### 응답 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaId | URL | UUID | O | DB 스키마의 식별자 | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 로그 파일 목록 보기 +## 백업 + +### 백업 상태 + +| 상태 | 설명 | +|--------------|--------------| +| `BACKING_UP` | 백업 중인 경우 | +| `COMPLETED` | 백업이 완료된 경우 | +| `DELETING` | 백업이 삭제 중인 경우 | +| `DELETED` | 백업이 삭제된 경우 | +| `ERROR` | 오류가 발생한 경우 | + +### 백업 목록 조회 ```http -GET /v4.0/db-instances/{dbInstanceId}/log-files +GET /v4.0/backups ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|-----------------------| -| RDSforMySQL:DbInstanceLog.List | DB 인스턴스 내 로그 파일 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.List | 백업 목록 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|-------|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileTypes | Query | Array | X | 로그 파일 타입 종류 목록
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| logFiles | Body | Array | 로그 파일 목록 | -| logFiles.logFileName | Body | String | 로그 파일 이름 | -| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | -| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | -| logFiles.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 백업 목록 수 | +| backups | Body | Array | 백업 목록 | +| backups.backupId | Body | UUID | 백업의 식별자 | +| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | +| backups.backupStatus | Body | Enum | 백업의 현재 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| backups.dbVersion | Body | Enum | DB 엔진 유형 | +| backups.utilVersion | Body | String | 유틸리티 버전 | +| backups.backupType | Body | Enum | 백업 유형
- AUTO
- MANUAL | +| backups.backupSize | Body | Number | 백업의 크기(Byte) | +| backups.createdYmdt | Body | DateTime | 생성 일시 | +| backups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -2551,12 +3681,19 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files "resultMessage": "SUCCESS", "isSuccessful": true }, - "logFiles": [ + "totalCounts": 1, + "backups": [ { - "logFileName": "xtra_full.log-20230317", - "logFileType": "BACKUP", - "logFileSize": 4096, - "createdYmdt": "2023-03-17T14:02:29+09:00" + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "utilVersion": "utilVersion-example", + "backupType": "AUTO", + "backupSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -2567,107 +3704,92 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files --- -### 로그 파일 내보내기 +### 백업 생성하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/log-files/export +POST /v4.0/backups ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|----------------------| -| RDSforMySQL:DbInstanceLog.Export | DB 인스턴스 내 로그 파일 내보내기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.Create | 백업 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|--------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileNames | Body | Array | O | 로그 파일 이름 목록
- 최소 크기: `1` | -| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupName | Body | String | O | 백업을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| baseBackupId | Body | UUID | X | 원본 백업의 식별자 | +| dbInstanceId | Body | UUID | X | DB 인스턴스의 식별자 | +| backupMethodType | Body | Enum | O | 백업 방식 타입
- FULL: `전체 백업`
- INCREMENTAL: `증분 백업`
- SNAPSHOT: `스냅숏 백업` | + +

예시 +

+ +```json +{ + "backupName": "backupName", + "baseBackupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "backupMethodType": "FULL" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "logFileNames": ["xtra_full.log-20230317"], - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "logs/backup" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -## 백업 - -### 백업 상태 - -| 상태 | 설명 | -|--------------|--------------| -| `BACKING_UP` | 백업 중인 경우 | -| `COMPLETED` | 백업이 완료된 경우 | -| `DELETING` | 백업이 삭제 중인 경우 | -| `DELETED` | 백업이 삭제된 경우 | -| `ERROR` | 오류가 발생한 경우 | - -### 백업 목록 조회 +### 백업 삭제하기 ```http -GET /v4.0/backups +DELETE /v4.0/backups/{backupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| -| RDSforMySQL:Backup.List | 백업 목록 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.Delete | 백업 삭제하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|--------|----|----------------------------------------------------------| -| page | Query | Number | O | 조회할 목록의 페이지
- 최솟값: `1` | -| size | Query | Number | O | 조회할 목록의 페이지 크기
- 최솟값: `1`
- 최댓값: `100` | -| backupType | Query | Enum | X | 백업 유형
- `AUTO`: 자동
- `MANUAL`: 수동
- 기본값: 전체 | -| dbInstanceId | Query | UUID | X | 원본 DB 인스턴스의 식별자 | -| dbVersion | Query | Enum | X | DB 엔진 유형 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|-----------------------------------| -| totalCounts | Body | Number | 전체 백업 목록 수 | -| backups | Body | Array | 백업 목록 | -| backups.backupId | Body | UUID | 백업의 식별자 | -| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | -| backups.backupStatus | Body | Enum | 백업의 현재 상태 | -| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| backups.dbVersion | Body | Enum | DB 엔진 유형 | -| backups.utilVersion | Body | String | 백업에 사용된 xtrabackup 유틸리티 버전 | -| backups.backupType | Body | Enum | 백업 유형 | -| backups.backupSize | Body | Number | 백업의 크기(Byte) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2679,21 +3801,7 @@ GET /v4.0/backups "resultMessage": "SUCCESS", "isSuccessful": true }, - "totalCounts": 1, - "backups": [ - { - "backupId": "0017f136-3e01-4530-94aa-20661afe6632", - "backupName": "backup", - "backupStatus": "COMPLETED", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd", - "dbVersion": "MYSQL_V8028", - "utilVersion": "8.0.28", - "backupType": "AUTO", - "backupSize": 4996786, - "createdYmdt": "2023-02-21T00:35:00+09:00", - "updatedYmdt": "2023-02-22T00:35:32+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2702,74 +3810,85 @@ GET /v4.0/backups --- -### 백업 생성하기 +### 백업 단건 조회 ```http -POST /v4.0/backups +GET /v4.0/backups/{backupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|---------| -| RDSforMySQL:Backup.Create | 백업 생성하기 | - -#### 공통 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|--------|----|------------------------------------------------------------| -| backupName | Body | String | O | 백업을 식별할 수 있는 이름 | -| backupMethodType | Body | Enum | O | 백업 방식 타입 종류
- `FULL`: 전체 백업
- `INCREMENTAL`: 증분 백업 | - -#### 전체 백업(backupMethodType이 `FULL`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|------|----|--------------| -| dbInstanceId | Body | UUID | O | DB 인스턴스의 식별자 | - - -

예시 -

+| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.Get | 백업 단건 조회 | -```json -{ - "backupName": "example-backup-name", - "backupMethodType": "FULL", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd" -} -``` +#### 요청 -

-
+이 API는 요청 본문을 요구하지 않습니다. -#### 증분 백업(backupMethodType이 `INCREMENTAL`인 경우) +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|------|----|------------| -| baseBackupId | Body | UUID | O | 기준 백업의 식별자 | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| backup | Body | Object | 백업 상세 정보 | +| backup.backupId | Body | UUID | 백업의 식별자 | +| backup.regionCode | Body | Enum | 리전 코드
- KR4: `한국(대구)` | +| backup.backupName | Body | String | 백업을 식별할 수 있는 이름 | +| backup.backupStatus | Body | Enum | 백업의 현재 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | +| backup.dbVersion | Body | Enum | DB 엔진 버전 | +| backup.utilVersion | Body | String | 유틸리티 버전 | +| backup.backupType | Body | Enum | 백업 유형 (AUTO, MANUAL)
- AUTO
- MANUAL | +| backup.backupMethodType | Body | Enum | 백업 방식 (FULL, SNAPSHOT, INCREMENTAL)
- FULL
- INCREMENTAL
- SNAPSHOT | +| backup.backupFileType | Body | Enum | 백업 파일 유형
- XBSTREAM
- TAR_ZSTD
- TAR_LZ4
- TAR_GZIP
- SNAPSHOT | +| backup.backupSize | Body | Number | 백업의 크기(Byte) | +| backup.isReplicable | Body | Boolean | 복제 가능 여부 | +| backup.binLogFileName | Body | String | 바이너리 로그 파일명 | +| backup.binLogPosition | Body | Object | 바이너리 로그 위치 | +| backup.createdYmdt | Body | DateTime | 생성 일시 | +| backup.updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "backupName": "example-backup-name", - "backupMethodType": "INCREMENTAL", - "baseBackupId": "3ae7914f-9b42-4729-b125-87417b72cf36" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "backup": { + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "regionCode": "KR4", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "dbVersion": "MYSQL_V8036", + "utilVersion": "utilVersion-example", + "backupType": "AUTO", + "backupMethodType": "FULL", + "backupFileType": "XBSTREAM", + "backupSize": 1, + "isReplicable": false, + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + }, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } } ```

- -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- ### 백업 내보내기 @@ -2780,31 +3899,31 @@ POST /v4.0/backups/{backupId}/export #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|---------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Backup.Export | 백업 내보내기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|-----------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 계정 혹은 IAM 회원 ID | +| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 |
예시

```json { - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "backups/backup_file" + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" } ``` @@ -2813,12 +3932,26 @@ POST /v4.0/backups/{backupId}/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | -> [주의] -> 수동 백업의 경우 백업이 수행된 DB 인스턴스가 존재하지 않으면, 백업을 오브젝트 스토리지로 내보낼 수 없습니다. +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -2830,73 +3963,98 @@ POST /v4.0/backups/{backupId}/restore #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Backup.Restore | 백업 복원하기 | -#### 요청 +#### 공통 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------------------------------|------|---------|----|---------------------------------------------------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Integer | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 ||network|Body|Object|O|네트워크 정보 객체| -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄) | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| dbPort | Body | Number | X | DB 포트. 미지정 시 원본 인스턴스 값 사용
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| network | Body | Object | X | 네트워크 정보 객체. 미지정 시 원본 인스턴스 값 사용 | +| network.subnetId | Body | UUID | X | 서브넷의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역. 미지정 시 랜덤 선택 | +| storage | Body | Object | X | 스토리지 정보 객체. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageType | Body | Enum | X | 스토리지 타입. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | X | 백업 정보 객체. 미지정 시 원본 인스턴스 백업 설정 사용 | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수. 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부. 미지정 시 원본 인스턴스 값 사용 | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록. 미지정 시 원본 인스턴스 값 사용 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` |
예시

```json - { - "dbInstanceName": "db-instance-restore", - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbPort": 10000, - "parameterGroupId": "132d383c-38e3-468a-a826-5e9a8fff15d0", + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, "availabilityZone": "kr-pub-a" }, "storage": { "storageType": "General SSD", - "storageSize": 20 + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 0, + "replicationRegion": "KR4", + "useBackupLock": false, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", + "backupWndBgnTime": "backupWndBgnTime-example", "backupWndDuration": "HALF_AN_HOUR" } ] @@ -2909,37 +4067,26 @@ POST /v4.0/backups/{backupId}/restore #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### 백업 삭제하기 +

예시 +

-```http -DELETE /v4.0/backups/{backupId} +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|-------------------------------------------|---------| -| RDSforMySQL:Backup.Delete | 백업 삭제하기 | - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------|-----|------|----|---------| -| backupId | URL | UUID | O | 백업의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -2962,8 +4109,8 @@ GET /v4.0/db-security-groups #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|----------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroup.List | DB 보안 그룹 목록 보기 | #### 요청 @@ -2972,15 +4119,16 @@ GET /v4.0/db-security-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-----------------------------------| -| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | -| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 DB 보안 그룹 목록 수 | +| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | +| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -2992,14 +4140,15 @@ GET /v4.0/db-security-groups "resultMessage": "SUCCESS", "isSuccessful": true }, + "totalCounts": 1, "dbSecurityGroups": [ { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", "progressStatus": "NONE", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2022-02-19T19:18:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3010,48 +4159,65 @@ GET /v4.0/db-security-groups --- -### DB 보안 그룹 상세 보기 +### DB 보안 그룹 생성하기 ```http -GET /v4.0/db-security-groups/{dbSecurityGroupId} +POST /v4.0/db-security-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|----------------| -| RDSforMySQL:DbSecurityGroup.Get | DB 보안 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroup.Create | DB 보안 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` | +| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | +| rules.direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| rules.etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| rules.port | Body | Object | O | 포트 객체 | +| rules.port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| rules.cidr | Body | String | O | CIDR | +| rules.description | Body | String | X | 보안 그룹 규칙에 대한 추가 정보 | + +

예시 +

+ +```json +{ + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example", + "rules": [ + { + "direction": "INGRESS", + "etherType": "IPV4", + "port": { + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 + }, + "cidr": "cidr-example", + "description": "description-example" + } + ] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|----------|--------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| rules | Body | Array | DB 보안 그룹 규칙 목록 | -| rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | -| rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.port | Body | Object | 포트 객체 | -| rules.port.portType | Body | Enum | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다.
- `PORT`: 지정된 포트값으로 설정됩니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | 최소 포트 범위 | -| rules.port.maxPort | Body | Number | 최대 포트 범위 | -| rules.cidr | Body | String | 허용할 트래픽의 원격 소스 | -| rules.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| rules.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 |
예시

@@ -3063,30 +4229,7 @@ GET /v4.0/db-security-groups/{dbSecurityGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSecurityGroup": { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", - "progressStatus": "NONE", - "rules": [ - { - "ruleId": "17c88ef6-95f1-4678-84f9-fee1b22e250d", - "description": "description", - "direction": "INGRESS", - "etherType": "IPV4", - "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 - }, - "cidr": "0.0.0.0/0", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } - ], - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3095,68 +4238,113 @@ GET /v4.0/db-security-groups/{dbSecurityGroupId} --- -### DB 보안 그룹 생성하기 +### DB 보안 그룹 삭제하기 ```http -POST /v4.0/db-security-groups +DELETE /v4.0/db-security-groups/{dbSecurityGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| -| RDSforMySQL:DbSecurityGroup.Create | DB 보안 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroup.Delete | DB 보안 그룹 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### DB 보안 그룹 상세 보기 + +```http +GET /v4.0/db-security-groups/{dbSecurityGroupId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroup.Get | DB 보안 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | -| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | -| rules.description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | -| rules.port | Body | Object | O | 포트 객체 | -| rules.port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| rules | Body | Array | DB 보안 그룹 규칙 목록 | +| rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | +| rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | +| rules.direction | Body | Enum | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| rules.etherType | Body | Enum | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| rules.port | Body | Object | 포트 객체 | +| rules.port.portType | Body | Enum | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| rules.port.minPort | Body | Number | 최소 포트 범위 | +| rules.port.maxPort | Body | Number | 최대 포트 범위 | +| rules.cidr | Body | String | CIDR | +| rules.createdYmdt | Body | DateTime | 생성 일시 | +| rules.updatedYmdt | Body | DateTime | 수정 일시 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

```json { - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", + "progressStatus": "NONE", "rules": [ { + "ruleId": "550e8400-e29b-41d4-a716-446655440000", + "description": "description-example", "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 + "portType": "ALL", + "minPort": 1, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } - ] + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|------|---------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | - --- ### DB 보안 그룹 수정하기 @@ -3167,25 +4355,25 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId} #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroup.Modify | DB 보안 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|-----------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description" + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example" } ``` @@ -3196,48 +4384,34 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- - --- -### DB 보안 그룹 삭제하기 +### DB 보안 그룹 규칙 삭제하기 ```http -DELETE /v4.0/db-security-groups/{dbSecurityGroupId} +DELETE /v4.0/db-security-groups/{dbSecurityGroupId}/rules ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| -| RDSforMySQL:DbSecurityGroup.Delete | DB 보안 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroupRule.Delete | DB 보안 그룹 규칙 삭제하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleIds | Query | String | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -3248,7 +4422,8 @@ DELETE /v4.0/db-security-groups/{dbSecurityGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3265,26 +4440,23 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroupRule.Create | DB 보안 그룹 규칙 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |

예시

@@ -3294,11 +4466,12 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "PORT", - "minPort": 10000, - "maxPort": 10000 + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -3307,9 +4480,26 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -3321,27 +4511,24 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroupRule.Modify | DB 보안 그룹 규칙 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleId | URL | UUID | O | DB 보안 그룹 규칙의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |
예시

@@ -3351,49 +4538,40 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "DB_PORT" + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ```

-
- -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 보안 그룹 규칙 삭제하기 - -```http -DELETE /v4.0/db-security-groups/{dbSecurityGroupId}/rules -``` - -#### 필요 권한 - -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| -| RDSforMySQL:DbSecurityGroupRule.Create | DB 보안 그룹 규칙 삭제하기 | +
-#### 요청 +#### 응답 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|-------|----|---------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleIds | Query | Array | O | DB 보안 그룹 규칙의 식별자 목록 | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -3407,30 +4585,28 @@ GET /v4.0/parameter-groups #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:ParameterGroup.List | 파라미터 그룹 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------|-------|------|----|----------| -| dbVersion | Query | Enum | X | DB 엔진 유형 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-------------------------------------------------------------------| -| parameterGroups | Body | Array | 파라미터 그룹 목록 | -| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameterGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 파라미터 그룹 수 | +| parameterGroups | Body | Array | 파라미터 그룹 목록 | +| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroups.parameterGroupType | Body | Enum | 파라미터 그룹 유형
- USER
- ADMIN
- DEFAULT
- CLUSTER_USER | +| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameterGroups.createdYmdt | Body | DateTime | 생성 일시 | +| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3442,15 +4618,17 @@ GET /v4.0/parameter-groups "resultMessage": "SUCCESS", "isSuccessful": true }, + "totalCounts": 1, "parameterGroups": [ { - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "parameterGroupType": "USER", "parameterGroupStatus": "STABLE", - "createdYmdt": "2023-02-31T15:28:17+09:00", - "updatedYmdt": "2023-02-31T15:28:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3459,50 +4637,47 @@ GET /v4.0/parameter-groups

- --- -### 파라미터 그룹 상세 보기 +### 파라미터 그룹 생성하기 ```http -GET /v4.0/parameter-groups/{parameterGroupId} +POST /v4.0/parameter-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMySQL:ParameterGroup.Get | 파라미터 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Create | 파라미터 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` | +| dbVersion | Body | Enum | O | DB 엔진 유형 | + +
예시 +

-| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +```json +{ + "parameterGroupName": "parameterGroupName", + "description": "description-example", + "dbVersion": "MYSQL_V8036" +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|--------------------------------------------------------------------------------------------------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameters | Body | Array | 파라미터 목록 | -| parameters.parameterId | Body | UUID | 파라미터 식별자 | -| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- `CLIENT`: client
- `MYSQL`: mysql
- `MYSQLD`: mysqld | -| parameters.parameterName | Body | String | 파라미터 이름 | -| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | -| parameters.value | Body | String | 현재 설정된 값 | -| parameters.defaultValue | Body | String | 기본값 | -| parameters.allowedValue | Body | String | 허용된 값 | -| parameters.updateType | Body | Enum | 수정 타입
- `VARIABLE`: 언제든 수정 가능
- `CONSTANT`: 수정 불가능
- `INIT_VARIABLE`: DB 인스턴스 생성 시에만 수정 가능 | -| parameters.applyType | Body | Enum | 적용 타입
- `SESSION`: 세션 적용
- `FILE`: 설정 파일 적용(재시작 필요)
- `BOTH`: 전체(재시작 필요) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |
예시

@@ -3514,103 +4689,148 @@ GET /v4.0/parameter-groups/{parameterGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", - "parameterGroupStatus": "STABLE", - "parameters": [ - { - "parameterId": "fa040b5e-f29f-46de-8f0d-bba4cb82887a", - "parameterFileGroup": "client", - "parameterName": "socket", - "fileParameterName": "socket", - "value": "/home/tcrds/db/mysql/tmp/mysql.sock", - "defaultValue": "/home/tcrds/db/mysql/tmp/mysql.sock", - "allowedValue": "", - "updateType": "CONSTANT", - "applyType": "BOTH" - } - ], - "createdYmdt": "2023-03-13T11:02:28+09:00", - "updatedYmdt": "2023-03-13T11:02:28+09:00" + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ```

+--- + +### 파라미터 그룹 삭제하기 + +```http +DELETE /v4.0/parameter-groups/{parameterGroupId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Delete | 파라미터 그룹 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 생성하기 +### 파라미터 그룹 상세 보기 ```http -POST /v4.0/parameter-groups +GET /v4.0/parameter-groups/{parameterGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Create | 파라미터 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Get | 파라미터 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameters | Body | Array | 파라미터 목록 | +| parameters.parameterId | Body | UUID | 파라미터의 식별자 | +| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- CLIENT
- MYSQL
- MYSQLD | +| parameters.parameterName | Body | String | 파라미터 이름 | +| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | +| parameters.value | Body | String | 현재 설정된 값 | +| parameters.defaultValue | Body | String | 기본값 | +| parameters.allowedValue | Body | String | 허용된 값 | +| parameters.updateType | Body | Enum | 수정 타입
- VARIABLE
- CONSTANT
- INIT_VARIABLE | +| parameters.applyType | Body | Enum | 적용 타입
- BOTH
- SESSION
- FILE | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "parameterGroupName": "parameter-group", - "dbVersion": "MYSQL_V8028" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "parameterGroupStatus": "STABLE", + "parameters": [ + { + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "parameterFileGroup": "CLIENT", + "parameterName": "parameterName-example", + "fileParameterName": "fileParameterName-example", + "value": "value-example", + "defaultValue": "defaultValue-example", + "allowedValue": "allowedValue-example", + "updateType": "VARIABLE", + "applyType": "BOTH" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | - --- -### 파라미터 그룹 복사하기 +### 파라미터 그룹 수정하기 ```http -POST /v4.0/parameter-groups/{parameterGroupId}/copy +PUT /v4.0/parameter-groups/{parameterGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Copy | 파라미터 그룹 복사하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Modify | 파라미터 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "parameterGroupName": "parameter-group-copy", - "description": "copy" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -3619,38 +4839,37 @@ POST /v4.0/parameter-groups/{parameterGroupId}/copy #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 수정하기 +### 파라미터 그룹 복사하기 ```http -PUT /v4.0/parameter-groups/{parameterGroupId} +POST /v4.0/parameter-groups/{parameterGroupId}/copy ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Modify | 파라미터 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Copy | 파라미터 그룹 복사하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |

예시

```json { - "parameterGroupName": "parameter-group" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -3659,7 +4878,9 @@ PUT /v4.0/parameter-groups/{parameterGroupId} #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |

예시

@@ -3670,7 +4891,8 @@ PUT /v4.0/parameter-groups/{parameterGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3687,18 +4909,18 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Modify | 파라미터 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Modify | 파라미터 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------------|------|--------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | -| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | -| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | +| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | +| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 |

예시

@@ -3707,8 +4929,8 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters { "modifiedParameters": [ { - "parameterId": "3abac558-7274-44e1-9f4a-f100f53f67ba", - "value": "0" + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "value": "value-example" } ] } @@ -3721,22 +4943,6 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- ### 파라미터 그룹 재설정하기 @@ -3747,61 +4953,52 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/reset #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:ParameterGroup.Reset | 파라미터 그룹 재설정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | #### 응답 이 API는 응답 본문을 반환하지 않습니다. -
예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- -### 파라미터 그룹 삭제하기 +## 사용자 그룹 + +### 사용자 그룹 목록 보기 ```http -DELETE /v4.0/parameter-groups/{parameterGroupId} +GET /v4.0/user-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Delete | 파라미터 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.List | 사용자 그룹 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | - #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 사용자 그룹 목록 수 | +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroups.createdYmdt | Body | DateTime | 생성 일시 | +| userGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3812,7 +5009,16 @@ DELETE /v4.0/parameter-groups/{parameterGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "totalCounts": 1, + "userGroups": [ + { + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -3821,33 +5027,45 @@ DELETE /v4.0/parameter-groups/{parameterGroupId} --- -## 사용자 그룹 - -### 사용자 그룹 목록 보기 +### 사용자 그룹 생성하기 ```http -GET /v4.0/user-groups +POST /v4.0/user-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|--------------| -| RDSforMySQL:UserGroup.List | 사용자 그룹 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.Create | 사용자 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록 | +| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` | + +

예시 +

+ +```json +{ + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAll": false +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|-----------------------------------| -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| userGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 |
예시

@@ -3859,14 +5077,7 @@ GET /v4.0/user-groups "resultMessage": "SUCCESS", "isSuccessful": true }, - "userGroups": [ - { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" - } - ] + "userGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3875,6 +5086,32 @@ GET /v4.0/user-groups --- +### 사용자 그룹 삭제하기 + +```http +DELETE /v4.0/user-groups/{userGroupId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.Delete | 사용자 그룹 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + ### 사용자 그룹 상세 보기 ```http @@ -3883,29 +5120,29 @@ GET /v4.0/user-groups/{userGroupId} #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:UserGroup.Get | 사용자 그룹 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|----------|-----------------------------------------------------------------------------------------------------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
`ENTIRE`: 프로젝트 멤버 전체를 포함하는 사용자 그룹
`INDIVIDUAL_MEMBER`: 특정 프로젝트 멤버를 포함하는 사용자 그룹 | -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
- ENTIRE
- INDIVIDUAL_MEMBER | +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -3917,16 +5154,16 @@ GET /v4.0/user-groups/{userGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "userGroupTypeCode": "INDIVIDUAL_MEMBER", + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "userGroupTypeCode": "ENTIRE", "members": [ { - "memberId": "1321e759-2ef3-4b85-9921-b13e918b24b5" + "memberId": "550e8400-e29b-41d4-a716-446655440000" } ], - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -3935,42 +5172,35 @@ GET /v4.0/user-groups/{userGroupId} --- -### 사용자 그룹 생성하기 +### 사용자 그룹 수정하기 ```http -POST /v4.0/user-groups +PUT /v4.0/user-groups/{userGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMySQL:UserGroup.Create | 사용자 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.Modify | 사용자 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|-----------------------------------------------------------| -| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록
`selectAll`이 true인 경우 해당 필드 값은 무시됨 | -| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 유무
true인 경우 해당 그룹은 전체 멤버에 대해 설정됨 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | +| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` |

예시

```json { - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5" - ] -} -``` - -```json -{ - "userGroupName": "dev-team", - "selectAll": true + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAll": false } ``` @@ -3979,52 +5209,40 @@ POST /v4.0/user-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------|------|------|-------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 사용자 그룹 수정하기 +## 알림 그룹 + +### 알림 그룹 목록 보기 ```http -PUT /v4.0/user-groups/{userGroupId} +GET /v4.0/notification-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMySQL:UserGroup.Modify | 사용자 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.List | 알림 그룹 목록 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|----------------------------------------------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | -| userGroupName | Body | String | X | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | -| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 유무
true인 경우 해당 그룹은 전체 멤버에 대해 설정됨 | - -

예시 -

- -```json -{ - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5", - "f9064b09-2b15-442e-a4b0-3a5a2754555e" - ] -} -``` - -

-
+이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroups | Body | Array | 알림 그룹 목록 | +| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | +| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | +| notificationGroups.createdYmdt | Body | DateTime | 생성 일시 | +| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4035,7 +5253,18 @@ PUT /v4.0/user-groups/{userGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "notificationGroups": [ + { + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, + "notifySms": false, + "isEnabled": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -4044,27 +5273,51 @@ PUT /v4.0/user-groups/{userGroupId} --- -### 사용자 그룹 삭제하기 +### 알림 그룹 생성하기 ```http -DELETE /v4.0/user-groups/{userGroupId} +POST /v4.0/notification-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMySQL:UserGroup.Delete | 사용자 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.Create | 알림 그룹 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | +| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | + +

예시 +

+ +```json +{ + "notificationGroupName": "notificationGroupName", + "notifyEmail": true, + "notifySms": true, + "isEnabled": true, + "dbInstanceIds": [], + "userGroupIds": [] +} +``` + +

+
#### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 |
예시

@@ -4075,7 +5328,8 @@ DELETE /v4.0/user-groups/{userGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4084,63 +5338,29 @@ DELETE /v4.0/user-groups/{userGroupId} --- -## 알림 그룹 - -### 알림 그룹 목록 보기 +### 알림 그룹 삭제하기 ```http -GET /v4.0/notification-groups +DELETE /v4.0/notification-groups/{notificationGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|-------------| -| RDSforMySQL:NotificationGroup.List | 알림 그룹 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.Delete | 알림 그룹 삭제하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------------|------|----------|-----------------------------------| -| notificationGroups | Body | Array | 알림 그룹 목록 | -| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | -| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | -| notificationGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - -

예시 -

+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "notificationGroups": [ - { - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, - "notifySms": false, - "isEnabled": true, - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" - } - ] -} -``` +#### 응답 -

-
+이 API는 응답 본문을 반환하지 않습니다. --- @@ -4152,35 +5372,35 @@ GET /v4.0/notification-groups/{notificationGroupId} #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:NotificationGroup.Get | 알림 그룹 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------------|------|----------|-----------------------------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notifySms | Body | Boolean | SMS 알림 여부 | -| isEnabled | Body | Boolean | 활성화 여부 | -| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notifySms | Body | Boolean | SMS 알림 여부 | +| isEnabled | Body | Boolean | 활성화 여부 | +| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4192,25 +5412,25 @@ GET /v4.0/notification-groups/{notificationGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, "notifySms": false, - "isEnabled": true, + "isEnabled": false, "dbInstances": [ { - "dbInstanceId": "ed5cb985-526f-4c54-9ae0-40288593de65", - "dbInstanceName": "database" + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example" } ], "userGroups": [ { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team" + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example" } ], - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -4219,43 +5439,41 @@ GET /v4.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 생성하기 +### 알림 그룹 수정하기 ```http -POST /v4.0/notification-groups +PUT /v4.0/notification-groups/{notificationGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMySQL:NotificationGroup.Create | 알림 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.Modify | 알림 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------------| -| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | -| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | -| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | -| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | +| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `false` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `false` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `false` | +| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 |

예시

```json { - "notificationGroupName": "dev-team-noti", + "notificationGroupName": "notificationGroupName-example", "notifyEmail": false, - "isEnable": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65" - ], - "userGroupIds": [ - "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0" - ] + "notifySms": false, + "isEnabled": false, + "dbInstanceIds": [], + "userGroupIds": [] } ``` @@ -4264,45 +5482,73 @@ POST /v4.0/notification-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|------|------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 알림 그룹 수정하기 +## 모니터링 + +### 통계 정보 조회 ```http -PUT /v4.0/notification-groups/{notificationGroupId} +GET /v4.0/metric-statistics ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMySQL:NotificationGroup.Modify | 알림 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Metric.List | 통계 정보 조회 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### Metric 목록 보기 + +```http +GET /v4.0/metrics +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Metric.List | Metric 목록 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부 | -| notifySms | Body | Boolean | X | SMS 알림 여부 | -| isEnabled | Body | Boolean | X | 활성화 여부 | -| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +이 API는 요청 본문을 요구하지 않습니다. + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| metrics | Body | Array | Metric 목록 | +| metrics.measureName | Body | String | 조회 지표 유형 | +| metrics.unit | Body | String | 측정값 단위 |

예시

```json { - "notifyEmail": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65", - "d51b7da0-682f-47ff-b588-b739f6adc740" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "metrics": [ + { + "measureName": "measureName-example", + "unit": "unit-example" + } ] } ``` @@ -4310,9 +5556,46 @@ PUT /v4.0/notification-groups/{notificationGroupId}

+--- + +## 이벤트 + +### 이벤트 카테고리 + +이벤트는 카테고리로 분류할 수 있으며 아래와 같습니다. + +| 이벤트 카테고리 | 설명 | +|-------------|---------| +| ALL | 전체 | +| BACKUP | 백업 | +| DB_INSTANCE | DB 인스턴스 | +| JOB | 작업 | +| TENANT | 테넌트 | +| MONITORING | 모니터링 | + +### 구독 가능한 이벤트 코드 목록 보기 + +```http +GET /v4.0/event-codes +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Event.List | 구독 가능한 이벤트 코드 목록 보기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventCodes | Body | Array | 이벤트 코드 목록 | +| eventCodes.eventCode | Body | Enum | 이벤트 코드 | +| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT |
예시

@@ -4323,7 +5606,13 @@ PUT /v4.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "eventCodes": [ + { + "eventCode": "ENUM_VALUE", + "eventCategoryType": "ALL" + } + ] } ``` @@ -4332,29 +5621,36 @@ PUT /v4.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 삭제하기 +### 이벤트 목록 조회 ```http -DELETE /v4.0/notification-groups/{notificationGroupId} +GET /v4.0/events ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMySQL:NotificationGroup.Delete | 알림 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Event.List | 이벤트 목록 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | - #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 목록 수 | +| events | Body | Array | 이벤트 목록 | +| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | +| events.sourceId | Body | String | 이벤트 소스의 식별자 | +| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | +| events.messages | Body | Array | 이벤트 메세지 목록 | +| events.messages.langCode | Body | Enum | 언어 코드
- KO
- EN
- JA
- ZH | +| events.messages.message | Body | String | 이벤트 메세지 | +| events.eventYmdt | Body | DateTime | 이벤트 발생 일시 |

예시

@@ -4365,7 +5661,23 @@ DELETE /v4.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "totalCounts": 1, + "events": [ + { + "eventCategoryType": "ALL", + "eventCode": "ENUM_VALUE", + "sourceId": "sourceId-example", + "sourceName": "sourceName-example", + "messages": [ + { + "langCode": "KO", + "message": "message-example" + } + ], + "eventYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -4374,19 +5686,19 @@ DELETE /v4.0/notification-groups/{notificationGroupId} --- -## 모니터링 +## 이벤트 구독 -### Metric 목록 보기 +### 이벤트 구독 목록 조회 ```http -GET /v4.0/metrics +GET /v4.0/event-subscriptions ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| -| RDSforMySQL:Metric.List | 통계 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:EventSubscription.List | 이벤트 구독 목록 조회 | #### 요청 @@ -4394,11 +5706,22 @@ GET /v4.0/metrics #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|--------|-----------| -| metrics | Body | Array | Metric 목록 | -| metrics.measureName | Body | Enum | 조회 지표 유형 | -| metrics.unit | Body | String | 측정값 단위 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 구독 목록 수 | +| eventSubscriptions | Body | Array | 이벤트 구독 목록 | +| eventSubscriptions.eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 | +| eventSubscriptions.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.eventSubscriptionName | Body | String | 이벤트 구독의 식별할 수 있는 이름 | +| eventSubscriptions.enabled | Body | Boolean | 활성화 여부 | +| eventSubscriptions.notifyEmail | Body | Boolean | 이메일 발송 여부 | +| eventSubscriptions.notifySms | Body | Boolean | SMS 발송 여부 | +| eventSubscriptions.eventCodes | Body | Array | 구독할 이벤트 코드 목록 | +| eventSubscriptions.sources | Body | Array | 구독할 이벤트 소스 목록 | +| eventSubscriptions.sources.sourceId | Body | String | 이벤트 소스의 식별자 | +| eventSubscriptions.sources.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.userGroupIds | Body | Array | 이벤트 구독 중인 사용자 그룹의 식별자 목록 | +| eventSubscriptions.createdYmdt | Body | DateTime | 생성 일시 |

예시

@@ -4410,10 +5733,24 @@ GET /v4.0/metrics "resultMessage": "SUCCESS", "isSuccessful": true }, - "metrics": [ + "totalCounts": 1, + "eventSubscriptions": [ { - "measureName": "CPU_USAGE", - "unit": "%" + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ + { + "sourceId": "sourceId-example", + "eventCategoryType": "ALL" + } + ], + "userGroupIds": [], + "createdYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -4424,186 +5761,179 @@ GET /v4.0/metrics --- -### 통계 정보 조회 +### 이벤트 구독 생성하기 ```http -GET /v4.0/metric-statistics +POST /v4.0/event-subscriptions ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| -| RDSforMySQL:Metric.List | 통계 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:EventSubscription.Create | 이벤트 구독 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|----------|----|-----------------------------------| -| dbInstanceId | Query | UUID | O | DB 인스턴스의 식별자 | -| measureNames | Query | Array | O | 조회 지표 목록
- 최소 크기: `1` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| interval | Query | Number | X | 조회 간격 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|-----------|----------| -| metricStatistics | Body | Array | 통계 정보 목록 | -| metricStatistics.measureName | Body | Enum | 측정 항목 유형 | -| metricStatistics.unit | Body | String | 측정값 단위 | -| metricStatistics.values | Body | Array | 측정값 목록 | -| metricStatistics.values.timestamp | Body | Timestamp | 측정 시간 | -| metricStatistics.values.value | Body | Object | 측정값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | O | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | O | 활성화 여부 | +| notifyEmail | Body | Boolean | O | 이메일 발송 여부 | +| notifySms | Body | Boolean | O | SMS 발송 여부 | +| eventCodes | Body | Array | O | 구독할 이벤트 코드 목록 | +| sources | Body | Array | O | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | O | 이벤트 구독할 사용자 그룹의 식별자 목록 |

예시

```json { - "metricStatistics": [ + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ { - "measureName": "MYSQL_STATUS", - "unit": "", - "values": [ - [ - 1679298540, - "1" - ], - [ - 1679298600, - "1" - ], - [ - 1679298660, - "1" - ] - ] + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" } - ] + ], + "userGroupIds": [] } ```

---- +#### 응답 -## 이벤트 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 | -### 이벤트 카테고리 +
예시 +

-이벤트는 카테고리로 분류할 수 있으며 아래와 같습니다. +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이벤트 카테고리 | 설명 | -|-------------|---------| -| ALL | 전체 | -| BACKUP | 백업 | -| DB_INSTANCE | DB 인스턴스 | -| JOB | 작업 | -| TENANT | 테넌트 | -| MONITORING | 모니터링 | +

+
-### 이벤트 목록 조회 +--- + +### 이벤트 구독 삭제하기 ```http -GET /v4.0/events +DELETE /v4.0/event-subscriptions/{eventSubscriptionId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------|-----------| -| RDSforMySQL:Event.List | 이벤트 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:EventSubscription.Delete | 이벤트 구독 삭제하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | O | 조회할 목록의 페이지
- 최솟값: `1` | -| size | Query | Number | O | 조회할 목록의 페이지 크기
- 최솟값: `1`
- 최댓값: `100` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| eventCategoryType | Query | Enum | O | 조회할 이벤트 카테고리 유형
- `ALL`: 전체
- `INSTANCE`: DB 인스턴스
- `BACKUP`: 백업
- `DB_SECURITY_GROUP`: DB 보안 그룹
- `TENANT`: 테넌트 | -| sourceId | Query | String | X | 이벤트가 발생한 대상 리소스의 식별자 | -| keyword | Query | String | X | 이벤트 메시지에 포함된 문자열 검색어 | -| ascendingOrder | Query | Enum | X | 이벤트 메시지 정렬 순서
- `ASC`: 오름차순
- `DESC`: 내림차순
- 기본값: `DESC` | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|---------------------------------------| -| totalCounts | Body | Number | 전체 이벤트 목록 수 | -| events | Body | Array | 이벤트 목록 | -| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | -| events.sourceId | Body | String | 이벤트 소스의 식별자 | -| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | -| events.messages | Body | Array | 이벤트 메시지 목록 | -| events.messages.langCode | Body | String | 언어 코드 | -| events.messages.message | Body | String | 이벤트 메시지 | -| events.eventYmdt | Body | DateTime | 이벤트 발생 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 이벤트 구독 수정하기 + +```http +PUT /v4.0/event-subscriptions/{eventSubscriptionId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:EventSubscription.Modify | 이벤트 구독 수정하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | +| eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | X | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | X | 활성화 여부 | +| notifyEmail | Body | Boolean | X | 이메일 발송 여부 | +| notifySms | Body | Boolean | X | SMS 발송 여부 | +| eventCodes | Body | Array | X | 구독할 이벤트 코드 목록 | +| sources | Body | Array | X | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | X | 이벤트 구독할 사용자 그룹의 식별자 목록 |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "totalCounts": 28, - "events": [ + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ { - "eventCategoryType": "INSTANCE", - "eventCode": "INSTC_02_01", - "sourceId": "76f00947-356e-4a20-8922-428368cc45ed", - "sourceName": "db-instance", - "messages": [ - { - "langCode": "EN", - "message": "DB instance started" - }, - { - "langCode": "JA", - "message": "DBインスタンスの起動" - }, - { - "langCode": "KO", - "message": "DB 인스턴스 시작" - }, - { - "langCode": "ZH", - "message": "DB instance started" - } - ], - "eventYmdt": "2023-03-20T16:31:59+09:00" + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" } - ] + ], + "userGroupIds": [] } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- -### 구독 가능한 이벤트 코드 목록 보기 +## 가용성 영역 + +### 가용성 영역 목록 보기 ```http -GET /v4.0/event-codes +GET /v4.0/availability-zones ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------|-----------| -| RDSforMySQL:Event.List | 이벤트 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:AvailabilityZone.List | 가용성 영역 목록 보기 | #### 요청 @@ -4611,11 +5941,12 @@ GET /v4.0/event-codes #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|-------|-------------| -| eventCodes | Body | Array | 이벤트 코드 목록 | -| eventCodes.eventCode | Body | Enum | 이벤트 코드 | -| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| availabilityZones | Body | Array | 가용성 영역 목록 | +| availabilityZones.availabilityZoneName | Body | String | 가용성 영역 이름 | +| availabilityZones.zoneState | Body | Object | 가용성 영역 상태 | +| availabilityZones.zoneState.available | Body | Boolean | 가용성 영역의 사용 가능 여부 |
예시

@@ -4627,10 +5958,12 @@ GET /v4.0/event-codes "resultMessage": "SUCCESS", "isSuccessful": true }, - "eventCodes": [ + "availabilityZones": [ { - "eventCode": "INSTC_05_01", - "eventCategoryType": "INSTANCE" + "availabilityZoneName": "availabilityZoneName-example", + "zoneState": { + "available": false + } } ] } @@ -4640,3 +5973,4 @@ GET /v4.0/event-codes

--- + diff --git a/ko/api-guide-v4.0-ngovc.md b/ko/api-guide-v4.0-ngovc.md index 10401c12..1d3bdfe3 100644 --- a/ko/api-guide-v4.0-ngovc.md +++ b/ko/api-guide-v4.0-ngovc.md @@ -1,35 +1,39 @@ -## Database > RDS for MySQL > API 가이드 +## Database > RDS for MySQL > API v4.0 가이드 -| 리전 | 엔드포인트 | -|-----------|-----------------------------------------------| -| 한국(판교) 리전 | https://kr4-rds-mysql-api.ngovc.com | +## RDS for MySQL API 공통 정보 -## 인증 및 권한 +### API 엔드포인트 + +| 리전 | 엔드포인트 | +|------|----------| +| 한국(대구) 리전 | https://ngovc-kr4-rds-proxy.cloud.toastoven.net | -API를 사용하려면 [Public API > API 호출 및 인증](/nhncloud/ko/public-api/api-authentication-ngovc/)을 통해 발급 받은 Bearer 유형의 토큰이 필요합니다. -발급 받은 토큰은 Appkey와 함께 요청 Header에 포함해야 합니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|--------|--------|----|-------------------------------------------------------------| -| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | -| X-NHN-AUTHORIZATION | Header | String | O | Public API로 발급 받은 Bearer 유형 토큰 | +### 인증 및 권한 + +RDS for MySQL은(는) API 호출 시 인증/인가를 위해 User Access Key 토큰을 사용합니다. User Access Key 토큰은 User Access Key를 기반으로 발급되는 Bearer 타입의 일시적 액세스 토큰입니다. User Access Key 토큰 발급 및 사용에 대한 자세한 내용은 [User Access Key 토큰](/nhncloud/ko/public-api/user-access-key-token)을 참고하세요. +발급 받은 토큰은 Appkey와 함께 요청 Header에 포함해야 합니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | +| X-NHN-AUTHORIZATION | Header | String | O | Public API로 발급 받은 Bearer 유형 토큰 | -또한 프로젝트 멤버 역할에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER`로 구분하여 권한을 부여할 수 있습니다. +또한 프로젝트 권한에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER` 역할에는 아래처럼 기본 권한이 부여돼 있고 프로젝트 내 역할 그룹 관리 메뉴에서 필요한 권한만 부여할 수 있습니다. -* `RDS for MySQL ADMIN` 권한은 모든 기능을 사용 가능합니다. -* `RDS for MySQL VIEWER` 권한은 정보를 조회하는 기능만 사용 가능합니다. +* `RDS for MySQL ADMIN` 역할은 API 실행에 필요한 모든 권한이 부여됩니다. +* `RDS for MySQL VIEWER` 역할은 정보를 조회하는 권한만 부여됩니다. * DB 인스턴스를 생성, 수정, 삭제하거나, DB 인스턴스를 대상으로 하는 어떠한 기능도 사용할 수 없습니다. - * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용 가능합니다. + * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용할 수 있습니다. API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같은 오류가 발생합니다. -| resultCode | resultMessage | 설명 | -|------------|---------------|-------------| -| 80401 | Unauthorized | 인증에 실패했습니다. | -| 80403 | Forbidden | 권한이 없습니다. | +| resultCode | resultMessage | 설명 | +|------------|---------------|-----| +| 80401 | Unauthorized | 인증에 실패했습니다. | +| 80403 | Forbidden | 권한이 없습니다. | -## 응답 공통 정보 +### 응답 공통 정보 모든 API 요청에 '200 OK'로 응답합니다. 자세한 응답 결과는 응답 본문의 헤더를 참고합니다. @@ -45,54 +49,58 @@ API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같 ``` #### 필드 -| 이름 | 형식 | 설명 | -|---------------|---------|-----------------------------------------| -| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | -| resultMessage | String | 결과 메시지 | -| isSuccessful | Boolean | 성공 여부 | - - -## DB 엔진 유형 - -| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 | -|--------------|----------|-----------------|--------| -| MYSQL\_V5633 | X | X | NATIVE | -| MYSQL\_V5715 | O | O | NATIVE | -| MYSQL\_V5719 | O | O | NATIVE | -| MYSQL\_V5726 | O | O | NATIVE | -| MYSQL\_V5731 | X | X | NATIVE | -| MYSQL\_V5733 | O | X | NATIVE, SHA256 | -| MYSQL\_V5737 | O | O | NATIVE, SHA256 | -| MYSQL\_V8018 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8023 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8028 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8032 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8033 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8034 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8405 | O | O | CACHING_SHA2 | +| 이름 | 형식 | 설명 | +|-----|-----|-----| +| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | +| resultMessage | String | 결과 메시지 | +| isSuccessful | Boolean | 성공 여부 | + +### DB 엔진 유형 + +| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 | +|------------|----------|------------------|------------| +| MYSQL_V5633 | X | X | NATIVE | +| MYSQL_V5715 | O | O | NATIVE | +| MYSQL_V5719 | O | O | NATIVE | +| MYSQL_V5726 | O | O | NATIVE | +| MYSQL_V5731 | X | X | NATIVE | +| MYSQL_V5733 | O | X | NATIVE, SHA256 | +| MYSQL_V5737 | O | O | NATIVE, SHA256 | +| MYSQL_V8018 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8023 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8028 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8032 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8033 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8034 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8044 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8045 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8405 | O | O | CACHING_SHA2 | +| MYSQL_V8406 | O | O | CACHING_SHA2 | +| MYSQL_V8407 | O | O | CACHING_SHA2 | +| MYSQL_V8408 | O | O | CACHING_SHA2 | * ENUM 타입의 dbVersion 필드에 대해 해당 값을 사용할 수 있습니다. * 버전에 따라 생성 또는 복원이 불가능한 경우가 있을 수 있습니다. ## 프로젝트 정보 -### 리전 목록 보기 +### 프로젝트 멤버 목록 보기 ```http -GET /v4.0/project/regions +GET /v4.0/project/members ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|------------| -| RDSforMySQL:Project.Get | 프로젝트 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Project.Get | 프로젝트 멤버 목록 보기 | #### 요청 @@ -100,11 +108,13 @@ GET /v4.0/project/regions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------|------|---------|----------------------------------------------------------------------------| -| regions | Body | Array | 리전 목록 | -| regions.regionCode | Body | Enum | 리전 코드
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| members.memberName | Body | String | 프로젝트 멤버의 이름 | +| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | +| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 |
예시

@@ -116,38 +126,33 @@ GET /v4.0/project/regions "resultMessage": "SUCCESS", "isSuccessful": true }, - "regions": [ - { - "regionCode": "KR1", - "isEnabled": true - }, - { - "regionCode": "KR2", - "isEnabled": true - }, + "members": [ { - "regionCode": "JP1", - "isEnabled": true + "memberId": "550e8400-e29b-41d4-a716-446655440000", + "memberName": "memberName-example", + "emailAddress": "emailAddress-example", + "phoneNumber": "phoneNumber-example" } ] } ``` +

--- -### 프로젝트 멤버 목록 보기 +### 리전 목록 보기 ```http -GET /v4.0/project/members +GET /v4.0/project/regions ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|------------| -| RDSforMySQL:Project.Get | 프로젝트 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Project.Get | 리전 목록 보기 | #### 요청 @@ -155,13 +160,11 @@ GET /v4.0/project/members #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|--------|-----------------| -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| members.memberName | Body | String | 프로젝트 멤버의 이름 | -| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | -| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| regions | Body | Array | 리전 목록 | +| regions.regionCode | Body | Enum | 리전 코드
- KR4: `한국(대구)` | +| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 |
예시

@@ -173,12 +176,10 @@ GET /v4.0/project/members "resultMessage": "SUCCESS", "isSuccessful": true }, - "members": [ + "regions": [ { - "memberId": "1b1d3627-507a-49ea-8cb7-c86dfa9caa58", - "memberName": "홍길동", - "emailAddress": "gildong.hong@nhn.com", - "phoneNumber": "+821012345678" + "regionCode": "KR4", + "isEnabled": false } ] } @@ -199,8 +200,8 @@ GET /v4.0/db-flavors #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbFlavor.List | DB 인스턴스 사양 목록 보기 | #### 요청 @@ -209,13 +210,13 @@ GET /v4.0/db-flavors #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------| -| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | -| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | -| dbFlavors.ram | Body | Number | 메모리 용량(MB) | -| dbFlavors.vcpus | Body | Number | CPU 코어 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | +| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | +| dbFlavors.ram | Body | Number | 메모리 용량(MB) | +| dbFlavors.vcpus | Body | Number | CPU 코어 수 |

예시

@@ -229,9 +230,9 @@ GET /v4.0/db-flavors }, "dbFlavors": [ { - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbFlavorName": "m2.c1m2", - "ram": 2048, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbFlavorName": "dbFlavorName-example", + "ram": 1, "vcpus": 1 } ] @@ -253,8 +254,8 @@ GET /v4.0/network/subnets #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------|-----------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Network.List | 서브넷 목록 보기 | #### 요청 @@ -263,14 +264,14 @@ GET /v4.0/network/subnets #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|---------|------------------| -| subnets | Body | Array | 서브넷 목록 | -| subnets.subnetId | Body | UUID | 서브넷의 식별자 | -| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | -| subnets.subnetCidr | Body | String | 서브넷의 CIDR | -| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | -| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| subnets | Body | Array | 서브넷 목록 | +| subnets.subnetId | Body | UUID | 서브넷의 식별자 | +| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnets.subnetCidr | Body | String | 서브넷의 CIDR | +| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | +| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 |

예시

@@ -284,11 +285,11 @@ GET /v4.0/network/subnets }, "subnets": [ { - "subnetId": "1b2a9b23-0725-4b92-8c78-35db66b8ad9f", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/24", - "usingGateway": true, - "availableIpCount": 240 + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example", + "usingGateway": false, + "availableIpCount": 1 } ] } @@ -309,8 +310,8 @@ GET /v4.0/db-versions #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbVersion.List | DB 엔진 목록 보기 | #### 요청 @@ -319,11 +320,11 @@ GET /v4.0/db-versions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|---------|-----------------------| -| dbVersions | Body | Array | DB 엔진 목록 | -| dbVersions.dbVersion | Body | String | DB 엔진 유형 | -| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbVersions | Body | Array | DB 엔진 목록 | +| dbVersions.dbVersion | Body | String | DB 엔진 유형 | +| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | | dbVersions.restorableFromObs | Body | Boolean | 오브젝트 스토리지로부터 복원 가능 여부 |

예시 @@ -338,9 +339,9 @@ GET /v4.0/db-versions }, "dbVersions": [ { - "dbVersion": "MYSQL_V8028", - "dbVersionName": "MySQL 8.0.28", - "restorableFromObs": true + "dbVersion": "MYSQL_V8036", + "dbVersionName": "dbVersionName-example", + "restorableFromObs": false } ] } @@ -353,7 +354,7 @@ GET /v4.0/db-versions ## 데이터 스토리지 -### 데이터 스토리지 타입 목록 보기 +### 스토리지 타입 목록 보기 ```http GET /v4.0/storage-types @@ -361,9 +362,9 @@ GET /v4.0/storage-types #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------|-------------------| -| RDSforMySQL:Storage.List | 데이터 스토리지 타입 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Storage.List | 스토리지 타입 목록 보기 | #### 요청 @@ -371,9 +372,9 @@ GET /v4.0/storage-types #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|-------|----------------| -| storageTypes | Body | Array | 데이터 스토리지 타입 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageTypes | Body | Array | 스토리지 타입 목록 |
예시

@@ -385,10 +386,7 @@ GET /v4.0/storage-types "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageTypes": [ - "General SSD", - "General HDD" - ] + "storageTypes": [] } ``` @@ -424,29 +422,29 @@ GET /v4.0/jobs/{jobId} #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Job.Get | 작업 정보 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------|-----|------|----|---------| -| jobId | URL | UUID | O | 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| jobId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------|------|----------|-----------------------------------| -| jobId | Body | UUID | 작업의 식별자 | -| jobStatus | Body | Enum | 작업의 현재 상태 | -| resourceRelations | Body | Array | 연관 리소스 목록 | -| resourceRelations.resourceType | Body | Enum | 연관 리소스 유형 | -| resourceRelations.resourceId | Body | UUID | 연관 리소스의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | +| jobStatus | Body | Enum | 작업의 현재 상태
- DELETED
- CANNOT_PROGRESS
- FAILED
- ERROR
- CANCELED
- INTERRUPTED
- COMPLETED
- RUNNING
- PREPARING
- READY
- CREATED
- FAIL_TO_READY
- REGISTERED
- FAIL_TO_REGISTER
- WAIT_TO_REGISTER | +| resourceRelations | Body | Array | 연관 리소스 목록 | +| resourceRelations.resourceType | Body | String | 연관 리소스 유형 | +| resourceRelations.resourceId | Body | String | 연관 리소스의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -458,16 +456,16 @@ GET /v4.0/jobs/{jobId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "jobId": "0ddb042c-5af6-43fb-a914-f4dd0540eb7c", - "jobStatus": "RUNNING", + "jobId": "550e8400-e29b-41d4-a716-446655440000", + "jobStatus": "DELETED", "resourceRelations": [ { - "resourceType": "DB_INSTANCE", - "resourceId": "56b39dcf-65eb-47ec-9d4f-09f160ba2266" + "resourceType": "resourceType-example", + "resourceId": "resourceId-example" } ], - "createdYmdt": "2023-02-22T20:47:12+09:00", - "updatedYmdt": "2023-02-22T20:49:46+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -486,8 +484,8 @@ GET /v4.0/db-instance-groups #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstanceGroup.List | DB 인스턴스 그룹 목록 보기 | #### 요청 @@ -496,13 +494,13 @@ GET /v4.0/db-instance-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------|------|----------|--------------------------------------------------------------------------| -| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | -| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | +| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -516,10 +514,10 @@ GET /v4.0/db-instance-groups }, "dbInstanceGroups": [ { - "dbInstanceGroupId": "05de0746-89fd-49c8-94f9-9c5b1df97009", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", - "createdYmdt": "2023-02-13T17:35:20+09:00", - "updatedYmdt": "2023-02-13T17:35:20+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -538,30 +536,30 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstanceGroup.Get | DB 인스턴스 그룹 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|-----------------| -| dbInstanceGroupId | URL | UUID | O | DB 인스턴스 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -573,17 +571,17 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbInstanceGroupId": "36617a8e-0df8-4b16-b6ea-6306019e95da", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", "dbInstances": [ { - "dbInstanceId": "6d2db0ef-fe9b-4ed4-97b1-d97fcb4cf1b8", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE" + "dbInstanceStatus": "BEFORE_CREATE" } ], - "createdYmdt": "2023-03-03T17:38:14+09:00", - "updatedYmdt": "2023-03-03T17:38:14+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -616,8 +614,8 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} | `BACKING_UP` | 백업 중 | | `CANCELING` | 취소 중 | | `CREATING` | 생성 중 | -| `CREATING_SCHEMA` | DB 스키마 생성 중 | -| `CREATING_USER` | 사용자 생성 중 | +| `CREATING_SCHEMA` | DB 스키마 생성 중 | +| `CREATING_USER` | 사용자 생성 중 | | `DELETING` | 삭제 중 | | `DELETING_SCHEMA` | DB 스키마 삭제 중 | | `DELETING_USER` | 사용자 삭제 중 | @@ -636,8 +634,8 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} | `STARTING` | 시작 중 | | `STOPPING` | 정지 중 | | `SYNCING_SCHEMA` | DB 스키마 동기화 중 | -| `SYNCING_USER` | 사용자 동기화 중 | -| `UPDATING_USER` | 사용자 수정 중 | +| `SYNCING_USER` | 사용자 동기화 중 | +| `UPDATING_USER` | 사용자 수정 중 | ### DB 인스턴스 목록 보기 @@ -647,8 +645,8 @@ GET /v4.0/db-instances #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstance.List | DB 인스턴스 목록 보기 | #### 요청 @@ -657,20 +655,20 @@ GET /v4.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstances | Body | Array | DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | -| dbInstances.dbPort | Body | Number | DB 포트 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태 | -| dbInstances.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstances.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstances | Body | Array | DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | +| dbInstances.dbPort | Body | Number | DB 포트 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbInstances.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstances.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -684,17 +682,17 @@ GET /v4.0/db-instances }, "dbInstances": [ { - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", + "dbInstanceStatus": "BEFORE_CREATE", "progressStatus": "NONE", - "createdYmdt": "2023-01-23T12:03:13+09:00", - "updatedYmdt": "2023-02-02T17:20:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -705,51 +703,130 @@ GET /v4.0/db-instances --- -### DB 인스턴스 상세 보기 +### DB 인스턴스 생성하기 ```http -GET /v4.0/db-instances/{dbInstanceId} +POST /v4.0/db-instances ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Create | DB 인스턴스 생성하기 | -#### 요청 +#### 공통 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| authenticationPlugin | Body | Enum | X | 인증 Plugin
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | TLS Option
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 데이터 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | + +

예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE", + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "backup": { + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 1800, + "replicationRegion": "KR4", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + } +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| dbPort | Body | Number | DB 포트 | -| dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| progressStatus | Body | Enum | DB 인스턴스의 현재 작업 진행 상태 | -| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | -| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | -| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | -| useSlowQueryAnalysis | Body | Boolean | Slow query 분석 여부 | -| supportAuthenticationPlugin | Body | Boolean | 인증 플러그인 지원 여부 | -| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | -| needMigration | Body | Boolean | 마이그레이션 필요 여부 | -| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -761,27 +838,7 @@ GET /v4.0/db-instances/{dbInstanceId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", - "progressStatus": "NONE", - "dbFlavorId": "e9ed4ef6-78d7-46fa-ace9-32481e97f3b7", - "parameterGroupId": "b03e8b13-de27-4d04-a488-ff5689589372", - "dbSecurityGroupIds": ["01908c35-d2c9-4852-baf0-17f06ec42c03"], - "notificationGroupIds": ["83a62a33-ddbf-4a04-8653-e54463d5b1ac"], - "useDeletionProtection": false, - "useSlowQueryAnalysis": true, - "supportAuthenticationPlugin": true, - "needToApplyParameterGroup": false, - "needMigration": false, - "supportDbVersionUpgrade": true, - "createdYmdt": "2022-11-23T12:03:13+09:00", - "updatedYmdt": "2022-12-02T17:20:17+09:00" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -790,96 +847,124 @@ GET /v4.0/db-instances/{dbInstanceId} --- -### DB 인스턴스 생성하기 +### 오브젝트 스토리지를 이용한 DB 인스턴스 복원 ```http -POST /v4.0/db-instances +POST /v4.0/db-instances/restore-from-obs ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Create | DB 인스턴스 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.RestoreFromObs | 오브젝트 스토리지를 이용한 DB 인스턴스 복원 | -#### 요청 +#### 공통 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|-------|---------|----|---------------------------------------------------------------------| -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbUserName | Body | String | O | DB 사용자 계정명 | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `16` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄) | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | O | DB 포트 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | +| restore.username | Body | String | O | NHN Cloud 계정 혹은 IAM 멤버 ID | +| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | +| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | +| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` |

예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", - "availabilityZone": "kr-pub-a" - }, + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "dbVersion": "MYSQL_V8036", + "useHighAvailability": false, + "pingInterval": 3, "storage": { "storageType": "General SSD", - "storageSize": 20 + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR4", + "useBackupLock": true, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR" + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" } ] - } + }, + "restore": { + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" + }, + "useDefaultNotification": false, + "useSlowQueryAnalysis": true, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDeletionProtection": false } ``` @@ -888,64 +973,27 @@ POST /v4.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### DB 인스턴스 수정하기 - -```http -PUT /v4.0/db-instances/{dbInstanceId} -``` - -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|------|---------|----|---------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbPort | Body | Number | X | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbVersion | Body | Enum | X | DB 엔진 유형 | -| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -

예시

```json { - "dbInstanceName": "db-instance2", - "description": "description2", - "dbPort": 10001, - "dbSecurityGroupIds": [], - "executeBackup": true + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- ### DB 인스턴스 삭제하기 @@ -956,75 +1004,99 @@ DELETE /v4.0/db-instances/{dbInstanceId} #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstance.Delete | DB 인스턴스 삭제하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| deleteAutoBackup | Body | Boolean | X | 자동 백업 삭제 여부
- 기본값: `false` | -### DB 인스턴스 재시작하기 +
예시 +

-```http -POST /v4.0/db-instances/{dbInstanceId}/restart +```json +{ + "deleteAutoBackup": false +} ``` -#### 필요 권한 +

+
-| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Restart | DB 인스턴스 재시작하기 | +#### 응답 -#### 요청 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### DB 인스턴스 강제 재시작하기 + +### DB 인스턴스 상세 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/force-restart +GET /v4.0/db-instances/{dbInstanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|------------------| -| RDSforMySQL:DbInstance.ForceRestart | DB 인스턴스 강제 재시작하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| dbPort | Body | Number | DB 포트 | +| dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | +| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | +| useSlowQueryAnalysis | Body | Boolean | Slow query 분석 여부 | +| supportAuthenticationPlugin | Body | Boolean | 인증 plugin 지원 여부 | +| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | +| needMigration | Body | Boolean | 마이그레이션 필요 여부 | +| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -1035,135 +1107,222 @@ POST /v4.0/db-instances/{dbInstanceId}/force-restart "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbInstanceType": "MASTER", + "dbInstanceStatus": "BEFORE_CREATE", + "progressStatus": "NONE", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "notificationGroupIds": [], + "useDeletionProtection": false, + "useSlowQueryAnalysis": false, + "supportAuthenticationPlugin": false, + "needToApplyParameterGroup": false, + "needMigration": false, + "supportDbVersionUpgrade": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

- --- -### DB 인스턴스 시작하기 +### DB 인스턴스 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/start +PUT /v4.0/db-instances/{dbInstanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Start | DB 인스턴스 시작하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbPort | Body | Number | X | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbVersion | Body | Enum | X | DB 엔진 버전 코드 | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부 | +| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
- 기본값: `false` | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` | + +
예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbPort": 1, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "useSlowQueryAnalysis": false, + "useDummy": false, + "dbSecurityGroupIds": [], + "executeBackup": false, + "useOnlineFailover": false, + "waitReplicationDelay": false, + "useReadOnly": false +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 인스턴스 정지하기 +### 백업 정보 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/stop +GET /v4.0/db-instances/{dbInstanceId}/backup-info ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Stop | DB 인스턴스 정지하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 백업 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| backupPeriod | Body | Number | 백업 보관 기간(일) | +| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | +| backupRetryCount | Body | Number | 백업 재시도 횟수 | +| replicationRegion | Body | Enum | 백업 복제 리전
- KR4: `한국(대구)` | +| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration
- HALF_AN_HOUR
- ONE_HOUR
- ONE_HOUR_AND_HALF
- TWO_HOURS
- TWO_HOURS_AND_HALF
- THREE_HOURS | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "backupPeriod": 1, + "ftwrlWaitTimeout": 1, + "backupRetryCount": 1, + "replicationRegion": "KR4", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] +} +``` + +

+
--- -### DB 인스턴스 복제하기 +### 백업 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/replicate +PUT /v4.0/db-instances/{dbInstanceId}/backup-info ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Replicate | DB 인스턴스 복제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | 백업 정보 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------------------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbPort | Body | Number | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록
- 기본값: 원본 DB 인스턴스 값 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: 원본 DB 인스턴스 값 | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입
  • 예시: `General SSD`
| -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄)
- 기본값: 원본 DB 인스턴스 값 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각
- 예시: `00:00:00`
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간
- 기본값: 원본 DB 인스턴스 값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json { - "dbInstanceName": "db-instance-replicate", - "description": "description", - "dbPort": 11000, - "network": { - "availabilityZone": "kr-pub-a" - }, - "storage": { - "stroageSize": 100 - } + "backupPeriod": 0, + "ftwrlWaitTimeout": 0, + "backupRetryCount": 0, + "replicationRegion": "KR4", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] } ``` @@ -1172,147 +1331,991 @@ POST /v4.0/db-instances/{dbInstanceId}/replicate #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### DB 인스턴스 승격하기 +

예시 +

-```http -POST /v4.0/db-instances/{dbInstanceId}/promote +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 바이너리 로그 목록 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/binlogs +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceBinLog.List | 바이너리 로그 목록 보기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| binLogs | Body | Array | BinLog 파일 목록 | +| binLogs.binLogFileName | Body | String | BinLog 파일 이름 | +| binLogs.binLogFileSize | Body | Number | BinLog 파일 크기 (Byte) | +| binLogs.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "binLogs": [ + { + "binLogFileName": "binLogFileName-example", + "binLogFileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### 바이너리 로그 삭제 + +```http +POST /v4.0/db-instances/{dbInstanceId}/binlogs/purge +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceBinLog.Purge | 바이너리 로그 삭제 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| lastBinLogFileName | Body | String | O | 삭제할 마지막 BinLog 파일 이름 (해당 파일 직전까지 삭제됨) | + +
예시 +

+ +```json +{ + "lastBinLogFileName": "mysql-bin.000010" +} +``` + +

+
+ +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 인증서 파일 목록 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/certificates +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceCertificate.List | 인증서 파일 목록 보기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| certificates | Body | Array | 인증서 파일 목록 | +| certificates.fileName | Body | String | 인증서 파일 이름 | +| certificates.certificateType | Body | Enum | 인증서 타입
- CA_FILE
- CERT_FILE
- KEY_FILE | +| certificates.fileSize | Body | Number | 인증서 파일 크기(Byte) | +| certificates.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "certificates": [ + { + "fileName": "fileName-example", + "certificateType": "CA_FILE", + "fileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### 인증서 파일 내보내기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/certificates/upload +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceCertificate.Export | 인증서 파일 내보내기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| certificateTypes | Body | Array | O | 업로드할 인증서 타입 목록 | +| tenantId | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 회원 또는 IAM 멤버 ID | +| password | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 인증서 파일의 경로 | + +
예시 +

+ +```json +{ + "certificateTypes": [], + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 스키마 목록 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/db-schemas +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceSchema.List | DB 스키마 목록 보기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSchemas | Body | Array | DB 스키마 목록 | +| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | +| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | +| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- STABLE
- CREATING
- SYNCING
- DELETING
- DELETED | +| dbSchemas.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSchemas": [ + { + "dbSchemaId": "550e8400-e29b-41d4-a716-446655440000", + "dbSchemaName": "dbSchemaName-example", + "dbSchemaStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### DB 스키마 생성하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/db-schemas +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceSchema.Create | DB 스키마 생성하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbSchemaName | Body | String | O | DB 스키마 이름
- 최대 길이: `64`
- 영문 시작, 영문/숫자/_ 허용, 1~64자, MySQL 예약어 불가 | + +
예시 +

+ +```json +{ + "dbSchemaName": "dbSchemaName-example" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 스키마 삭제하기 + +```http +DELETE /v4.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceSchema.Delete | DB 스키마 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbSchemaId | URL | UUID | O | DB 스키마의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 사용자 목록 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/db-users +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.List | DB 사용자 목록 보기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbUsers | Body | Array | DB 사용자 목록 | +| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | +| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | +| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | +| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- STABLE
- CREATING
- UPDATING
- SYNCING
- DELETING
- DELETED | +| dbUsers.createdYmdt | Body | DateTime | 생성 일시 | +| dbUsers.updatedYmdt | Body | DateTime | 수정 일시 | +| dbUsers.authenticationPlugin | Body | Enum | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| dbUsers.tlsOption | Body | Enum | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbUsers": [ + { + "dbUserId": "550e8400-e29b-41d4-a716-446655440000", + "dbUserName": "dbUserName-example", + "host": "host-example", + "authorityType": "CUSTOM", + "dbUserStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" + } + ] +} +``` + +

+
+ +--- + +### DB 사용자 생성하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/db-users +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.Create | DB 사용자 생성하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| host | Body | String | O | DB 사용자 계정의 호스트명
- 최대 길이: `45` | +| authorityType | Body | Enum | O | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | + +
예시 +

+ +```json +{ + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "host": "host-example", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 사용자 삭제하기 + +```http +DELETE /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.Delete | DB 사용자 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserId | URL | UUID | O | DB 사용자의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 사용자 수정하기 + +```http +PUT /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.Modify | DB 사용자 수정하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| authorityType | Body | Enum | X | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | + +
예시 +

+ +```json +{ + "dbPassword": "dbPassword", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 인스턴스 삭제 보호 설정 변경 + +```http +PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | DB 인스턴스 삭제 보호 설정 변경 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | + +
예시 +

+ +```json +{ + "useDeletionProtection": false +} +``` + +

+
+ +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### DB 인스턴스 강제 재시작하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/force-restart ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Promote | DB 인스턴스 승격하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.ForceRestart | DB 인스턴스 강제 재시작하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 고가용성 정보 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/high-availability +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 고가용성 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| useHighAvailability | Body | Boolean | 고가용성 사용 여부
- 기본값: `false` | +| haStatus | Body | Enum | 고가용성 상태
- CREATED: `생성됨`
- STABLE: `정상`
- PAUSING: `일시 중지 중`
- DISABLE: `정지`
- DISABLE_MASTER_IN_REPLICATION: `마스터 비정상 복제 감지로 인한 고가용성 중단`
- DISABLE_MHA_PROCESS: `고가용성 프로세스 중단`
- DISABLE_REPLICATION_STOP: `복제 중단으로 인한 고가용성 중단`
- DISABLE_REPLICATION_DELAY: `복제 지연으로 인한 고가용성 중단`
- FAILOVER_STARTED: `장애 조치 시작`
- FAILOVER_FAILED: `장애 조치 실패`
- FAILOVER_COMPLETED: `장애 조치 완료`
- DELETED: `삭제됨`
- PAUSED: `일시 중지`
- PAUSED_DUE_TO_TASK: `작업으로 인한 일시 중지`
- MASTER_FAILURE_DETECTION: `마스터 장애 감지` | +| pingInterval | Body | Number | Ping 간격(초) | +| pingType | Body | String | Ping 방식 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "useHighAvailability": false, + "haStatus": "CREATED", + "pingInterval": 1, + "pingType": "pingType-example" +} +``` + +

+
+ +--- + +### 고가용성 수정하기 + +```http +PUT /v4.0/db-instances/{dbInstanceId}/high-availability +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Modify | 고가용성 수정하기 | + +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +
예시 +

+ +```json +{ + "useHighAvailability": false, + "pingInterval": 1 +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 인스턴스 재구축하기 +### 고가용성 일시 중지하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/rebuild +POST /v4.0/db-instances/{dbInstanceId}/high-availability/pause ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Rebuild | DB 인스턴스 재구축하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Pause | 고가용성 일시 중지하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 복원 정보 조회 +### 고가용성 복구하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/restoration-info +POST /v4.0/db-instances/{dbInstanceId}/high-availability/repair ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Repair | 고가용성 복구하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 다시 시작하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/high-availability/resume +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Resume | 고가용성 다시 시작하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------------|------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| oldestRestorableYmdt | Body | DateTime | 가장 오래된 복원 가능한 시각 | -| latestRestorableYmdt | Body | DateTime | 가장 최신의 복원 가능한 시각 | -| restorableBackups | Body | Array | 복원 가능한 백업 목록 | -| restorableBackups.backup | Body | Object | 백업 정보 객체 | -| restorableBackups.backup.backupId | Body | UUID | 백업의 식별자 | -| restorableBackups.backup.backupName | Body | String | 백업 이름 | -| restorableBackups.backup.useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| restorableBackups.backup.backupSize | Body | Number | 백업 크기 | -| restorableBackups.backup.backupType | Body | Enum | 백업 유형
  • `AUTO`: 자동
  • `MANUAL`: 수동
| -| restorableBackups.backup.backupStatus | Body | Enum | 백업 상태
  • `BACKING_UP`: 백업 중인 경우
  • `COMPLETED`: 백업이 완료된 경우
  • `DELETING`: 백업이 삭제 중인 경우
  • `DELETED`: 백업이 삭제된 경우
  • `ERROR`: 오류가 발생한 경우
| -| restorableBackups.backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| restorableBackups.backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | -| restorableBackups.backup.dbVersion | Body | String | DB 엔진 유형 | -| restorableBackups.backup.failoverCount | Body | Number | 장애 조치 횟수 | -| restorableBackups.backup.binLogFileName | Body | String | 바이너리 로그 파일 이름 | -| restorableBackups.backup.binLogPosition | Body | Number | 바이너리 로그 파일 위치 | -| restorableBackups.backup.createdYmdt | Body | DateTime | 백업 생성 일시 | -| restorableBackups.backup.updatedYmdt | Body | DateTime | 백업 갱신 일시 | -| restorableBackups.restorableBinLogs | Body | Array | 해당 백업을 이용하여 복원 가능한 바이너리 로그 이름 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 분리하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/high-availability/split +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Split | 고가용성 분리하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "oldestRestorableYmdt": "2023-07-09T16:33:33+09:00", - "latestRestorableYmdt": "2023-07-10T15:44:44+09:00", - "restorableBackups": [ - { - "backup": { - "backupId": "145d889a-fe08-474f-8f58-bde576ff96a9", - "backupName": "example-backup-name", - "backupStatus": "COMPLETED", - "dbInstanceId": "dba1be25-9429-4589-9716-7fb6daad7cb9", - "dbInstanceName": "original-db-instance-name", - "dbVersion": "MYSQL_V8028", - "backupType": "MANUAL", - "backupSize": 8299904, - "useBackupLock": true, - "failoverCount": 0, - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 367916037, - "createdYmdt": "2023-07-10T15:44:44+09:00", - "updatedYmdt": "2023-07-10T15:46:07+09:00" - }, - "restorableBinLogs": [ - "mysql-bin.000001" - ] - } - ] + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1321,45 +2324,108 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info --- -### 복원될 마지막 쿼리 조회 +### 로그 파일 목록 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query +GET /v4.0/db-instances/{dbInstanceId}/log-files ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceLog.List | 로그 파일 목록 보기 | -#### 공통 요청 +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| logFiles | Body | Array | 로그 파일 목록 | +| logFiles.logFileName | Body | String | 로그 파일 이름 | +| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- ERROR
- BINLOG
- GENERAL
- SLOW_QUERY
- AUDIT
- BACKUP | +| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | +| logFiles.createdYmdt | Body | DateTime | 생성 일시 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "logFiles": [ + { + "logFileName": "logFileName-example", + "logFileType": "ERROR", + "logFileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### 로그 파일 내보내기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/log-files/export +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceLog.Export | 로그 파일 내보내기 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|------|----|-----------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restoreType | Query | Enum | O | 복원 타입 종류
  • `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
  • `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입
| +#### 요청 -#### restoreType이 `TIMESTAMP`인 경우 +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| logFileNames | Body | Array | O | 로그 파일 이름 목록 | +| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 회원 또는 IAM 멤버 ID | +| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-------|----------|----|-------------------------------------------| -| restoreYmdt | Query | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +
예시 +

-#### restoreType이 `BINLOG`인 경우 +```json +{ + "logFileNames": [], + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------|-------|--------|----|--------------------| -| backupId | Query | UUID | O | 복원에 사용할 백업의 식별자 | -| binLogFileName | Query | String | O | 복원에 사용할 바이너리 로그 이름 | -| binLogPosition | Query | Number | O | 복원에 사용할 바이너리 로그 위치 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|----------|--------------------------------------| -| executedYmdt | Body | DateTime | 쿼리 수행 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| lastQuery | Body | String | 마지막 수행 쿼리 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -1371,8 +2437,7 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query "resultMessage": "SUCCESS", "isSuccessful": true }, - "executedYmdt": "2023-03-17T14:02:29+09:00", - "lastQuery": "INSERT INTO `test`.`test`SET @1='0123'" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1381,328 +2446,165 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query --- -### 복원 +### 로그 파일 내용 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/restore +GET /v4.0/db-instances/{dbInstanceId}/log-files/{logFileName} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Restore | DB 인스턴스 복원하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceLog.Get | 로그 파일 내용 보기 | -#### 공통 요청 +#### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restore | Body | Object | O | 복원 정보 객체 | -| restore.restoreType | Body | Enum | O | 복원 타입 종류

  • `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
  • `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입
  • `BACKUP`: 기존에 생성한 백업을 이용한 스냅숏 복원 타입
| -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
  • 최솟값: `3306`
  • 최댓값: `43306`
| -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
  • 기본값: `false`
| -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
  • 기본값: `3`
  • 최솟값: `1`
  • 최댓값: `600`
| -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
  • 기본값: `false`
| -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
  • 기본값: `false`
| -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
  • 예시: `kr-pub-a`
| -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
  • 예시: `General SSD`
| -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
  • 최솟값: `20`
  • 최댓값: `2048`
| -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
  • 최솟값: `0`
  • 최댓값: `730`
| -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
  • 기본값: `1800`
  • 최솟값: `0`
  • 최댓값: `21600`
| -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
  • 기본값: `0`
  • 최솟값: `0`
  • 최댓값: `10`
| -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
  • `KR1`: 한국(판교)
  • `KR2`: 한국(평촌)
  • `JP1`: 일본(도쿄)
| -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
  • 기본값: `true`
| -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
  • 예시: `00:00:00`
| -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
  • `HALF_AN_HOUR`: 30분
  • `ONE_HOUR`: 1시간
  • `ONE_HOUR_AND_HALF`: 1시간 30분
  • `TWO_HOURS`: 2시간
  • `TWO_HOURS_AND_HALF`: 2시간 30분
  • `THREE_HOURS`: 3시간
| +이 API는 요청 본문을 요구하지 않습니다. -#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| logFileName | URL | UUID | O | 로그 파일 이름 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|----------|----|------------------------------------------------------------------------------------------------| -| restore.restoreYmdt | Body | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD)
복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능하다. | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| content | Body | String | 로그 파일 내용 (최대 65533 bytes) |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "TIMESTAMP", - "restoreYmdt": "2023-07-10T15:44:44+09:00" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "content": "content-example" } ```

-#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------------|------|--------|----|--------------------| -| restore.backupId | Body | UUID | O | 복원에 사용할 백업의 식별자 | -| restore.binLog | Body | Object | O | 바이너리 로그 정보 객체 | -| restore.binLog.binLogFileName | Body | String | O | 복원에 사용할 바이너리 로그 이름 | -| restore.binLog.binLogPosition | Body | Number | O | 복원에 사용할 바이너리 로그 위치 | +--- -* 바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. +### DB 인스턴스 유지 관리 목록 보기 +```http +GET /v4.0/db-instances/{dbInstanceId}/maintenances +``` -
예시 -

+#### 필요 권한 -```json -{ - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BINLOG", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36", - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 1234567 - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } -} -``` +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.List | DB 인스턴스 유지 관리 목록 보기 | -

-
+#### 요청 -#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) +이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|------|------------------------------|-----------------| -| restore.backupId | Body | UUID | O(restoreType이 `BACKUP`인 경우) | 복원에 사용할 백업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| type | Query | String | X | | +| statuses | Query | String | X | | +| category | Query | String | X | | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 유지 관리 목록 갯수 | +| maintenances | Body | Array | 유지 관리 목록 | +| maintenances.maintenanceId | Body | UUID | 유지 관리 아이디 | +| maintenances.dbInstanceId | Body | UUID | DB 인스턴스 아이디 | +| maintenances.category | Body | Enum | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| maintenances.description | Body | String | 유지 관리 설명 | +| maintenances.type | Body | Enum | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| maintenances.payload | Body | Object | 유지 관리 타입에 따른 Payload | +| maintenances.required | Body | Boolean | 유지 관리 필수 여부 | +| maintenances.deadlineYmdt | Body | DateTime | 유지 관리 강제 적용 일시 | +| maintenances.status | Body | Enum | 유지 관리 상태
- PENDING: `대기`
- READY: `준비`
- RUNNING: `실행 중`
- COMPLETED: `완료`
- FAILED: `실패`
- EXCLUDED: `제외`
- DELETED: `삭제`
- UNKNOWN | +| maintenances.executionType | Body | Enum | 유지 관리 실행 타입
- SCHEDULED: `예약 실행 (유지 관리 기간 자동 실행)`
- MANUAL: `수동 실행 (즉시 실행)`
- FORCED: `강제 실행 (데드라인 초과 자동 실행)` | +| maintenances.addedYmdt | Body | DateTime | 유지 관리 스케줄 등록 일시 | +| maintenances.executionStartedYmdt | Body | DateTime | 유지 관리 시작 일시 | +| maintenances.executionCompletedYmdt | Body | DateTime | 유지 관리 종료 일시 |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BACKUP", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "totalCounts": 1, + "maintenances": [ + { + "maintenanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": { + }, + "required": false, + "deadlineYmdt": "2023-12-31T15:00:00+09:00", + "status": "PENDING", + "executionType": "SCHEDULED", + "addedYmdt": "2023-12-31T15:00:00+09:00", + "executionStartedYmdt": "2023-12-31T15:00:00+09:00", + "executionCompletedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - - --- -### 오브젝트 스토리지로부터 복원 +### DB 인스턴스 유지 관리 즉시 실행하기 ```http -POST /v4.0/db-instances/restore-from-obs +POST /v4.0/db-instances/{dbInstanceId}/maintenances/execute-now ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------------|-------------------------| -| RDSforMySQL:DbInstance.RestoreFromObs | DB 인스턴스 오브젝트 스토리지로부터 복원 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.Execute | DB 인스턴스 유지 관리 즉시 실행하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|----------------------------------------------------------------------------------------| -| restore | Body | Object | O | 복원 정보 객체 | -| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | -| restore.username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | -| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | -| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
  • 최솟값: `3306`
  • 최댓값: `43306`
| -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
  • 기본값: `false`
| -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
  • 기본값: `3`
  • 최솟값: `1`
  • 최댓값: `600`
| -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
  • 기본값: `false`
| -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
  • 기본값: `false`
| -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
  • 예시: `kr-pub-a`
| -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
  • 예시: `General SSD`
| -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
  • 최솟값: `20`
  • 최댓값: `2048`
| -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
  • 최솟값: `0`
  • 최댓값: `730`
| -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
  • 기본값: `1800`
  • 최솟값: `0`
  • 최댓값: `21600`
| -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
  • 기본값: `0`
  • 최솟값: `0`
  • 최댓값: `10`
| -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
  • `KR1`: 한국(판교)
  • `KR2`: 한국(평촌)
  • `JP1`: 일본(도쿄)
| -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
  • 기본값: `true`
| -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
  • 예시: `00:00:00`
| -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
  • `HALF_AN_HOUR`: 30분
  • `ONE_HOUR`: 1시간
  • `ONE_HOUR_AND_HALF`: 1시간 30분
  • `TWO_HOURS`: 2시간
  • `TWO_HOURS_AND_HALF`: 2시간 30분
  • `THREE_HOURS`: 3시간
| - - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| configId | Body | String | O | 설정 아이디 | +| category | Body | Enum | O | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| description | Body | String | X | 유지 관리 설명 | +| type | Body | Enum | O | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| payload | Body | String | O | 유지 관리 타입에 따른 Payload |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbVersion": "MYSQL_V8028", - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "tenantId":"tenant-id", - "username":"username", - "password":"password", - "targetContainer":"targetContainer", - "objectPath":"objectPath" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "configId": "configId-example", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": "payload-example" } ``` @@ -1711,37 +2613,10 @@ POST /v4.0/db-instances/restore-from-obs #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - - -### DB 인스턴스 삭제 보호 설정 변경하기 - -```http -PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection -``` - -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. -

예시

@@ -1751,7 +2626,8 @@ PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1760,178 +2636,269 @@ PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection --- -### 고가용성 수정하기 +### DB 인스턴스 유지 관리 예약하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/high-availability +POST /v4.0/db-instances/{dbInstanceId}/maintenances/schedule ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|-----------| -| RDSforMySQL:HighAvailability.Modify | 고가용성 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.Update | DB 인스턴스 유지 관리 예약하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|---------|----|------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| configId | Body | String | O | 설정 아이디 | +| category | Body | Enum | O | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| description | Body | String | X | 유지 관리 설명 | +| type | Body | Enum | O | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| payload | Body | String | O | 유지 관리 타입에 따른 Payload | + +

예시 +

+ +```json +{ + "configId": "configId-example", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": "payload-example" +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 고가용성 다시 시작하기 +### DB 인스턴스 유지 관리 삭제하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/resume +DELETE /v4.0/db-instances/{dbInstanceId}/maintenances/{maintenanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|--------------| -| RDSforMySQL:HighAvailability.Resume | 고가용성 다시 시작하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.Delete | DB 인스턴스 유지 관리 삭제하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| maintenanceId | URL | UUID | O | 유지 관리 아이디 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 고가용성 일시 중지하기 +### 네트워크 정보 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/pause +GET /v4.0/db-instances/{dbInstanceId}/network-info ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|--------------| -| RDSforMySQL:HighAvailability.Pause | 고가용성 일시 중지하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 네트워크 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| availabilityZone | Body | String | DB 인스턴스를 생성할 가용성 영역 | +| subnet | Body | Object | 서브넷 객체 | +| subnet.subnetId | Body | UUID | 서브넷의 식별자 | +| subnet.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnet.subnetCidr | Body | String | 서브넷의 CIDR | +| endPoints | Body | Array | 접속 정보 목록 | +| endPoints.domain | Body | String | 도메인 | +| endPoints.ipAddress | Body | String | IP 주소 | +| endPoints.endPointType | Body | String | 접속 정보 타입 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "availabilityZone": "kr-pub-a", + "subnet": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example" + }, + "endPoints": [ + { + "domain": "domain-example", + "ipAddress": "ipAddress-example", + "endPointType": "endPointType-example" + } + ] +} +``` + +

+
--- -### 고가용성 복구하기 +### 네트워크 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/repair +PUT /v4.0/db-instances/{dbInstanceId}/network-info ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|-----------| -| RDSforMySQL:HighAvailability.Repair | 고가용성 복구하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | 네트워크 정보 수정하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | + +
예시 +

+ +```json +{ + "usePublicAccess": false +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 고가용성 분리하기 +### DB 인스턴스 승격하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/split +POST /v4.0/db-instances/{dbInstanceId}/promote ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|-----------| -| RDSforMySQL:HighAvailability.Split | 고가용성 분리하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Promote | DB 인스턴스 승격하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 데이터 스토리지 정보 보기 +### DB 인스턴스 재구축하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/storage-info +POST /v4.0/db-instances/{dbInstanceId}/rebuild ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Rebuild | DB 인스턴스 재구축하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|---------|--------------------------------------------------------------------------------------| -| storageType | Body | Enum | 데이터 스토리지 타입 | -| storageSize | Body | Number | 데이터 스토리지 크기(GB) | -| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- `DETACHED`: 부착되지 않음
- `ATTACHED`: 부착됨
- `DELETED`: 삭제됨 | -| storageAutoscale | Body | Object | 데이터 스토리지 자동 확장 객체 | -| storageAutoscale.useStorageAutoscale | Body | Boolean | 스토리지 자동 확장 여부 | -| storageAutoscale.threshold | Body | Number | 자동 확장 조건(%) | -| storageAutoscale.maxStorageSize | Body | Number | 자동 확장 최대 크기(GB) | -| storageAutoscale.cooldownTime | Body | Number | 자동 확장 쿨다운 시간(분) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -1943,89 +2910,118 @@ GET /v4.0/db-instances/{dbInstanceId}/storage-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageType": "General SSD", - "storageSize": 20, - "storageStatus": "ATTACHED", - "storageAutoscale": { - "useStorageAutoscale": true, - "threshold": 80, - "maxStorageSize": 100, - "cooldownTime": 10 - } + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- --- -### 데이터 스토리지 정보 수정하기 +### DB 인스턴스 복제하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/storage-info +POST /v4.0/db-instances/{dbInstanceId}/replicate ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: 현재값
- 최댓값: `2048` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | - -#### 응답 +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Replicate | DB 인스턴스 복제하기 | -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +#### 공통 요청 ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | X | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부 | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | X | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | X | 데이터 스토리지 타입 | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | X | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -### 백업 정보 보기 +
예시 +

-```http -GET /v4.0/db-instances/{dbInstanceId}/backup-info +```json +{ + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, + "network": { + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "backup": { + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 0, + "replicationRegion": "KR4", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + } +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|---------|----------------| -| backupPeriod | Body | Number | 백업 보관 기간(일) | -| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | -| backupRetryCount | Body | Number | 백업 재시도 횟수 | -| replicationRegion | Body | Enum | 백업 복제 리전 | -| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | -| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2035,67 +3031,48 @@ GET /v4.0/db-instances/{dbInstanceId}/backup-info "header": { "resultCode": 0, "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "backupPeriod": 1, - "ftwrlWaitTimeout": 1800, - "backupRetryCount": 0, - "replicationRegion": null, - "useBackupLock": false, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- --- -### 백업 정보 수정하기 +### DB 인스턴스 재시작하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/backup-info +POST /v4.0/db-instances/{dbInstanceId}/restart ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Restart | DB 인스턴스 재시작하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------------------------|------|---------|----|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | -| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | -| replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄) | -| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` |
예시

```json { - "backupPeriod": 5, - "useBackupLock": true, - "backupSchedules": [ - { - "backupWndBgnTime": "01:00:00", - "backupWndDuration": "TWO_HOURS" - } - ] + "useOnlineFailover": false, + "executeBackup": false, + "waitReplicationDelay": false, + "useReadOnly": false } ``` @@ -2104,45 +3081,72 @@ PUT /v4.0/db-instances/{dbInstanceId}/backup-info #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 네트워크 정보 보기 +### DB 인스턴스 복원 정보 조회 ```http -GET /v4.0/db-instances/{dbInstanceId}/network-info +GET /v4.0/db-instances/{dbInstanceId}/restoration-info ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | DB 인스턴스 복원 정보 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------------------------------------------------------------------------------------------------------------------------------| -| availabilityZone | Body | Enum | DB 인스턴스를 생성할 가용성 영역 | -| subnet | Body | Object | 서브넷 객체 | -| subnet.subnetId | Body | UUID | 서브넷의 식별자 | -| subnet.subnetName | Body | UUID | 서브넷을 식별할 수 있는 이름 | -| subnet.subnetCidr | Body | UUID | 서브넷의 CIDR | -| endPoints | Body | Array | 접속 정보 목록 | -| endPoints.domain | Body | String | 도메인 | -| endPoints.ipAddress | Body | String | IP 주소 | -| endPoints.endPointType | Body | Enum | 접속 정보 타입
-`EXTERNAL`: 외부 접속 도메인
-`INTERNAL`: 내부 접속 도메인
-`PUBLIC`: (Deprecated) 외부 접속 도메인
-`PRIVATE`: (Deprecated) 내부 접속 도메인 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| oldestRestorableYmdt | Body | DateTime | 가장 오래된 복원 가능한 시각 | +| latestRestorableYmdt | Body | DateTime | 가장 최신의 복원 가능한 시각 | +| restorableBackups | Body | Array | 복원 가능한 백업 목록 | +| restorableBackups.backup | Body | Object | 백업 정보 객체 | +| restorableBackups.backup.backupId | Body | UUID | 백업의 식별자 | +| restorableBackups.backup.backupName | Body | String | 백업 이름 | +| restorableBackups.backup.backupStatus | Body | Enum | 백업 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| restorableBackups.backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| restorableBackups.backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | +| restorableBackups.backup.dbVersion | Body | Enum | DB 엔진 유형 | +| restorableBackups.backup.backupType | Body | Enum | 백업 유형
- AUTO
- MANUAL | +| restorableBackups.backup.backupSize | Body | Number | 백업 크기 | +| restorableBackups.backup.useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | +| restorableBackups.backup.failoverCount | Body | Number | 장애 조치 횟수 | +| restorableBackups.backup.binLogFileName | Body | String | 바이너리 로그 파일 이름 | +| restorableBackups.backup.binLogPosition | Body | Object | 바이너리 로그 파일 위치 | +| restorableBackups.backup.createdYmdt | Body | DateTime | 백업 생성 일시 | +| restorableBackups.backup.updatedYmdt | Body | DateTime | 백업 갱신 일시 | +| restorableBackups.restorableBinLogs | Body | Array | 해당 백업을 이용하여 복원 가능한 바이너리 로그 이름 목록 |
예시

@@ -2154,17 +3158,28 @@ GET /v4.0/db-instances/{dbInstanceId}/network-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "availabilityZone": "kr-pub-a", - "subnet": { - "subnetId": "bd453789-34ae-416c-9f78-05b9e43a46be", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/16" - }, - "endPoints": [ + "oldestRestorableYmdt": "2023-12-31T15:00:00+09:00", + "latestRestorableYmdt": "2023-12-31T15:00:00+09:00", + "restorableBackups": [ { - "domain": "ea548a78-d85f-43b4-8ddf-c88d999b9905.internal.kr1.mysql.rds.nhncloudservice.com", - "ipAddress": "192.168.0.2", - "endPointType": "INTERNAL" + "backup": { + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "dbVersion": "MYSQL_V8036", + "backupType": "AUTO", + "backupSize": 1, + "useBackupLock": false, + "failoverCount": 1, + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + }, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + }, + "restorableBinLogs": [] } ] } @@ -2175,67 +3190,32 @@ GET /v4.0/db-instances/{dbInstanceId}/network-info --- -### 네트워크 정보 수정하기 - -```http -PUT /v4.0/db-instances/{dbInstanceId}/network-info -``` - -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 사용자 목록 보기 +### 복원될 마지막 쿼리 조회 ```http -GET /v4.0/db-instances/{dbInstanceId}/db-users +GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|---------------------| -| RDSforMySQL:DbInstanceUser.List | DB 인스턴스 내 사용자 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 복원될 마지막 쿼리 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|-----------------------------------------------------------------------------------------------------------------------------| -| dbUsers | Body | Array | DB 사용자 목록 | -| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | -| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | -| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | -| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `UPDATING`: 수정 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbUsers.authenticationPlugin | Body | Enum | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| dbUsers.tlsOption | Body | Enum | TLS Option
- NONE
- SSL
- X509 | -| dbUsers.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbUsers.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| executedYmdt | Body | DateTime | 쿼리 수행 일시 | +| lastQuery | Body | String | 마지막 수행 쿼리 |

예시

@@ -2247,19 +3227,8 @@ GET /v4.0/db-instances/{dbInstanceId}/db-users "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbUsers": [ - { - "dbUserId": "4b3d530b-fd02-4d59-a620-83d019a67bbb", - "dbUserName": "db-user", - "host": "%", - "authorityType": "DDL", - "dbUserStatus": "STABLE", - "authenticationPlugin": "NATIVE", - "tlsOption": "NONE", - "createdYmdt": "2023-03-17T14:02:29+09:00", - "updatedYmdt": "2023-03-17T14:02:31+09:00" - } - ] + "executedYmdt": "2023-12-31T15:00:00+09:00", + "lastQuery": "lastQuery-example" } ``` @@ -2268,45 +3237,145 @@ GET /v4.0/db-instances/{dbInstanceId}/db-users --- -### DB 사용자 생성하기 +### DB 인스턴스 복원 ```http -POST /v4.0/db-instances/{dbInstanceId}/db-users +POST /v4.0/db-instances/{dbInstanceId}/restore ``` - #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceUser.Create | DB 인스턴스 내 사용자 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Restore | DB 인스턴스 복원 | -#### 요청 +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자. 미입력 시 원본 인스턴스의 사양이 적용됩니다. | +| dbPort | Body | Number | X | DB 포트 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | X | 스토리지 정보 객체. 미입력 시 원본 인스턴스의 스토리지 설정이 적용됩니다. | +| storage.storageType | Body | Enum | X | 스토리지 타입. 미입력 시 원본 인스턴스의 스토리지 타입이 적용됩니다. | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB). 미입력 시 원본 인스턴스의 스토리지 크기가 적용됩니다.
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| network | Body | Object | X | 네트워크 정보 객체. 미입력 시 원본 인스턴스의 네트워크 설정이 적용됩니다. | +| network.subnetId | Body | UUID | X | 서브넷의 식별자. 미입력 시 원본 인스턴스 값 사용 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역. 미입력 시 랜덤 선택 | +| backup | Body | Object | X | 백업 정보 객체. 미입력 시 원본 인스턴스의 백업 설정이 적용됩니다. | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일). 미입력 시 원본 인스턴스의 백업 보관 기간이 적용됩니다.
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록. 미입력 시 원본 인스턴스의 백업 스케쥴이 적용됩니다. | +| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.restoreType | Body | Enum | O | 복원 타입
- TIMESTAMP: `복원 가능한 시간 이내의 시간을 이용한 시점 복원`
- BINLOG: `복원 가능한 바이너리 로그 위치를 이용한 시점 복원`
- BACKUP: `기존에 생성한 백업을 이용한 스냅숏 복원` | +| restore.binLog.binLogFileName | Body | String | X | 복원에 사용할 바이너리 로그 이름 | +| restore.binLog.binLogPosition | Body | Object | X | 복원에 사용할 바이너리 로그 위치 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자. 미입력 시 원본 인스턴스의 파라미터 그룹이 적용됩니다. | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록. 미입력 시 원본 인스턴스의 보안 그룹이 적용됩니다. | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | + +#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.restoreYmdt | Body | DateTime | X | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | + +복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능합니다. + +#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 | +| restore.binLog | Body | Object | X | 복원에 사용할 바이너리 로그 정보 객체 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|-------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserName | Body | String | O | DB 사용자 계정 이름
- 최소 길이: `1`
- 최대 길이: `32` | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `16` | -| host | Body | String | O | DB 사용자 계정의 호스트명
- 예시: `1.1.1.%` | -| authorityType | Body | Enum | O | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | +바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. + +#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 설정할 수 있습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 |

예시

```json { - "dbUserName": "db-user", - "dbPassword": "password", - "host": "1.1.1.%", - "authorityType": "CRUD", - "authenticationPlugin": "NATIVE", - "tlsOption": "NONE" + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "useHighAvailability": false, + "pingInterval": 3, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "backup": { + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR4", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + }, + "restore": { + "restoreType": "TIMESTAMP", + "binLog": { + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + } + } + }, + "useDefaultNotification": false, + "useSlowQueryAnalysis": true, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDeletionProtection": false } ``` @@ -2315,117 +3384,151 @@ POST /v4.0/db-instances/{dbInstanceId}/db-users #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 사용자 수정하기 +### DB 인스턴스 시작하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +POST /v4.0/db-instances/{dbInstanceId}/start ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceUser.Modify | DB 인스턴스 내 사용자 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Start | DB 인스턴스 시작하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|-------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | -| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `16` | -| authorityType | Body | Enum | X | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 수정할 수 있습니다. -> `authenticationPlugin`의 값은 `dbPassword`와 동시에 수정을 해야 합니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "authorityType": "DDL" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### DB 사용자 삭제하기 +### DB 인스턴스 정지하기 ```http -DELETE /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +POST /v4.0/db-instances/{dbInstanceId}/stop ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceUser.Delete | DB 인스턴스 내 사용자 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Stop | DB 인스턴스 정지하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 스키마 목록 보기 +### 스토리지 정보 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/db-schemas +GET /v4.0/db-instances/{dbInstanceId}/storage-info ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|---------------------| -| RDSforMySQL:DbInstanceSchema.List | DB 인스턴스 내 스키마 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 스토리지 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|------------------------------------------------------------------------------------------------------| -| dbSchemas | Body | Array | DB 스키마 목록 | -| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | -| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | -| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbSchemas.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageType | Body | String | 데이터 스토리지 타입 | +| storageSize | Body | Number | 데이터 스토리지 크기(GB) | +| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- DELETED: `삭제됨`
- PENDING_DELETION: `삭제 유예됨`
- DELETION_RESERVED: `삭제 예약됨 (스냅샷 정리 대기)`
- DETACHED: `해제됨`
- ATTACHED: `할당됨` | +| storageAutoscale | Body | Object | 데이터 스토리지 자동 확장 객체 | +| storageAutoscale.useStorageAutoscale | Body | Boolean | 스토리지 자동 확장 여부 | +| storageAutoscale.threshold | Body | Number | 자동 확장 조건(%) | +| storageAutoscale.maxStorageSize | Body | Number | 자동 확장 최대 크기(GB) | +| storageAutoscale.cooldownTime | Body | Number | 자동 확장 쿨다운 시간(분) |
예시

@@ -2437,14 +3540,15 @@ GET /v4.0/db-instances/{dbInstanceId}/db-schemas "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSchemas": [ - { - "dbSchemaId": "7c9a94b8-86c1-435d-8af2-82a5e9d53fd4", - "dbSchemaName": "schema", - "dbSchemaStatus": "STABLE", - "createdYmdt": "2023-03-20T13:37:45+09:00" - } - ] + "storageType": "General SSD", + "storageSize": 1, + "storageStatus": "DELETED", + "storageAutoscale": { + "useStorageAutoscale": false, + "threshold": 1, + "maxStorageSize": 1, + "cooldownTime": 1 + } } ``` @@ -2453,93 +3557,119 @@ GET /v4.0/db-instances/{dbInstanceId}/db-schemas --- -### DB 스키마 생성하기 +### 스토리지 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/db-schemas +PUT /v4.0/db-instances/{dbInstanceId}/storage-info ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceSchema.Create | DB 인스턴스 내 스키마 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | 스토리지 정보 수정하기 | -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|--------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaName | Body | String | O | DB 스키마 이름 | +#### 공통 요청 -#### 응답 +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최댓값: `2048` | +| storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +#### 스토리지 자동 확장 사용 시 ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -### DB 스키마 삭제하기 +

예시 +

-```http -DELETE /v4.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} +```json +{ + "storageSize": 1, + "storageAutoscale": { + "useStorageAutoscale": false + } +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceSchema.Delete | DB 인스턴스 내 스키마 삭제하기 | +

+
-#### 요청 +#### 응답 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaId | URL | UUID | O | DB 스키마의 식별자 | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 로그 파일 목록 보기 +## 백업 + +### 백업 상태 + +| 상태 | 설명 | +|--------------|--------------| +| `BACKING_UP` | 백업 중인 경우 | +| `COMPLETED` | 백업이 완료된 경우 | +| `DELETING` | 백업이 삭제 중인 경우 | +| `DELETED` | 백업이 삭제된 경우 | +| `ERROR` | 오류가 발생한 경우 | + +### 백업 목록 조회 ```http -GET /v4.0/db-instances/{dbInstanceId}/log-files +GET /v4.0/backups ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|-----------------------| -| RDSforMySQL:DbInstanceLog.List | DB 인스턴스 내 로그 파일 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.List | 백업 목록 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|-------|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileTypes | Query | Array | X | 로그 파일 타입 종류 목록
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| logFiles | Body | Array | 로그 파일 목록 | -| logFiles.logFileName | Body | String | 로그 파일 이름 | -| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | -| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | -| logFiles.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 백업 목록 수 | +| backups | Body | Array | 백업 목록 | +| backups.backupId | Body | UUID | 백업의 식별자 | +| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | +| backups.backupStatus | Body | Enum | 백업의 현재 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| backups.dbVersion | Body | Enum | DB 엔진 유형 | +| backups.utilVersion | Body | String | 유틸리티 버전 | +| backups.backupType | Body | Enum | 백업 유형
- AUTO
- MANUAL | +| backups.backupSize | Body | Number | 백업의 크기(Byte) | +| backups.createdYmdt | Body | DateTime | 생성 일시 | +| backups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -2551,12 +3681,19 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files "resultMessage": "SUCCESS", "isSuccessful": true }, - "logFiles": [ + "totalCounts": 1, + "backups": [ { - "logFileName": "xtra_full.log-20230317", - "logFileType": "BACKUP", - "logFileSize": 4096, - "createdYmdt": "2023-03-17T14:02:29+09:00" + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "utilVersion": "utilVersion-example", + "backupType": "AUTO", + "backupSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -2567,107 +3704,92 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files --- -### 로그 파일 내보내기 +### 백업 생성하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/log-files/export +POST /v4.0/backups ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|----------------------| -| RDSforMySQL:DbInstanceLog.Export | DB 인스턴스 내 로그 파일 내보내기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.Create | 백업 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|--------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileNames | Body | Array | O | 로그 파일 이름 목록
- 최소 크기: `1` | -| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupName | Body | String | O | 백업을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| baseBackupId | Body | UUID | X | 원본 백업의 식별자 | +| dbInstanceId | Body | UUID | X | DB 인스턴스의 식별자 | +| backupMethodType | Body | Enum | O | 백업 방식 타입
- FULL: `전체 백업`
- INCREMENTAL: `증분 백업`
- SNAPSHOT: `스냅숏 백업` | + +

예시 +

+ +```json +{ + "backupName": "backupName", + "baseBackupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "backupMethodType": "FULL" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "logFileNames": ["xtra_full.log-20230317"], - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "logs/backup" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -## 백업 - -### 백업 상태 - -| 상태 | 설명 | -|--------------|--------------| -| `BACKING_UP` | 백업 중인 경우 | -| `COMPLETED` | 백업이 완료된 경우 | -| `DELETING` | 백업이 삭제 중인 경우 | -| `DELETED` | 백업이 삭제된 경우 | -| `ERROR` | 오류가 발생한 경우 | - -### 백업 목록 조회 +### 백업 삭제하기 ```http -GET /v4.0/backups +DELETE /v4.0/backups/{backupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| -| RDSforMySQL:Backup.List | 백업 목록 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.Delete | 백업 삭제하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|--------|----|----------------------------------------------------------| -| page | Query | Number | O | 조회할 목록의 페이지
- 최솟값: `1` | -| size | Query | Number | O | 조회할 목록의 페이지 크기
- 최솟값: `1`
- 최댓값: `100` | -| backupType | Query | Enum | X | 백업 유형
- `AUTO`: 자동
- `MANUAL`: 수동
- 기본값: 전체 | -| dbInstanceId | Query | UUID | X | 원본 DB 인스턴스의 식별자 | -| dbVersion | Query | Enum | X | DB 엔진 유형 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|-----------------------------------| -| totalCounts | Body | Number | 전체 백업 목록 수 | -| backups | Body | Array | 백업 목록 | -| backups.backupId | Body | UUID | 백업의 식별자 | -| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | -| backups.backupStatus | Body | Enum | 백업의 현재 상태 | -| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| backups.dbVersion | Body | Enum | DB 엔진 유형 | -| backups.utilVersion | Body | String | 백업에 사용된 xtrabackup 유틸리티 버전 | -| backups.backupType | Body | Enum | 백업 유형 | -| backups.backupSize | Body | Number | 백업의 크기(Byte) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2679,21 +3801,7 @@ GET /v4.0/backups "resultMessage": "SUCCESS", "isSuccessful": true }, - "totalCounts": 1, - "backups": [ - { - "backupId": "0017f136-3e01-4530-94aa-20661afe6632", - "backupName": "backup", - "backupStatus": "COMPLETED", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd", - "dbVersion": "MYSQL_V8028", - "utilVersion": "8.0.28", - "backupType": "AUTO", - "backupSize": 4996786, - "createdYmdt": "2023-02-21T00:35:00+09:00", - "updatedYmdt": "2023-02-22T00:35:32+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2702,74 +3810,85 @@ GET /v4.0/backups --- -### 백업 생성하기 +### 백업 단건 조회 ```http -POST /v4.0/backups +GET /v4.0/backups/{backupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|---------| -| RDSforMySQL:Backup.Create | 백업 생성하기 | - -#### 공통 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|--------|----|------------------------------------------------------------| -| backupName | Body | String | O | 백업을 식별할 수 있는 이름 | -| backupMethodType | Body | Enum | O | 백업 방식 타입 종류
- `FULL`: 전체 백업
- `INCREMENTAL`: 증분 백업 | - -#### 전체 백업(backupMethodType이 `FULL`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|------|----|--------------| -| dbInstanceId | Body | UUID | O | DB 인스턴스의 식별자 | - - -

예시 -

+| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.Get | 백업 단건 조회 | -```json -{ - "backupName": "example-backup-name", - "backupMethodType": "FULL", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd" -} -``` +#### 요청 -

-
+이 API는 요청 본문을 요구하지 않습니다. -#### 증분 백업(backupMethodType이 `INCREMENTAL`인 경우) +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|------|----|------------| -| baseBackupId | Body | UUID | O | 기준 백업의 식별자 | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| backup | Body | Object | 백업 상세 정보 | +| backup.backupId | Body | UUID | 백업의 식별자 | +| backup.regionCode | Body | Enum | 리전 코드
- KR4: `한국(대구)` | +| backup.backupName | Body | String | 백업을 식별할 수 있는 이름 | +| backup.backupStatus | Body | Enum | 백업의 현재 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | +| backup.dbVersion | Body | Enum | DB 엔진 버전 | +| backup.utilVersion | Body | String | 유틸리티 버전 | +| backup.backupType | Body | Enum | 백업 유형 (AUTO, MANUAL)
- AUTO
- MANUAL | +| backup.backupMethodType | Body | Enum | 백업 방식 (FULL, SNAPSHOT, INCREMENTAL)
- FULL
- INCREMENTAL
- SNAPSHOT | +| backup.backupFileType | Body | Enum | 백업 파일 유형
- XBSTREAM
- TAR_ZSTD
- TAR_LZ4
- TAR_GZIP
- SNAPSHOT | +| backup.backupSize | Body | Number | 백업의 크기(Byte) | +| backup.isReplicable | Body | Boolean | 복제 가능 여부 | +| backup.binLogFileName | Body | String | 바이너리 로그 파일명 | +| backup.binLogPosition | Body | Object | 바이너리 로그 위치 | +| backup.createdYmdt | Body | DateTime | 생성 일시 | +| backup.updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "backupName": "example-backup-name", - "backupMethodType": "INCREMENTAL", - "baseBackupId": "3ae7914f-9b42-4729-b125-87417b72cf36" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "backup": { + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "regionCode": "KR4", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "dbVersion": "MYSQL_V8036", + "utilVersion": "utilVersion-example", + "backupType": "AUTO", + "backupMethodType": "FULL", + "backupFileType": "XBSTREAM", + "backupSize": 1, + "isReplicable": false, + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + }, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } } ```

- -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- ### 백업 내보내기 @@ -2780,31 +3899,31 @@ POST /v4.0/backups/{backupId}/export #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|---------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Backup.Export | 백업 내보내기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|-----------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 계정 혹은 IAM 회원 ID | +| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 |
예시

```json { - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "backups/backup_file" + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" } ``` @@ -2813,12 +3932,26 @@ POST /v4.0/backups/{backupId}/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | -> [주의] -> 수동 백업의 경우 백업이 수행된 DB 인스턴스가 존재하지 않으면, 백업을 오브젝트 스토리지로 내보낼 수 없습니다. +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -2830,73 +3963,98 @@ POST /v4.0/backups/{backupId}/restore #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Backup.Restore | 백업 복원하기 | -#### 요청 +#### 공통 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------------------------------|------|---------|----|---------------------------------------------------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Integer | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 ||network|Body|Object|O|네트워크 정보 객체| -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄) | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| dbPort | Body | Number | X | DB 포트. 미지정 시 원본 인스턴스 값 사용
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| network | Body | Object | X | 네트워크 정보 객체. 미지정 시 원본 인스턴스 값 사용 | +| network.subnetId | Body | UUID | X | 서브넷의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역. 미지정 시 랜덤 선택 | +| storage | Body | Object | X | 스토리지 정보 객체. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageType | Body | Enum | X | 스토리지 타입. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | X | 백업 정보 객체. 미지정 시 원본 인스턴스 백업 설정 사용 | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수. 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부. 미지정 시 원본 인스턴스 값 사용 | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록. 미지정 시 원본 인스턴스 값 사용 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` |
예시

```json - { - "dbInstanceName": "db-instance-restore", - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbPort": 10000, - "parameterGroupId": "132d383c-38e3-468a-a826-5e9a8fff15d0", + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, "availabilityZone": "kr-pub-a" }, "storage": { "storageType": "General SSD", - "storageSize": 20 + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 0, + "replicationRegion": "KR4", + "useBackupLock": false, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", + "backupWndBgnTime": "backupWndBgnTime-example", "backupWndDuration": "HALF_AN_HOUR" } ] @@ -2909,37 +4067,26 @@ POST /v4.0/backups/{backupId}/restore #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### 백업 삭제하기 +

예시 +

-```http -DELETE /v4.0/backups/{backupId} +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|-------------------------------------------|---------| -| RDSforMySQL:Backup.Delete | 백업 삭제하기 | - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------|-----|------|----|---------| -| backupId | URL | UUID | O | 백업의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -2962,8 +4109,8 @@ GET /v4.0/db-security-groups #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|----------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroup.List | DB 보안 그룹 목록 보기 | #### 요청 @@ -2972,15 +4119,16 @@ GET /v4.0/db-security-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-----------------------------------| -| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | -| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 DB 보안 그룹 목록 수 | +| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | +| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -2992,14 +4140,15 @@ GET /v4.0/db-security-groups "resultMessage": "SUCCESS", "isSuccessful": true }, + "totalCounts": 1, "dbSecurityGroups": [ { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", "progressStatus": "NONE", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2022-02-19T19:18:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3010,48 +4159,65 @@ GET /v4.0/db-security-groups --- -### DB 보안 그룹 상세 보기 +### DB 보안 그룹 생성하기 ```http -GET /v4.0/db-security-groups/{dbSecurityGroupId} +POST /v4.0/db-security-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|----------------| -| RDSforMySQL:DbSecurityGroup.Get | DB 보안 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroup.Create | DB 보안 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` | +| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | +| rules.direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| rules.etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| rules.port | Body | Object | O | 포트 객체 | +| rules.port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| rules.cidr | Body | String | O | CIDR | +| rules.description | Body | String | X | 보안 그룹 규칙에 대한 추가 정보 | + +

예시 +

+ +```json +{ + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example", + "rules": [ + { + "direction": "INGRESS", + "etherType": "IPV4", + "port": { + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 + }, + "cidr": "cidr-example", + "description": "description-example" + } + ] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|----------|--------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| rules | Body | Array | DB 보안 그룹 규칙 목록 | -| rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | -| rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.port | Body | Object | 포트 객체 | -| rules.port.portType | Body | Enum | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다.
- `PORT`: 지정된 포트값으로 설정됩니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | 최소 포트 범위 | -| rules.port.maxPort | Body | Number | 최대 포트 범위 | -| rules.cidr | Body | String | 허용할 트래픽의 원격 소스 | -| rules.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| rules.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 |
예시

@@ -3063,30 +4229,7 @@ GET /v4.0/db-security-groups/{dbSecurityGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSecurityGroup": { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", - "progressStatus": "NONE", - "rules": [ - { - "ruleId": "17c88ef6-95f1-4678-84f9-fee1b22e250d", - "description": "description", - "direction": "INGRESS", - "etherType": "IPV4", - "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 - }, - "cidr": "0.0.0.0/0", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } - ], - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3095,68 +4238,113 @@ GET /v4.0/db-security-groups/{dbSecurityGroupId} --- -### DB 보안 그룹 생성하기 +### DB 보안 그룹 삭제하기 ```http -POST /v4.0/db-security-groups +DELETE /v4.0/db-security-groups/{dbSecurityGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| -| RDSforMySQL:DbSecurityGroup.Create | DB 보안 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroup.Delete | DB 보안 그룹 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### DB 보안 그룹 상세 보기 + +```http +GET /v4.0/db-security-groups/{dbSecurityGroupId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroup.Get | DB 보안 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | -| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | -| rules.description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | -| rules.port | Body | Object | O | 포트 객체 | -| rules.port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| rules | Body | Array | DB 보안 그룹 규칙 목록 | +| rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | +| rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | +| rules.direction | Body | Enum | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| rules.etherType | Body | Enum | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| rules.port | Body | Object | 포트 객체 | +| rules.port.portType | Body | Enum | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| rules.port.minPort | Body | Number | 최소 포트 범위 | +| rules.port.maxPort | Body | Number | 최대 포트 범위 | +| rules.cidr | Body | String | CIDR | +| rules.createdYmdt | Body | DateTime | 생성 일시 | +| rules.updatedYmdt | Body | DateTime | 수정 일시 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

```json { - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", + "progressStatus": "NONE", "rules": [ { + "ruleId": "550e8400-e29b-41d4-a716-446655440000", + "description": "description-example", "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 + "portType": "ALL", + "minPort": 1, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } - ] + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|------|---------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | - --- ### DB 보안 그룹 수정하기 @@ -3167,25 +4355,25 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId} #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroup.Modify | DB 보안 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|-----------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description" + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example" } ``` @@ -3196,48 +4384,34 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- - --- -### DB 보안 그룹 삭제하기 +### DB 보안 그룹 규칙 삭제하기 ```http -DELETE /v4.0/db-security-groups/{dbSecurityGroupId} +DELETE /v4.0/db-security-groups/{dbSecurityGroupId}/rules ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| -| RDSforMySQL:DbSecurityGroup.Delete | DB 보안 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroupRule.Delete | DB 보안 그룹 규칙 삭제하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleIds | Query | String | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -3248,7 +4422,8 @@ DELETE /v4.0/db-security-groups/{dbSecurityGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3265,26 +4440,23 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroupRule.Create | DB 보안 그룹 규칙 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |

예시

@@ -3294,11 +4466,12 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "PORT", - "minPort": 10000, - "maxPort": 10000 + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -3307,9 +4480,26 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -3321,27 +4511,24 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroupRule.Modify | DB 보안 그룹 규칙 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleId | URL | UUID | O | DB 보안 그룹 규칙의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |
예시

@@ -3351,49 +4538,40 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "DB_PORT" + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ```

-
- -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 보안 그룹 규칙 삭제하기 - -```http -DELETE /v4.0/db-security-groups/{dbSecurityGroupId}/rules -``` - -#### 필요 권한 - -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| -| RDSforMySQL:DbSecurityGroupRule.Create | DB 보안 그룹 규칙 삭제하기 | +
-#### 요청 +#### 응답 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|-------|----|---------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleIds | Query | Array | O | DB 보안 그룹 규칙의 식별자 목록 | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -3407,30 +4585,28 @@ GET /v4.0/parameter-groups #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:ParameterGroup.List | 파라미터 그룹 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------|-------|------|----|----------| -| dbVersion | Query | Enum | X | DB 엔진 유형 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-------------------------------------------------------------------| -| parameterGroups | Body | Array | 파라미터 그룹 목록 | -| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameterGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 파라미터 그룹 수 | +| parameterGroups | Body | Array | 파라미터 그룹 목록 | +| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroups.parameterGroupType | Body | Enum | 파라미터 그룹 유형
- USER
- ADMIN
- DEFAULT
- CLUSTER_USER | +| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameterGroups.createdYmdt | Body | DateTime | 생성 일시 | +| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3442,15 +4618,17 @@ GET /v4.0/parameter-groups "resultMessage": "SUCCESS", "isSuccessful": true }, + "totalCounts": 1, "parameterGroups": [ { - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "parameterGroupType": "USER", "parameterGroupStatus": "STABLE", - "createdYmdt": "2023-02-31T15:28:17+09:00", - "updatedYmdt": "2023-02-31T15:28:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3459,50 +4637,47 @@ GET /v4.0/parameter-groups

- --- -### 파라미터 그룹 상세 보기 +### 파라미터 그룹 생성하기 ```http -GET /v4.0/parameter-groups/{parameterGroupId} +POST /v4.0/parameter-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMySQL:ParameterGroup.Get | 파라미터 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Create | 파라미터 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` | +| dbVersion | Body | Enum | O | DB 엔진 유형 | + +
예시 +

-| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +```json +{ + "parameterGroupName": "parameterGroupName", + "description": "description-example", + "dbVersion": "MYSQL_V8036" +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|--------------------------------------------------------------------------------------------------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameters | Body | Array | 파라미터 목록 | -| parameters.parameterId | Body | UUID | 파라미터 식별자 | -| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- `CLIENT`: client
- `MYSQL`: mysql
- `MYSQLD`: mysqld | -| parameters.parameterName | Body | String | 파라미터 이름 | -| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | -| parameters.value | Body | String | 현재 설정된 값 | -| parameters.defaultValue | Body | String | 기본값 | -| parameters.allowedValue | Body | String | 허용된 값 | -| parameters.updateType | Body | Enum | 수정 타입
- `VARIABLE`: 언제든 수정 가능
- `CONSTANT`: 수정 불가능
- `INIT_VARIABLE`: DB 인스턴스 생성 시에만 수정 가능 | -| parameters.applyType | Body | Enum | 적용 타입
- `SESSION`: 세션 적용
- `FILE`: 설정 파일 적용(재시작 필요)
- `BOTH`: 전체(재시작 필요) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |
예시

@@ -3514,103 +4689,148 @@ GET /v4.0/parameter-groups/{parameterGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", - "parameterGroupStatus": "STABLE", - "parameters": [ - { - "parameterId": "fa040b5e-f29f-46de-8f0d-bba4cb82887a", - "parameterFileGroup": "client", - "parameterName": "socket", - "fileParameterName": "socket", - "value": "/home/tcrds/db/mysql/tmp/mysql.sock", - "defaultValue": "/home/tcrds/db/mysql/tmp/mysql.sock", - "allowedValue": "", - "updateType": "CONSTANT", - "applyType": "BOTH" - } - ], - "createdYmdt": "2023-03-13T11:02:28+09:00", - "updatedYmdt": "2023-03-13T11:02:28+09:00" + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ```

+--- + +### 파라미터 그룹 삭제하기 + +```http +DELETE /v4.0/parameter-groups/{parameterGroupId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Delete | 파라미터 그룹 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 생성하기 +### 파라미터 그룹 상세 보기 ```http -POST /v4.0/parameter-groups +GET /v4.0/parameter-groups/{parameterGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Create | 파라미터 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Get | 파라미터 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameters | Body | Array | 파라미터 목록 | +| parameters.parameterId | Body | UUID | 파라미터의 식별자 | +| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- CLIENT
- MYSQL
- MYSQLD | +| parameters.parameterName | Body | String | 파라미터 이름 | +| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | +| parameters.value | Body | String | 현재 설정된 값 | +| parameters.defaultValue | Body | String | 기본값 | +| parameters.allowedValue | Body | String | 허용된 값 | +| parameters.updateType | Body | Enum | 수정 타입
- VARIABLE
- CONSTANT
- INIT_VARIABLE | +| parameters.applyType | Body | Enum | 적용 타입
- BOTH
- SESSION
- FILE | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "parameterGroupName": "parameter-group", - "dbVersion": "MYSQL_V8028" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "parameterGroupStatus": "STABLE", + "parameters": [ + { + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "parameterFileGroup": "CLIENT", + "parameterName": "parameterName-example", + "fileParameterName": "fileParameterName-example", + "value": "value-example", + "defaultValue": "defaultValue-example", + "allowedValue": "allowedValue-example", + "updateType": "VARIABLE", + "applyType": "BOTH" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | - --- -### 파라미터 그룹 복사하기 +### 파라미터 그룹 수정하기 ```http -POST /v4.0/parameter-groups/{parameterGroupId}/copy +PUT /v4.0/parameter-groups/{parameterGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Copy | 파라미터 그룹 복사하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Modify | 파라미터 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "parameterGroupName": "parameter-group-copy", - "description": "copy" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -3619,38 +4839,37 @@ POST /v4.0/parameter-groups/{parameterGroupId}/copy #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 수정하기 +### 파라미터 그룹 복사하기 ```http -PUT /v4.0/parameter-groups/{parameterGroupId} +POST /v4.0/parameter-groups/{parameterGroupId}/copy ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Modify | 파라미터 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Copy | 파라미터 그룹 복사하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |

예시

```json { - "parameterGroupName": "parameter-group" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -3659,7 +4878,9 @@ PUT /v4.0/parameter-groups/{parameterGroupId} #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |

예시

@@ -3670,7 +4891,8 @@ PUT /v4.0/parameter-groups/{parameterGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3687,18 +4909,18 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Modify | 파라미터 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Modify | 파라미터 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------------|------|--------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | -| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | -| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | +| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | +| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 |

예시

@@ -3707,8 +4929,8 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters { "modifiedParameters": [ { - "parameterId": "3abac558-7274-44e1-9f4a-f100f53f67ba", - "value": "0" + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "value": "value-example" } ] } @@ -3721,22 +4943,6 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- ### 파라미터 그룹 재설정하기 @@ -3747,61 +4953,52 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/reset #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:ParameterGroup.Reset | 파라미터 그룹 재설정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | #### 응답 이 API는 응답 본문을 반환하지 않습니다. -
예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- -### 파라미터 그룹 삭제하기 +## 사용자 그룹 + +### 사용자 그룹 목록 보기 ```http -DELETE /v4.0/parameter-groups/{parameterGroupId} +GET /v4.0/user-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Delete | 파라미터 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.List | 사용자 그룹 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | - #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 사용자 그룹 목록 수 | +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroups.createdYmdt | Body | DateTime | 생성 일시 | +| userGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3812,7 +5009,16 @@ DELETE /v4.0/parameter-groups/{parameterGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "totalCounts": 1, + "userGroups": [ + { + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -3821,33 +5027,45 @@ DELETE /v4.0/parameter-groups/{parameterGroupId} --- -## 사용자 그룹 - -### 사용자 그룹 목록 보기 +### 사용자 그룹 생성하기 ```http -GET /v4.0/user-groups +POST /v4.0/user-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|--------------| -| RDSforMySQL:UserGroup.List | 사용자 그룹 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.Create | 사용자 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록 | +| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` | + +

예시 +

+ +```json +{ + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAll": false +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|-----------------------------------| -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| userGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 |
예시

@@ -3859,14 +5077,7 @@ GET /v4.0/user-groups "resultMessage": "SUCCESS", "isSuccessful": true }, - "userGroups": [ - { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" - } - ] + "userGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3875,6 +5086,32 @@ GET /v4.0/user-groups --- +### 사용자 그룹 삭제하기 + +```http +DELETE /v4.0/user-groups/{userGroupId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.Delete | 사용자 그룹 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + ### 사용자 그룹 상세 보기 ```http @@ -3883,29 +5120,29 @@ GET /v4.0/user-groups/{userGroupId} #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:UserGroup.Get | 사용자 그룹 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|----------|-----------------------------------------------------------------------------------------------------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
`ENTIRE`: 프로젝트 멤버 전체를 포함하는 사용자 그룹
`INDIVIDUAL_MEMBER`: 특정 프로젝트 멤버를 포함하는 사용자 그룹 | -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
- ENTIRE
- INDIVIDUAL_MEMBER | +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -3917,16 +5154,16 @@ GET /v4.0/user-groups/{userGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "userGroupTypeCode": "INDIVIDUAL_MEMBER", + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "userGroupTypeCode": "ENTIRE", "members": [ { - "memberId": "1321e759-2ef3-4b85-9921-b13e918b24b5" + "memberId": "550e8400-e29b-41d4-a716-446655440000" } ], - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -3935,42 +5172,35 @@ GET /v4.0/user-groups/{userGroupId} --- -### 사용자 그룹 생성하기 +### 사용자 그룹 수정하기 ```http -POST /v4.0/user-groups +PUT /v4.0/user-groups/{userGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMySQL:UserGroup.Create | 사용자 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.Modify | 사용자 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|-----------------------------------------------------------| -| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록
`selectAll`이 true인 경우 해당 필드 값은 무시됨 | -| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 유무
true인 경우 해당 그룹은 전체 멤버에 대해 설정됨 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | +| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` |

예시

```json { - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5" - ] -} -``` - -```json -{ - "userGroupName": "dev-team", - "selectAll": true + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAll": false } ``` @@ -3979,52 +5209,40 @@ POST /v4.0/user-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------|------|------|-------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 사용자 그룹 수정하기 +## 알림 그룹 + +### 알림 그룹 목록 보기 ```http -PUT /v4.0/user-groups/{userGroupId} +GET /v4.0/notification-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMySQL:UserGroup.Modify | 사용자 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.List | 알림 그룹 목록 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|----------------------------------------------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | -| userGroupName | Body | String | X | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | -| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 유무
true인 경우 해당 그룹은 전체 멤버에 대해 설정됨 | - -

예시 -

- -```json -{ - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5", - "f9064b09-2b15-442e-a4b0-3a5a2754555e" - ] -} -``` - -

-
+이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroups | Body | Array | 알림 그룹 목록 | +| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | +| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | +| notificationGroups.createdYmdt | Body | DateTime | 생성 일시 | +| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4035,7 +5253,18 @@ PUT /v4.0/user-groups/{userGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "notificationGroups": [ + { + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, + "notifySms": false, + "isEnabled": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -4044,27 +5273,51 @@ PUT /v4.0/user-groups/{userGroupId} --- -### 사용자 그룹 삭제하기 +### 알림 그룹 생성하기 ```http -DELETE /v4.0/user-groups/{userGroupId} +POST /v4.0/notification-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMySQL:UserGroup.Delete | 사용자 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.Create | 알림 그룹 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | +| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | + +

예시 +

+ +```json +{ + "notificationGroupName": "notificationGroupName", + "notifyEmail": true, + "notifySms": true, + "isEnabled": true, + "dbInstanceIds": [], + "userGroupIds": [] +} +``` + +

+
#### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 |
예시

@@ -4075,7 +5328,8 @@ DELETE /v4.0/user-groups/{userGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4084,63 +5338,29 @@ DELETE /v4.0/user-groups/{userGroupId} --- -## 알림 그룹 - -### 알림 그룹 목록 보기 +### 알림 그룹 삭제하기 ```http -GET /v4.0/notification-groups +DELETE /v4.0/notification-groups/{notificationGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|-------------| -| RDSforMySQL:NotificationGroup.List | 알림 그룹 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.Delete | 알림 그룹 삭제하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------------|------|----------|-----------------------------------| -| notificationGroups | Body | Array | 알림 그룹 목록 | -| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | -| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | -| notificationGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - -

예시 -

+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "notificationGroups": [ - { - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, - "notifySms": false, - "isEnabled": true, - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" - } - ] -} -``` +#### 응답 -

-
+이 API는 응답 본문을 반환하지 않습니다. --- @@ -4152,35 +5372,35 @@ GET /v4.0/notification-groups/{notificationGroupId} #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:NotificationGroup.Get | 알림 그룹 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------------|------|----------|-----------------------------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notifySms | Body | Boolean | SMS 알림 여부 | -| isEnabled | Body | Boolean | 활성화 여부 | -| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notifySms | Body | Boolean | SMS 알림 여부 | +| isEnabled | Body | Boolean | 활성화 여부 | +| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4192,25 +5412,25 @@ GET /v4.0/notification-groups/{notificationGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, "notifySms": false, - "isEnabled": true, + "isEnabled": false, "dbInstances": [ { - "dbInstanceId": "ed5cb985-526f-4c54-9ae0-40288593de65", - "dbInstanceName": "database" + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example" } ], "userGroups": [ { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team" + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example" } ], - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -4219,43 +5439,41 @@ GET /v4.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 생성하기 +### 알림 그룹 수정하기 ```http -POST /v4.0/notification-groups +PUT /v4.0/notification-groups/{notificationGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMySQL:NotificationGroup.Create | 알림 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.Modify | 알림 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------------| -| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | -| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | -| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | -| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | +| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `false` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `false` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `false` | +| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 |

예시

```json { - "notificationGroupName": "dev-team-noti", + "notificationGroupName": "notificationGroupName-example", "notifyEmail": false, - "isEnable": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65" - ], - "userGroupIds": [ - "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0" - ] + "notifySms": false, + "isEnabled": false, + "dbInstanceIds": [], + "userGroupIds": [] } ``` @@ -4264,45 +5482,73 @@ POST /v4.0/notification-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|------|------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 알림 그룹 수정하기 +## 모니터링 + +### 통계 정보 조회 ```http -PUT /v4.0/notification-groups/{notificationGroupId} +GET /v4.0/metric-statistics ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMySQL:NotificationGroup.Modify | 알림 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Metric.List | 통계 정보 조회 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### Metric 목록 보기 + +```http +GET /v4.0/metrics +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Metric.List | Metric 목록 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부 | -| notifySms | Body | Boolean | X | SMS 알림 여부 | -| isEnabled | Body | Boolean | X | 활성화 여부 | -| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +이 API는 요청 본문을 요구하지 않습니다. + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| metrics | Body | Array | Metric 목록 | +| metrics.measureName | Body | String | 조회 지표 유형 | +| metrics.unit | Body | String | 측정값 단위 |

예시

```json { - "notifyEmail": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65", - "d51b7da0-682f-47ff-b588-b739f6adc740" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "metrics": [ + { + "measureName": "measureName-example", + "unit": "unit-example" + } ] } ``` @@ -4310,9 +5556,46 @@ PUT /v4.0/notification-groups/{notificationGroupId}

+--- + +## 이벤트 + +### 이벤트 카테고리 + +이벤트는 카테고리로 분류할 수 있으며 아래와 같습니다. + +| 이벤트 카테고리 | 설명 | +|-------------|---------| +| ALL | 전체 | +| BACKUP | 백업 | +| DB_INSTANCE | DB 인스턴스 | +| JOB | 작업 | +| TENANT | 테넌트 | +| MONITORING | 모니터링 | + +### 구독 가능한 이벤트 코드 목록 보기 + +```http +GET /v4.0/event-codes +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Event.List | 구독 가능한 이벤트 코드 목록 보기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventCodes | Body | Array | 이벤트 코드 목록 | +| eventCodes.eventCode | Body | Enum | 이벤트 코드 | +| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT |
예시

@@ -4323,7 +5606,13 @@ PUT /v4.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "eventCodes": [ + { + "eventCode": "ENUM_VALUE", + "eventCategoryType": "ALL" + } + ] } ``` @@ -4332,29 +5621,36 @@ PUT /v4.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 삭제하기 +### 이벤트 목록 조회 ```http -DELETE /v4.0/notification-groups/{notificationGroupId} +GET /v4.0/events ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMySQL:NotificationGroup.Delete | 알림 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Event.List | 이벤트 목록 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | - #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 목록 수 | +| events | Body | Array | 이벤트 목록 | +| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | +| events.sourceId | Body | String | 이벤트 소스의 식별자 | +| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | +| events.messages | Body | Array | 이벤트 메세지 목록 | +| events.messages.langCode | Body | Enum | 언어 코드
- KO
- EN
- JA
- ZH | +| events.messages.message | Body | String | 이벤트 메세지 | +| events.eventYmdt | Body | DateTime | 이벤트 발생 일시 |

예시

@@ -4365,7 +5661,23 @@ DELETE /v4.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "totalCounts": 1, + "events": [ + { + "eventCategoryType": "ALL", + "eventCode": "ENUM_VALUE", + "sourceId": "sourceId-example", + "sourceName": "sourceName-example", + "messages": [ + { + "langCode": "KO", + "message": "message-example" + } + ], + "eventYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -4374,19 +5686,19 @@ DELETE /v4.0/notification-groups/{notificationGroupId} --- -## 모니터링 +## 이벤트 구독 -### Metric 목록 보기 +### 이벤트 구독 목록 조회 ```http -GET /v4.0/metrics +GET /v4.0/event-subscriptions ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| -| RDSforMySQL:Metric.List | 통계 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:EventSubscription.List | 이벤트 구독 목록 조회 | #### 요청 @@ -4394,11 +5706,22 @@ GET /v4.0/metrics #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|--------|-----------| -| metrics | Body | Array | Metric 목록 | -| metrics.measureName | Body | Enum | 조회 지표 유형 | -| metrics.unit | Body | String | 측정값 단위 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 구독 목록 수 | +| eventSubscriptions | Body | Array | 이벤트 구독 목록 | +| eventSubscriptions.eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 | +| eventSubscriptions.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.eventSubscriptionName | Body | String | 이벤트 구독의 식별할 수 있는 이름 | +| eventSubscriptions.enabled | Body | Boolean | 활성화 여부 | +| eventSubscriptions.notifyEmail | Body | Boolean | 이메일 발송 여부 | +| eventSubscriptions.notifySms | Body | Boolean | SMS 발송 여부 | +| eventSubscriptions.eventCodes | Body | Array | 구독할 이벤트 코드 목록 | +| eventSubscriptions.sources | Body | Array | 구독할 이벤트 소스 목록 | +| eventSubscriptions.sources.sourceId | Body | String | 이벤트 소스의 식별자 | +| eventSubscriptions.sources.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.userGroupIds | Body | Array | 이벤트 구독 중인 사용자 그룹의 식별자 목록 | +| eventSubscriptions.createdYmdt | Body | DateTime | 생성 일시 |

예시

@@ -4410,10 +5733,24 @@ GET /v4.0/metrics "resultMessage": "SUCCESS", "isSuccessful": true }, - "metrics": [ + "totalCounts": 1, + "eventSubscriptions": [ { - "measureName": "CPU_USAGE", - "unit": "%" + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ + { + "sourceId": "sourceId-example", + "eventCategoryType": "ALL" + } + ], + "userGroupIds": [], + "createdYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -4424,186 +5761,179 @@ GET /v4.0/metrics --- -### 통계 정보 조회 +### 이벤트 구독 생성하기 ```http -GET /v4.0/metric-statistics +POST /v4.0/event-subscriptions ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| -| RDSforMySQL:Metric.List | 통계 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:EventSubscription.Create | 이벤트 구독 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|----------|----|-----------------------------------| -| dbInstanceId | Query | UUID | O | DB 인스턴스의 식별자 | -| measureNames | Query | Array | O | 조회 지표 목록
- 최소 크기: `1` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| interval | Query | Number | X | 조회 간격 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|-----------|----------| -| metricStatistics | Body | Array | 통계 정보 목록 | -| metricStatistics.measureName | Body | Enum | 측정 항목 유형 | -| metricStatistics.unit | Body | String | 측정값 단위 | -| metricStatistics.values | Body | Array | 측정값 목록 | -| metricStatistics.values.timestamp | Body | Timestamp | 측정 시간 | -| metricStatistics.values.value | Body | Object | 측정값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | O | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | O | 활성화 여부 | +| notifyEmail | Body | Boolean | O | 이메일 발송 여부 | +| notifySms | Body | Boolean | O | SMS 발송 여부 | +| eventCodes | Body | Array | O | 구독할 이벤트 코드 목록 | +| sources | Body | Array | O | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | O | 이벤트 구독할 사용자 그룹의 식별자 목록 |

예시

```json { - "metricStatistics": [ + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ { - "measureName": "MYSQL_STATUS", - "unit": "", - "values": [ - [ - 1679298540, - "1" - ], - [ - 1679298600, - "1" - ], - [ - 1679298660, - "1" - ] - ] + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" } - ] + ], + "userGroupIds": [] } ```

---- +#### 응답 -## 이벤트 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 | -### 이벤트 카테고리 +
예시 +

-이벤트는 카테고리로 분류할 수 있으며 아래와 같습니다. +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이벤트 카테고리 | 설명 | -|-------------|---------| -| ALL | 전체 | -| BACKUP | 백업 | -| DB_INSTANCE | DB 인스턴스 | -| JOB | 작업 | -| TENANT | 테넌트 | -| MONITORING | 모니터링 | +

+
-### 이벤트 목록 조회 +--- + +### 이벤트 구독 삭제하기 ```http -GET /v4.0/events +DELETE /v4.0/event-subscriptions/{eventSubscriptionId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------|-----------| -| RDSforMySQL:Event.List | 이벤트 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:EventSubscription.Delete | 이벤트 구독 삭제하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | O | 조회할 목록의 페이지
- 최솟값: `1` | -| size | Query | Number | O | 조회할 목록의 페이지 크기
- 최솟값: `1`
- 최댓값: `100` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| eventCategoryType | Query | Enum | O | 조회할 이벤트 카테고리 유형
- `ALL`: 전체
- `INSTANCE`: DB 인스턴스
- `BACKUP`: 백업
- `DB_SECURITY_GROUP`: DB 보안 그룹
- `TENANT`: 테넌트 | -| sourceId | Query | String | X | 이벤트가 발생한 대상 리소스의 식별자 | -| keyword | Query | String | X | 이벤트 메시지에 포함된 문자열 검색어 | -| ascendingOrder | Query | Enum | X | 이벤트 메시지 정렬 순서
- `ASC`: 오름차순
- `DESC`: 내림차순
- 기본값: `DESC` | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|---------------------------------------| -| totalCounts | Body | Number | 전체 이벤트 목록 수 | -| events | Body | Array | 이벤트 목록 | -| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | -| events.sourceId | Body | String | 이벤트 소스의 식별자 | -| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | -| events.messages | Body | Array | 이벤트 메시지 목록 | -| events.messages.langCode | Body | String | 언어 코드 | -| events.messages.message | Body | String | 이벤트 메시지 | -| events.eventYmdt | Body | DateTime | 이벤트 발생 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 이벤트 구독 수정하기 + +```http +PUT /v4.0/event-subscriptions/{eventSubscriptionId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:EventSubscription.Modify | 이벤트 구독 수정하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | +| eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | X | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | X | 활성화 여부 | +| notifyEmail | Body | Boolean | X | 이메일 발송 여부 | +| notifySms | Body | Boolean | X | SMS 발송 여부 | +| eventCodes | Body | Array | X | 구독할 이벤트 코드 목록 | +| sources | Body | Array | X | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | X | 이벤트 구독할 사용자 그룹의 식별자 목록 |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "totalCounts": 28, - "events": [ + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ { - "eventCategoryType": "INSTANCE", - "eventCode": "INSTC_02_01", - "sourceId": "76f00947-356e-4a20-8922-428368cc45ed", - "sourceName": "db-instance", - "messages": [ - { - "langCode": "EN", - "message": "DB instance started" - }, - { - "langCode": "JA", - "message": "DBインスタンスの起動" - }, - { - "langCode": "KO", - "message": "DB 인스턴스 시작" - }, - { - "langCode": "ZH", - "message": "DB instance started" - } - ], - "eventYmdt": "2023-03-20T16:31:59+09:00" + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" } - ] + ], + "userGroupIds": [] } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- -### 구독 가능한 이벤트 코드 목록 보기 +## 가용성 영역 + +### 가용성 영역 목록 보기 ```http -GET /v4.0/event-codes +GET /v4.0/availability-zones ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------|-----------| -| RDSforMySQL:Event.List | 이벤트 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:AvailabilityZone.List | 가용성 영역 목록 보기 | #### 요청 @@ -4611,11 +5941,12 @@ GET /v4.0/event-codes #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|-------|-------------| -| eventCodes | Body | Array | 이벤트 코드 목록 | -| eventCodes.eventCode | Body | Enum | 이벤트 코드 | -| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| availabilityZones | Body | Array | 가용성 영역 목록 | +| availabilityZones.availabilityZoneName | Body | String | 가용성 영역 이름 | +| availabilityZones.zoneState | Body | Object | 가용성 영역 상태 | +| availabilityZones.zoneState.available | Body | Boolean | 가용성 영역의 사용 가능 여부 |
예시

@@ -4627,10 +5958,12 @@ GET /v4.0/event-codes "resultMessage": "SUCCESS", "isSuccessful": true }, - "eventCodes": [ + "availabilityZones": [ { - "eventCode": "INSTC_05_01", - "eventCategoryType": "INSTANCE" + "availabilityZoneName": "availabilityZoneName-example", + "zoneState": { + "available": false + } } ] } @@ -4640,3 +5973,4 @@ GET /v4.0/event-codes

--- + diff --git a/ko/api-guide-v4.0-ngsc.md b/ko/api-guide-v4.0-ngsc.md index 71b4f3d8..26c581fe 100644 --- a/ko/api-guide-v4.0-ngsc.md +++ b/ko/api-guide-v4.0-ngsc.md @@ -1,35 +1,39 @@ -## Database > RDS for MySQL > API 가이드 +## Database > RDS for MySQL > API v4.0 가이드 -| 리전 | 엔드포인트 | -|-----------|-----------------------------------------------| -| 한국(판교) 리전 | https://kr4-rds-mysql-api.ngsc.go.kr | +## RDS for MySQL API 공통 정보 -## 인증 및 권한 +### API 엔드포인트 + +| 리전 | 엔드포인트 | +|------|----------| +| 한국(대구) 리전 | https://ngsc-kr4-rds-proxy.cloud.toastoven.net | -API를 사용하려면 [Public API > API 호출 및 인증](/nhncloud/ko/public-api/api-authentication-ngsc/)을 통해 발급 받은 Bearer 유형의 토큰이 필요합니다. -발급 받은 토큰은 Appkey와 함께 요청 Header에 포함해야 합니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|--------|--------|----|-------------------------------------------------------------| -| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | -| X-NHN-AUTHORIZATION | Header | String | O | Public API로 발급 받은 Bearer 유형 토큰 | +### 인증 및 권한 + +RDS for MySQL은(는) API 호출 시 인증/인가를 위해 User Access Key 토큰을 사용합니다. User Access Key 토큰은 User Access Key를 기반으로 발급되는 Bearer 타입의 일시적 액세스 토큰입니다. User Access Key 토큰 발급 및 사용에 대한 자세한 내용은 [User Access Key 토큰](/nhncloud/ko/public-api/user-access-key-token)을 참고하세요. +발급 받은 토큰은 Appkey와 함께 요청 Header에 포함해야 합니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | +| X-NHN-AUTHORIZATION | Header | String | O | Public API로 발급 받은 Bearer 유형 토큰 | -또한 프로젝트 멤버 역할에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER`로 구분하여 권한을 부여할 수 있습니다. +또한 프로젝트 권한에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER` 역할에는 아래처럼 기본 권한이 부여돼 있고 프로젝트 내 역할 그룹 관리 메뉴에서 필요한 권한만 부여할 수 있습니다. -* `RDS for MySQL ADMIN` 권한은 모든 기능을 사용 가능합니다. -* `RDS for MySQL VIEWER` 권한은 정보를 조회하는 기능만 사용 가능합니다. +* `RDS for MySQL ADMIN` 역할은 API 실행에 필요한 모든 권한이 부여됩니다. +* `RDS for MySQL VIEWER` 역할은 정보를 조회하는 권한만 부여됩니다. * DB 인스턴스를 생성, 수정, 삭제하거나, DB 인스턴스를 대상으로 하는 어떠한 기능도 사용할 수 없습니다. - * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용 가능합니다. + * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용할 수 있습니다. API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같은 오류가 발생합니다. -| resultCode | resultMessage | 설명 | -|------------|---------------|-------------| -| 80401 | Unauthorized | 인증에 실패했습니다. | -| 80403 | Forbidden | 권한이 없습니다. | +| resultCode | resultMessage | 설명 | +|------------|---------------|-----| +| 80401 | Unauthorized | 인증에 실패했습니다. | +| 80403 | Forbidden | 권한이 없습니다. | -## 응답 공통 정보 +### 응답 공통 정보 모든 API 요청에 '200 OK'로 응답합니다. 자세한 응답 결과는 응답 본문의 헤더를 참고합니다. @@ -45,54 +49,58 @@ API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같 ``` #### 필드 -| 이름 | 형식 | 설명 | -|---------------|---------|-----------------------------------------| -| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | -| resultMessage | String | 결과 메시지 | -| isSuccessful | Boolean | 성공 여부 | - - -## DB 엔진 유형 - -| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 | -|--------------|----------|-----------------|--------| -| MYSQL\_V5633 | X | X | NATIVE | -| MYSQL\_V5715 | O | O | NATIVE | -| MYSQL\_V5719 | O | O | NATIVE | -| MYSQL\_V5726 | O | O | NATIVE | -| MYSQL\_V5731 | X | X | NATIVE | -| MYSQL\_V5733 | O | X | NATIVE, SHA256 | -| MYSQL\_V5737 | O | O | NATIVE, SHA256 | -| MYSQL\_V8018 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8023 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8028 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8032 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8033 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8034 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8405 | O | O | CACHING_SHA2 | +| 이름 | 형식 | 설명 | +|-----|-----|-----| +| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | +| resultMessage | String | 결과 메시지 | +| isSuccessful | Boolean | 성공 여부 | + +### DB 엔진 유형 + +| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 | +|------------|----------|------------------|------------| +| MYSQL_V5633 | X | X | NATIVE | +| MYSQL_V5715 | O | O | NATIVE | +| MYSQL_V5719 | O | O | NATIVE | +| MYSQL_V5726 | O | O | NATIVE | +| MYSQL_V5731 | X | X | NATIVE | +| MYSQL_V5733 | O | X | NATIVE, SHA256 | +| MYSQL_V5737 | O | O | NATIVE, SHA256 | +| MYSQL_V8018 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8023 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8028 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8032 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8033 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8034 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8044 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8045 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8405 | O | O | CACHING_SHA2 | +| MYSQL_V8406 | O | O | CACHING_SHA2 | +| MYSQL_V8407 | O | O | CACHING_SHA2 | +| MYSQL_V8408 | O | O | CACHING_SHA2 | * ENUM 타입의 dbVersion 필드에 대해 해당 값을 사용할 수 있습니다. * 버전에 따라 생성 또는 복원이 불가능한 경우가 있을 수 있습니다. ## 프로젝트 정보 -### 리전 목록 보기 +### 프로젝트 멤버 목록 보기 ```http -GET /v4.0/project/regions +GET /v4.0/project/members ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|------------| -| RDSforMySQL:Project.Get | 프로젝트 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Project.Get | 프로젝트 멤버 목록 보기 | #### 요청 @@ -100,11 +108,13 @@ GET /v4.0/project/regions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------|------|---------|----------------------------------------------------------------------------| -| regions | Body | Array | 리전 목록 | -| regions.regionCode | Body | Enum | 리전 코드
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| members.memberName | Body | String | 프로젝트 멤버의 이름 | +| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | +| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 |
예시

@@ -116,38 +126,33 @@ GET /v4.0/project/regions "resultMessage": "SUCCESS", "isSuccessful": true }, - "regions": [ - { - "regionCode": "KR1", - "isEnabled": true - }, - { - "regionCode": "KR2", - "isEnabled": true - }, + "members": [ { - "regionCode": "JP1", - "isEnabled": true + "memberId": "550e8400-e29b-41d4-a716-446655440000", + "memberName": "memberName-example", + "emailAddress": "emailAddress-example", + "phoneNumber": "phoneNumber-example" } ] } ``` +

--- -### 프로젝트 멤버 목록 보기 +### 리전 목록 보기 ```http -GET /v4.0/project/members +GET /v4.0/project/regions ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|------------| -| RDSforMySQL:Project.Get | 프로젝트 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Project.Get | 리전 목록 보기 | #### 요청 @@ -155,13 +160,11 @@ GET /v4.0/project/members #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|--------|-----------------| -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| members.memberName | Body | String | 프로젝트 멤버의 이름 | -| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | -| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| regions | Body | Array | 리전 목록 | +| regions.regionCode | Body | Enum | 리전 코드
- KR4: `한국(대구)` | +| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 |
예시

@@ -173,12 +176,10 @@ GET /v4.0/project/members "resultMessage": "SUCCESS", "isSuccessful": true }, - "members": [ + "regions": [ { - "memberId": "1b1d3627-507a-49ea-8cb7-c86dfa9caa58", - "memberName": "홍길동", - "emailAddress": "gildong.hong@nhn.com", - "phoneNumber": "+821012345678" + "regionCode": "KR4", + "isEnabled": false } ] } @@ -199,8 +200,8 @@ GET /v4.0/db-flavors #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbFlavor.List | DB 인스턴스 사양 목록 보기 | #### 요청 @@ -209,13 +210,13 @@ GET /v4.0/db-flavors #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------| -| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | -| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | -| dbFlavors.ram | Body | Number | 메모리 용량(MB) | -| dbFlavors.vcpus | Body | Number | CPU 코어 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | +| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | +| dbFlavors.ram | Body | Number | 메모리 용량(MB) | +| dbFlavors.vcpus | Body | Number | CPU 코어 수 |

예시

@@ -229,9 +230,9 @@ GET /v4.0/db-flavors }, "dbFlavors": [ { - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbFlavorName": "m2.c1m2", - "ram": 2048, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbFlavorName": "dbFlavorName-example", + "ram": 1, "vcpus": 1 } ] @@ -253,8 +254,8 @@ GET /v4.0/network/subnets #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------|-----------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Network.List | 서브넷 목록 보기 | #### 요청 @@ -263,14 +264,14 @@ GET /v4.0/network/subnets #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|---------|------------------| -| subnets | Body | Array | 서브넷 목록 | -| subnets.subnetId | Body | UUID | 서브넷의 식별자 | -| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | -| subnets.subnetCidr | Body | String | 서브넷의 CIDR | -| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | -| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| subnets | Body | Array | 서브넷 목록 | +| subnets.subnetId | Body | UUID | 서브넷의 식별자 | +| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnets.subnetCidr | Body | String | 서브넷의 CIDR | +| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | +| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 |

예시

@@ -284,11 +285,11 @@ GET /v4.0/network/subnets }, "subnets": [ { - "subnetId": "1b2a9b23-0725-4b92-8c78-35db66b8ad9f", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/24", - "usingGateway": true, - "availableIpCount": 240 + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example", + "usingGateway": false, + "availableIpCount": 1 } ] } @@ -309,8 +310,8 @@ GET /v4.0/db-versions #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbVersion.List | DB 엔진 목록 보기 | #### 요청 @@ -319,11 +320,11 @@ GET /v4.0/db-versions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|---------|-----------------------| -| dbVersions | Body | Array | DB 엔진 목록 | -| dbVersions.dbVersion | Body | String | DB 엔진 유형 | -| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbVersions | Body | Array | DB 엔진 목록 | +| dbVersions.dbVersion | Body | String | DB 엔진 유형 | +| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | | dbVersions.restorableFromObs | Body | Boolean | 오브젝트 스토리지로부터 복원 가능 여부 |

예시 @@ -338,9 +339,9 @@ GET /v4.0/db-versions }, "dbVersions": [ { - "dbVersion": "MYSQL_V8028", - "dbVersionName": "MySQL 8.0.28", - "restorableFromObs": true + "dbVersion": "MYSQL_V8036", + "dbVersionName": "dbVersionName-example", + "restorableFromObs": false } ] } @@ -353,7 +354,7 @@ GET /v4.0/db-versions ## 데이터 스토리지 -### 데이터 스토리지 타입 목록 보기 +### 스토리지 타입 목록 보기 ```http GET /v4.0/storage-types @@ -361,9 +362,9 @@ GET /v4.0/storage-types #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------|-------------------| -| RDSforMySQL:Storage.List | 데이터 스토리지 타입 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Storage.List | 스토리지 타입 목록 보기 | #### 요청 @@ -371,9 +372,9 @@ GET /v4.0/storage-types #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|-------|----------------| -| storageTypes | Body | Array | 데이터 스토리지 타입 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageTypes | Body | Array | 스토리지 타입 목록 |
예시

@@ -385,10 +386,7 @@ GET /v4.0/storage-types "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageTypes": [ - "General SSD", - "General HDD" - ] + "storageTypes": [] } ``` @@ -424,29 +422,29 @@ GET /v4.0/jobs/{jobId} #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Job.Get | 작업 정보 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------|-----|------|----|---------| -| jobId | URL | UUID | O | 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| jobId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------|------|----------|-----------------------------------| -| jobId | Body | UUID | 작업의 식별자 | -| jobStatus | Body | Enum | 작업의 현재 상태 | -| resourceRelations | Body | Array | 연관 리소스 목록 | -| resourceRelations.resourceType | Body | Enum | 연관 리소스 유형 | -| resourceRelations.resourceId | Body | UUID | 연관 리소스의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | +| jobStatus | Body | Enum | 작업의 현재 상태
- DELETED
- CANNOT_PROGRESS
- FAILED
- ERROR
- CANCELED
- INTERRUPTED
- COMPLETED
- RUNNING
- PREPARING
- READY
- CREATED
- FAIL_TO_READY
- REGISTERED
- FAIL_TO_REGISTER
- WAIT_TO_REGISTER | +| resourceRelations | Body | Array | 연관 리소스 목록 | +| resourceRelations.resourceType | Body | String | 연관 리소스 유형 | +| resourceRelations.resourceId | Body | String | 연관 리소스의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -458,16 +456,16 @@ GET /v4.0/jobs/{jobId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "jobId": "0ddb042c-5af6-43fb-a914-f4dd0540eb7c", - "jobStatus": "RUNNING", + "jobId": "550e8400-e29b-41d4-a716-446655440000", + "jobStatus": "DELETED", "resourceRelations": [ { - "resourceType": "DB_INSTANCE", - "resourceId": "56b39dcf-65eb-47ec-9d4f-09f160ba2266" + "resourceType": "resourceType-example", + "resourceId": "resourceId-example" } ], - "createdYmdt": "2023-02-22T20:47:12+09:00", - "updatedYmdt": "2023-02-22T20:49:46+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -486,8 +484,8 @@ GET /v4.0/db-instance-groups #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstanceGroup.List | DB 인스턴스 그룹 목록 보기 | #### 요청 @@ -496,13 +494,13 @@ GET /v4.0/db-instance-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------|------|----------|--------------------------------------------------------------------------| -| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | -| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | +| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -516,10 +514,10 @@ GET /v4.0/db-instance-groups }, "dbInstanceGroups": [ { - "dbInstanceGroupId": "05de0746-89fd-49c8-94f9-9c5b1df97009", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", - "createdYmdt": "2023-02-13T17:35:20+09:00", - "updatedYmdt": "2023-02-13T17:35:20+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -538,30 +536,30 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstanceGroup.Get | DB 인스턴스 그룹 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|-----------------| -| dbInstanceGroupId | URL | UUID | O | DB 인스턴스 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -573,17 +571,17 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbInstanceGroupId": "36617a8e-0df8-4b16-b6ea-6306019e95da", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", "dbInstances": [ { - "dbInstanceId": "6d2db0ef-fe9b-4ed4-97b1-d97fcb4cf1b8", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE" + "dbInstanceStatus": "BEFORE_CREATE" } ], - "createdYmdt": "2023-03-03T17:38:14+09:00", - "updatedYmdt": "2023-03-03T17:38:14+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -616,8 +614,8 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} | `BACKING_UP` | 백업 중 | | `CANCELING` | 취소 중 | | `CREATING` | 생성 중 | -| `CREATING_SCHEMA` | DB 스키마 생성 중 | -| `CREATING_USER` | 사용자 생성 중 | +| `CREATING_SCHEMA` | DB 스키마 생성 중 | +| `CREATING_USER` | 사용자 생성 중 | | `DELETING` | 삭제 중 | | `DELETING_SCHEMA` | DB 스키마 삭제 중 | | `DELETING_USER` | 사용자 삭제 중 | @@ -636,8 +634,8 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} | `STARTING` | 시작 중 | | `STOPPING` | 정지 중 | | `SYNCING_SCHEMA` | DB 스키마 동기화 중 | -| `SYNCING_USER` | 사용자 동기화 중 | -| `UPDATING_USER` | 사용자 수정 중 | +| `SYNCING_USER` | 사용자 동기화 중 | +| `UPDATING_USER` | 사용자 수정 중 | ### DB 인스턴스 목록 보기 @@ -647,8 +645,8 @@ GET /v4.0/db-instances #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstance.List | DB 인스턴스 목록 보기 | #### 요청 @@ -657,20 +655,20 @@ GET /v4.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstances | Body | Array | DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | -| dbInstances.dbPort | Body | Number | DB 포트 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태 | -| dbInstances.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstances.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstances | Body | Array | DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | +| dbInstances.dbPort | Body | Number | DB 포트 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbInstances.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstances.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -684,17 +682,17 @@ GET /v4.0/db-instances }, "dbInstances": [ { - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", + "dbInstanceStatus": "BEFORE_CREATE", "progressStatus": "NONE", - "createdYmdt": "2023-01-23T12:03:13+09:00", - "updatedYmdt": "2023-02-02T17:20:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -705,51 +703,130 @@ GET /v4.0/db-instances --- -### DB 인스턴스 상세 보기 +### DB 인스턴스 생성하기 ```http -GET /v4.0/db-instances/{dbInstanceId} +POST /v4.0/db-instances ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Create | DB 인스턴스 생성하기 | -#### 요청 +#### 공통 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| authenticationPlugin | Body | Enum | X | 인증 Plugin
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | TLS Option
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 데이터 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | + +

예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE", + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "backup": { + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 1800, + "replicationRegion": "KR4", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + } +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| dbPort | Body | Number | DB 포트 | -| dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| progressStatus | Body | Enum | DB 인스턴스의 현재 작업 진행 상태 | -| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | -| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | -| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | -| useSlowQueryAnalysis | Body | Boolean | Slow query 분석 여부 | -| supportAuthenticationPlugin | Body | Boolean | 인증 플러그인 지원 여부 | -| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | -| needMigration | Body | Boolean | 마이그레이션 필요 여부 | -| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -761,27 +838,7 @@ GET /v4.0/db-instances/{dbInstanceId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", - "progressStatus": "NONE", - "dbFlavorId": "e9ed4ef6-78d7-46fa-ace9-32481e97f3b7", - "parameterGroupId": "b03e8b13-de27-4d04-a488-ff5689589372", - "dbSecurityGroupIds": ["01908c35-d2c9-4852-baf0-17f06ec42c03"], - "notificationGroupIds": ["83a62a33-ddbf-4a04-8653-e54463d5b1ac"], - "useDeletionProtection": false, - "useSlowQueryAnalysis": true, - "supportAuthenticationPlugin": true, - "needToApplyParameterGroup": false, - "needMigration": false, - "supportDbVersionUpgrade": true, - "createdYmdt": "2022-11-23T12:03:13+09:00", - "updatedYmdt": "2022-12-02T17:20:17+09:00" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -790,96 +847,124 @@ GET /v4.0/db-instances/{dbInstanceId} --- -### DB 인스턴스 생성하기 +### 오브젝트 스토리지를 이용한 DB 인스턴스 복원 ```http -POST /v4.0/db-instances +POST /v4.0/db-instances/restore-from-obs ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Create | DB 인스턴스 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.RestoreFromObs | 오브젝트 스토리지를 이용한 DB 인스턴스 복원 | -#### 요청 +#### 공통 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|-------|---------|----|---------------------------------------------------------------------| -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbUserName | Body | String | O | DB 사용자 계정명 | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `16` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄) | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | O | DB 포트 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | +| restore.username | Body | String | O | NHN Cloud 계정 혹은 IAM 멤버 ID | +| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | +| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | +| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` |

예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", - "availabilityZone": "kr-pub-a" - }, + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "dbVersion": "MYSQL_V8036", + "useHighAvailability": false, + "pingInterval": 3, "storage": { "storageType": "General SSD", - "storageSize": 20 + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR4", + "useBackupLock": true, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR" + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" } ] - } + }, + "restore": { + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" + }, + "useDefaultNotification": false, + "useSlowQueryAnalysis": true, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDeletionProtection": false } ``` @@ -888,64 +973,27 @@ POST /v4.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### DB 인스턴스 수정하기 - -```http -PUT /v4.0/db-instances/{dbInstanceId} -``` - -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|------|---------|----|---------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbPort | Body | Number | X | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbVersion | Body | Enum | X | DB 엔진 유형 | -| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -

예시

```json { - "dbInstanceName": "db-instance2", - "description": "description2", - "dbPort": 10001, - "dbSecurityGroupIds": [], - "executeBackup": true + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- ### DB 인스턴스 삭제하기 @@ -956,75 +1004,99 @@ DELETE /v4.0/db-instances/{dbInstanceId} #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstance.Delete | DB 인스턴스 삭제하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| deleteAutoBackup | Body | Boolean | X | 자동 백업 삭제 여부
- 기본값: `false` | -### DB 인스턴스 재시작하기 +
예시 +

-```http -POST /v4.0/db-instances/{dbInstanceId}/restart +```json +{ + "deleteAutoBackup": false +} ``` -#### 필요 권한 +

+
-| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Restart | DB 인스턴스 재시작하기 | +#### 응답 -#### 요청 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### DB 인스턴스 강제 재시작하기 + +### DB 인스턴스 상세 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/force-restart +GET /v4.0/db-instances/{dbInstanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|------------------| -| RDSforMySQL:DbInstance.ForceRestart | DB 인스턴스 강제 재시작하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| dbPort | Body | Number | DB 포트 | +| dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | +| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | +| useSlowQueryAnalysis | Body | Boolean | Slow query 분석 여부 | +| supportAuthenticationPlugin | Body | Boolean | 인증 plugin 지원 여부 | +| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | +| needMigration | Body | Boolean | 마이그레이션 필요 여부 | +| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -1035,135 +1107,222 @@ POST /v4.0/db-instances/{dbInstanceId}/force-restart "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbInstanceType": "MASTER", + "dbInstanceStatus": "BEFORE_CREATE", + "progressStatus": "NONE", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "notificationGroupIds": [], + "useDeletionProtection": false, + "useSlowQueryAnalysis": false, + "supportAuthenticationPlugin": false, + "needToApplyParameterGroup": false, + "needMigration": false, + "supportDbVersionUpgrade": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

- --- -### DB 인스턴스 시작하기 +### DB 인스턴스 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/start +PUT /v4.0/db-instances/{dbInstanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Start | DB 인스턴스 시작하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbPort | Body | Number | X | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbVersion | Body | Enum | X | DB 엔진 버전 코드 | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부 | +| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
- 기본값: `false` | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` | + +
예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbPort": 1, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "useSlowQueryAnalysis": false, + "useDummy": false, + "dbSecurityGroupIds": [], + "executeBackup": false, + "useOnlineFailover": false, + "waitReplicationDelay": false, + "useReadOnly": false +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 인스턴스 정지하기 +### 백업 정보 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/stop +GET /v4.0/db-instances/{dbInstanceId}/backup-info ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Stop | DB 인스턴스 정지하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 백업 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| backupPeriod | Body | Number | 백업 보관 기간(일) | +| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | +| backupRetryCount | Body | Number | 백업 재시도 횟수 | +| replicationRegion | Body | Enum | 백업 복제 리전
- KR4: `한국(대구)` | +| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration
- HALF_AN_HOUR
- ONE_HOUR
- ONE_HOUR_AND_HALF
- TWO_HOURS
- TWO_HOURS_AND_HALF
- THREE_HOURS | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "backupPeriod": 1, + "ftwrlWaitTimeout": 1, + "backupRetryCount": 1, + "replicationRegion": "KR4", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] +} +``` + +

+
--- -### DB 인스턴스 복제하기 +### 백업 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/replicate +PUT /v4.0/db-instances/{dbInstanceId}/backup-info ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Replicate | DB 인스턴스 복제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | 백업 정보 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------------------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbPort | Body | Number | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록
- 기본값: 원본 DB 인스턴스 값 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: 원본 DB 인스턴스 값 | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입
  • 예시: `General SSD`
| -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄)
- 기본값: 원본 DB 인스턴스 값 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각
- 예시: `00:00:00`
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간
- 기본값: 원본 DB 인스턴스 값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json { - "dbInstanceName": "db-instance-replicate", - "description": "description", - "dbPort": 11000, - "network": { - "availabilityZone": "kr-pub-a" - }, - "storage": { - "stroageSize": 100 - } + "backupPeriod": 0, + "ftwrlWaitTimeout": 0, + "backupRetryCount": 0, + "replicationRegion": "KR4", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] } ``` @@ -1172,147 +1331,991 @@ POST /v4.0/db-instances/{dbInstanceId}/replicate #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### DB 인스턴스 승격하기 +

예시 +

-```http -POST /v4.0/db-instances/{dbInstanceId}/promote +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 바이너리 로그 목록 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/binlogs +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceBinLog.List | 바이너리 로그 목록 보기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| binLogs | Body | Array | BinLog 파일 목록 | +| binLogs.binLogFileName | Body | String | BinLog 파일 이름 | +| binLogs.binLogFileSize | Body | Number | BinLog 파일 크기 (Byte) | +| binLogs.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "binLogs": [ + { + "binLogFileName": "binLogFileName-example", + "binLogFileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### 바이너리 로그 삭제 + +```http +POST /v4.0/db-instances/{dbInstanceId}/binlogs/purge +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceBinLog.Purge | 바이너리 로그 삭제 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| lastBinLogFileName | Body | String | O | 삭제할 마지막 BinLog 파일 이름 (해당 파일 직전까지 삭제됨) | + +
예시 +

+ +```json +{ + "lastBinLogFileName": "mysql-bin.000010" +} +``` + +

+
+ +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 인증서 파일 목록 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/certificates +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceCertificate.List | 인증서 파일 목록 보기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| certificates | Body | Array | 인증서 파일 목록 | +| certificates.fileName | Body | String | 인증서 파일 이름 | +| certificates.certificateType | Body | Enum | 인증서 타입
- CA_FILE
- CERT_FILE
- KEY_FILE | +| certificates.fileSize | Body | Number | 인증서 파일 크기(Byte) | +| certificates.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "certificates": [ + { + "fileName": "fileName-example", + "certificateType": "CA_FILE", + "fileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### 인증서 파일 내보내기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/certificates/upload +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceCertificate.Export | 인증서 파일 내보내기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| certificateTypes | Body | Array | O | 업로드할 인증서 타입 목록 | +| tenantId | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 회원 또는 IAM 멤버 ID | +| password | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 인증서 파일의 경로 | + +
예시 +

+ +```json +{ + "certificateTypes": [], + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 스키마 목록 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/db-schemas +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceSchema.List | DB 스키마 목록 보기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSchemas | Body | Array | DB 스키마 목록 | +| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | +| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | +| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- STABLE
- CREATING
- SYNCING
- DELETING
- DELETED | +| dbSchemas.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSchemas": [ + { + "dbSchemaId": "550e8400-e29b-41d4-a716-446655440000", + "dbSchemaName": "dbSchemaName-example", + "dbSchemaStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### DB 스키마 생성하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/db-schemas +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceSchema.Create | DB 스키마 생성하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbSchemaName | Body | String | O | DB 스키마 이름
- 최대 길이: `64`
- 영문 시작, 영문/숫자/_ 허용, 1~64자, MySQL 예약어 불가 | + +
예시 +

+ +```json +{ + "dbSchemaName": "dbSchemaName-example" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 스키마 삭제하기 + +```http +DELETE /v4.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceSchema.Delete | DB 스키마 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbSchemaId | URL | UUID | O | DB 스키마의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 사용자 목록 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/db-users +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.List | DB 사용자 목록 보기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbUsers | Body | Array | DB 사용자 목록 | +| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | +| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | +| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | +| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- STABLE
- CREATING
- UPDATING
- SYNCING
- DELETING
- DELETED | +| dbUsers.createdYmdt | Body | DateTime | 생성 일시 | +| dbUsers.updatedYmdt | Body | DateTime | 수정 일시 | +| dbUsers.authenticationPlugin | Body | Enum | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| dbUsers.tlsOption | Body | Enum | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbUsers": [ + { + "dbUserId": "550e8400-e29b-41d4-a716-446655440000", + "dbUserName": "dbUserName-example", + "host": "host-example", + "authorityType": "CUSTOM", + "dbUserStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" + } + ] +} +``` + +

+
+ +--- + +### DB 사용자 생성하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/db-users +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.Create | DB 사용자 생성하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| host | Body | String | O | DB 사용자 계정의 호스트명
- 최대 길이: `45` | +| authorityType | Body | Enum | O | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | + +
예시 +

+ +```json +{ + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "host": "host-example", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 사용자 삭제하기 + +```http +DELETE /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.Delete | DB 사용자 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserId | URL | UUID | O | DB 사용자의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 사용자 수정하기 + +```http +PUT /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.Modify | DB 사용자 수정하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| authorityType | Body | Enum | X | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | + +
예시 +

+ +```json +{ + "dbPassword": "dbPassword", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 인스턴스 삭제 보호 설정 변경 + +```http +PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | DB 인스턴스 삭제 보호 설정 변경 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | + +
예시 +

+ +```json +{ + "useDeletionProtection": false +} +``` + +

+
+ +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### DB 인스턴스 강제 재시작하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/force-restart ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Promote | DB 인스턴스 승격하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.ForceRestart | DB 인스턴스 강제 재시작하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 고가용성 정보 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/high-availability +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 고가용성 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| useHighAvailability | Body | Boolean | 고가용성 사용 여부
- 기본값: `false` | +| haStatus | Body | Enum | 고가용성 상태
- CREATED: `생성됨`
- STABLE: `정상`
- PAUSING: `일시 중지 중`
- DISABLE: `정지`
- DISABLE_MASTER_IN_REPLICATION: `마스터 비정상 복제 감지로 인한 고가용성 중단`
- DISABLE_MHA_PROCESS: `고가용성 프로세스 중단`
- DISABLE_REPLICATION_STOP: `복제 중단으로 인한 고가용성 중단`
- DISABLE_REPLICATION_DELAY: `복제 지연으로 인한 고가용성 중단`
- FAILOVER_STARTED: `장애 조치 시작`
- FAILOVER_FAILED: `장애 조치 실패`
- FAILOVER_COMPLETED: `장애 조치 완료`
- DELETED: `삭제됨`
- PAUSED: `일시 중지`
- PAUSED_DUE_TO_TASK: `작업으로 인한 일시 중지`
- MASTER_FAILURE_DETECTION: `마스터 장애 감지` | +| pingInterval | Body | Number | Ping 간격(초) | +| pingType | Body | String | Ping 방식 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "useHighAvailability": false, + "haStatus": "CREATED", + "pingInterval": 1, + "pingType": "pingType-example" +} +``` + +

+
+ +--- + +### 고가용성 수정하기 + +```http +PUT /v4.0/db-instances/{dbInstanceId}/high-availability +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Modify | 고가용성 수정하기 | + +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +
예시 +

+ +```json +{ + "useHighAvailability": false, + "pingInterval": 1 +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 인스턴스 재구축하기 +### 고가용성 일시 중지하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/rebuild +POST /v4.0/db-instances/{dbInstanceId}/high-availability/pause ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Rebuild | DB 인스턴스 재구축하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Pause | 고가용성 일시 중지하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 복원 정보 조회 +### 고가용성 복구하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/restoration-info +POST /v4.0/db-instances/{dbInstanceId}/high-availability/repair ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Repair | 고가용성 복구하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 다시 시작하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/high-availability/resume +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Resume | 고가용성 다시 시작하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------------|------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| oldestRestorableYmdt | Body | DateTime | 가장 오래된 복원 가능한 시각 | -| latestRestorableYmdt | Body | DateTime | 가장 최신의 복원 가능한 시각 | -| restorableBackups | Body | Array | 복원 가능한 백업 목록 | -| restorableBackups.backup | Body | Object | 백업 정보 객체 | -| restorableBackups.backup.backupId | Body | UUID | 백업의 식별자 | -| restorableBackups.backup.backupName | Body | String | 백업 이름 | -| restorableBackups.backup.useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| restorableBackups.backup.backupSize | Body | Number | 백업 크기 | -| restorableBackups.backup.backupType | Body | Enum | 백업 유형
  • `AUTO`: 자동
  • `MANUAL`: 수동
| -| restorableBackups.backup.backupStatus | Body | Enum | 백업 상태
  • `BACKING_UP`: 백업 중인 경우
  • `COMPLETED`: 백업이 완료된 경우
  • `DELETING`: 백업이 삭제 중인 경우
  • `DELETED`: 백업이 삭제된 경우
  • `ERROR`: 오류가 발생한 경우
| -| restorableBackups.backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| restorableBackups.backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | -| restorableBackups.backup.dbVersion | Body | String | DB 엔진 유형 | -| restorableBackups.backup.failoverCount | Body | Number | 장애 조치 횟수 | -| restorableBackups.backup.binLogFileName | Body | String | 바이너리 로그 파일 이름 | -| restorableBackups.backup.binLogPosition | Body | Number | 바이너리 로그 파일 위치 | -| restorableBackups.backup.createdYmdt | Body | DateTime | 백업 생성 일시 | -| restorableBackups.backup.updatedYmdt | Body | DateTime | 백업 갱신 일시 | -| restorableBackups.restorableBinLogs | Body | Array | 해당 백업을 이용하여 복원 가능한 바이너리 로그 이름 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 분리하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/high-availability/split +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Split | 고가용성 분리하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "oldestRestorableYmdt": "2023-07-09T16:33:33+09:00", - "latestRestorableYmdt": "2023-07-10T15:44:44+09:00", - "restorableBackups": [ - { - "backup": { - "backupId": "145d889a-fe08-474f-8f58-bde576ff96a9", - "backupName": "example-backup-name", - "backupStatus": "COMPLETED", - "dbInstanceId": "dba1be25-9429-4589-9716-7fb6daad7cb9", - "dbInstanceName": "original-db-instance-name", - "dbVersion": "MYSQL_V8028", - "backupType": "MANUAL", - "backupSize": 8299904, - "useBackupLock": true, - "failoverCount": 0, - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 367916037, - "createdYmdt": "2023-07-10T15:44:44+09:00", - "updatedYmdt": "2023-07-10T15:46:07+09:00" - }, - "restorableBinLogs": [ - "mysql-bin.000001" - ] - } - ] + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1321,45 +2324,108 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info --- -### 복원될 마지막 쿼리 조회 +### 로그 파일 목록 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query +GET /v4.0/db-instances/{dbInstanceId}/log-files ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceLog.List | 로그 파일 목록 보기 | -#### 공통 요청 +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| logFiles | Body | Array | 로그 파일 목록 | +| logFiles.logFileName | Body | String | 로그 파일 이름 | +| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- ERROR
- BINLOG
- GENERAL
- SLOW_QUERY
- AUDIT
- BACKUP | +| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | +| logFiles.createdYmdt | Body | DateTime | 생성 일시 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "logFiles": [ + { + "logFileName": "logFileName-example", + "logFileType": "ERROR", + "logFileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### 로그 파일 내보내기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/log-files/export +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceLog.Export | 로그 파일 내보내기 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|------|----|-----------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restoreType | Query | Enum | O | 복원 타입 종류
  • `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
  • `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입
| +#### 요청 -#### restoreType이 `TIMESTAMP`인 경우 +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| logFileNames | Body | Array | O | 로그 파일 이름 목록 | +| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 회원 또는 IAM 멤버 ID | +| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-------|----------|----|-------------------------------------------| -| restoreYmdt | Query | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +
예시 +

-#### restoreType이 `BINLOG`인 경우 +```json +{ + "logFileNames": [], + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------|-------|--------|----|--------------------| -| backupId | Query | UUID | O | 복원에 사용할 백업의 식별자 | -| binLogFileName | Query | String | O | 복원에 사용할 바이너리 로그 이름 | -| binLogPosition | Query | Number | O | 복원에 사용할 바이너리 로그 위치 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|----------|--------------------------------------| -| executedYmdt | Body | DateTime | 쿼리 수행 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| lastQuery | Body | String | 마지막 수행 쿼리 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -1371,8 +2437,7 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query "resultMessage": "SUCCESS", "isSuccessful": true }, - "executedYmdt": "2023-03-17T14:02:29+09:00", - "lastQuery": "INSERT INTO `test`.`test`SET @1='0123'" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1381,328 +2446,165 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query --- -### 복원 +### 로그 파일 내용 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/restore +GET /v4.0/db-instances/{dbInstanceId}/log-files/{logFileName} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Restore | DB 인스턴스 복원하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceLog.Get | 로그 파일 내용 보기 | -#### 공통 요청 +#### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restore | Body | Object | O | 복원 정보 객체 | -| restore.restoreType | Body | Enum | O | 복원 타입 종류

  • `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
  • `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입
  • `BACKUP`: 기존에 생성한 백업을 이용한 스냅숏 복원 타입
| -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
  • 최솟값: `3306`
  • 최댓값: `43306`
| -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
  • 기본값: `false`
| -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
  • 기본값: `3`
  • 최솟값: `1`
  • 최댓값: `600`
| -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
  • 기본값: `false`
| -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
  • 기본값: `false`
| -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
  • 예시: `kr-pub-a`
| -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
  • 예시: `General SSD`
| -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
  • 최솟값: `20`
  • 최댓값: `2048`
| -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
  • 최솟값: `0`
  • 최댓값: `730`
| -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
  • 기본값: `1800`
  • 최솟값: `0`
  • 최댓값: `21600`
| -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
  • 기본값: `0`
  • 최솟값: `0`
  • 최댓값: `10`
| -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
  • `KR1`: 한국(판교)
  • `KR2`: 한국(평촌)
  • `JP1`: 일본(도쿄)
| -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
  • 기본값: `true`
| -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
  • 예시: `00:00:00`
| -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
  • `HALF_AN_HOUR`: 30분
  • `ONE_HOUR`: 1시간
  • `ONE_HOUR_AND_HALF`: 1시간 30분
  • `TWO_HOURS`: 2시간
  • `TWO_HOURS_AND_HALF`: 2시간 30분
  • `THREE_HOURS`: 3시간
| +이 API는 요청 본문을 요구하지 않습니다. -#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| logFileName | URL | UUID | O | 로그 파일 이름 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|----------|----|------------------------------------------------------------------------------------------------| -| restore.restoreYmdt | Body | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD)
복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능하다. | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| content | Body | String | 로그 파일 내용 (최대 65533 bytes) |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "TIMESTAMP", - "restoreYmdt": "2023-07-10T15:44:44+09:00" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "content": "content-example" } ```

-#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------------|------|--------|----|--------------------| -| restore.backupId | Body | UUID | O | 복원에 사용할 백업의 식별자 | -| restore.binLog | Body | Object | O | 바이너리 로그 정보 객체 | -| restore.binLog.binLogFileName | Body | String | O | 복원에 사용할 바이너리 로그 이름 | -| restore.binLog.binLogPosition | Body | Number | O | 복원에 사용할 바이너리 로그 위치 | +--- -* 바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. +### DB 인스턴스 유지 관리 목록 보기 +```http +GET /v4.0/db-instances/{dbInstanceId}/maintenances +``` -
예시 -

+#### 필요 권한 -```json -{ - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BINLOG", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36", - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 1234567 - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } -} -``` +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.List | DB 인스턴스 유지 관리 목록 보기 | -

-
+#### 요청 -#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) +이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|------|------------------------------|-----------------| -| restore.backupId | Body | UUID | O(restoreType이 `BACKUP`인 경우) | 복원에 사용할 백업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| type | Query | String | X | | +| statuses | Query | String | X | | +| category | Query | String | X | | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 유지 관리 목록 갯수 | +| maintenances | Body | Array | 유지 관리 목록 | +| maintenances.maintenanceId | Body | UUID | 유지 관리 아이디 | +| maintenances.dbInstanceId | Body | UUID | DB 인스턴스 아이디 | +| maintenances.category | Body | Enum | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| maintenances.description | Body | String | 유지 관리 설명 | +| maintenances.type | Body | Enum | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| maintenances.payload | Body | Object | 유지 관리 타입에 따른 Payload | +| maintenances.required | Body | Boolean | 유지 관리 필수 여부 | +| maintenances.deadlineYmdt | Body | DateTime | 유지 관리 강제 적용 일시 | +| maintenances.status | Body | Enum | 유지 관리 상태
- PENDING: `대기`
- READY: `준비`
- RUNNING: `실행 중`
- COMPLETED: `완료`
- FAILED: `실패`
- EXCLUDED: `제외`
- DELETED: `삭제`
- UNKNOWN | +| maintenances.executionType | Body | Enum | 유지 관리 실행 타입
- SCHEDULED: `예약 실행 (유지 관리 기간 자동 실행)`
- MANUAL: `수동 실행 (즉시 실행)`
- FORCED: `강제 실행 (데드라인 초과 자동 실행)` | +| maintenances.addedYmdt | Body | DateTime | 유지 관리 스케줄 등록 일시 | +| maintenances.executionStartedYmdt | Body | DateTime | 유지 관리 시작 일시 | +| maintenances.executionCompletedYmdt | Body | DateTime | 유지 관리 종료 일시 |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BACKUP", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "totalCounts": 1, + "maintenances": [ + { + "maintenanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": { + }, + "required": false, + "deadlineYmdt": "2023-12-31T15:00:00+09:00", + "status": "PENDING", + "executionType": "SCHEDULED", + "addedYmdt": "2023-12-31T15:00:00+09:00", + "executionStartedYmdt": "2023-12-31T15:00:00+09:00", + "executionCompletedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - - --- -### 오브젝트 스토리지로부터 복원 +### DB 인스턴스 유지 관리 즉시 실행하기 ```http -POST /v4.0/db-instances/restore-from-obs +POST /v4.0/db-instances/{dbInstanceId}/maintenances/execute-now ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------------|-------------------------| -| RDSforMySQL:DbInstance.RestoreFromObs | DB 인스턴스 오브젝트 스토리지로부터 복원 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.Execute | DB 인스턴스 유지 관리 즉시 실행하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|----------------------------------------------------------------------------------------| -| restore | Body | Object | O | 복원 정보 객체 | -| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | -| restore.username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | -| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | -| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
  • 최솟값: `3306`
  • 최댓값: `43306`
| -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
  • 기본값: `false`
| -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
  • 기본값: `3`
  • 최솟값: `1`
  • 최댓값: `600`
| -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
  • 기본값: `false`
| -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
  • 기본값: `false`
| -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
  • 예시: `kr-pub-a`
| -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
  • 예시: `General SSD`
| -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
  • 최솟값: `20`
  • 최댓값: `2048`
| -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
  • 최솟값: `0`
  • 최댓값: `730`
| -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
  • 기본값: `1800`
  • 최솟값: `0`
  • 최댓값: `21600`
| -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
  • 기본값: `0`
  • 최솟값: `0`
  • 최댓값: `10`
| -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
  • `KR1`: 한국(판교)
  • `KR2`: 한국(평촌)
  • `JP1`: 일본(도쿄)
| -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
  • 기본값: `true`
| -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
  • 예시: `00:00:00`
| -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
  • `HALF_AN_HOUR`: 30분
  • `ONE_HOUR`: 1시간
  • `ONE_HOUR_AND_HALF`: 1시간 30분
  • `TWO_HOURS`: 2시간
  • `TWO_HOURS_AND_HALF`: 2시간 30분
  • `THREE_HOURS`: 3시간
| - - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| configId | Body | String | O | 설정 아이디 | +| category | Body | Enum | O | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| description | Body | String | X | 유지 관리 설명 | +| type | Body | Enum | O | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| payload | Body | String | O | 유지 관리 타입에 따른 Payload |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbVersion": "MYSQL_V8028", - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "tenantId":"tenant-id", - "username":"username", - "password":"password", - "targetContainer":"targetContainer", - "objectPath":"objectPath" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "configId": "configId-example", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": "payload-example" } ``` @@ -1711,37 +2613,10 @@ POST /v4.0/db-instances/restore-from-obs #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - - -### DB 인스턴스 삭제 보호 설정 변경하기 - -```http -PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection -``` - -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. -

예시

@@ -1751,7 +2626,8 @@ PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1760,178 +2636,269 @@ PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection --- -### 고가용성 수정하기 +### DB 인스턴스 유지 관리 예약하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/high-availability +POST /v4.0/db-instances/{dbInstanceId}/maintenances/schedule ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|-----------| -| RDSforMySQL:HighAvailability.Modify | 고가용성 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.Update | DB 인스턴스 유지 관리 예약하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|---------|----|------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| configId | Body | String | O | 설정 아이디 | +| category | Body | Enum | O | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| description | Body | String | X | 유지 관리 설명 | +| type | Body | Enum | O | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| payload | Body | String | O | 유지 관리 타입에 따른 Payload | + +

예시 +

+ +```json +{ + "configId": "configId-example", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": "payload-example" +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 고가용성 다시 시작하기 +### DB 인스턴스 유지 관리 삭제하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/resume +DELETE /v4.0/db-instances/{dbInstanceId}/maintenances/{maintenanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|--------------| -| RDSforMySQL:HighAvailability.Resume | 고가용성 다시 시작하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.Delete | DB 인스턴스 유지 관리 삭제하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| maintenanceId | URL | UUID | O | 유지 관리 아이디 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 고가용성 일시 중지하기 +### 네트워크 정보 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/pause +GET /v4.0/db-instances/{dbInstanceId}/network-info ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|--------------| -| RDSforMySQL:HighAvailability.Pause | 고가용성 일시 중지하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 네트워크 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| availabilityZone | Body | String | DB 인스턴스를 생성할 가용성 영역 | +| subnet | Body | Object | 서브넷 객체 | +| subnet.subnetId | Body | UUID | 서브넷의 식별자 | +| subnet.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnet.subnetCidr | Body | String | 서브넷의 CIDR | +| endPoints | Body | Array | 접속 정보 목록 | +| endPoints.domain | Body | String | 도메인 | +| endPoints.ipAddress | Body | String | IP 주소 | +| endPoints.endPointType | Body | String | 접속 정보 타입 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "availabilityZone": "kr-pub-a", + "subnet": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example" + }, + "endPoints": [ + { + "domain": "domain-example", + "ipAddress": "ipAddress-example", + "endPointType": "endPointType-example" + } + ] +} +``` + +

+
--- -### 고가용성 복구하기 +### 네트워크 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/repair +PUT /v4.0/db-instances/{dbInstanceId}/network-info ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|-----------| -| RDSforMySQL:HighAvailability.Repair | 고가용성 복구하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | 네트워크 정보 수정하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | + +
예시 +

+ +```json +{ + "usePublicAccess": false +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 고가용성 분리하기 +### DB 인스턴스 승격하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/split +POST /v4.0/db-instances/{dbInstanceId}/promote ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|-----------| -| RDSforMySQL:HighAvailability.Split | 고가용성 분리하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Promote | DB 인스턴스 승격하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 데이터 스토리지 정보 보기 +### DB 인스턴스 재구축하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/storage-info +POST /v4.0/db-instances/{dbInstanceId}/rebuild ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Rebuild | DB 인스턴스 재구축하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|---------|--------------------------------------------------------------------------------------| -| storageType | Body | Enum | 데이터 스토리지 타입 | -| storageSize | Body | Number | 데이터 스토리지 크기(GB) | -| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- `DETACHED`: 부착되지 않음
- `ATTACHED`: 부착됨
- `DELETED`: 삭제됨 | -| storageAutoscale | Body | Object | 데이터 스토리지 자동 확장 객체 | -| storageAutoscale.useStorageAutoscale | Body | Boolean | 스토리지 자동 확장 여부 | -| storageAutoscale.threshold | Body | Number | 자동 확장 조건(%) | -| storageAutoscale.maxStorageSize | Body | Number | 자동 확장 최대 크기(GB) | -| storageAutoscale.cooldownTime | Body | Number | 자동 확장 쿨다운 시간(분) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -1943,89 +2910,118 @@ GET /v4.0/db-instances/{dbInstanceId}/storage-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageType": "General SSD", - "storageSize": 20, - "storageStatus": "ATTACHED", - "storageAutoscale": { - "useStorageAutoscale": true, - "threshold": 80, - "maxStorageSize": 100, - "cooldownTime": 10 - } + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- --- -### 데이터 스토리지 정보 수정하기 +### DB 인스턴스 복제하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/storage-info +POST /v4.0/db-instances/{dbInstanceId}/replicate ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: 현재값
- 최댓값: `2048` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | - -#### 응답 +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Replicate | DB 인스턴스 복제하기 | -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +#### 공통 요청 ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | X | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부 | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | X | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | X | 데이터 스토리지 타입 | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | X | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -### 백업 정보 보기 +
예시 +

-```http -GET /v4.0/db-instances/{dbInstanceId}/backup-info +```json +{ + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, + "network": { + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "backup": { + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 0, + "replicationRegion": "KR4", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + } +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|---------|----------------| -| backupPeriod | Body | Number | 백업 보관 기간(일) | -| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | -| backupRetryCount | Body | Number | 백업 재시도 횟수 | -| replicationRegion | Body | Enum | 백업 복제 리전 | -| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | -| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2035,67 +3031,48 @@ GET /v4.0/db-instances/{dbInstanceId}/backup-info "header": { "resultCode": 0, "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "backupPeriod": 1, - "ftwrlWaitTimeout": 1800, - "backupRetryCount": 0, - "replicationRegion": null, - "useBackupLock": false, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- --- -### 백업 정보 수정하기 +### DB 인스턴스 재시작하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/backup-info +POST /v4.0/db-instances/{dbInstanceId}/restart ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Restart | DB 인스턴스 재시작하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------------------------|------|---------|----|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | -| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | -| replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄) | -| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` |
예시

```json { - "backupPeriod": 5, - "useBackupLock": true, - "backupSchedules": [ - { - "backupWndBgnTime": "01:00:00", - "backupWndDuration": "TWO_HOURS" - } - ] + "useOnlineFailover": false, + "executeBackup": false, + "waitReplicationDelay": false, + "useReadOnly": false } ``` @@ -2104,45 +3081,72 @@ PUT /v4.0/db-instances/{dbInstanceId}/backup-info #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 네트워크 정보 보기 +### DB 인스턴스 복원 정보 조회 ```http -GET /v4.0/db-instances/{dbInstanceId}/network-info +GET /v4.0/db-instances/{dbInstanceId}/restoration-info ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | DB 인스턴스 복원 정보 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------------------------------------------------------------------------------------------------------------------------------| -| availabilityZone | Body | Enum | DB 인스턴스를 생성할 가용성 영역 | -| subnet | Body | Object | 서브넷 객체 | -| subnet.subnetId | Body | UUID | 서브넷의 식별자 | -| subnet.subnetName | Body | UUID | 서브넷을 식별할 수 있는 이름 | -| subnet.subnetCidr | Body | UUID | 서브넷의 CIDR | -| endPoints | Body | Array | 접속 정보 목록 | -| endPoints.domain | Body | String | 도메인 | -| endPoints.ipAddress | Body | String | IP 주소 | -| endPoints.endPointType | Body | Enum | 접속 정보 타입
-`EXTERNAL`: 외부 접속 도메인
-`INTERNAL`: 내부 접속 도메인
-`PUBLIC`: (Deprecated) 외부 접속 도메인
-`PRIVATE`: (Deprecated) 내부 접속 도메인 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| oldestRestorableYmdt | Body | DateTime | 가장 오래된 복원 가능한 시각 | +| latestRestorableYmdt | Body | DateTime | 가장 최신의 복원 가능한 시각 | +| restorableBackups | Body | Array | 복원 가능한 백업 목록 | +| restorableBackups.backup | Body | Object | 백업 정보 객체 | +| restorableBackups.backup.backupId | Body | UUID | 백업의 식별자 | +| restorableBackups.backup.backupName | Body | String | 백업 이름 | +| restorableBackups.backup.backupStatus | Body | Enum | 백업 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| restorableBackups.backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| restorableBackups.backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | +| restorableBackups.backup.dbVersion | Body | Enum | DB 엔진 유형 | +| restorableBackups.backup.backupType | Body | Enum | 백업 유형
- AUTO
- MANUAL | +| restorableBackups.backup.backupSize | Body | Number | 백업 크기 | +| restorableBackups.backup.useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | +| restorableBackups.backup.failoverCount | Body | Number | 장애 조치 횟수 | +| restorableBackups.backup.binLogFileName | Body | String | 바이너리 로그 파일 이름 | +| restorableBackups.backup.binLogPosition | Body | Object | 바이너리 로그 파일 위치 | +| restorableBackups.backup.createdYmdt | Body | DateTime | 백업 생성 일시 | +| restorableBackups.backup.updatedYmdt | Body | DateTime | 백업 갱신 일시 | +| restorableBackups.restorableBinLogs | Body | Array | 해당 백업을 이용하여 복원 가능한 바이너리 로그 이름 목록 |
예시

@@ -2154,17 +3158,28 @@ GET /v4.0/db-instances/{dbInstanceId}/network-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "availabilityZone": "kr-pub-a", - "subnet": { - "subnetId": "bd453789-34ae-416c-9f78-05b9e43a46be", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/16" - }, - "endPoints": [ + "oldestRestorableYmdt": "2023-12-31T15:00:00+09:00", + "latestRestorableYmdt": "2023-12-31T15:00:00+09:00", + "restorableBackups": [ { - "domain": "ea548a78-d85f-43b4-8ddf-c88d999b9905.internal.kr1.mysql.rds.nhncloudservice.com", - "ipAddress": "192.168.0.2", - "endPointType": "INTERNAL" + "backup": { + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "dbVersion": "MYSQL_V8036", + "backupType": "AUTO", + "backupSize": 1, + "useBackupLock": false, + "failoverCount": 1, + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + }, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + }, + "restorableBinLogs": [] } ] } @@ -2175,67 +3190,32 @@ GET /v4.0/db-instances/{dbInstanceId}/network-info --- -### 네트워크 정보 수정하기 - -```http -PUT /v4.0/db-instances/{dbInstanceId}/network-info -``` - -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 사용자 목록 보기 +### 복원될 마지막 쿼리 조회 ```http -GET /v4.0/db-instances/{dbInstanceId}/db-users +GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|---------------------| -| RDSforMySQL:DbInstanceUser.List | DB 인스턴스 내 사용자 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 복원될 마지막 쿼리 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|-----------------------------------------------------------------------------------------------------------------------------| -| dbUsers | Body | Array | DB 사용자 목록 | -| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | -| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | -| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | -| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `UPDATING`: 수정 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbUsers.authenticationPlugin | Body | Enum | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| dbUsers.tlsOption | Body | Enum | TLS Option
- NONE
- SSL
- X509 | -| dbUsers.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbUsers.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| executedYmdt | Body | DateTime | 쿼리 수행 일시 | +| lastQuery | Body | String | 마지막 수행 쿼리 |

예시

@@ -2247,19 +3227,8 @@ GET /v4.0/db-instances/{dbInstanceId}/db-users "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbUsers": [ - { - "dbUserId": "4b3d530b-fd02-4d59-a620-83d019a67bbb", - "dbUserName": "db-user", - "host": "%", - "authorityType": "DDL", - "dbUserStatus": "STABLE", - "authenticationPlugin": "NATIVE", - "tlsOption": "NONE", - "createdYmdt": "2023-03-17T14:02:29+09:00", - "updatedYmdt": "2023-03-17T14:02:31+09:00" - } - ] + "executedYmdt": "2023-12-31T15:00:00+09:00", + "lastQuery": "lastQuery-example" } ``` @@ -2268,45 +3237,145 @@ GET /v4.0/db-instances/{dbInstanceId}/db-users --- -### DB 사용자 생성하기 +### DB 인스턴스 복원 ```http -POST /v4.0/db-instances/{dbInstanceId}/db-users +POST /v4.0/db-instances/{dbInstanceId}/restore ``` - #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceUser.Create | DB 인스턴스 내 사용자 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Restore | DB 인스턴스 복원 | -#### 요청 +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자. 미입력 시 원본 인스턴스의 사양이 적용됩니다. | +| dbPort | Body | Number | X | DB 포트 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | X | 스토리지 정보 객체. 미입력 시 원본 인스턴스의 스토리지 설정이 적용됩니다. | +| storage.storageType | Body | Enum | X | 스토리지 타입. 미입력 시 원본 인스턴스의 스토리지 타입이 적용됩니다. | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB). 미입력 시 원본 인스턴스의 스토리지 크기가 적용됩니다.
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| network | Body | Object | X | 네트워크 정보 객체. 미입력 시 원본 인스턴스의 네트워크 설정이 적용됩니다. | +| network.subnetId | Body | UUID | X | 서브넷의 식별자. 미입력 시 원본 인스턴스 값 사용 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역. 미입력 시 랜덤 선택 | +| backup | Body | Object | X | 백업 정보 객체. 미입력 시 원본 인스턴스의 백업 설정이 적용됩니다. | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일). 미입력 시 원본 인스턴스의 백업 보관 기간이 적용됩니다.
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록. 미입력 시 원본 인스턴스의 백업 스케쥴이 적용됩니다. | +| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.restoreType | Body | Enum | O | 복원 타입
- TIMESTAMP: `복원 가능한 시간 이내의 시간을 이용한 시점 복원`
- BINLOG: `복원 가능한 바이너리 로그 위치를 이용한 시점 복원`
- BACKUP: `기존에 생성한 백업을 이용한 스냅숏 복원` | +| restore.binLog.binLogFileName | Body | String | X | 복원에 사용할 바이너리 로그 이름 | +| restore.binLog.binLogPosition | Body | Object | X | 복원에 사용할 바이너리 로그 위치 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자. 미입력 시 원본 인스턴스의 파라미터 그룹이 적용됩니다. | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록. 미입력 시 원본 인스턴스의 보안 그룹이 적용됩니다. | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | + +#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.restoreYmdt | Body | DateTime | X | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | + +복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능합니다. + +#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 | +| restore.binLog | Body | Object | X | 복원에 사용할 바이너리 로그 정보 객체 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|-------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserName | Body | String | O | DB 사용자 계정 이름
- 최소 길이: `1`
- 최대 길이: `32` | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `16` | -| host | Body | String | O | DB 사용자 계정의 호스트명
- 예시: `1.1.1.%` | -| authorityType | Body | Enum | O | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | +바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. + +#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 설정할 수 있습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 |

예시

```json { - "dbUserName": "db-user", - "dbPassword": "password", - "host": "1.1.1.%", - "authorityType": "CRUD", - "authenticationPlugin": "NATIVE", - "tlsOption": "NONE" + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "useHighAvailability": false, + "pingInterval": 3, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "backup": { + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR4", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + }, + "restore": { + "restoreType": "TIMESTAMP", + "binLog": { + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + } + } + }, + "useDefaultNotification": false, + "useSlowQueryAnalysis": true, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDeletionProtection": false } ``` @@ -2315,117 +3384,151 @@ POST /v4.0/db-instances/{dbInstanceId}/db-users #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 사용자 수정하기 +### DB 인스턴스 시작하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +POST /v4.0/db-instances/{dbInstanceId}/start ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceUser.Modify | DB 인스턴스 내 사용자 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Start | DB 인스턴스 시작하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|-------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | -| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `16` | -| authorityType | Body | Enum | X | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 수정할 수 있습니다. -> `authenticationPlugin`의 값은 `dbPassword`와 동시에 수정을 해야 합니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "authorityType": "DDL" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### DB 사용자 삭제하기 +### DB 인스턴스 정지하기 ```http -DELETE /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +POST /v4.0/db-instances/{dbInstanceId}/stop ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceUser.Delete | DB 인스턴스 내 사용자 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Stop | DB 인스턴스 정지하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 스키마 목록 보기 +### 스토리지 정보 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/db-schemas +GET /v4.0/db-instances/{dbInstanceId}/storage-info ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|---------------------| -| RDSforMySQL:DbInstanceSchema.List | DB 인스턴스 내 스키마 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 스토리지 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|------------------------------------------------------------------------------------------------------| -| dbSchemas | Body | Array | DB 스키마 목록 | -| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | -| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | -| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbSchemas.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageType | Body | String | 데이터 스토리지 타입 | +| storageSize | Body | Number | 데이터 스토리지 크기(GB) | +| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- DELETED: `삭제됨`
- PENDING_DELETION: `삭제 유예됨`
- DELETION_RESERVED: `삭제 예약됨 (스냅샷 정리 대기)`
- DETACHED: `해제됨`
- ATTACHED: `할당됨` | +| storageAutoscale | Body | Object | 데이터 스토리지 자동 확장 객체 | +| storageAutoscale.useStorageAutoscale | Body | Boolean | 스토리지 자동 확장 여부 | +| storageAutoscale.threshold | Body | Number | 자동 확장 조건(%) | +| storageAutoscale.maxStorageSize | Body | Number | 자동 확장 최대 크기(GB) | +| storageAutoscale.cooldownTime | Body | Number | 자동 확장 쿨다운 시간(분) |
예시

@@ -2437,14 +3540,15 @@ GET /v4.0/db-instances/{dbInstanceId}/db-schemas "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSchemas": [ - { - "dbSchemaId": "7c9a94b8-86c1-435d-8af2-82a5e9d53fd4", - "dbSchemaName": "schema", - "dbSchemaStatus": "STABLE", - "createdYmdt": "2023-03-20T13:37:45+09:00" - } - ] + "storageType": "General SSD", + "storageSize": 1, + "storageStatus": "DELETED", + "storageAutoscale": { + "useStorageAutoscale": false, + "threshold": 1, + "maxStorageSize": 1, + "cooldownTime": 1 + } } ``` @@ -2453,93 +3557,119 @@ GET /v4.0/db-instances/{dbInstanceId}/db-schemas --- -### DB 스키마 생성하기 +### 스토리지 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/db-schemas +PUT /v4.0/db-instances/{dbInstanceId}/storage-info ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceSchema.Create | DB 인스턴스 내 스키마 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | 스토리지 정보 수정하기 | -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|--------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaName | Body | String | O | DB 스키마 이름 | +#### 공통 요청 -#### 응답 +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최댓값: `2048` | +| storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +#### 스토리지 자동 확장 사용 시 ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -### DB 스키마 삭제하기 +

예시 +

-```http -DELETE /v4.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} +```json +{ + "storageSize": 1, + "storageAutoscale": { + "useStorageAutoscale": false + } +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceSchema.Delete | DB 인스턴스 내 스키마 삭제하기 | +

+
-#### 요청 +#### 응답 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaId | URL | UUID | O | DB 스키마의 식별자 | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 로그 파일 목록 보기 +## 백업 + +### 백업 상태 + +| 상태 | 설명 | +|--------------|--------------| +| `BACKING_UP` | 백업 중인 경우 | +| `COMPLETED` | 백업이 완료된 경우 | +| `DELETING` | 백업이 삭제 중인 경우 | +| `DELETED` | 백업이 삭제된 경우 | +| `ERROR` | 오류가 발생한 경우 | + +### 백업 목록 조회 ```http -GET /v4.0/db-instances/{dbInstanceId}/log-files +GET /v4.0/backups ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|-----------------------| -| RDSforMySQL:DbInstanceLog.List | DB 인스턴스 내 로그 파일 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.List | 백업 목록 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|-------|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileTypes | Query | Array | X | 로그 파일 타입 종류 목록
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| logFiles | Body | Array | 로그 파일 목록 | -| logFiles.logFileName | Body | String | 로그 파일 이름 | -| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | -| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | -| logFiles.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 백업 목록 수 | +| backups | Body | Array | 백업 목록 | +| backups.backupId | Body | UUID | 백업의 식별자 | +| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | +| backups.backupStatus | Body | Enum | 백업의 현재 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| backups.dbVersion | Body | Enum | DB 엔진 유형 | +| backups.utilVersion | Body | String | 유틸리티 버전 | +| backups.backupType | Body | Enum | 백업 유형
- AUTO
- MANUAL | +| backups.backupSize | Body | Number | 백업의 크기(Byte) | +| backups.createdYmdt | Body | DateTime | 생성 일시 | +| backups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -2551,12 +3681,19 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files "resultMessage": "SUCCESS", "isSuccessful": true }, - "logFiles": [ + "totalCounts": 1, + "backups": [ { - "logFileName": "xtra_full.log-20230317", - "logFileType": "BACKUP", - "logFileSize": 4096, - "createdYmdt": "2023-03-17T14:02:29+09:00" + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "utilVersion": "utilVersion-example", + "backupType": "AUTO", + "backupSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -2567,107 +3704,92 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files --- -### 로그 파일 내보내기 +### 백업 생성하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/log-files/export +POST /v4.0/backups ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|----------------------| -| RDSforMySQL:DbInstanceLog.Export | DB 인스턴스 내 로그 파일 내보내기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.Create | 백업 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|--------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileNames | Body | Array | O | 로그 파일 이름 목록
- 최소 크기: `1` | -| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupName | Body | String | O | 백업을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| baseBackupId | Body | UUID | X | 원본 백업의 식별자 | +| dbInstanceId | Body | UUID | X | DB 인스턴스의 식별자 | +| backupMethodType | Body | Enum | O | 백업 방식 타입
- FULL: `전체 백업`
- INCREMENTAL: `증분 백업`
- SNAPSHOT: `스냅숏 백업` | + +

예시 +

+ +```json +{ + "backupName": "backupName", + "baseBackupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "backupMethodType": "FULL" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "logFileNames": ["xtra_full.log-20230317"], - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "logs/backup" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -## 백업 - -### 백업 상태 - -| 상태 | 설명 | -|--------------|--------------| -| `BACKING_UP` | 백업 중인 경우 | -| `COMPLETED` | 백업이 완료된 경우 | -| `DELETING` | 백업이 삭제 중인 경우 | -| `DELETED` | 백업이 삭제된 경우 | -| `ERROR` | 오류가 발생한 경우 | - -### 백업 목록 조회 +### 백업 삭제하기 ```http -GET /v4.0/backups +DELETE /v4.0/backups/{backupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| -| RDSforMySQL:Backup.List | 백업 목록 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.Delete | 백업 삭제하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|--------|----|----------------------------------------------------------| -| page | Query | Number | O | 조회할 목록의 페이지
- 최솟값: `1` | -| size | Query | Number | O | 조회할 목록의 페이지 크기
- 최솟값: `1`
- 최댓값: `100` | -| backupType | Query | Enum | X | 백업 유형
- `AUTO`: 자동
- `MANUAL`: 수동
- 기본값: 전체 | -| dbInstanceId | Query | UUID | X | 원본 DB 인스턴스의 식별자 | -| dbVersion | Query | Enum | X | DB 엔진 유형 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|-----------------------------------| -| totalCounts | Body | Number | 전체 백업 목록 수 | -| backups | Body | Array | 백업 목록 | -| backups.backupId | Body | UUID | 백업의 식별자 | -| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | -| backups.backupStatus | Body | Enum | 백업의 현재 상태 | -| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| backups.dbVersion | Body | Enum | DB 엔진 유형 | -| backups.utilVersion | Body | String | 백업에 사용된 xtrabackup 유틸리티 버전 | -| backups.backupType | Body | Enum | 백업 유형 | -| backups.backupSize | Body | Number | 백업의 크기(Byte) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2679,21 +3801,7 @@ GET /v4.0/backups "resultMessage": "SUCCESS", "isSuccessful": true }, - "totalCounts": 1, - "backups": [ - { - "backupId": "0017f136-3e01-4530-94aa-20661afe6632", - "backupName": "backup", - "backupStatus": "COMPLETED", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd", - "dbVersion": "MYSQL_V8028", - "utilVersion": "8.0.28", - "backupType": "AUTO", - "backupSize": 4996786, - "createdYmdt": "2023-02-21T00:35:00+09:00", - "updatedYmdt": "2023-02-22T00:35:32+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2702,74 +3810,85 @@ GET /v4.0/backups --- -### 백업 생성하기 +### 백업 단건 조회 ```http -POST /v4.0/backups +GET /v4.0/backups/{backupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|---------| -| RDSforMySQL:Backup.Create | 백업 생성하기 | - -#### 공통 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|--------|----|------------------------------------------------------------| -| backupName | Body | String | O | 백업을 식별할 수 있는 이름 | -| backupMethodType | Body | Enum | O | 백업 방식 타입 종류
- `FULL`: 전체 백업
- `INCREMENTAL`: 증분 백업 | - -#### 전체 백업(backupMethodType이 `FULL`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|------|----|--------------| -| dbInstanceId | Body | UUID | O | DB 인스턴스의 식별자 | - - -

예시 -

+| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.Get | 백업 단건 조회 | -```json -{ - "backupName": "example-backup-name", - "backupMethodType": "FULL", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd" -} -``` +#### 요청 -

-
+이 API는 요청 본문을 요구하지 않습니다. -#### 증분 백업(backupMethodType이 `INCREMENTAL`인 경우) +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|------|----|------------| -| baseBackupId | Body | UUID | O | 기준 백업의 식별자 | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| backup | Body | Object | 백업 상세 정보 | +| backup.backupId | Body | UUID | 백업의 식별자 | +| backup.regionCode | Body | Enum | 리전 코드
- KR4: `한국(대구)` | +| backup.backupName | Body | String | 백업을 식별할 수 있는 이름 | +| backup.backupStatus | Body | Enum | 백업의 현재 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | +| backup.dbVersion | Body | Enum | DB 엔진 버전 | +| backup.utilVersion | Body | String | 유틸리티 버전 | +| backup.backupType | Body | Enum | 백업 유형 (AUTO, MANUAL)
- AUTO
- MANUAL | +| backup.backupMethodType | Body | Enum | 백업 방식 (FULL, SNAPSHOT, INCREMENTAL)
- FULL
- INCREMENTAL
- SNAPSHOT | +| backup.backupFileType | Body | Enum | 백업 파일 유형
- XBSTREAM
- TAR_ZSTD
- TAR_LZ4
- TAR_GZIP
- SNAPSHOT | +| backup.backupSize | Body | Number | 백업의 크기(Byte) | +| backup.isReplicable | Body | Boolean | 복제 가능 여부 | +| backup.binLogFileName | Body | String | 바이너리 로그 파일명 | +| backup.binLogPosition | Body | Object | 바이너리 로그 위치 | +| backup.createdYmdt | Body | DateTime | 생성 일시 | +| backup.updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "backupName": "example-backup-name", - "backupMethodType": "INCREMENTAL", - "baseBackupId": "3ae7914f-9b42-4729-b125-87417b72cf36" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "backup": { + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "regionCode": "KR4", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "dbVersion": "MYSQL_V8036", + "utilVersion": "utilVersion-example", + "backupType": "AUTO", + "backupMethodType": "FULL", + "backupFileType": "XBSTREAM", + "backupSize": 1, + "isReplicable": false, + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + }, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } } ```

- -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- ### 백업 내보내기 @@ -2780,31 +3899,31 @@ POST /v4.0/backups/{backupId}/export #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|---------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Backup.Export | 백업 내보내기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|-----------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 계정 혹은 IAM 회원 ID | +| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 |
예시

```json { - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "backups/backup_file" + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" } ``` @@ -2813,12 +3932,26 @@ POST /v4.0/backups/{backupId}/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | -> [주의] -> 수동 백업의 경우 백업이 수행된 DB 인스턴스가 존재하지 않으면, 백업을 오브젝트 스토리지로 내보낼 수 없습니다. +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -2830,73 +3963,98 @@ POST /v4.0/backups/{backupId}/restore #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Backup.Restore | 백업 복원하기 | -#### 요청 +#### 공통 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------------------------------|------|---------|----|---------------------------------------------------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Integer | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 ||network|Body|Object|O|네트워크 정보 객체| -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄) | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| dbPort | Body | Number | X | DB 포트. 미지정 시 원본 인스턴스 값 사용
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| network | Body | Object | X | 네트워크 정보 객체. 미지정 시 원본 인스턴스 값 사용 | +| network.subnetId | Body | UUID | X | 서브넷의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역. 미지정 시 랜덤 선택 | +| storage | Body | Object | X | 스토리지 정보 객체. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageType | Body | Enum | X | 스토리지 타입. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | X | 백업 정보 객체. 미지정 시 원본 인스턴스 백업 설정 사용 | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수. 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부. 미지정 시 원본 인스턴스 값 사용 | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록. 미지정 시 원본 인스턴스 값 사용 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` |
예시

```json - { - "dbInstanceName": "db-instance-restore", - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbPort": 10000, - "parameterGroupId": "132d383c-38e3-468a-a826-5e9a8fff15d0", + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, "availabilityZone": "kr-pub-a" }, "storage": { "storageType": "General SSD", - "storageSize": 20 + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 0, + "replicationRegion": "KR4", + "useBackupLock": false, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", + "backupWndBgnTime": "backupWndBgnTime-example", "backupWndDuration": "HALF_AN_HOUR" } ] @@ -2909,37 +4067,26 @@ POST /v4.0/backups/{backupId}/restore #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### 백업 삭제하기 +

예시 +

-```http -DELETE /v4.0/backups/{backupId} +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|-------------------------------------------|---------| -| RDSforMySQL:Backup.Delete | 백업 삭제하기 | - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------|-----|------|----|---------| -| backupId | URL | UUID | O | 백업의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -2962,8 +4109,8 @@ GET /v4.0/db-security-groups #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|----------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroup.List | DB 보안 그룹 목록 보기 | #### 요청 @@ -2972,15 +4119,16 @@ GET /v4.0/db-security-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-----------------------------------| -| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | -| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 DB 보안 그룹 목록 수 | +| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | +| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -2992,14 +4140,15 @@ GET /v4.0/db-security-groups "resultMessage": "SUCCESS", "isSuccessful": true }, + "totalCounts": 1, "dbSecurityGroups": [ { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", "progressStatus": "NONE", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2022-02-19T19:18:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3010,48 +4159,65 @@ GET /v4.0/db-security-groups --- -### DB 보안 그룹 상세 보기 +### DB 보안 그룹 생성하기 ```http -GET /v4.0/db-security-groups/{dbSecurityGroupId} +POST /v4.0/db-security-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|----------------| -| RDSforMySQL:DbSecurityGroup.Get | DB 보안 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroup.Create | DB 보안 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` | +| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | +| rules.direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| rules.etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| rules.port | Body | Object | O | 포트 객체 | +| rules.port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| rules.cidr | Body | String | O | CIDR | +| rules.description | Body | String | X | 보안 그룹 규칙에 대한 추가 정보 | + +

예시 +

+ +```json +{ + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example", + "rules": [ + { + "direction": "INGRESS", + "etherType": "IPV4", + "port": { + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 + }, + "cidr": "cidr-example", + "description": "description-example" + } + ] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|----------|--------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| rules | Body | Array | DB 보안 그룹 규칙 목록 | -| rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | -| rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.port | Body | Object | 포트 객체 | -| rules.port.portType | Body | Enum | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다.
- `PORT`: 지정된 포트값으로 설정됩니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | 최소 포트 범위 | -| rules.port.maxPort | Body | Number | 최대 포트 범위 | -| rules.cidr | Body | String | 허용할 트래픽의 원격 소스 | -| rules.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| rules.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 |
예시

@@ -3063,30 +4229,7 @@ GET /v4.0/db-security-groups/{dbSecurityGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSecurityGroup": { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", - "progressStatus": "NONE", - "rules": [ - { - "ruleId": "17c88ef6-95f1-4678-84f9-fee1b22e250d", - "description": "description", - "direction": "INGRESS", - "etherType": "IPV4", - "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 - }, - "cidr": "0.0.0.0/0", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } - ], - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3095,68 +4238,113 @@ GET /v4.0/db-security-groups/{dbSecurityGroupId} --- -### DB 보안 그룹 생성하기 +### DB 보안 그룹 삭제하기 ```http -POST /v4.0/db-security-groups +DELETE /v4.0/db-security-groups/{dbSecurityGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| -| RDSforMySQL:DbSecurityGroup.Create | DB 보안 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroup.Delete | DB 보안 그룹 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### DB 보안 그룹 상세 보기 + +```http +GET /v4.0/db-security-groups/{dbSecurityGroupId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroup.Get | DB 보안 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | -| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | -| rules.description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | -| rules.port | Body | Object | O | 포트 객체 | -| rules.port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| rules | Body | Array | DB 보안 그룹 규칙 목록 | +| rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | +| rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | +| rules.direction | Body | Enum | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| rules.etherType | Body | Enum | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| rules.port | Body | Object | 포트 객체 | +| rules.port.portType | Body | Enum | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| rules.port.minPort | Body | Number | 최소 포트 범위 | +| rules.port.maxPort | Body | Number | 최대 포트 범위 | +| rules.cidr | Body | String | CIDR | +| rules.createdYmdt | Body | DateTime | 생성 일시 | +| rules.updatedYmdt | Body | DateTime | 수정 일시 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

```json { - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", + "progressStatus": "NONE", "rules": [ { + "ruleId": "550e8400-e29b-41d4-a716-446655440000", + "description": "description-example", "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 + "portType": "ALL", + "minPort": 1, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } - ] + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|------|---------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | - --- ### DB 보안 그룹 수정하기 @@ -3167,25 +4355,25 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId} #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroup.Modify | DB 보안 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|-----------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description" + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example" } ``` @@ -3196,48 +4384,34 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- - --- -### DB 보안 그룹 삭제하기 +### DB 보안 그룹 규칙 삭제하기 ```http -DELETE /v4.0/db-security-groups/{dbSecurityGroupId} +DELETE /v4.0/db-security-groups/{dbSecurityGroupId}/rules ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| -| RDSforMySQL:DbSecurityGroup.Delete | DB 보안 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroupRule.Delete | DB 보안 그룹 규칙 삭제하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleIds | Query | String | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -3248,7 +4422,8 @@ DELETE /v4.0/db-security-groups/{dbSecurityGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3265,26 +4440,23 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroupRule.Create | DB 보안 그룹 규칙 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |

예시

@@ -3294,11 +4466,12 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "PORT", - "minPort": 10000, - "maxPort": 10000 + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -3307,9 +4480,26 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -3321,27 +4511,24 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroupRule.Modify | DB 보안 그룹 규칙 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleId | URL | UUID | O | DB 보안 그룹 규칙의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |
예시

@@ -3351,49 +4538,40 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "DB_PORT" + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ```

-
- -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 보안 그룹 규칙 삭제하기 - -```http -DELETE /v4.0/db-security-groups/{dbSecurityGroupId}/rules -``` - -#### 필요 권한 - -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| -| RDSforMySQL:DbSecurityGroupRule.Create | DB 보안 그룹 규칙 삭제하기 | +
-#### 요청 +#### 응답 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|-------|----|---------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleIds | Query | Array | O | DB 보안 그룹 규칙의 식별자 목록 | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -3407,30 +4585,28 @@ GET /v4.0/parameter-groups #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:ParameterGroup.List | 파라미터 그룹 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------|-------|------|----|----------| -| dbVersion | Query | Enum | X | DB 엔진 유형 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-------------------------------------------------------------------| -| parameterGroups | Body | Array | 파라미터 그룹 목록 | -| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameterGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 파라미터 그룹 수 | +| parameterGroups | Body | Array | 파라미터 그룹 목록 | +| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroups.parameterGroupType | Body | Enum | 파라미터 그룹 유형
- USER
- ADMIN
- DEFAULT
- CLUSTER_USER | +| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameterGroups.createdYmdt | Body | DateTime | 생성 일시 | +| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3442,15 +4618,17 @@ GET /v4.0/parameter-groups "resultMessage": "SUCCESS", "isSuccessful": true }, + "totalCounts": 1, "parameterGroups": [ { - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "parameterGroupType": "USER", "parameterGroupStatus": "STABLE", - "createdYmdt": "2023-02-31T15:28:17+09:00", - "updatedYmdt": "2023-02-31T15:28:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3459,50 +4637,47 @@ GET /v4.0/parameter-groups

- --- -### 파라미터 그룹 상세 보기 +### 파라미터 그룹 생성하기 ```http -GET /v4.0/parameter-groups/{parameterGroupId} +POST /v4.0/parameter-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMySQL:ParameterGroup.Get | 파라미터 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Create | 파라미터 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` | +| dbVersion | Body | Enum | O | DB 엔진 유형 | + +
예시 +

-| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +```json +{ + "parameterGroupName": "parameterGroupName", + "description": "description-example", + "dbVersion": "MYSQL_V8036" +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|--------------------------------------------------------------------------------------------------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameters | Body | Array | 파라미터 목록 | -| parameters.parameterId | Body | UUID | 파라미터 식별자 | -| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- `CLIENT`: client
- `MYSQL`: mysql
- `MYSQLD`: mysqld | -| parameters.parameterName | Body | String | 파라미터 이름 | -| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | -| parameters.value | Body | String | 현재 설정된 값 | -| parameters.defaultValue | Body | String | 기본값 | -| parameters.allowedValue | Body | String | 허용된 값 | -| parameters.updateType | Body | Enum | 수정 타입
- `VARIABLE`: 언제든 수정 가능
- `CONSTANT`: 수정 불가능
- `INIT_VARIABLE`: DB 인스턴스 생성 시에만 수정 가능 | -| parameters.applyType | Body | Enum | 적용 타입
- `SESSION`: 세션 적용
- `FILE`: 설정 파일 적용(재시작 필요)
- `BOTH`: 전체(재시작 필요) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |
예시

@@ -3514,103 +4689,148 @@ GET /v4.0/parameter-groups/{parameterGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", - "parameterGroupStatus": "STABLE", - "parameters": [ - { - "parameterId": "fa040b5e-f29f-46de-8f0d-bba4cb82887a", - "parameterFileGroup": "client", - "parameterName": "socket", - "fileParameterName": "socket", - "value": "/home/tcrds/db/mysql/tmp/mysql.sock", - "defaultValue": "/home/tcrds/db/mysql/tmp/mysql.sock", - "allowedValue": "", - "updateType": "CONSTANT", - "applyType": "BOTH" - } - ], - "createdYmdt": "2023-03-13T11:02:28+09:00", - "updatedYmdt": "2023-03-13T11:02:28+09:00" + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ```

+--- + +### 파라미터 그룹 삭제하기 + +```http +DELETE /v4.0/parameter-groups/{parameterGroupId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Delete | 파라미터 그룹 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 생성하기 +### 파라미터 그룹 상세 보기 ```http -POST /v4.0/parameter-groups +GET /v4.0/parameter-groups/{parameterGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Create | 파라미터 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Get | 파라미터 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameters | Body | Array | 파라미터 목록 | +| parameters.parameterId | Body | UUID | 파라미터의 식별자 | +| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- CLIENT
- MYSQL
- MYSQLD | +| parameters.parameterName | Body | String | 파라미터 이름 | +| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | +| parameters.value | Body | String | 현재 설정된 값 | +| parameters.defaultValue | Body | String | 기본값 | +| parameters.allowedValue | Body | String | 허용된 값 | +| parameters.updateType | Body | Enum | 수정 타입
- VARIABLE
- CONSTANT
- INIT_VARIABLE | +| parameters.applyType | Body | Enum | 적용 타입
- BOTH
- SESSION
- FILE | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "parameterGroupName": "parameter-group", - "dbVersion": "MYSQL_V8028" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "parameterGroupStatus": "STABLE", + "parameters": [ + { + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "parameterFileGroup": "CLIENT", + "parameterName": "parameterName-example", + "fileParameterName": "fileParameterName-example", + "value": "value-example", + "defaultValue": "defaultValue-example", + "allowedValue": "allowedValue-example", + "updateType": "VARIABLE", + "applyType": "BOTH" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | - --- -### 파라미터 그룹 복사하기 +### 파라미터 그룹 수정하기 ```http -POST /v4.0/parameter-groups/{parameterGroupId}/copy +PUT /v4.0/parameter-groups/{parameterGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Copy | 파라미터 그룹 복사하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Modify | 파라미터 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "parameterGroupName": "parameter-group-copy", - "description": "copy" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -3619,38 +4839,37 @@ POST /v4.0/parameter-groups/{parameterGroupId}/copy #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 수정하기 +### 파라미터 그룹 복사하기 ```http -PUT /v4.0/parameter-groups/{parameterGroupId} +POST /v4.0/parameter-groups/{parameterGroupId}/copy ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Modify | 파라미터 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Copy | 파라미터 그룹 복사하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |

예시

```json { - "parameterGroupName": "parameter-group" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -3659,7 +4878,9 @@ PUT /v4.0/parameter-groups/{parameterGroupId} #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |

예시

@@ -3670,7 +4891,8 @@ PUT /v4.0/parameter-groups/{parameterGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3687,18 +4909,18 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Modify | 파라미터 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Modify | 파라미터 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------------|------|--------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | -| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | -| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | +| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | +| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 |

예시

@@ -3707,8 +4929,8 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters { "modifiedParameters": [ { - "parameterId": "3abac558-7274-44e1-9f4a-f100f53f67ba", - "value": "0" + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "value": "value-example" } ] } @@ -3721,22 +4943,6 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- ### 파라미터 그룹 재설정하기 @@ -3747,61 +4953,52 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/reset #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:ParameterGroup.Reset | 파라미터 그룹 재설정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | #### 응답 이 API는 응답 본문을 반환하지 않습니다. -
예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- -### 파라미터 그룹 삭제하기 +## 사용자 그룹 + +### 사용자 그룹 목록 보기 ```http -DELETE /v4.0/parameter-groups/{parameterGroupId} +GET /v4.0/user-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Delete | 파라미터 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.List | 사용자 그룹 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | - #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 사용자 그룹 목록 수 | +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroups.createdYmdt | Body | DateTime | 생성 일시 | +| userGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3812,7 +5009,16 @@ DELETE /v4.0/parameter-groups/{parameterGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "totalCounts": 1, + "userGroups": [ + { + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -3821,33 +5027,45 @@ DELETE /v4.0/parameter-groups/{parameterGroupId} --- -## 사용자 그룹 - -### 사용자 그룹 목록 보기 +### 사용자 그룹 생성하기 ```http -GET /v4.0/user-groups +POST /v4.0/user-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|--------------| -| RDSforMySQL:UserGroup.List | 사용자 그룹 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.Create | 사용자 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록 | +| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` | + +

예시 +

+ +```json +{ + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAll": false +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|-----------------------------------| -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| userGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 |
예시

@@ -3859,14 +5077,7 @@ GET /v4.0/user-groups "resultMessage": "SUCCESS", "isSuccessful": true }, - "userGroups": [ - { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" - } - ] + "userGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3875,6 +5086,32 @@ GET /v4.0/user-groups --- +### 사용자 그룹 삭제하기 + +```http +DELETE /v4.0/user-groups/{userGroupId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.Delete | 사용자 그룹 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + ### 사용자 그룹 상세 보기 ```http @@ -3883,29 +5120,29 @@ GET /v4.0/user-groups/{userGroupId} #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:UserGroup.Get | 사용자 그룹 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|----------|-----------------------------------------------------------------------------------------------------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
`ENTIRE`: 프로젝트 멤버 전체를 포함하는 사용자 그룹
`INDIVIDUAL_MEMBER`: 특정 프로젝트 멤버를 포함하는 사용자 그룹 | -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
- ENTIRE
- INDIVIDUAL_MEMBER | +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -3917,16 +5154,16 @@ GET /v4.0/user-groups/{userGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "userGroupTypeCode": "INDIVIDUAL_MEMBER", + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "userGroupTypeCode": "ENTIRE", "members": [ { - "memberId": "1321e759-2ef3-4b85-9921-b13e918b24b5" + "memberId": "550e8400-e29b-41d4-a716-446655440000" } ], - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -3935,42 +5172,35 @@ GET /v4.0/user-groups/{userGroupId} --- -### 사용자 그룹 생성하기 +### 사용자 그룹 수정하기 ```http -POST /v4.0/user-groups +PUT /v4.0/user-groups/{userGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMySQL:UserGroup.Create | 사용자 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.Modify | 사용자 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|-----------------------------------------------------------| -| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록
`selectAll`이 true인 경우 해당 필드 값은 무시됨 | -| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 유무
true인 경우 해당 그룹은 전체 멤버에 대해 설정됨 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | +| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` |

예시

```json { - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5" - ] -} -``` - -```json -{ - "userGroupName": "dev-team", - "selectAll": true + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAll": false } ``` @@ -3979,52 +5209,40 @@ POST /v4.0/user-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------|------|------|-------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 사용자 그룹 수정하기 +## 알림 그룹 + +### 알림 그룹 목록 보기 ```http -PUT /v4.0/user-groups/{userGroupId} +GET /v4.0/notification-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMySQL:UserGroup.Modify | 사용자 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.List | 알림 그룹 목록 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|----------------------------------------------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | -| userGroupName | Body | String | X | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | -| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 유무
true인 경우 해당 그룹은 전체 멤버에 대해 설정됨 | - -

예시 -

- -```json -{ - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5", - "f9064b09-2b15-442e-a4b0-3a5a2754555e" - ] -} -``` - -

-
+이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroups | Body | Array | 알림 그룹 목록 | +| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | +| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | +| notificationGroups.createdYmdt | Body | DateTime | 생성 일시 | +| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4035,7 +5253,18 @@ PUT /v4.0/user-groups/{userGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "notificationGroups": [ + { + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, + "notifySms": false, + "isEnabled": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -4044,27 +5273,51 @@ PUT /v4.0/user-groups/{userGroupId} --- -### 사용자 그룹 삭제하기 +### 알림 그룹 생성하기 ```http -DELETE /v4.0/user-groups/{userGroupId} +POST /v4.0/notification-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMySQL:UserGroup.Delete | 사용자 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.Create | 알림 그룹 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | +| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | + +

예시 +

+ +```json +{ + "notificationGroupName": "notificationGroupName", + "notifyEmail": true, + "notifySms": true, + "isEnabled": true, + "dbInstanceIds": [], + "userGroupIds": [] +} +``` + +

+
#### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 |
예시

@@ -4075,7 +5328,8 @@ DELETE /v4.0/user-groups/{userGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4084,63 +5338,29 @@ DELETE /v4.0/user-groups/{userGroupId} --- -## 알림 그룹 - -### 알림 그룹 목록 보기 +### 알림 그룹 삭제하기 ```http -GET /v4.0/notification-groups +DELETE /v4.0/notification-groups/{notificationGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|-------------| -| RDSforMySQL:NotificationGroup.List | 알림 그룹 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.Delete | 알림 그룹 삭제하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------------|------|----------|-----------------------------------| -| notificationGroups | Body | Array | 알림 그룹 목록 | -| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | -| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | -| notificationGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - -

예시 -

+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "notificationGroups": [ - { - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, - "notifySms": false, - "isEnabled": true, - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" - } - ] -} -``` +#### 응답 -

-
+이 API는 응답 본문을 반환하지 않습니다. --- @@ -4152,35 +5372,35 @@ GET /v4.0/notification-groups/{notificationGroupId} #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:NotificationGroup.Get | 알림 그룹 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------------|------|----------|-----------------------------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notifySms | Body | Boolean | SMS 알림 여부 | -| isEnabled | Body | Boolean | 활성화 여부 | -| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notifySms | Body | Boolean | SMS 알림 여부 | +| isEnabled | Body | Boolean | 활성화 여부 | +| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4192,25 +5412,25 @@ GET /v4.0/notification-groups/{notificationGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, "notifySms": false, - "isEnabled": true, + "isEnabled": false, "dbInstances": [ { - "dbInstanceId": "ed5cb985-526f-4c54-9ae0-40288593de65", - "dbInstanceName": "database" + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example" } ], "userGroups": [ { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team" + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example" } ], - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -4219,43 +5439,41 @@ GET /v4.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 생성하기 +### 알림 그룹 수정하기 ```http -POST /v4.0/notification-groups +PUT /v4.0/notification-groups/{notificationGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMySQL:NotificationGroup.Create | 알림 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.Modify | 알림 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------------| -| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | -| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | -| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | -| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | +| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `false` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `false` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `false` | +| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 |

예시

```json { - "notificationGroupName": "dev-team-noti", + "notificationGroupName": "notificationGroupName-example", "notifyEmail": false, - "isEnable": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65" - ], - "userGroupIds": [ - "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0" - ] + "notifySms": false, + "isEnabled": false, + "dbInstanceIds": [], + "userGroupIds": [] } ``` @@ -4264,45 +5482,73 @@ POST /v4.0/notification-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|------|------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 알림 그룹 수정하기 +## 모니터링 + +### 통계 정보 조회 ```http -PUT /v4.0/notification-groups/{notificationGroupId} +GET /v4.0/metric-statistics ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMySQL:NotificationGroup.Modify | 알림 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Metric.List | 통계 정보 조회 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### Metric 목록 보기 + +```http +GET /v4.0/metrics +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Metric.List | Metric 목록 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부 | -| notifySms | Body | Boolean | X | SMS 알림 여부 | -| isEnabled | Body | Boolean | X | 활성화 여부 | -| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +이 API는 요청 본문을 요구하지 않습니다. + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| metrics | Body | Array | Metric 목록 | +| metrics.measureName | Body | String | 조회 지표 유형 | +| metrics.unit | Body | String | 측정값 단위 |

예시

```json { - "notifyEmail": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65", - "d51b7da0-682f-47ff-b588-b739f6adc740" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "metrics": [ + { + "measureName": "measureName-example", + "unit": "unit-example" + } ] } ``` @@ -4310,9 +5556,46 @@ PUT /v4.0/notification-groups/{notificationGroupId}

+--- + +## 이벤트 + +### 이벤트 카테고리 + +이벤트는 카테고리로 분류할 수 있으며 아래와 같습니다. + +| 이벤트 카테고리 | 설명 | +|-------------|---------| +| ALL | 전체 | +| BACKUP | 백업 | +| DB_INSTANCE | DB 인스턴스 | +| JOB | 작업 | +| TENANT | 테넌트 | +| MONITORING | 모니터링 | + +### 구독 가능한 이벤트 코드 목록 보기 + +```http +GET /v4.0/event-codes +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Event.List | 구독 가능한 이벤트 코드 목록 보기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventCodes | Body | Array | 이벤트 코드 목록 | +| eventCodes.eventCode | Body | Enum | 이벤트 코드 | +| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT |
예시

@@ -4323,7 +5606,13 @@ PUT /v4.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "eventCodes": [ + { + "eventCode": "ENUM_VALUE", + "eventCategoryType": "ALL" + } + ] } ``` @@ -4332,29 +5621,36 @@ PUT /v4.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 삭제하기 +### 이벤트 목록 조회 ```http -DELETE /v4.0/notification-groups/{notificationGroupId} +GET /v4.0/events ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMySQL:NotificationGroup.Delete | 알림 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Event.List | 이벤트 목록 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | - #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 목록 수 | +| events | Body | Array | 이벤트 목록 | +| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | +| events.sourceId | Body | String | 이벤트 소스의 식별자 | +| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | +| events.messages | Body | Array | 이벤트 메세지 목록 | +| events.messages.langCode | Body | Enum | 언어 코드
- KO
- EN
- JA
- ZH | +| events.messages.message | Body | String | 이벤트 메세지 | +| events.eventYmdt | Body | DateTime | 이벤트 발생 일시 |

예시

@@ -4365,7 +5661,23 @@ DELETE /v4.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "totalCounts": 1, + "events": [ + { + "eventCategoryType": "ALL", + "eventCode": "ENUM_VALUE", + "sourceId": "sourceId-example", + "sourceName": "sourceName-example", + "messages": [ + { + "langCode": "KO", + "message": "message-example" + } + ], + "eventYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -4374,19 +5686,19 @@ DELETE /v4.0/notification-groups/{notificationGroupId} --- -## 모니터링 +## 이벤트 구독 -### Metric 목록 보기 +### 이벤트 구독 목록 조회 ```http -GET /v4.0/metrics +GET /v4.0/event-subscriptions ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| -| RDSforMySQL:Metric.List | 통계 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:EventSubscription.List | 이벤트 구독 목록 조회 | #### 요청 @@ -4394,11 +5706,22 @@ GET /v4.0/metrics #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|--------|-----------| -| metrics | Body | Array | Metric 목록 | -| metrics.measureName | Body | Enum | 조회 지표 유형 | -| metrics.unit | Body | String | 측정값 단위 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 구독 목록 수 | +| eventSubscriptions | Body | Array | 이벤트 구독 목록 | +| eventSubscriptions.eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 | +| eventSubscriptions.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.eventSubscriptionName | Body | String | 이벤트 구독의 식별할 수 있는 이름 | +| eventSubscriptions.enabled | Body | Boolean | 활성화 여부 | +| eventSubscriptions.notifyEmail | Body | Boolean | 이메일 발송 여부 | +| eventSubscriptions.notifySms | Body | Boolean | SMS 발송 여부 | +| eventSubscriptions.eventCodes | Body | Array | 구독할 이벤트 코드 목록 | +| eventSubscriptions.sources | Body | Array | 구독할 이벤트 소스 목록 | +| eventSubscriptions.sources.sourceId | Body | String | 이벤트 소스의 식별자 | +| eventSubscriptions.sources.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.userGroupIds | Body | Array | 이벤트 구독 중인 사용자 그룹의 식별자 목록 | +| eventSubscriptions.createdYmdt | Body | DateTime | 생성 일시 |

예시

@@ -4410,10 +5733,24 @@ GET /v4.0/metrics "resultMessage": "SUCCESS", "isSuccessful": true }, - "metrics": [ + "totalCounts": 1, + "eventSubscriptions": [ { - "measureName": "CPU_USAGE", - "unit": "%" + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ + { + "sourceId": "sourceId-example", + "eventCategoryType": "ALL" + } + ], + "userGroupIds": [], + "createdYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -4424,186 +5761,179 @@ GET /v4.0/metrics --- -### 통계 정보 조회 +### 이벤트 구독 생성하기 ```http -GET /v4.0/metric-statistics +POST /v4.0/event-subscriptions ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| -| RDSforMySQL:Metric.List | 통계 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:EventSubscription.Create | 이벤트 구독 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|----------|----|-----------------------------------| -| dbInstanceId | Query | UUID | O | DB 인스턴스의 식별자 | -| measureNames | Query | Array | O | 조회 지표 목록
- 최소 크기: `1` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| interval | Query | Number | X | 조회 간격 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|-----------|----------| -| metricStatistics | Body | Array | 통계 정보 목록 | -| metricStatistics.measureName | Body | Enum | 측정 항목 유형 | -| metricStatistics.unit | Body | String | 측정값 단위 | -| metricStatistics.values | Body | Array | 측정값 목록 | -| metricStatistics.values.timestamp | Body | Timestamp | 측정 시간 | -| metricStatistics.values.value | Body | Object | 측정값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | O | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | O | 활성화 여부 | +| notifyEmail | Body | Boolean | O | 이메일 발송 여부 | +| notifySms | Body | Boolean | O | SMS 발송 여부 | +| eventCodes | Body | Array | O | 구독할 이벤트 코드 목록 | +| sources | Body | Array | O | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | O | 이벤트 구독할 사용자 그룹의 식별자 목록 |

예시

```json { - "metricStatistics": [ + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ { - "measureName": "MYSQL_STATUS", - "unit": "", - "values": [ - [ - 1679298540, - "1" - ], - [ - 1679298600, - "1" - ], - [ - 1679298660, - "1" - ] - ] + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" } - ] + ], + "userGroupIds": [] } ```

---- +#### 응답 -## 이벤트 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 | -### 이벤트 카테고리 +
예시 +

-이벤트는 카테고리로 분류할 수 있으며 아래와 같습니다. +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이벤트 카테고리 | 설명 | -|-------------|---------| -| ALL | 전체 | -| BACKUP | 백업 | -| DB_INSTANCE | DB 인스턴스 | -| JOB | 작업 | -| TENANT | 테넌트 | -| MONITORING | 모니터링 | +

+
-### 이벤트 목록 조회 +--- + +### 이벤트 구독 삭제하기 ```http -GET /v4.0/events +DELETE /v4.0/event-subscriptions/{eventSubscriptionId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------|-----------| -| RDSforMySQL:Event.List | 이벤트 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:EventSubscription.Delete | 이벤트 구독 삭제하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | O | 조회할 목록의 페이지
- 최솟값: `1` | -| size | Query | Number | O | 조회할 목록의 페이지 크기
- 최솟값: `1`
- 최댓값: `100` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| eventCategoryType | Query | Enum | O | 조회할 이벤트 카테고리 유형
- `ALL`: 전체
- `INSTANCE`: DB 인스턴스
- `BACKUP`: 백업
- `DB_SECURITY_GROUP`: DB 보안 그룹
- `TENANT`: 테넌트 | -| sourceId | Query | String | X | 이벤트가 발생한 대상 리소스의 식별자 | -| keyword | Query | String | X | 이벤트 메시지에 포함된 문자열 검색어 | -| ascendingOrder | Query | Enum | X | 이벤트 메시지 정렬 순서
- `ASC`: 오름차순
- `DESC`: 내림차순
- 기본값: `DESC` | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|---------------------------------------| -| totalCounts | Body | Number | 전체 이벤트 목록 수 | -| events | Body | Array | 이벤트 목록 | -| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | -| events.sourceId | Body | String | 이벤트 소스의 식별자 | -| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | -| events.messages | Body | Array | 이벤트 메시지 목록 | -| events.messages.langCode | Body | String | 언어 코드 | -| events.messages.message | Body | String | 이벤트 메시지 | -| events.eventYmdt | Body | DateTime | 이벤트 발생 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 이벤트 구독 수정하기 + +```http +PUT /v4.0/event-subscriptions/{eventSubscriptionId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:EventSubscription.Modify | 이벤트 구독 수정하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | +| eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | X | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | X | 활성화 여부 | +| notifyEmail | Body | Boolean | X | 이메일 발송 여부 | +| notifySms | Body | Boolean | X | SMS 발송 여부 | +| eventCodes | Body | Array | X | 구독할 이벤트 코드 목록 | +| sources | Body | Array | X | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | X | 이벤트 구독할 사용자 그룹의 식별자 목록 |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "totalCounts": 28, - "events": [ + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ { - "eventCategoryType": "INSTANCE", - "eventCode": "INSTC_02_01", - "sourceId": "76f00947-356e-4a20-8922-428368cc45ed", - "sourceName": "db-instance", - "messages": [ - { - "langCode": "EN", - "message": "DB instance started" - }, - { - "langCode": "JA", - "message": "DBインスタンスの起動" - }, - { - "langCode": "KO", - "message": "DB 인스턴스 시작" - }, - { - "langCode": "ZH", - "message": "DB instance started" - } - ], - "eventYmdt": "2023-03-20T16:31:59+09:00" + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" } - ] + ], + "userGroupIds": [] } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- -### 구독 가능한 이벤트 코드 목록 보기 +## 가용성 영역 + +### 가용성 영역 목록 보기 ```http -GET /v4.0/event-codes +GET /v4.0/availability-zones ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------|-----------| -| RDSforMySQL:Event.List | 이벤트 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:AvailabilityZone.List | 가용성 영역 목록 보기 | #### 요청 @@ -4611,11 +5941,12 @@ GET /v4.0/event-codes #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|-------|-------------| -| eventCodes | Body | Array | 이벤트 코드 목록 | -| eventCodes.eventCode | Body | Enum | 이벤트 코드 | -| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| availabilityZones | Body | Array | 가용성 영역 목록 | +| availabilityZones.availabilityZoneName | Body | String | 가용성 영역 이름 | +| availabilityZones.zoneState | Body | Object | 가용성 영역 상태 | +| availabilityZones.zoneState.available | Body | Boolean | 가용성 영역의 사용 가능 여부 |
예시

@@ -4627,10 +5958,12 @@ GET /v4.0/event-codes "resultMessage": "SUCCESS", "isSuccessful": true }, - "eventCodes": [ + "availabilityZones": [ { - "eventCode": "INSTC_05_01", - "eventCategoryType": "INSTANCE" + "availabilityZoneName": "availabilityZoneName-example", + "zoneState": { + "available": false + } } ] } @@ -4640,3 +5973,4 @@ GET /v4.0/event-codes

--- + diff --git a/ko/api-guide-v4.0-ninc.md b/ko/api-guide-v4.0-ninc.md index 2601e714..bfd40030 100644 --- a/ko/api-guide-v4.0-ninc.md +++ b/ko/api-guide-v4.0-ninc.md @@ -1,35 +1,39 @@ -## Database > RDS for MySQL > API 가이드 +## Database > RDS for MySQL > API v4.0 가이드 -| 리전 | 엔드포인트 | -|-----------|-----------------------------------------------| -| 한국(판교) 리전 | https://kr4-rds-mysql-api.ninc.go.kr | +## RDS for MySQL API 공통 정보 -## 인증 및 권한 +### API 엔드포인트 + +| 리전 | 엔드포인트 | +|------|----------| +| 한국(대구) 리전 | https://ninc-kr4-rds-proxy.cloud.toastoven.net | -API를 사용하려면 [Public API > API 호출 및 인증](/nhncloud/ko/public-api/api-authentication-ninc/)을 통해 발급 받은 Bearer 유형의 토큰이 필요합니다. -발급 받은 토큰은 Appkey와 함께 요청 Header에 포함해야 합니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|--------|--------|----|-------------------------------------------------------------| -| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | -| X-NHN-AUTHORIZATION | Header | String | O | Public API로 발급 받은 Bearer 유형 토큰 | +### 인증 및 권한 + +RDS for MySQL은(는) API 호출 시 인증/인가를 위해 User Access Key 토큰을 사용합니다. User Access Key 토큰은 User Access Key를 기반으로 발급되는 Bearer 타입의 일시적 액세스 토큰입니다. User Access Key 토큰 발급 및 사용에 대한 자세한 내용은 [User Access Key 토큰](/nhncloud/ko/public-api/user-access-key-token)을 참고하세요. +발급 받은 토큰은 Appkey와 함께 요청 Header에 포함해야 합니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | +| X-NHN-AUTHORIZATION | Header | String | O | Public API로 발급 받은 Bearer 유형 토큰 | -또한 프로젝트 멤버 역할에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER`로 구분하여 권한을 부여할 수 있습니다. +또한 프로젝트 권한에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER` 역할에는 아래처럼 기본 권한이 부여돼 있고 프로젝트 내 역할 그룹 관리 메뉴에서 필요한 권한만 부여할 수 있습니다. -* `RDS for MySQL ADMIN` 권한은 모든 기능을 사용 가능합니다. -* `RDS for MySQL VIEWER` 권한은 정보를 조회하는 기능만 사용 가능합니다. +* `RDS for MySQL ADMIN` 역할은 API 실행에 필요한 모든 권한이 부여됩니다. +* `RDS for MySQL VIEWER` 역할은 정보를 조회하는 권한만 부여됩니다. * DB 인스턴스를 생성, 수정, 삭제하거나, DB 인스턴스를 대상으로 하는 어떠한 기능도 사용할 수 없습니다. - * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용 가능합니다. + * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용할 수 있습니다. API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같은 오류가 발생합니다. -| resultCode | resultMessage | 설명 | -|------------|---------------|-------------| -| 80401 | Unauthorized | 인증에 실패했습니다. | -| 80403 | Forbidden | 권한이 없습니다. | +| resultCode | resultMessage | 설명 | +|------------|---------------|-----| +| 80401 | Unauthorized | 인증에 실패했습니다. | +| 80403 | Forbidden | 권한이 없습니다. | -## 응답 공통 정보 +### 응답 공통 정보 모든 API 요청에 '200 OK'로 응답합니다. 자세한 응답 결과는 응답 본문의 헤더를 참고합니다. @@ -45,54 +49,58 @@ API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같 ``` #### 필드 -| 이름 | 형식 | 설명 | -|---------------|---------|-----------------------------------------| -| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | -| resultMessage | String | 결과 메시지 | -| isSuccessful | Boolean | 성공 여부 | - - -## DB 엔진 유형 - -| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 | -|--------------|----------|-----------------|--------| -| MYSQL\_V5633 | X | X | NATIVE | -| MYSQL\_V5715 | O | O | NATIVE | -| MYSQL\_V5719 | O | O | NATIVE | -| MYSQL\_V5726 | O | O | NATIVE | -| MYSQL\_V5731 | X | X | NATIVE | -| MYSQL\_V5733 | O | X | NATIVE, SHA256 | -| MYSQL\_V5737 | O | O | NATIVE, SHA256 | -| MYSQL\_V8018 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8023 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8028 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8032 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8033 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8034 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8405 | O | O | CACHING_SHA2 | +| 이름 | 형식 | 설명 | +|-----|-----|-----| +| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | +| resultMessage | String | 결과 메시지 | +| isSuccessful | Boolean | 성공 여부 | + +### DB 엔진 유형 + +| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 | +|------------|----------|------------------|------------| +| MYSQL_V5633 | X | X | NATIVE | +| MYSQL_V5715 | O | O | NATIVE | +| MYSQL_V5719 | O | O | NATIVE | +| MYSQL_V5726 | O | O | NATIVE | +| MYSQL_V5731 | X | X | NATIVE | +| MYSQL_V5733 | O | X | NATIVE, SHA256 | +| MYSQL_V5737 | O | O | NATIVE, SHA256 | +| MYSQL_V8018 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8023 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8028 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8032 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8033 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8034 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8044 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8045 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8405 | O | O | CACHING_SHA2 | +| MYSQL_V8406 | O | O | CACHING_SHA2 | +| MYSQL_V8407 | O | O | CACHING_SHA2 | +| MYSQL_V8408 | O | O | CACHING_SHA2 | * ENUM 타입의 dbVersion 필드에 대해 해당 값을 사용할 수 있습니다. * 버전에 따라 생성 또는 복원이 불가능한 경우가 있을 수 있습니다. ## 프로젝트 정보 -### 리전 목록 보기 +### 프로젝트 멤버 목록 보기 ```http -GET /v4.0/project/regions +GET /v4.0/project/members ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|------------| -| RDSforMySQL:Project.Get | 프로젝트 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Project.Get | 프로젝트 멤버 목록 보기 | #### 요청 @@ -100,11 +108,13 @@ GET /v4.0/project/regions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------|------|---------|----------------------------------------------------------------------------| -| regions | Body | Array | 리전 목록 | -| regions.regionCode | Body | Enum | 리전 코드
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| members.memberName | Body | String | 프로젝트 멤버의 이름 | +| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | +| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 |
예시

@@ -116,38 +126,33 @@ GET /v4.0/project/regions "resultMessage": "SUCCESS", "isSuccessful": true }, - "regions": [ - { - "regionCode": "KR1", - "isEnabled": true - }, - { - "regionCode": "KR2", - "isEnabled": true - }, + "members": [ { - "regionCode": "JP1", - "isEnabled": true + "memberId": "550e8400-e29b-41d4-a716-446655440000", + "memberName": "memberName-example", + "emailAddress": "emailAddress-example", + "phoneNumber": "phoneNumber-example" } ] } ``` +

--- -### 프로젝트 멤버 목록 보기 +### 리전 목록 보기 ```http -GET /v4.0/project/members +GET /v4.0/project/regions ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|------------| -| RDSforMySQL:Project.Get | 프로젝트 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Project.Get | 리전 목록 보기 | #### 요청 @@ -155,13 +160,11 @@ GET /v4.0/project/members #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|--------|-----------------| -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| members.memberName | Body | String | 프로젝트 멤버의 이름 | -| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | -| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| regions | Body | Array | 리전 목록 | +| regions.regionCode | Body | Enum | 리전 코드
- KR4: `한국(대구)` | +| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 |
예시

@@ -173,12 +176,10 @@ GET /v4.0/project/members "resultMessage": "SUCCESS", "isSuccessful": true }, - "members": [ + "regions": [ { - "memberId": "1b1d3627-507a-49ea-8cb7-c86dfa9caa58", - "memberName": "홍길동", - "emailAddress": "gildong.hong@nhn.com", - "phoneNumber": "+821012345678" + "regionCode": "KR4", + "isEnabled": false } ] } @@ -199,8 +200,8 @@ GET /v4.0/db-flavors #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbFlavor.List | DB 인스턴스 사양 목록 보기 | #### 요청 @@ -209,13 +210,13 @@ GET /v4.0/db-flavors #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------| -| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | -| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | -| dbFlavors.ram | Body | Number | 메모리 용량(MB) | -| dbFlavors.vcpus | Body | Number | CPU 코어 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | +| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | +| dbFlavors.ram | Body | Number | 메모리 용량(MB) | +| dbFlavors.vcpus | Body | Number | CPU 코어 수 |

예시

@@ -229,9 +230,9 @@ GET /v4.0/db-flavors }, "dbFlavors": [ { - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbFlavorName": "m2.c1m2", - "ram": 2048, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbFlavorName": "dbFlavorName-example", + "ram": 1, "vcpus": 1 } ] @@ -253,8 +254,8 @@ GET /v4.0/network/subnets #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------|-----------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Network.List | 서브넷 목록 보기 | #### 요청 @@ -263,14 +264,14 @@ GET /v4.0/network/subnets #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|---------|------------------| -| subnets | Body | Array | 서브넷 목록 | -| subnets.subnetId | Body | UUID | 서브넷의 식별자 | -| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | -| subnets.subnetCidr | Body | String | 서브넷의 CIDR | -| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | -| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| subnets | Body | Array | 서브넷 목록 | +| subnets.subnetId | Body | UUID | 서브넷의 식별자 | +| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnets.subnetCidr | Body | String | 서브넷의 CIDR | +| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | +| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 |

예시

@@ -284,11 +285,11 @@ GET /v4.0/network/subnets }, "subnets": [ { - "subnetId": "1b2a9b23-0725-4b92-8c78-35db66b8ad9f", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/24", - "usingGateway": true, - "availableIpCount": 240 + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example", + "usingGateway": false, + "availableIpCount": 1 } ] } @@ -309,8 +310,8 @@ GET /v4.0/db-versions #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbVersion.List | DB 엔진 목록 보기 | #### 요청 @@ -319,11 +320,11 @@ GET /v4.0/db-versions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|---------|-----------------------| -| dbVersions | Body | Array | DB 엔진 목록 | -| dbVersions.dbVersion | Body | String | DB 엔진 유형 | -| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbVersions | Body | Array | DB 엔진 목록 | +| dbVersions.dbVersion | Body | String | DB 엔진 유형 | +| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | | dbVersions.restorableFromObs | Body | Boolean | 오브젝트 스토리지로부터 복원 가능 여부 |

예시 @@ -338,9 +339,9 @@ GET /v4.0/db-versions }, "dbVersions": [ { - "dbVersion": "MYSQL_V8028", - "dbVersionName": "MySQL 8.0.28", - "restorableFromObs": true + "dbVersion": "MYSQL_V8036", + "dbVersionName": "dbVersionName-example", + "restorableFromObs": false } ] } @@ -353,7 +354,7 @@ GET /v4.0/db-versions ## 데이터 스토리지 -### 데이터 스토리지 타입 목록 보기 +### 스토리지 타입 목록 보기 ```http GET /v4.0/storage-types @@ -361,9 +362,9 @@ GET /v4.0/storage-types #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------|-------------------| -| RDSforMySQL:Storage.List | 데이터 스토리지 타입 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Storage.List | 스토리지 타입 목록 보기 | #### 요청 @@ -371,9 +372,9 @@ GET /v4.0/storage-types #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|-------|----------------| -| storageTypes | Body | Array | 데이터 스토리지 타입 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageTypes | Body | Array | 스토리지 타입 목록 |
예시

@@ -385,10 +386,7 @@ GET /v4.0/storage-types "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageTypes": [ - "General SSD", - "General HDD" - ] + "storageTypes": [] } ``` @@ -424,29 +422,29 @@ GET /v4.0/jobs/{jobId} #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Job.Get | 작업 정보 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------|-----|------|----|---------| -| jobId | URL | UUID | O | 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| jobId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------|------|----------|-----------------------------------| -| jobId | Body | UUID | 작업의 식별자 | -| jobStatus | Body | Enum | 작업의 현재 상태 | -| resourceRelations | Body | Array | 연관 리소스 목록 | -| resourceRelations.resourceType | Body | Enum | 연관 리소스 유형 | -| resourceRelations.resourceId | Body | UUID | 연관 리소스의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | +| jobStatus | Body | Enum | 작업의 현재 상태
- DELETED
- CANNOT_PROGRESS
- FAILED
- ERROR
- CANCELED
- INTERRUPTED
- COMPLETED
- RUNNING
- PREPARING
- READY
- CREATED
- FAIL_TO_READY
- REGISTERED
- FAIL_TO_REGISTER
- WAIT_TO_REGISTER | +| resourceRelations | Body | Array | 연관 리소스 목록 | +| resourceRelations.resourceType | Body | String | 연관 리소스 유형 | +| resourceRelations.resourceId | Body | String | 연관 리소스의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -458,16 +456,16 @@ GET /v4.0/jobs/{jobId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "jobId": "0ddb042c-5af6-43fb-a914-f4dd0540eb7c", - "jobStatus": "RUNNING", + "jobId": "550e8400-e29b-41d4-a716-446655440000", + "jobStatus": "DELETED", "resourceRelations": [ { - "resourceType": "DB_INSTANCE", - "resourceId": "56b39dcf-65eb-47ec-9d4f-09f160ba2266" + "resourceType": "resourceType-example", + "resourceId": "resourceId-example" } ], - "createdYmdt": "2023-02-22T20:47:12+09:00", - "updatedYmdt": "2023-02-22T20:49:46+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -486,8 +484,8 @@ GET /v4.0/db-instance-groups #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstanceGroup.List | DB 인스턴스 그룹 목록 보기 | #### 요청 @@ -496,13 +494,13 @@ GET /v4.0/db-instance-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------|------|----------|--------------------------------------------------------------------------| -| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | -| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | +| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -516,10 +514,10 @@ GET /v4.0/db-instance-groups }, "dbInstanceGroups": [ { - "dbInstanceGroupId": "05de0746-89fd-49c8-94f9-9c5b1df97009", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", - "createdYmdt": "2023-02-13T17:35:20+09:00", - "updatedYmdt": "2023-02-13T17:35:20+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -538,30 +536,30 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstanceGroup.Get | DB 인스턴스 그룹 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|-----------------| -| dbInstanceGroupId | URL | UUID | O | DB 인스턴스 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -573,17 +571,17 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbInstanceGroupId": "36617a8e-0df8-4b16-b6ea-6306019e95da", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", "dbInstances": [ { - "dbInstanceId": "6d2db0ef-fe9b-4ed4-97b1-d97fcb4cf1b8", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE" + "dbInstanceStatus": "BEFORE_CREATE" } ], - "createdYmdt": "2023-03-03T17:38:14+09:00", - "updatedYmdt": "2023-03-03T17:38:14+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -616,8 +614,8 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} | `BACKING_UP` | 백업 중 | | `CANCELING` | 취소 중 | | `CREATING` | 생성 중 | -| `CREATING_SCHEMA` | DB 스키마 생성 중 | -| `CREATING_USER` | 사용자 생성 중 | +| `CREATING_SCHEMA` | DB 스키마 생성 중 | +| `CREATING_USER` | 사용자 생성 중 | | `DELETING` | 삭제 중 | | `DELETING_SCHEMA` | DB 스키마 삭제 중 | | `DELETING_USER` | 사용자 삭제 중 | @@ -636,8 +634,8 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} | `STARTING` | 시작 중 | | `STOPPING` | 정지 중 | | `SYNCING_SCHEMA` | DB 스키마 동기화 중 | -| `SYNCING_USER` | 사용자 동기화 중 | -| `UPDATING_USER` | 사용자 수정 중 | +| `SYNCING_USER` | 사용자 동기화 중 | +| `UPDATING_USER` | 사용자 수정 중 | ### DB 인스턴스 목록 보기 @@ -647,8 +645,8 @@ GET /v4.0/db-instances #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstance.List | DB 인스턴스 목록 보기 | #### 요청 @@ -657,20 +655,20 @@ GET /v4.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstances | Body | Array | DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | -| dbInstances.dbPort | Body | Number | DB 포트 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태 | -| dbInstances.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstances.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstances | Body | Array | DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | +| dbInstances.dbPort | Body | Number | DB 포트 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbInstances.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstances.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -684,17 +682,17 @@ GET /v4.0/db-instances }, "dbInstances": [ { - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", + "dbInstanceStatus": "BEFORE_CREATE", "progressStatus": "NONE", - "createdYmdt": "2023-01-23T12:03:13+09:00", - "updatedYmdt": "2023-02-02T17:20:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -705,51 +703,130 @@ GET /v4.0/db-instances --- -### DB 인스턴스 상세 보기 +### DB 인스턴스 생성하기 ```http -GET /v4.0/db-instances/{dbInstanceId} +POST /v4.0/db-instances ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Create | DB 인스턴스 생성하기 | -#### 요청 +#### 공통 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| authenticationPlugin | Body | Enum | X | 인증 Plugin
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | TLS Option
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 데이터 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | + +

예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE", + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "backup": { + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 1800, + "replicationRegion": "KR4", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + } +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| dbPort | Body | Number | DB 포트 | -| dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| progressStatus | Body | Enum | DB 인스턴스의 현재 작업 진행 상태 | -| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | -| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | -| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | -| useSlowQueryAnalysis | Body | Boolean | Slow query 분석 여부 | -| supportAuthenticationPlugin | Body | Boolean | 인증 플러그인 지원 여부 | -| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | -| needMigration | Body | Boolean | 마이그레이션 필요 여부 | -| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -761,27 +838,7 @@ GET /v4.0/db-instances/{dbInstanceId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", - "progressStatus": "NONE", - "dbFlavorId": "e9ed4ef6-78d7-46fa-ace9-32481e97f3b7", - "parameterGroupId": "b03e8b13-de27-4d04-a488-ff5689589372", - "dbSecurityGroupIds": ["01908c35-d2c9-4852-baf0-17f06ec42c03"], - "notificationGroupIds": ["83a62a33-ddbf-4a04-8653-e54463d5b1ac"], - "useDeletionProtection": false, - "useSlowQueryAnalysis": true, - "supportAuthenticationPlugin": true, - "needToApplyParameterGroup": false, - "needMigration": false, - "supportDbVersionUpgrade": true, - "createdYmdt": "2022-11-23T12:03:13+09:00", - "updatedYmdt": "2022-12-02T17:20:17+09:00" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -790,96 +847,124 @@ GET /v4.0/db-instances/{dbInstanceId} --- -### DB 인스턴스 생성하기 +### 오브젝트 스토리지를 이용한 DB 인스턴스 복원 ```http -POST /v4.0/db-instances +POST /v4.0/db-instances/restore-from-obs ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Create | DB 인스턴스 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.RestoreFromObs | 오브젝트 스토리지를 이용한 DB 인스턴스 복원 | -#### 요청 +#### 공통 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|-------|---------|----|---------------------------------------------------------------------| -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbUserName | Body | String | O | DB 사용자 계정명 | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `16` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄) | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | O | DB 포트 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | +| restore.username | Body | String | O | NHN Cloud 계정 혹은 IAM 멤버 ID | +| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | +| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | +| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` |

예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", - "availabilityZone": "kr-pub-a" - }, + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "dbVersion": "MYSQL_V8036", + "useHighAvailability": false, + "pingInterval": 3, "storage": { "storageType": "General SSD", - "storageSize": 20 + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR4", + "useBackupLock": true, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR" + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" } ] - } + }, + "restore": { + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" + }, + "useDefaultNotification": false, + "useSlowQueryAnalysis": true, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDeletionProtection": false } ``` @@ -888,64 +973,27 @@ POST /v4.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### DB 인스턴스 수정하기 - -```http -PUT /v4.0/db-instances/{dbInstanceId} -``` - -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|------|---------|----|---------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbPort | Body | Number | X | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbVersion | Body | Enum | X | DB 엔진 유형 | -| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -

예시

```json { - "dbInstanceName": "db-instance2", - "description": "description2", - "dbPort": 10001, - "dbSecurityGroupIds": [], - "executeBackup": true + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- ### DB 인스턴스 삭제하기 @@ -956,75 +1004,99 @@ DELETE /v4.0/db-instances/{dbInstanceId} #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstance.Delete | DB 인스턴스 삭제하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| deleteAutoBackup | Body | Boolean | X | 자동 백업 삭제 여부
- 기본값: `false` | -### DB 인스턴스 재시작하기 +
예시 +

-```http -POST /v4.0/db-instances/{dbInstanceId}/restart +```json +{ + "deleteAutoBackup": false +} ``` -#### 필요 권한 +

+
-| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Restart | DB 인스턴스 재시작하기 | +#### 응답 -#### 요청 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### DB 인스턴스 강제 재시작하기 + +### DB 인스턴스 상세 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/force-restart +GET /v4.0/db-instances/{dbInstanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|------------------| -| RDSforMySQL:DbInstance.ForceRestart | DB 인스턴스 강제 재시작하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| dbPort | Body | Number | DB 포트 | +| dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | +| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | +| useSlowQueryAnalysis | Body | Boolean | Slow query 분석 여부 | +| supportAuthenticationPlugin | Body | Boolean | 인증 plugin 지원 여부 | +| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | +| needMigration | Body | Boolean | 마이그레이션 필요 여부 | +| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -1035,135 +1107,222 @@ POST /v4.0/db-instances/{dbInstanceId}/force-restart "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbInstanceType": "MASTER", + "dbInstanceStatus": "BEFORE_CREATE", + "progressStatus": "NONE", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "notificationGroupIds": [], + "useDeletionProtection": false, + "useSlowQueryAnalysis": false, + "supportAuthenticationPlugin": false, + "needToApplyParameterGroup": false, + "needMigration": false, + "supportDbVersionUpgrade": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

- --- -### DB 인스턴스 시작하기 +### DB 인스턴스 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/start +PUT /v4.0/db-instances/{dbInstanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Start | DB 인스턴스 시작하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbPort | Body | Number | X | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbVersion | Body | Enum | X | DB 엔진 버전 코드 | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부 | +| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
- 기본값: `false` | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` | + +
예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbPort": 1, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "useSlowQueryAnalysis": false, + "useDummy": false, + "dbSecurityGroupIds": [], + "executeBackup": false, + "useOnlineFailover": false, + "waitReplicationDelay": false, + "useReadOnly": false +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 인스턴스 정지하기 +### 백업 정보 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/stop +GET /v4.0/db-instances/{dbInstanceId}/backup-info ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Stop | DB 인스턴스 정지하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 백업 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| backupPeriod | Body | Number | 백업 보관 기간(일) | +| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | +| backupRetryCount | Body | Number | 백업 재시도 횟수 | +| replicationRegion | Body | Enum | 백업 복제 리전
- KR4: `한국(대구)` | +| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration
- HALF_AN_HOUR
- ONE_HOUR
- ONE_HOUR_AND_HALF
- TWO_HOURS
- TWO_HOURS_AND_HALF
- THREE_HOURS | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "backupPeriod": 1, + "ftwrlWaitTimeout": 1, + "backupRetryCount": 1, + "replicationRegion": "KR4", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] +} +``` + +

+
--- -### DB 인스턴스 복제하기 +### 백업 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/replicate +PUT /v4.0/db-instances/{dbInstanceId}/backup-info ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Replicate | DB 인스턴스 복제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | 백업 정보 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------------------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbPort | Body | Number | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록
- 기본값: 원본 DB 인스턴스 값 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: 원본 DB 인스턴스 값 | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입
  • 예시: `General SSD`
| -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄)
- 기본값: 원본 DB 인스턴스 값 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각
- 예시: `00:00:00`
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간
- 기본값: 원본 DB 인스턴스 값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json { - "dbInstanceName": "db-instance-replicate", - "description": "description", - "dbPort": 11000, - "network": { - "availabilityZone": "kr-pub-a" - }, - "storage": { - "stroageSize": 100 - } + "backupPeriod": 0, + "ftwrlWaitTimeout": 0, + "backupRetryCount": 0, + "replicationRegion": "KR4", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] } ``` @@ -1172,147 +1331,991 @@ POST /v4.0/db-instances/{dbInstanceId}/replicate #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### DB 인스턴스 승격하기 +

예시 +

-```http -POST /v4.0/db-instances/{dbInstanceId}/promote +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 바이너리 로그 목록 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/binlogs +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceBinLog.List | 바이너리 로그 목록 보기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| binLogs | Body | Array | BinLog 파일 목록 | +| binLogs.binLogFileName | Body | String | BinLog 파일 이름 | +| binLogs.binLogFileSize | Body | Number | BinLog 파일 크기 (Byte) | +| binLogs.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "binLogs": [ + { + "binLogFileName": "binLogFileName-example", + "binLogFileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### 바이너리 로그 삭제 + +```http +POST /v4.0/db-instances/{dbInstanceId}/binlogs/purge +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceBinLog.Purge | 바이너리 로그 삭제 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| lastBinLogFileName | Body | String | O | 삭제할 마지막 BinLog 파일 이름 (해당 파일 직전까지 삭제됨) | + +
예시 +

+ +```json +{ + "lastBinLogFileName": "mysql-bin.000010" +} +``` + +

+
+ +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 인증서 파일 목록 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/certificates +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceCertificate.List | 인증서 파일 목록 보기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| certificates | Body | Array | 인증서 파일 목록 | +| certificates.fileName | Body | String | 인증서 파일 이름 | +| certificates.certificateType | Body | Enum | 인증서 타입
- CA_FILE
- CERT_FILE
- KEY_FILE | +| certificates.fileSize | Body | Number | 인증서 파일 크기(Byte) | +| certificates.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "certificates": [ + { + "fileName": "fileName-example", + "certificateType": "CA_FILE", + "fileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### 인증서 파일 내보내기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/certificates/upload +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceCertificate.Export | 인증서 파일 내보내기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| certificateTypes | Body | Array | O | 업로드할 인증서 타입 목록 | +| tenantId | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 회원 또는 IAM 멤버 ID | +| password | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 인증서 파일의 경로 | + +
예시 +

+ +```json +{ + "certificateTypes": [], + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 스키마 목록 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/db-schemas +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceSchema.List | DB 스키마 목록 보기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSchemas | Body | Array | DB 스키마 목록 | +| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | +| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | +| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- STABLE
- CREATING
- SYNCING
- DELETING
- DELETED | +| dbSchemas.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSchemas": [ + { + "dbSchemaId": "550e8400-e29b-41d4-a716-446655440000", + "dbSchemaName": "dbSchemaName-example", + "dbSchemaStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### DB 스키마 생성하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/db-schemas +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceSchema.Create | DB 스키마 생성하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbSchemaName | Body | String | O | DB 스키마 이름
- 최대 길이: `64`
- 영문 시작, 영문/숫자/_ 허용, 1~64자, MySQL 예약어 불가 | + +
예시 +

+ +```json +{ + "dbSchemaName": "dbSchemaName-example" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 스키마 삭제하기 + +```http +DELETE /v4.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceSchema.Delete | DB 스키마 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbSchemaId | URL | UUID | O | DB 스키마의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 사용자 목록 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/db-users +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.List | DB 사용자 목록 보기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbUsers | Body | Array | DB 사용자 목록 | +| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | +| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | +| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | +| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- STABLE
- CREATING
- UPDATING
- SYNCING
- DELETING
- DELETED | +| dbUsers.createdYmdt | Body | DateTime | 생성 일시 | +| dbUsers.updatedYmdt | Body | DateTime | 수정 일시 | +| dbUsers.authenticationPlugin | Body | Enum | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| dbUsers.tlsOption | Body | Enum | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbUsers": [ + { + "dbUserId": "550e8400-e29b-41d4-a716-446655440000", + "dbUserName": "dbUserName-example", + "host": "host-example", + "authorityType": "CUSTOM", + "dbUserStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" + } + ] +} +``` + +

+
+ +--- + +### DB 사용자 생성하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/db-users +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.Create | DB 사용자 생성하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| host | Body | String | O | DB 사용자 계정의 호스트명
- 최대 길이: `45` | +| authorityType | Body | Enum | O | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | + +
예시 +

+ +```json +{ + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "host": "host-example", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 사용자 삭제하기 + +```http +DELETE /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.Delete | DB 사용자 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserId | URL | UUID | O | DB 사용자의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 사용자 수정하기 + +```http +PUT /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.Modify | DB 사용자 수정하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| authorityType | Body | Enum | X | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | + +
예시 +

+ +```json +{ + "dbPassword": "dbPassword", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 인스턴스 삭제 보호 설정 변경 + +```http +PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | DB 인스턴스 삭제 보호 설정 변경 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | + +
예시 +

+ +```json +{ + "useDeletionProtection": false +} +``` + +

+
+ +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### DB 인스턴스 강제 재시작하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/force-restart ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Promote | DB 인스턴스 승격하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.ForceRestart | DB 인스턴스 강제 재시작하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 고가용성 정보 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/high-availability +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 고가용성 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| useHighAvailability | Body | Boolean | 고가용성 사용 여부
- 기본값: `false` | +| haStatus | Body | Enum | 고가용성 상태
- CREATED: `생성됨`
- STABLE: `정상`
- PAUSING: `일시 중지 중`
- DISABLE: `정지`
- DISABLE_MASTER_IN_REPLICATION: `마스터 비정상 복제 감지로 인한 고가용성 중단`
- DISABLE_MHA_PROCESS: `고가용성 프로세스 중단`
- DISABLE_REPLICATION_STOP: `복제 중단으로 인한 고가용성 중단`
- DISABLE_REPLICATION_DELAY: `복제 지연으로 인한 고가용성 중단`
- FAILOVER_STARTED: `장애 조치 시작`
- FAILOVER_FAILED: `장애 조치 실패`
- FAILOVER_COMPLETED: `장애 조치 완료`
- DELETED: `삭제됨`
- PAUSED: `일시 중지`
- PAUSED_DUE_TO_TASK: `작업으로 인한 일시 중지`
- MASTER_FAILURE_DETECTION: `마스터 장애 감지` | +| pingInterval | Body | Number | Ping 간격(초) | +| pingType | Body | String | Ping 방식 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "useHighAvailability": false, + "haStatus": "CREATED", + "pingInterval": 1, + "pingType": "pingType-example" +} +``` + +

+
+ +--- + +### 고가용성 수정하기 + +```http +PUT /v4.0/db-instances/{dbInstanceId}/high-availability +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Modify | 고가용성 수정하기 | + +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +
예시 +

+ +```json +{ + "useHighAvailability": false, + "pingInterval": 1 +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 인스턴스 재구축하기 +### 고가용성 일시 중지하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/rebuild +POST /v4.0/db-instances/{dbInstanceId}/high-availability/pause ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Rebuild | DB 인스턴스 재구축하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Pause | 고가용성 일시 중지하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 복원 정보 조회 +### 고가용성 복구하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/restoration-info +POST /v4.0/db-instances/{dbInstanceId}/high-availability/repair ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Repair | 고가용성 복구하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 다시 시작하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/high-availability/resume +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Resume | 고가용성 다시 시작하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------------|------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| oldestRestorableYmdt | Body | DateTime | 가장 오래된 복원 가능한 시각 | -| latestRestorableYmdt | Body | DateTime | 가장 최신의 복원 가능한 시각 | -| restorableBackups | Body | Array | 복원 가능한 백업 목록 | -| restorableBackups.backup | Body | Object | 백업 정보 객체 | -| restorableBackups.backup.backupId | Body | UUID | 백업의 식별자 | -| restorableBackups.backup.backupName | Body | String | 백업 이름 | -| restorableBackups.backup.useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| restorableBackups.backup.backupSize | Body | Number | 백업 크기 | -| restorableBackups.backup.backupType | Body | Enum | 백업 유형
  • `AUTO`: 자동
  • `MANUAL`: 수동
| -| restorableBackups.backup.backupStatus | Body | Enum | 백업 상태
  • `BACKING_UP`: 백업 중인 경우
  • `COMPLETED`: 백업이 완료된 경우
  • `DELETING`: 백업이 삭제 중인 경우
  • `DELETED`: 백업이 삭제된 경우
  • `ERROR`: 오류가 발생한 경우
| -| restorableBackups.backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| restorableBackups.backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | -| restorableBackups.backup.dbVersion | Body | String | DB 엔진 유형 | -| restorableBackups.backup.failoverCount | Body | Number | 장애 조치 횟수 | -| restorableBackups.backup.binLogFileName | Body | String | 바이너리 로그 파일 이름 | -| restorableBackups.backup.binLogPosition | Body | Number | 바이너리 로그 파일 위치 | -| restorableBackups.backup.createdYmdt | Body | DateTime | 백업 생성 일시 | -| restorableBackups.backup.updatedYmdt | Body | DateTime | 백업 갱신 일시 | -| restorableBackups.restorableBinLogs | Body | Array | 해당 백업을 이용하여 복원 가능한 바이너리 로그 이름 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 고가용성 분리하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/high-availability/split +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Split | 고가용성 분리하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "oldestRestorableYmdt": "2023-07-09T16:33:33+09:00", - "latestRestorableYmdt": "2023-07-10T15:44:44+09:00", - "restorableBackups": [ - { - "backup": { - "backupId": "145d889a-fe08-474f-8f58-bde576ff96a9", - "backupName": "example-backup-name", - "backupStatus": "COMPLETED", - "dbInstanceId": "dba1be25-9429-4589-9716-7fb6daad7cb9", - "dbInstanceName": "original-db-instance-name", - "dbVersion": "MYSQL_V8028", - "backupType": "MANUAL", - "backupSize": 8299904, - "useBackupLock": true, - "failoverCount": 0, - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 367916037, - "createdYmdt": "2023-07-10T15:44:44+09:00", - "updatedYmdt": "2023-07-10T15:46:07+09:00" - }, - "restorableBinLogs": [ - "mysql-bin.000001" - ] - } - ] + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1321,45 +2324,108 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info --- -### 복원될 마지막 쿼리 조회 +### 로그 파일 목록 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query +GET /v4.0/db-instances/{dbInstanceId}/log-files ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceLog.List | 로그 파일 목록 보기 | -#### 공통 요청 +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| logFiles | Body | Array | 로그 파일 목록 | +| logFiles.logFileName | Body | String | 로그 파일 이름 | +| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- ERROR
- BINLOG
- GENERAL
- SLOW_QUERY
- AUDIT
- BACKUP | +| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | +| logFiles.createdYmdt | Body | DateTime | 생성 일시 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "logFiles": [ + { + "logFileName": "logFileName-example", + "logFileType": "ERROR", + "logFileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### 로그 파일 내보내기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/log-files/export +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceLog.Export | 로그 파일 내보내기 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|------|----|-----------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restoreType | Query | Enum | O | 복원 타입 종류
  • `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
  • `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입
| +#### 요청 -#### restoreType이 `TIMESTAMP`인 경우 +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| logFileNames | Body | Array | O | 로그 파일 이름 목록 | +| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 회원 또는 IAM 멤버 ID | +| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-------|----------|----|-------------------------------------------| -| restoreYmdt | Query | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +
예시 +

-#### restoreType이 `BINLOG`인 경우 +```json +{ + "logFileNames": [], + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------|-------|--------|----|--------------------| -| backupId | Query | UUID | O | 복원에 사용할 백업의 식별자 | -| binLogFileName | Query | String | O | 복원에 사용할 바이너리 로그 이름 | -| binLogPosition | Query | Number | O | 복원에 사용할 바이너리 로그 위치 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|----------|--------------------------------------| -| executedYmdt | Body | DateTime | 쿼리 수행 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| lastQuery | Body | String | 마지막 수행 쿼리 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -1371,8 +2437,7 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query "resultMessage": "SUCCESS", "isSuccessful": true }, - "executedYmdt": "2023-03-17T14:02:29+09:00", - "lastQuery": "INSERT INTO `test`.`test`SET @1='0123'" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1381,328 +2446,165 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query --- -### 복원 +### 로그 파일 내용 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/restore +GET /v4.0/db-instances/{dbInstanceId}/log-files/{logFileName} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Restore | DB 인스턴스 복원하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceLog.Get | 로그 파일 내용 보기 | -#### 공통 요청 +#### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restore | Body | Object | O | 복원 정보 객체 | -| restore.restoreType | Body | Enum | O | 복원 타입 종류

  • `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
  • `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입
  • `BACKUP`: 기존에 생성한 백업을 이용한 스냅숏 복원 타입
| -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
  • 최솟값: `3306`
  • 최댓값: `43306`
| -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
  • 기본값: `false`
| -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
  • 기본값: `3`
  • 최솟값: `1`
  • 최댓값: `600`
| -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
  • 기본값: `false`
| -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
  • 기본값: `false`
| -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
  • 예시: `kr-pub-a`
| -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
  • 예시: `General SSD`
| -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
  • 최솟값: `20`
  • 최댓값: `2048`
| -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
  • 최솟값: `0`
  • 최댓값: `730`
| -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
  • 기본값: `1800`
  • 최솟값: `0`
  • 최댓값: `21600`
| -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
  • 기본값: `0`
  • 최솟값: `0`
  • 최댓값: `10`
| -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
  • `KR1`: 한국(판교)
  • `KR2`: 한국(평촌)
  • `JP1`: 일본(도쿄)
| -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
  • 기본값: `true`
| -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
  • 예시: `00:00:00`
| -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
  • `HALF_AN_HOUR`: 30분
  • `ONE_HOUR`: 1시간
  • `ONE_HOUR_AND_HALF`: 1시간 30분
  • `TWO_HOURS`: 2시간
  • `TWO_HOURS_AND_HALF`: 2시간 30분
  • `THREE_HOURS`: 3시간
| +이 API는 요청 본문을 요구하지 않습니다. -#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| logFileName | URL | UUID | O | 로그 파일 이름 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|----------|----|------------------------------------------------------------------------------------------------| -| restore.restoreYmdt | Body | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD)
복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능하다. | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| content | Body | String | 로그 파일 내용 (최대 65533 bytes) |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "TIMESTAMP", - "restoreYmdt": "2023-07-10T15:44:44+09:00" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "content": "content-example" } ```

-#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------------|------|--------|----|--------------------| -| restore.backupId | Body | UUID | O | 복원에 사용할 백업의 식별자 | -| restore.binLog | Body | Object | O | 바이너리 로그 정보 객체 | -| restore.binLog.binLogFileName | Body | String | O | 복원에 사용할 바이너리 로그 이름 | -| restore.binLog.binLogPosition | Body | Number | O | 복원에 사용할 바이너리 로그 위치 | +--- -* 바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. +### DB 인스턴스 유지 관리 목록 보기 +```http +GET /v4.0/db-instances/{dbInstanceId}/maintenances +``` -
예시 -

+#### 필요 권한 -```json -{ - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BINLOG", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36", - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 1234567 - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } -} -``` +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.List | DB 인스턴스 유지 관리 목록 보기 | -

-
+#### 요청 -#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) +이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|------|------------------------------|-----------------| -| restore.backupId | Body | UUID | O(restoreType이 `BACKUP`인 경우) | 복원에 사용할 백업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| type | Query | String | X | | +| statuses | Query | String | X | | +| category | Query | String | X | | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 유지 관리 목록 갯수 | +| maintenances | Body | Array | 유지 관리 목록 | +| maintenances.maintenanceId | Body | UUID | 유지 관리 아이디 | +| maintenances.dbInstanceId | Body | UUID | DB 인스턴스 아이디 | +| maintenances.category | Body | Enum | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| maintenances.description | Body | String | 유지 관리 설명 | +| maintenances.type | Body | Enum | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| maintenances.payload | Body | Object | 유지 관리 타입에 따른 Payload | +| maintenances.required | Body | Boolean | 유지 관리 필수 여부 | +| maintenances.deadlineYmdt | Body | DateTime | 유지 관리 강제 적용 일시 | +| maintenances.status | Body | Enum | 유지 관리 상태
- PENDING: `대기`
- READY: `준비`
- RUNNING: `실행 중`
- COMPLETED: `완료`
- FAILED: `실패`
- EXCLUDED: `제외`
- DELETED: `삭제`
- UNKNOWN | +| maintenances.executionType | Body | Enum | 유지 관리 실행 타입
- SCHEDULED: `예약 실행 (유지 관리 기간 자동 실행)`
- MANUAL: `수동 실행 (즉시 실행)`
- FORCED: `강제 실행 (데드라인 초과 자동 실행)` | +| maintenances.addedYmdt | Body | DateTime | 유지 관리 스케줄 등록 일시 | +| maintenances.executionStartedYmdt | Body | DateTime | 유지 관리 시작 일시 | +| maintenances.executionCompletedYmdt | Body | DateTime | 유지 관리 종료 일시 |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BACKUP", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "totalCounts": 1, + "maintenances": [ + { + "maintenanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": { + }, + "required": false, + "deadlineYmdt": "2023-12-31T15:00:00+09:00", + "status": "PENDING", + "executionType": "SCHEDULED", + "addedYmdt": "2023-12-31T15:00:00+09:00", + "executionStartedYmdt": "2023-12-31T15:00:00+09:00", + "executionCompletedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - - --- -### 오브젝트 스토리지로부터 복원 +### DB 인스턴스 유지 관리 즉시 실행하기 ```http -POST /v4.0/db-instances/restore-from-obs +POST /v4.0/db-instances/{dbInstanceId}/maintenances/execute-now ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------------|-------------------------| -| RDSforMySQL:DbInstance.RestoreFromObs | DB 인스턴스 오브젝트 스토리지로부터 복원 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.Execute | DB 인스턴스 유지 관리 즉시 실행하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|----------------------------------------------------------------------------------------| -| restore | Body | Object | O | 복원 정보 객체 | -| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | -| restore.username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | -| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | -| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
  • 최솟값: `3306`
  • 최댓값: `43306`
| -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
  • 기본값: `false`
| -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
  • 기본값: `3`
  • 최솟값: `1`
  • 최댓값: `600`
| -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
  • 기본값: `false`
| -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
  • 기본값: `false`
| -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
  • 예시: `kr-pub-a`
| -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
  • 예시: `General SSD`
| -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
  • 최솟값: `20`
  • 최댓값: `2048`
| -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
  • 최솟값: `0`
  • 최댓값: `730`
| -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
  • 기본값: `1800`
  • 최솟값: `0`
  • 최댓값: `21600`
| -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
  • 기본값: `0`
  • 최솟값: `0`
  • 최댓값: `10`
| -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
  • `KR1`: 한국(판교)
  • `KR2`: 한국(평촌)
  • `JP1`: 일본(도쿄)
| -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
  • 기본값: `true`
| -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
  • 예시: `00:00:00`
| -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
  • `HALF_AN_HOUR`: 30분
  • `ONE_HOUR`: 1시간
  • `ONE_HOUR_AND_HALF`: 1시간 30분
  • `TWO_HOURS`: 2시간
  • `TWO_HOURS_AND_HALF`: 2시간 30분
  • `THREE_HOURS`: 3시간
| - - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| configId | Body | String | O | 설정 아이디 | +| category | Body | Enum | O | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| description | Body | String | X | 유지 관리 설명 | +| type | Body | Enum | O | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| payload | Body | String | O | 유지 관리 타입에 따른 Payload |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbVersion": "MYSQL_V8028", - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "tenantId":"tenant-id", - "username":"username", - "password":"password", - "targetContainer":"targetContainer", - "objectPath":"objectPath" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "configId": "configId-example", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": "payload-example" } ``` @@ -1711,37 +2613,10 @@ POST /v4.0/db-instances/restore-from-obs #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - - -### DB 인스턴스 삭제 보호 설정 변경하기 - -```http -PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection -``` - -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. -

예시

@@ -1751,7 +2626,8 @@ PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1760,178 +2636,269 @@ PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection --- -### 고가용성 수정하기 +### DB 인스턴스 유지 관리 예약하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/high-availability +POST /v4.0/db-instances/{dbInstanceId}/maintenances/schedule ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|-----------| -| RDSforMySQL:HighAvailability.Modify | 고가용성 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.Update | DB 인스턴스 유지 관리 예약하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|---------|----|------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| configId | Body | String | O | 설정 아이디 | +| category | Body | Enum | O | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| description | Body | String | X | 유지 관리 설명 | +| type | Body | Enum | O | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| payload | Body | String | O | 유지 관리 타입에 따른 Payload | + +

예시 +

+ +```json +{ + "configId": "configId-example", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": "payload-example" +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 고가용성 다시 시작하기 +### DB 인스턴스 유지 관리 삭제하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/resume +DELETE /v4.0/db-instances/{dbInstanceId}/maintenances/{maintenanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|--------------| -| RDSforMySQL:HighAvailability.Resume | 고가용성 다시 시작하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.Delete | DB 인스턴스 유지 관리 삭제하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| maintenanceId | URL | UUID | O | 유지 관리 아이디 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 고가용성 일시 중지하기 +### 네트워크 정보 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/pause +GET /v4.0/db-instances/{dbInstanceId}/network-info ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|--------------| -| RDSforMySQL:HighAvailability.Pause | 고가용성 일시 중지하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 네트워크 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| availabilityZone | Body | String | DB 인스턴스를 생성할 가용성 영역 | +| subnet | Body | Object | 서브넷 객체 | +| subnet.subnetId | Body | UUID | 서브넷의 식별자 | +| subnet.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnet.subnetCidr | Body | String | 서브넷의 CIDR | +| endPoints | Body | Array | 접속 정보 목록 | +| endPoints.domain | Body | String | 도메인 | +| endPoints.ipAddress | Body | String | IP 주소 | +| endPoints.endPointType | Body | String | 접속 정보 타입 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "availabilityZone": "kr-pub-a", + "subnet": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example" + }, + "endPoints": [ + { + "domain": "domain-example", + "ipAddress": "ipAddress-example", + "endPointType": "endPointType-example" + } + ] +} +``` + +

+
--- -### 고가용성 복구하기 +### 네트워크 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/repair +PUT /v4.0/db-instances/{dbInstanceId}/network-info ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|-----------| -| RDSforMySQL:HighAvailability.Repair | 고가용성 복구하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | 네트워크 정보 수정하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | + +
예시 +

+ +```json +{ + "usePublicAccess": false +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 고가용성 분리하기 +### DB 인스턴스 승격하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/split +POST /v4.0/db-instances/{dbInstanceId}/promote ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|-----------| -| RDSforMySQL:HighAvailability.Split | 고가용성 분리하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Promote | DB 인스턴스 승격하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 데이터 스토리지 정보 보기 +### DB 인스턴스 재구축하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/storage-info +POST /v4.0/db-instances/{dbInstanceId}/rebuild ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Rebuild | DB 인스턴스 재구축하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|---------|--------------------------------------------------------------------------------------| -| storageType | Body | Enum | 데이터 스토리지 타입 | -| storageSize | Body | Number | 데이터 스토리지 크기(GB) | -| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- `DETACHED`: 부착되지 않음
- `ATTACHED`: 부착됨
- `DELETED`: 삭제됨 | -| storageAutoscale | Body | Object | 데이터 스토리지 자동 확장 객체 | -| storageAutoscale.useStorageAutoscale | Body | Boolean | 스토리지 자동 확장 여부 | -| storageAutoscale.threshold | Body | Number | 자동 확장 조건(%) | -| storageAutoscale.maxStorageSize | Body | Number | 자동 확장 최대 크기(GB) | -| storageAutoscale.cooldownTime | Body | Number | 자동 확장 쿨다운 시간(분) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -1943,89 +2910,118 @@ GET /v4.0/db-instances/{dbInstanceId}/storage-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageType": "General SSD", - "storageSize": 20, - "storageStatus": "ATTACHED", - "storageAutoscale": { - "useStorageAutoscale": true, - "threshold": 80, - "maxStorageSize": 100, - "cooldownTime": 10 - } + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- --- -### 데이터 스토리지 정보 수정하기 +### DB 인스턴스 복제하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/storage-info +POST /v4.0/db-instances/{dbInstanceId}/replicate ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: 현재값
- 최댓값: `2048` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | - -#### 응답 +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Replicate | DB 인스턴스 복제하기 | -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +#### 공통 요청 ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | X | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부 | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | X | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | X | 데이터 스토리지 타입 | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | X | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -### 백업 정보 보기 +
예시 +

-```http -GET /v4.0/db-instances/{dbInstanceId}/backup-info +```json +{ + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, + "network": { + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "backup": { + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 0, + "replicationRegion": "KR4", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + } +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|---------|----------------| -| backupPeriod | Body | Number | 백업 보관 기간(일) | -| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | -| backupRetryCount | Body | Number | 백업 재시도 횟수 | -| replicationRegion | Body | Enum | 백업 복제 리전 | -| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | -| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2035,67 +3031,48 @@ GET /v4.0/db-instances/{dbInstanceId}/backup-info "header": { "resultCode": 0, "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "backupPeriod": 1, - "ftwrlWaitTimeout": 1800, - "backupRetryCount": 0, - "replicationRegion": null, - "useBackupLock": false, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- --- -### 백업 정보 수정하기 +### DB 인스턴스 재시작하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/backup-info +POST /v4.0/db-instances/{dbInstanceId}/restart ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Restart | DB 인스턴스 재시작하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------------------------|------|---------|----|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | -| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | -| replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄) | -| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` |
예시

```json { - "backupPeriod": 5, - "useBackupLock": true, - "backupSchedules": [ - { - "backupWndBgnTime": "01:00:00", - "backupWndDuration": "TWO_HOURS" - } - ] + "useOnlineFailover": false, + "executeBackup": false, + "waitReplicationDelay": false, + "useReadOnly": false } ``` @@ -2104,45 +3081,72 @@ PUT /v4.0/db-instances/{dbInstanceId}/backup-info #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 네트워크 정보 보기 +### DB 인스턴스 복원 정보 조회 ```http -GET /v4.0/db-instances/{dbInstanceId}/network-info +GET /v4.0/db-instances/{dbInstanceId}/restoration-info ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | DB 인스턴스 복원 정보 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------------------------------------------------------------------------------------------------------------------------------| -| availabilityZone | Body | Enum | DB 인스턴스를 생성할 가용성 영역 | -| subnet | Body | Object | 서브넷 객체 | -| subnet.subnetId | Body | UUID | 서브넷의 식별자 | -| subnet.subnetName | Body | UUID | 서브넷을 식별할 수 있는 이름 | -| subnet.subnetCidr | Body | UUID | 서브넷의 CIDR | -| endPoints | Body | Array | 접속 정보 목록 | -| endPoints.domain | Body | String | 도메인 | -| endPoints.ipAddress | Body | String | IP 주소 | -| endPoints.endPointType | Body | Enum | 접속 정보 타입
-`EXTERNAL`: 외부 접속 도메인
-`INTERNAL`: 내부 접속 도메인
-`PUBLIC`: (Deprecated) 외부 접속 도메인
-`PRIVATE`: (Deprecated) 내부 접속 도메인 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| oldestRestorableYmdt | Body | DateTime | 가장 오래된 복원 가능한 시각 | +| latestRestorableYmdt | Body | DateTime | 가장 최신의 복원 가능한 시각 | +| restorableBackups | Body | Array | 복원 가능한 백업 목록 | +| restorableBackups.backup | Body | Object | 백업 정보 객체 | +| restorableBackups.backup.backupId | Body | UUID | 백업의 식별자 | +| restorableBackups.backup.backupName | Body | String | 백업 이름 | +| restorableBackups.backup.backupStatus | Body | Enum | 백업 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| restorableBackups.backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| restorableBackups.backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | +| restorableBackups.backup.dbVersion | Body | Enum | DB 엔진 유형 | +| restorableBackups.backup.backupType | Body | Enum | 백업 유형
- AUTO
- MANUAL | +| restorableBackups.backup.backupSize | Body | Number | 백업 크기 | +| restorableBackups.backup.useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | +| restorableBackups.backup.failoverCount | Body | Number | 장애 조치 횟수 | +| restorableBackups.backup.binLogFileName | Body | String | 바이너리 로그 파일 이름 | +| restorableBackups.backup.binLogPosition | Body | Object | 바이너리 로그 파일 위치 | +| restorableBackups.backup.createdYmdt | Body | DateTime | 백업 생성 일시 | +| restorableBackups.backup.updatedYmdt | Body | DateTime | 백업 갱신 일시 | +| restorableBackups.restorableBinLogs | Body | Array | 해당 백업을 이용하여 복원 가능한 바이너리 로그 이름 목록 |
예시

@@ -2154,17 +3158,28 @@ GET /v4.0/db-instances/{dbInstanceId}/network-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "availabilityZone": "kr-pub-a", - "subnet": { - "subnetId": "bd453789-34ae-416c-9f78-05b9e43a46be", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/16" - }, - "endPoints": [ + "oldestRestorableYmdt": "2023-12-31T15:00:00+09:00", + "latestRestorableYmdt": "2023-12-31T15:00:00+09:00", + "restorableBackups": [ { - "domain": "ea548a78-d85f-43b4-8ddf-c88d999b9905.internal.kr1.mysql.rds.nhncloudservice.com", - "ipAddress": "192.168.0.2", - "endPointType": "INTERNAL" + "backup": { + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "dbVersion": "MYSQL_V8036", + "backupType": "AUTO", + "backupSize": 1, + "useBackupLock": false, + "failoverCount": 1, + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + }, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + }, + "restorableBinLogs": [] } ] } @@ -2175,67 +3190,32 @@ GET /v4.0/db-instances/{dbInstanceId}/network-info --- -### 네트워크 정보 수정하기 - -```http -PUT /v4.0/db-instances/{dbInstanceId}/network-info -``` - -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 사용자 목록 보기 +### 복원될 마지막 쿼리 조회 ```http -GET /v4.0/db-instances/{dbInstanceId}/db-users +GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|---------------------| -| RDSforMySQL:DbInstanceUser.List | DB 인스턴스 내 사용자 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 복원될 마지막 쿼리 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|-----------------------------------------------------------------------------------------------------------------------------| -| dbUsers | Body | Array | DB 사용자 목록 | -| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | -| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | -| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | -| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `UPDATING`: 수정 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbUsers.authenticationPlugin | Body | Enum | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| dbUsers.tlsOption | Body | Enum | TLS Option
- NONE
- SSL
- X509 | -| dbUsers.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbUsers.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| executedYmdt | Body | DateTime | 쿼리 수행 일시 | +| lastQuery | Body | String | 마지막 수행 쿼리 |

예시

@@ -2247,19 +3227,8 @@ GET /v4.0/db-instances/{dbInstanceId}/db-users "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbUsers": [ - { - "dbUserId": "4b3d530b-fd02-4d59-a620-83d019a67bbb", - "dbUserName": "db-user", - "host": "%", - "authorityType": "DDL", - "dbUserStatus": "STABLE", - "authenticationPlugin": "NATIVE", - "tlsOption": "NONE", - "createdYmdt": "2023-03-17T14:02:29+09:00", - "updatedYmdt": "2023-03-17T14:02:31+09:00" - } - ] + "executedYmdt": "2023-12-31T15:00:00+09:00", + "lastQuery": "lastQuery-example" } ``` @@ -2268,45 +3237,145 @@ GET /v4.0/db-instances/{dbInstanceId}/db-users --- -### DB 사용자 생성하기 +### DB 인스턴스 복원 ```http -POST /v4.0/db-instances/{dbInstanceId}/db-users +POST /v4.0/db-instances/{dbInstanceId}/restore ``` - #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceUser.Create | DB 인스턴스 내 사용자 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Restore | DB 인스턴스 복원 | -#### 요청 +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자. 미입력 시 원본 인스턴스의 사양이 적용됩니다. | +| dbPort | Body | Number | X | DB 포트 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | X | 스토리지 정보 객체. 미입력 시 원본 인스턴스의 스토리지 설정이 적용됩니다. | +| storage.storageType | Body | Enum | X | 스토리지 타입. 미입력 시 원본 인스턴스의 스토리지 타입이 적용됩니다. | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB). 미입력 시 원본 인스턴스의 스토리지 크기가 적용됩니다.
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| network | Body | Object | X | 네트워크 정보 객체. 미입력 시 원본 인스턴스의 네트워크 설정이 적용됩니다. | +| network.subnetId | Body | UUID | X | 서브넷의 식별자. 미입력 시 원본 인스턴스 값 사용 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역. 미입력 시 랜덤 선택 | +| backup | Body | Object | X | 백업 정보 객체. 미입력 시 원본 인스턴스의 백업 설정이 적용됩니다. | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일). 미입력 시 원본 인스턴스의 백업 보관 기간이 적용됩니다.
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록. 미입력 시 원본 인스턴스의 백업 스케쥴이 적용됩니다. | +| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.restoreType | Body | Enum | O | 복원 타입
- TIMESTAMP: `복원 가능한 시간 이내의 시간을 이용한 시점 복원`
- BINLOG: `복원 가능한 바이너리 로그 위치를 이용한 시점 복원`
- BACKUP: `기존에 생성한 백업을 이용한 스냅숏 복원` | +| restore.binLog.binLogFileName | Body | String | X | 복원에 사용할 바이너리 로그 이름 | +| restore.binLog.binLogPosition | Body | Object | X | 복원에 사용할 바이너리 로그 위치 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자. 미입력 시 원본 인스턴스의 파라미터 그룹이 적용됩니다. | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록. 미입력 시 원본 인스턴스의 보안 그룹이 적용됩니다. | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | + +#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.restoreYmdt | Body | DateTime | X | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | + +복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능합니다. + +#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 | +| restore.binLog | Body | Object | X | 복원에 사용할 바이너리 로그 정보 객체 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|-------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserName | Body | String | O | DB 사용자 계정 이름
- 최소 길이: `1`
- 최대 길이: `32` | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `16` | -| host | Body | String | O | DB 사용자 계정의 호스트명
- 예시: `1.1.1.%` | -| authorityType | Body | Enum | O | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | +바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. + +#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 설정할 수 있습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 |

예시

```json { - "dbUserName": "db-user", - "dbPassword": "password", - "host": "1.1.1.%", - "authorityType": "CRUD", - "authenticationPlugin": "NATIVE", - "tlsOption": "NONE" + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "useHighAvailability": false, + "pingInterval": 3, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "backup": { + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR4", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + }, + "restore": { + "restoreType": "TIMESTAMP", + "binLog": { + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + } + } + }, + "useDefaultNotification": false, + "useSlowQueryAnalysis": true, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDeletionProtection": false } ``` @@ -2315,117 +3384,151 @@ POST /v4.0/db-instances/{dbInstanceId}/db-users #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 사용자 수정하기 +### DB 인스턴스 시작하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +POST /v4.0/db-instances/{dbInstanceId}/start ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceUser.Modify | DB 인스턴스 내 사용자 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Start | DB 인스턴스 시작하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|-------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | -| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `16` | -| authorityType | Body | Enum | X | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 수정할 수 있습니다. -> `authenticationPlugin`의 값은 `dbPassword`와 동시에 수정을 해야 합니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "authorityType": "DDL" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### DB 사용자 삭제하기 +### DB 인스턴스 정지하기 ```http -DELETE /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +POST /v4.0/db-instances/{dbInstanceId}/stop ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceUser.Delete | DB 인스턴스 내 사용자 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Stop | DB 인스턴스 정지하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 스키마 목록 보기 +### 스토리지 정보 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/db-schemas +GET /v4.0/db-instances/{dbInstanceId}/storage-info ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|---------------------| -| RDSforMySQL:DbInstanceSchema.List | DB 인스턴스 내 스키마 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 스토리지 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|------------------------------------------------------------------------------------------------------| -| dbSchemas | Body | Array | DB 스키마 목록 | -| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | -| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | -| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbSchemas.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageType | Body | String | 데이터 스토리지 타입 | +| storageSize | Body | Number | 데이터 스토리지 크기(GB) | +| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- DELETED: `삭제됨`
- PENDING_DELETION: `삭제 유예됨`
- DELETION_RESERVED: `삭제 예약됨 (스냅샷 정리 대기)`
- DETACHED: `해제됨`
- ATTACHED: `할당됨` | +| storageAutoscale | Body | Object | 데이터 스토리지 자동 확장 객체 | +| storageAutoscale.useStorageAutoscale | Body | Boolean | 스토리지 자동 확장 여부 | +| storageAutoscale.threshold | Body | Number | 자동 확장 조건(%) | +| storageAutoscale.maxStorageSize | Body | Number | 자동 확장 최대 크기(GB) | +| storageAutoscale.cooldownTime | Body | Number | 자동 확장 쿨다운 시간(분) |
예시

@@ -2437,14 +3540,15 @@ GET /v4.0/db-instances/{dbInstanceId}/db-schemas "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSchemas": [ - { - "dbSchemaId": "7c9a94b8-86c1-435d-8af2-82a5e9d53fd4", - "dbSchemaName": "schema", - "dbSchemaStatus": "STABLE", - "createdYmdt": "2023-03-20T13:37:45+09:00" - } - ] + "storageType": "General SSD", + "storageSize": 1, + "storageStatus": "DELETED", + "storageAutoscale": { + "useStorageAutoscale": false, + "threshold": 1, + "maxStorageSize": 1, + "cooldownTime": 1 + } } ``` @@ -2453,93 +3557,119 @@ GET /v4.0/db-instances/{dbInstanceId}/db-schemas --- -### DB 스키마 생성하기 +### 스토리지 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/db-schemas +PUT /v4.0/db-instances/{dbInstanceId}/storage-info ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceSchema.Create | DB 인스턴스 내 스키마 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | 스토리지 정보 수정하기 | -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|--------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaName | Body | String | O | DB 스키마 이름 | +#### 공통 요청 -#### 응답 +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최댓값: `2048` | +| storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +#### 스토리지 자동 확장 사용 시 ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -### DB 스키마 삭제하기 +

예시 +

-```http -DELETE /v4.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} +```json +{ + "storageSize": 1, + "storageAutoscale": { + "useStorageAutoscale": false + } +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceSchema.Delete | DB 인스턴스 내 스키마 삭제하기 | +

+
-#### 요청 +#### 응답 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaId | URL | UUID | O | DB 스키마의 식별자 | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 로그 파일 목록 보기 +## 백업 + +### 백업 상태 + +| 상태 | 설명 | +|--------------|--------------| +| `BACKING_UP` | 백업 중인 경우 | +| `COMPLETED` | 백업이 완료된 경우 | +| `DELETING` | 백업이 삭제 중인 경우 | +| `DELETED` | 백업이 삭제된 경우 | +| `ERROR` | 오류가 발생한 경우 | + +### 백업 목록 조회 ```http -GET /v4.0/db-instances/{dbInstanceId}/log-files +GET /v4.0/backups ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|-----------------------| -| RDSforMySQL:DbInstanceLog.List | DB 인스턴스 내 로그 파일 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.List | 백업 목록 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|-------|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileTypes | Query | Array | X | 로그 파일 타입 종류 목록
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| logFiles | Body | Array | 로그 파일 목록 | -| logFiles.logFileName | Body | String | 로그 파일 이름 | -| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | -| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | -| logFiles.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 백업 목록 수 | +| backups | Body | Array | 백업 목록 | +| backups.backupId | Body | UUID | 백업의 식별자 | +| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | +| backups.backupStatus | Body | Enum | 백업의 현재 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| backups.dbVersion | Body | Enum | DB 엔진 유형 | +| backups.utilVersion | Body | String | 유틸리티 버전 | +| backups.backupType | Body | Enum | 백업 유형
- AUTO
- MANUAL | +| backups.backupSize | Body | Number | 백업의 크기(Byte) | +| backups.createdYmdt | Body | DateTime | 생성 일시 | +| backups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -2551,12 +3681,19 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files "resultMessage": "SUCCESS", "isSuccessful": true }, - "logFiles": [ + "totalCounts": 1, + "backups": [ { - "logFileName": "xtra_full.log-20230317", - "logFileType": "BACKUP", - "logFileSize": 4096, - "createdYmdt": "2023-03-17T14:02:29+09:00" + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "utilVersion": "utilVersion-example", + "backupType": "AUTO", + "backupSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -2567,107 +3704,92 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files --- -### 로그 파일 내보내기 +### 백업 생성하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/log-files/export +POST /v4.0/backups ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|----------------------| -| RDSforMySQL:DbInstanceLog.Export | DB 인스턴스 내 로그 파일 내보내기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.Create | 백업 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|--------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileNames | Body | Array | O | 로그 파일 이름 목록
- 최소 크기: `1` | -| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupName | Body | String | O | 백업을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| baseBackupId | Body | UUID | X | 원본 백업의 식별자 | +| dbInstanceId | Body | UUID | X | DB 인스턴스의 식별자 | +| backupMethodType | Body | Enum | O | 백업 방식 타입
- FULL: `전체 백업`
- INCREMENTAL: `증분 백업`
- SNAPSHOT: `스냅숏 백업` | + +

예시 +

+ +```json +{ + "backupName": "backupName", + "baseBackupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "backupMethodType": "FULL" +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "logFileNames": ["xtra_full.log-20230317"], - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "logs/backup" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -## 백업 - -### 백업 상태 - -| 상태 | 설명 | -|--------------|--------------| -| `BACKING_UP` | 백업 중인 경우 | -| `COMPLETED` | 백업이 완료된 경우 | -| `DELETING` | 백업이 삭제 중인 경우 | -| `DELETED` | 백업이 삭제된 경우 | -| `ERROR` | 오류가 발생한 경우 | - -### 백업 목록 조회 +### 백업 삭제하기 ```http -GET /v4.0/backups +DELETE /v4.0/backups/{backupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| -| RDSforMySQL:Backup.List | 백업 목록 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.Delete | 백업 삭제하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|--------|----|----------------------------------------------------------| -| page | Query | Number | O | 조회할 목록의 페이지
- 최솟값: `1` | -| size | Query | Number | O | 조회할 목록의 페이지 크기
- 최솟값: `1`
- 최댓값: `100` | -| backupType | Query | Enum | X | 백업 유형
- `AUTO`: 자동
- `MANUAL`: 수동
- 기본값: 전체 | -| dbInstanceId | Query | UUID | X | 원본 DB 인스턴스의 식별자 | -| dbVersion | Query | Enum | X | DB 엔진 유형 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|-----------------------------------| -| totalCounts | Body | Number | 전체 백업 목록 수 | -| backups | Body | Array | 백업 목록 | -| backups.backupId | Body | UUID | 백업의 식별자 | -| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | -| backups.backupStatus | Body | Enum | 백업의 현재 상태 | -| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| backups.dbVersion | Body | Enum | DB 엔진 유형 | -| backups.utilVersion | Body | String | 백업에 사용된 xtrabackup 유틸리티 버전 | -| backups.backupType | Body | Enum | 백업 유형 | -| backups.backupSize | Body | Number | 백업의 크기(Byte) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2679,21 +3801,7 @@ GET /v4.0/backups "resultMessage": "SUCCESS", "isSuccessful": true }, - "totalCounts": 1, - "backups": [ - { - "backupId": "0017f136-3e01-4530-94aa-20661afe6632", - "backupName": "backup", - "backupStatus": "COMPLETED", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd", - "dbVersion": "MYSQL_V8028", - "utilVersion": "8.0.28", - "backupType": "AUTO", - "backupSize": 4996786, - "createdYmdt": "2023-02-21T00:35:00+09:00", - "updatedYmdt": "2023-02-22T00:35:32+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2702,74 +3810,85 @@ GET /v4.0/backups --- -### 백업 생성하기 +### 백업 단건 조회 ```http -POST /v4.0/backups +GET /v4.0/backups/{backupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|---------| -| RDSforMySQL:Backup.Create | 백업 생성하기 | - -#### 공통 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|--------|----|------------------------------------------------------------| -| backupName | Body | String | O | 백업을 식별할 수 있는 이름 | -| backupMethodType | Body | Enum | O | 백업 방식 타입 종류
- `FULL`: 전체 백업
- `INCREMENTAL`: 증분 백업 | - -#### 전체 백업(backupMethodType이 `FULL`인 경우) - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|------|----|--------------| -| dbInstanceId | Body | UUID | O | DB 인스턴스의 식별자 | - - -

예시 -

+| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.Get | 백업 단건 조회 | -```json -{ - "backupName": "example-backup-name", - "backupMethodType": "FULL", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd" -} -``` +#### 요청 -

-
+이 API는 요청 본문을 요구하지 않습니다. -#### 증분 백업(backupMethodType이 `INCREMENTAL`인 경우) +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|------|----|------------| -| baseBackupId | Body | UUID | O | 기준 백업의 식별자 | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| backup | Body | Object | 백업 상세 정보 | +| backup.backupId | Body | UUID | 백업의 식별자 | +| backup.regionCode | Body | Enum | 리전 코드
- KR4: `한국(대구)` | +| backup.backupName | Body | String | 백업을 식별할 수 있는 이름 | +| backup.backupStatus | Body | Enum | 백업의 현재 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | +| backup.dbVersion | Body | Enum | DB 엔진 버전 | +| backup.utilVersion | Body | String | 유틸리티 버전 | +| backup.backupType | Body | Enum | 백업 유형 (AUTO, MANUAL)
- AUTO
- MANUAL | +| backup.backupMethodType | Body | Enum | 백업 방식 (FULL, SNAPSHOT, INCREMENTAL)
- FULL
- INCREMENTAL
- SNAPSHOT | +| backup.backupFileType | Body | Enum | 백업 파일 유형
- XBSTREAM
- TAR_ZSTD
- TAR_LZ4
- TAR_GZIP
- SNAPSHOT | +| backup.backupSize | Body | Number | 백업의 크기(Byte) | +| backup.isReplicable | Body | Boolean | 복제 가능 여부 | +| backup.binLogFileName | Body | String | 바이너리 로그 파일명 | +| backup.binLogPosition | Body | Object | 바이너리 로그 위치 | +| backup.createdYmdt | Body | DateTime | 생성 일시 | +| backup.updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "backupName": "example-backup-name", - "backupMethodType": "INCREMENTAL", - "baseBackupId": "3ae7914f-9b42-4729-b125-87417b72cf36" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "backup": { + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "regionCode": "KR4", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "dbVersion": "MYSQL_V8036", + "utilVersion": "utilVersion-example", + "backupType": "AUTO", + "backupMethodType": "FULL", + "backupFileType": "XBSTREAM", + "backupSize": 1, + "isReplicable": false, + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + }, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } } ```

- -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- ### 백업 내보내기 @@ -2780,31 +3899,31 @@ POST /v4.0/backups/{backupId}/export #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|---------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Backup.Export | 백업 내보내기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|-----------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 계정 혹은 IAM 회원 ID | +| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 |
예시

```json { - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "backups/backup_file" + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" } ``` @@ -2813,12 +3932,26 @@ POST /v4.0/backups/{backupId}/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | -> [주의] -> 수동 백업의 경우 백업이 수행된 DB 인스턴스가 존재하지 않으면, 백업을 오브젝트 스토리지로 내보낼 수 없습니다. +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -2830,73 +3963,98 @@ POST /v4.0/backups/{backupId}/restore #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Backup.Restore | 백업 복원하기 | -#### 요청 +#### 공통 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------------------------------|------|---------|----|---------------------------------------------------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Integer | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 ||network|Body|Object|O|네트워크 정보 객체| -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교)
- `KR2`: 한국(평촌)
- `JP1`: 일본(도쿄) | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| dbPort | Body | Number | X | DB 포트. 미지정 시 원본 인스턴스 값 사용
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| network | Body | Object | X | 네트워크 정보 객체. 미지정 시 원본 인스턴스 값 사용 | +| network.subnetId | Body | UUID | X | 서브넷의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역. 미지정 시 랜덤 선택 | +| storage | Body | Object | X | 스토리지 정보 객체. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageType | Body | Enum | X | 스토리지 타입. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | X | 백업 정보 객체. 미지정 시 원본 인스턴스 백업 설정 사용 | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수. 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR4: `한국(대구)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부. 미지정 시 원본 인스턴스 값 사용 | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록. 미지정 시 원본 인스턴스 값 사용 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` |
예시

```json - { - "dbInstanceName": "db-instance-restore", - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbPort": 10000, - "parameterGroupId": "132d383c-38e3-468a-a826-5e9a8fff15d0", + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, "availabilityZone": "kr-pub-a" }, "storage": { "storageType": "General SSD", - "storageSize": 20 + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 0, + "replicationRegion": "KR4", + "useBackupLock": false, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", + "backupWndBgnTime": "backupWndBgnTime-example", "backupWndDuration": "HALF_AN_HOUR" } ] @@ -2909,37 +4067,26 @@ POST /v4.0/backups/{backupId}/restore #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### 백업 삭제하기 +

예시 +

-```http -DELETE /v4.0/backups/{backupId} +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|-------------------------------------------|---------| -| RDSforMySQL:Backup.Delete | 백업 삭제하기 | - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------|-----|------|----|---------| -| backupId | URL | UUID | O | 백업의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -2962,8 +4109,8 @@ GET /v4.0/db-security-groups #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|----------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroup.List | DB 보안 그룹 목록 보기 | #### 요청 @@ -2972,15 +4119,16 @@ GET /v4.0/db-security-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-----------------------------------| -| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | -| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 DB 보안 그룹 목록 수 | +| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | +| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -2992,14 +4140,15 @@ GET /v4.0/db-security-groups "resultMessage": "SUCCESS", "isSuccessful": true }, + "totalCounts": 1, "dbSecurityGroups": [ { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", "progressStatus": "NONE", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2022-02-19T19:18:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3010,48 +4159,65 @@ GET /v4.0/db-security-groups --- -### DB 보안 그룹 상세 보기 +### DB 보안 그룹 생성하기 ```http -GET /v4.0/db-security-groups/{dbSecurityGroupId} +POST /v4.0/db-security-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|----------------| -| RDSforMySQL:DbSecurityGroup.Get | DB 보안 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroup.Create | DB 보안 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` | +| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | +| rules.direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| rules.etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| rules.port | Body | Object | O | 포트 객체 | +| rules.port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| rules.cidr | Body | String | O | CIDR | +| rules.description | Body | String | X | 보안 그룹 규칙에 대한 추가 정보 | + +

예시 +

+ +```json +{ + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example", + "rules": [ + { + "direction": "INGRESS", + "etherType": "IPV4", + "port": { + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 + }, + "cidr": "cidr-example", + "description": "description-example" + } + ] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|----------|--------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| rules | Body | Array | DB 보안 그룹 규칙 목록 | -| rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | -| rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.port | Body | Object | 포트 객체 | -| rules.port.portType | Body | Enum | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다.
- `PORT`: 지정된 포트값으로 설정됩니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | 최소 포트 범위 | -| rules.port.maxPort | Body | Number | 최대 포트 범위 | -| rules.cidr | Body | String | 허용할 트래픽의 원격 소스 | -| rules.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| rules.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 |
예시

@@ -3063,30 +4229,7 @@ GET /v4.0/db-security-groups/{dbSecurityGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSecurityGroup": { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", - "progressStatus": "NONE", - "rules": [ - { - "ruleId": "17c88ef6-95f1-4678-84f9-fee1b22e250d", - "description": "description", - "direction": "INGRESS", - "etherType": "IPV4", - "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 - }, - "cidr": "0.0.0.0/0", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } - ], - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3095,68 +4238,113 @@ GET /v4.0/db-security-groups/{dbSecurityGroupId} --- -### DB 보안 그룹 생성하기 +### DB 보안 그룹 삭제하기 ```http -POST /v4.0/db-security-groups +DELETE /v4.0/db-security-groups/{dbSecurityGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| -| RDSforMySQL:DbSecurityGroup.Create | DB 보안 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroup.Delete | DB 보안 그룹 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### DB 보안 그룹 상세 보기 + +```http +GET /v4.0/db-security-groups/{dbSecurityGroupId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroup.Get | DB 보안 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | -| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | -| rules.description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | -| rules.port | Body | Object | O | 포트 객체 | -| rules.port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| rules | Body | Array | DB 보안 그룹 규칙 목록 | +| rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | +| rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | +| rules.direction | Body | Enum | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| rules.etherType | Body | Enum | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| rules.port | Body | Object | 포트 객체 | +| rules.port.portType | Body | Enum | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| rules.port.minPort | Body | Number | 최소 포트 범위 | +| rules.port.maxPort | Body | Number | 최대 포트 범위 | +| rules.cidr | Body | String | CIDR | +| rules.createdYmdt | Body | DateTime | 생성 일시 | +| rules.updatedYmdt | Body | DateTime | 수정 일시 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

```json { - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", + "progressStatus": "NONE", "rules": [ { + "ruleId": "550e8400-e29b-41d4-a716-446655440000", + "description": "description-example", "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 + "portType": "ALL", + "minPort": 1, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } - ] + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|------|---------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | - --- ### DB 보안 그룹 수정하기 @@ -3167,25 +4355,25 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId} #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroup.Modify | DB 보안 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|-----------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description" + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example" } ``` @@ -3196,48 +4384,34 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- - --- -### DB 보안 그룹 삭제하기 +### DB 보안 그룹 규칙 삭제하기 ```http -DELETE /v4.0/db-security-groups/{dbSecurityGroupId} +DELETE /v4.0/db-security-groups/{dbSecurityGroupId}/rules ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| -| RDSforMySQL:DbSecurityGroup.Delete | DB 보안 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroupRule.Delete | DB 보안 그룹 규칙 삭제하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleIds | Query | String | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -3248,7 +4422,8 @@ DELETE /v4.0/db-security-groups/{dbSecurityGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3265,26 +4440,23 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroupRule.Create | DB 보안 그룹 규칙 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |

예시

@@ -3294,11 +4466,12 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "PORT", - "minPort": 10000, - "maxPort": 10000 + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -3307,9 +4480,26 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -3321,27 +4511,24 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroupRule.Modify | DB 보안 그룹 규칙 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleId | URL | UUID | O | DB 보안 그룹 규칙의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값을 필요로 하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |
예시

@@ -3351,49 +4538,40 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "DB_PORT" + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ```

-
- -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- - -### DB 보안 그룹 규칙 삭제하기 - -```http -DELETE /v4.0/db-security-groups/{dbSecurityGroupId}/rules -``` - -#### 필요 권한 - -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| -| RDSforMySQL:DbSecurityGroupRule.Create | DB 보안 그룹 규칙 삭제하기 | +
-#### 요청 +#### 응답 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|-------|----|---------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleIds | Query | Array | O | DB 보안 그룹 규칙의 식별자 목록 | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -3407,30 +4585,28 @@ GET /v4.0/parameter-groups #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:ParameterGroup.List | 파라미터 그룹 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------|-------|------|----|----------| -| dbVersion | Query | Enum | X | DB 엔진 유형 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-------------------------------------------------------------------| -| parameterGroups | Body | Array | 파라미터 그룹 목록 | -| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameterGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 파라미터 그룹 수 | +| parameterGroups | Body | Array | 파라미터 그룹 목록 | +| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroups.parameterGroupType | Body | Enum | 파라미터 그룹 유형
- USER
- ADMIN
- DEFAULT
- CLUSTER_USER | +| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameterGroups.createdYmdt | Body | DateTime | 생성 일시 | +| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3442,15 +4618,17 @@ GET /v4.0/parameter-groups "resultMessage": "SUCCESS", "isSuccessful": true }, + "totalCounts": 1, "parameterGroups": [ { - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "parameterGroupType": "USER", "parameterGroupStatus": "STABLE", - "createdYmdt": "2023-02-31T15:28:17+09:00", - "updatedYmdt": "2023-02-31T15:28:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3459,50 +4637,47 @@ GET /v4.0/parameter-groups

- --- -### 파라미터 그룹 상세 보기 +### 파라미터 그룹 생성하기 ```http -GET /v4.0/parameter-groups/{parameterGroupId} +POST /v4.0/parameter-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMySQL:ParameterGroup.Get | 파라미터 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Create | 파라미터 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` | +| dbVersion | Body | Enum | O | DB 엔진 유형 | + +
예시 +

-| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +```json +{ + "parameterGroupName": "parameterGroupName", + "description": "description-example", + "dbVersion": "MYSQL_V8036" +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|--------------------------------------------------------------------------------------------------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameters | Body | Array | 파라미터 목록 | -| parameters.parameterId | Body | UUID | 파라미터 식별자 | -| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- `CLIENT`: client
- `MYSQL`: mysql
- `MYSQLD`: mysqld | -| parameters.parameterName | Body | String | 파라미터 이름 | -| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | -| parameters.value | Body | String | 현재 설정된 값 | -| parameters.defaultValue | Body | String | 기본값 | -| parameters.allowedValue | Body | String | 허용된 값 | -| parameters.updateType | Body | Enum | 수정 타입
- `VARIABLE`: 언제든 수정 가능
- `CONSTANT`: 수정 불가능
- `INIT_VARIABLE`: DB 인스턴스 생성 시에만 수정 가능 | -| parameters.applyType | Body | Enum | 적용 타입
- `SESSION`: 세션 적용
- `FILE`: 설정 파일 적용(재시작 필요)
- `BOTH`: 전체(재시작 필요) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |
예시

@@ -3514,103 +4689,148 @@ GET /v4.0/parameter-groups/{parameterGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", - "parameterGroupStatus": "STABLE", - "parameters": [ - { - "parameterId": "fa040b5e-f29f-46de-8f0d-bba4cb82887a", - "parameterFileGroup": "client", - "parameterName": "socket", - "fileParameterName": "socket", - "value": "/home/tcrds/db/mysql/tmp/mysql.sock", - "defaultValue": "/home/tcrds/db/mysql/tmp/mysql.sock", - "allowedValue": "", - "updateType": "CONSTANT", - "applyType": "BOTH" - } - ], - "createdYmdt": "2023-03-13T11:02:28+09:00", - "updatedYmdt": "2023-03-13T11:02:28+09:00" + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ```

+--- + +### 파라미터 그룹 삭제하기 + +```http +DELETE /v4.0/parameter-groups/{parameterGroupId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Delete | 파라미터 그룹 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 생성하기 +### 파라미터 그룹 상세 보기 ```http -POST /v4.0/parameter-groups +GET /v4.0/parameter-groups/{parameterGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Create | 파라미터 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Get | 파라미터 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameters | Body | Array | 파라미터 목록 | +| parameters.parameterId | Body | UUID | 파라미터의 식별자 | +| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- CLIENT
- MYSQL
- MYSQLD | +| parameters.parameterName | Body | String | 파라미터 이름 | +| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | +| parameters.value | Body | String | 현재 설정된 값 | +| parameters.defaultValue | Body | String | 기본값 | +| parameters.allowedValue | Body | String | 허용된 값 | +| parameters.updateType | Body | Enum | 수정 타입
- VARIABLE
- CONSTANT
- INIT_VARIABLE | +| parameters.applyType | Body | Enum | 적용 타입
- BOTH
- SESSION
- FILE | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "parameterGroupName": "parameter-group", - "dbVersion": "MYSQL_V8028" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "parameterGroupStatus": "STABLE", + "parameters": [ + { + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "parameterFileGroup": "CLIENT", + "parameterName": "parameterName-example", + "fileParameterName": "fileParameterName-example", + "value": "value-example", + "defaultValue": "defaultValue-example", + "allowedValue": "allowedValue-example", + "updateType": "VARIABLE", + "applyType": "BOTH" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | - --- -### 파라미터 그룹 복사하기 +### 파라미터 그룹 수정하기 ```http -POST /v4.0/parameter-groups/{parameterGroupId}/copy +PUT /v4.0/parameter-groups/{parameterGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Copy | 파라미터 그룹 복사하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Modify | 파라미터 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "parameterGroupName": "parameter-group-copy", - "description": "copy" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -3619,38 +4839,37 @@ POST /v4.0/parameter-groups/{parameterGroupId}/copy #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 수정하기 +### 파라미터 그룹 복사하기 ```http -PUT /v4.0/parameter-groups/{parameterGroupId} +POST /v4.0/parameter-groups/{parameterGroupId}/copy ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Modify | 파라미터 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Copy | 파라미터 그룹 복사하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |

예시

```json { - "parameterGroupName": "parameter-group" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -3659,7 +4878,9 @@ PUT /v4.0/parameter-groups/{parameterGroupId} #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |

예시

@@ -3670,7 +4891,8 @@ PUT /v4.0/parameter-groups/{parameterGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3687,18 +4909,18 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Modify | 파라미터 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Modify | 파라미터 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------------|------|--------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | -| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | -| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | +| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | +| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 |

예시

@@ -3707,8 +4929,8 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters { "modifiedParameters": [ { - "parameterId": "3abac558-7274-44e1-9f4a-f100f53f67ba", - "value": "0" + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "value": "value-example" } ] } @@ -3721,22 +4943,6 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- ### 파라미터 그룹 재설정하기 @@ -3747,61 +4953,52 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/reset #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:ParameterGroup.Reset | 파라미터 그룹 재설정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | #### 응답 이 API는 응답 본문을 반환하지 않습니다. -
예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- -### 파라미터 그룹 삭제하기 +## 사용자 그룹 + +### 사용자 그룹 목록 보기 ```http -DELETE /v4.0/parameter-groups/{parameterGroupId} +GET /v4.0/user-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Delete | 파라미터 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.List | 사용자 그룹 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | - #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 사용자 그룹 목록 수 | +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroups.createdYmdt | Body | DateTime | 생성 일시 | +| userGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3812,7 +5009,16 @@ DELETE /v4.0/parameter-groups/{parameterGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "totalCounts": 1, + "userGroups": [ + { + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -3821,33 +5027,45 @@ DELETE /v4.0/parameter-groups/{parameterGroupId} --- -## 사용자 그룹 - -### 사용자 그룹 목록 보기 +### 사용자 그룹 생성하기 ```http -GET /v4.0/user-groups +POST /v4.0/user-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|--------------| -| RDSforMySQL:UserGroup.List | 사용자 그룹 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.Create | 사용자 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록 | +| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` | + +

예시 +

+ +```json +{ + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAll": false +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|-----------------------------------| -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| userGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 |
예시

@@ -3859,14 +5077,7 @@ GET /v4.0/user-groups "resultMessage": "SUCCESS", "isSuccessful": true }, - "userGroups": [ - { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" - } - ] + "userGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3875,6 +5086,32 @@ GET /v4.0/user-groups --- +### 사용자 그룹 삭제하기 + +```http +DELETE /v4.0/user-groups/{userGroupId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.Delete | 사용자 그룹 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + ### 사용자 그룹 상세 보기 ```http @@ -3883,29 +5120,29 @@ GET /v4.0/user-groups/{userGroupId} #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:UserGroup.Get | 사용자 그룹 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|----------|-----------------------------------------------------------------------------------------------------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
`ENTIRE`: 프로젝트 멤버 전체를 포함하는 사용자 그룹
`INDIVIDUAL_MEMBER`: 특정 프로젝트 멤버를 포함하는 사용자 그룹 | -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
- ENTIRE
- INDIVIDUAL_MEMBER | +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -3917,16 +5154,16 @@ GET /v4.0/user-groups/{userGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "userGroupTypeCode": "INDIVIDUAL_MEMBER", + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "userGroupTypeCode": "ENTIRE", "members": [ { - "memberId": "1321e759-2ef3-4b85-9921-b13e918b24b5" + "memberId": "550e8400-e29b-41d4-a716-446655440000" } ], - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -3935,42 +5172,35 @@ GET /v4.0/user-groups/{userGroupId} --- -### 사용자 그룹 생성하기 +### 사용자 그룹 수정하기 ```http -POST /v4.0/user-groups +PUT /v4.0/user-groups/{userGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMySQL:UserGroup.Create | 사용자 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.Modify | 사용자 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|-----------------------------------------------------------| -| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록
`selectAll`이 true인 경우 해당 필드 값은 무시됨 | -| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 유무
true인 경우 해당 그룹은 전체 멤버에 대해 설정됨 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | +| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` |

예시

```json { - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5" - ] -} -``` - -```json -{ - "userGroupName": "dev-team", - "selectAll": true + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAll": false } ``` @@ -3979,52 +5209,40 @@ POST /v4.0/user-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------|------|------|-------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 사용자 그룹 수정하기 +## 알림 그룹 + +### 알림 그룹 목록 보기 ```http -PUT /v4.0/user-groups/{userGroupId} +GET /v4.0/notification-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMySQL:UserGroup.Modify | 사용자 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.List | 알림 그룹 목록 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|----------------------------------------------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | -| userGroupName | Body | String | X | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | -| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 유무
true인 경우 해당 그룹은 전체 멤버에 대해 설정됨 | - -

예시 -

- -```json -{ - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5", - "f9064b09-2b15-442e-a4b0-3a5a2754555e" - ] -} -``` - -

-
+이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroups | Body | Array | 알림 그룹 목록 | +| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | +| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | +| notificationGroups.createdYmdt | Body | DateTime | 생성 일시 | +| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4035,7 +5253,18 @@ PUT /v4.0/user-groups/{userGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "notificationGroups": [ + { + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, + "notifySms": false, + "isEnabled": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -4044,27 +5273,51 @@ PUT /v4.0/user-groups/{userGroupId} --- -### 사용자 그룹 삭제하기 +### 알림 그룹 생성하기 ```http -DELETE /v4.0/user-groups/{userGroupId} +POST /v4.0/notification-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMySQL:UserGroup.Delete | 사용자 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.Create | 알림 그룹 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | +| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | + +

예시 +

+ +```json +{ + "notificationGroupName": "notificationGroupName", + "notifyEmail": true, + "notifySms": true, + "isEnabled": true, + "dbInstanceIds": [], + "userGroupIds": [] +} +``` + +

+
#### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 |
예시

@@ -4075,7 +5328,8 @@ DELETE /v4.0/user-groups/{userGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4084,63 +5338,29 @@ DELETE /v4.0/user-groups/{userGroupId} --- -## 알림 그룹 - -### 알림 그룹 목록 보기 +### 알림 그룹 삭제하기 ```http -GET /v4.0/notification-groups +DELETE /v4.0/notification-groups/{notificationGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|-------------| -| RDSforMySQL:NotificationGroup.List | 알림 그룹 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.Delete | 알림 그룹 삭제하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------------|------|----------|-----------------------------------| -| notificationGroups | Body | Array | 알림 그룹 목록 | -| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | -| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | -| notificationGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - -

예시 -

+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "notificationGroups": [ - { - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, - "notifySms": false, - "isEnabled": true, - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" - } - ] -} -``` +#### 응답 -

-
+이 API는 응답 본문을 반환하지 않습니다. --- @@ -4152,35 +5372,35 @@ GET /v4.0/notification-groups/{notificationGroupId} #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:NotificationGroup.Get | 알림 그룹 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------------|------|----------|-----------------------------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notifySms | Body | Boolean | SMS 알림 여부 | -| isEnabled | Body | Boolean | 활성화 여부 | -| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notifySms | Body | Boolean | SMS 알림 여부 | +| isEnabled | Body | Boolean | 활성화 여부 | +| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4192,25 +5412,25 @@ GET /v4.0/notification-groups/{notificationGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, "notifySms": false, - "isEnabled": true, + "isEnabled": false, "dbInstances": [ { - "dbInstanceId": "ed5cb985-526f-4c54-9ae0-40288593de65", - "dbInstanceName": "database" + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example" } ], "userGroups": [ { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team" + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example" } ], - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -4219,43 +5439,41 @@ GET /v4.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 생성하기 +### 알림 그룹 수정하기 ```http -POST /v4.0/notification-groups +PUT /v4.0/notification-groups/{notificationGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMySQL:NotificationGroup.Create | 알림 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.Modify | 알림 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------------| -| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | -| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | -| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | -| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | +| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `false` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `false` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `false` | +| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 |

예시

```json { - "notificationGroupName": "dev-team-noti", + "notificationGroupName": "notificationGroupName-example", "notifyEmail": false, - "isEnable": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65" - ], - "userGroupIds": [ - "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0" - ] + "notifySms": false, + "isEnabled": false, + "dbInstanceIds": [], + "userGroupIds": [] } ``` @@ -4264,45 +5482,73 @@ POST /v4.0/notification-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|------|------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 알림 그룹 수정하기 +## 모니터링 + +### 통계 정보 조회 ```http -PUT /v4.0/notification-groups/{notificationGroupId} +GET /v4.0/metric-statistics ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMySQL:NotificationGroup.Modify | 알림 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Metric.List | 통계 정보 조회 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### Metric 목록 보기 + +```http +GET /v4.0/metrics +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Metric.List | Metric 목록 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부 | -| notifySms | Body | Boolean | X | SMS 알림 여부 | -| isEnabled | Body | Boolean | X | 활성화 여부 | -| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +이 API는 요청 본문을 요구하지 않습니다. + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| metrics | Body | Array | Metric 목록 | +| metrics.measureName | Body | String | 조회 지표 유형 | +| metrics.unit | Body | String | 측정값 단위 |

예시

```json { - "notifyEmail": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65", - "d51b7da0-682f-47ff-b588-b739f6adc740" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "metrics": [ + { + "measureName": "measureName-example", + "unit": "unit-example" + } ] } ``` @@ -4310,9 +5556,46 @@ PUT /v4.0/notification-groups/{notificationGroupId}

+--- + +## 이벤트 + +### 이벤트 카테고리 + +이벤트는 카테고리로 분류할 수 있으며 아래와 같습니다. + +| 이벤트 카테고리 | 설명 | +|-------------|---------| +| ALL | 전체 | +| BACKUP | 백업 | +| DB_INSTANCE | DB 인스턴스 | +| JOB | 작업 | +| TENANT | 테넌트 | +| MONITORING | 모니터링 | + +### 구독 가능한 이벤트 코드 목록 보기 + +```http +GET /v4.0/event-codes +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Event.List | 구독 가능한 이벤트 코드 목록 보기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventCodes | Body | Array | 이벤트 코드 목록 | +| eventCodes.eventCode | Body | Enum | 이벤트 코드 | +| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT |
예시

@@ -4323,7 +5606,13 @@ PUT /v4.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "eventCodes": [ + { + "eventCode": "ENUM_VALUE", + "eventCategoryType": "ALL" + } + ] } ``` @@ -4332,29 +5621,36 @@ PUT /v4.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 삭제하기 +### 이벤트 목록 조회 ```http -DELETE /v4.0/notification-groups/{notificationGroupId} +GET /v4.0/events ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMySQL:NotificationGroup.Delete | 알림 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Event.List | 이벤트 목록 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | - #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 목록 수 | +| events | Body | Array | 이벤트 목록 | +| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | +| events.sourceId | Body | String | 이벤트 소스의 식별자 | +| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | +| events.messages | Body | Array | 이벤트 메세지 목록 | +| events.messages.langCode | Body | Enum | 언어 코드
- KO
- EN
- JA
- ZH | +| events.messages.message | Body | String | 이벤트 메세지 | +| events.eventYmdt | Body | DateTime | 이벤트 발생 일시 |

예시

@@ -4365,7 +5661,23 @@ DELETE /v4.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "totalCounts": 1, + "events": [ + { + "eventCategoryType": "ALL", + "eventCode": "ENUM_VALUE", + "sourceId": "sourceId-example", + "sourceName": "sourceName-example", + "messages": [ + { + "langCode": "KO", + "message": "message-example" + } + ], + "eventYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -4374,19 +5686,19 @@ DELETE /v4.0/notification-groups/{notificationGroupId} --- -## 모니터링 +## 이벤트 구독 -### Metric 목록 보기 +### 이벤트 구독 목록 조회 ```http -GET /v4.0/metrics +GET /v4.0/event-subscriptions ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| -| RDSforMySQL:Metric.List | 통계 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:EventSubscription.List | 이벤트 구독 목록 조회 | #### 요청 @@ -4394,11 +5706,22 @@ GET /v4.0/metrics #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|--------|-----------| -| metrics | Body | Array | Metric 목록 | -| metrics.measureName | Body | Enum | 조회 지표 유형 | -| metrics.unit | Body | String | 측정값 단위 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 구독 목록 수 | +| eventSubscriptions | Body | Array | 이벤트 구독 목록 | +| eventSubscriptions.eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 | +| eventSubscriptions.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.eventSubscriptionName | Body | String | 이벤트 구독의 식별할 수 있는 이름 | +| eventSubscriptions.enabled | Body | Boolean | 활성화 여부 | +| eventSubscriptions.notifyEmail | Body | Boolean | 이메일 발송 여부 | +| eventSubscriptions.notifySms | Body | Boolean | SMS 발송 여부 | +| eventSubscriptions.eventCodes | Body | Array | 구독할 이벤트 코드 목록 | +| eventSubscriptions.sources | Body | Array | 구독할 이벤트 소스 목록 | +| eventSubscriptions.sources.sourceId | Body | String | 이벤트 소스의 식별자 | +| eventSubscriptions.sources.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.userGroupIds | Body | Array | 이벤트 구독 중인 사용자 그룹의 식별자 목록 | +| eventSubscriptions.createdYmdt | Body | DateTime | 생성 일시 |

예시

@@ -4410,10 +5733,24 @@ GET /v4.0/metrics "resultMessage": "SUCCESS", "isSuccessful": true }, - "metrics": [ + "totalCounts": 1, + "eventSubscriptions": [ { - "measureName": "CPU_USAGE", - "unit": "%" + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ + { + "sourceId": "sourceId-example", + "eventCategoryType": "ALL" + } + ], + "userGroupIds": [], + "createdYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -4424,186 +5761,179 @@ GET /v4.0/metrics --- -### 통계 정보 조회 +### 이벤트 구독 생성하기 ```http -GET /v4.0/metric-statistics +POST /v4.0/event-subscriptions ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| -| RDSforMySQL:Metric.List | 통계 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:EventSubscription.Create | 이벤트 구독 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|----------|----|-----------------------------------| -| dbInstanceId | Query | UUID | O | DB 인스턴스의 식별자 | -| measureNames | Query | Array | O | 조회 지표 목록
- 최소 크기: `1` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| interval | Query | Number | X | 조회 간격 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|-----------|----------| -| metricStatistics | Body | Array | 통계 정보 목록 | -| metricStatistics.measureName | Body | Enum | 측정 항목 유형 | -| metricStatistics.unit | Body | String | 측정값 단위 | -| metricStatistics.values | Body | Array | 측정값 목록 | -| metricStatistics.values.timestamp | Body | Timestamp | 측정 시간 | -| metricStatistics.values.value | Body | Object | 측정값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | O | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | O | 활성화 여부 | +| notifyEmail | Body | Boolean | O | 이메일 발송 여부 | +| notifySms | Body | Boolean | O | SMS 발송 여부 | +| eventCodes | Body | Array | O | 구독할 이벤트 코드 목록 | +| sources | Body | Array | O | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | O | 이벤트 구독할 사용자 그룹의 식별자 목록 |

예시

```json { - "metricStatistics": [ + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ { - "measureName": "MYSQL_STATUS", - "unit": "", - "values": [ - [ - 1679298540, - "1" - ], - [ - 1679298600, - "1" - ], - [ - 1679298660, - "1" - ] - ] + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" } - ] + ], + "userGroupIds": [] } ```

---- +#### 응답 -## 이벤트 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 | -### 이벤트 카테고리 +
예시 +

-이벤트는 카테고리로 분류할 수 있으며 아래와 같습니다. +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이벤트 카테고리 | 설명 | -|-------------|---------| -| ALL | 전체 | -| BACKUP | 백업 | -| DB_INSTANCE | DB 인스턴스 | -| JOB | 작업 | -| TENANT | 테넌트 | -| MONITORING | 모니터링 | +

+
-### 이벤트 목록 조회 +--- + +### 이벤트 구독 삭제하기 ```http -GET /v4.0/events +DELETE /v4.0/event-subscriptions/{eventSubscriptionId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------|-----------| -| RDSforMySQL:Event.List | 이벤트 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:EventSubscription.Delete | 이벤트 구독 삭제하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | O | 조회할 목록의 페이지
- 최솟값: `1` | -| size | Query | Number | O | 조회할 목록의 페이지 크기
- 최솟값: `1`
- 최댓값: `100` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| eventCategoryType | Query | Enum | O | 조회할 이벤트 카테고리 유형
- `ALL`: 전체
- `INSTANCE`: DB 인스턴스
- `BACKUP`: 백업
- `DB_SECURITY_GROUP`: DB 보안 그룹
- `TENANT`: 테넌트 | -| sourceId | Query | String | X | 이벤트가 발생한 대상 리소스의 식별자 | -| keyword | Query | String | X | 이벤트 메시지에 포함된 문자열 검색어 | -| ascendingOrder | Query | Enum | X | 이벤트 메시지 정렬 순서
- `ASC`: 오름차순
- `DESC`: 내림차순
- 기본값: `DESC` | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|---------------------------------------| -| totalCounts | Body | Number | 전체 이벤트 목록 수 | -| events | Body | Array | 이벤트 목록 | -| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | -| events.sourceId | Body | String | 이벤트 소스의 식별자 | -| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | -| events.messages | Body | Array | 이벤트 메시지 목록 | -| events.messages.langCode | Body | String | 언어 코드 | -| events.messages.message | Body | String | 이벤트 메시지 | -| events.eventYmdt | Body | DateTime | 이벤트 발생 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 이벤트 구독 수정하기 + +```http +PUT /v4.0/event-subscriptions/{eventSubscriptionId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:EventSubscription.Modify | 이벤트 구독 수정하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | +| eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | X | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | X | 활성화 여부 | +| notifyEmail | Body | Boolean | X | 이메일 발송 여부 | +| notifySms | Body | Boolean | X | SMS 발송 여부 | +| eventCodes | Body | Array | X | 구독할 이벤트 코드 목록 | +| sources | Body | Array | X | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | X | 이벤트 구독할 사용자 그룹의 식별자 목록 |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "totalCounts": 28, - "events": [ + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, + "notifySms": false, + "eventCodes": [], + "sources": [ { - "eventCategoryType": "INSTANCE", - "eventCode": "INSTC_02_01", - "sourceId": "76f00947-356e-4a20-8922-428368cc45ed", - "sourceName": "db-instance", - "messages": [ - { - "langCode": "EN", - "message": "DB instance started" - }, - { - "langCode": "JA", - "message": "DBインスタンスの起動" - }, - { - "langCode": "KO", - "message": "DB 인스턴스 시작" - }, - { - "langCode": "ZH", - "message": "DB instance started" - } - ], - "eventYmdt": "2023-03-20T16:31:59+09:00" + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" } - ] + ], + "userGroupIds": [] } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- -### 구독 가능한 이벤트 코드 목록 보기 +## 가용성 영역 + +### 가용성 영역 목록 보기 ```http -GET /v4.0/event-codes +GET /v4.0/availability-zones ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------|-----------| -| RDSforMySQL:Event.List | 이벤트 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:AvailabilityZone.List | 가용성 영역 목록 보기 | #### 요청 @@ -4611,11 +5941,12 @@ GET /v4.0/event-codes #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|-------|-------------| -| eventCodes | Body | Array | 이벤트 코드 목록 | -| eventCodes.eventCode | Body | Enum | 이벤트 코드 | -| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| availabilityZones | Body | Array | 가용성 영역 목록 | +| availabilityZones.availabilityZoneName | Body | String | 가용성 영역 이름 | +| availabilityZones.zoneState | Body | Object | 가용성 영역 상태 | +| availabilityZones.zoneState.available | Body | Boolean | 가용성 영역의 사용 가능 여부 |
예시

@@ -4627,10 +5958,12 @@ GET /v4.0/event-codes "resultMessage": "SUCCESS", "isSuccessful": true }, - "eventCodes": [ + "availabilityZones": [ { - "eventCode": "INSTC_05_01", - "eventCategoryType": "INSTANCE" + "availabilityZoneName": "availabilityZoneName-example", + "zoneState": { + "available": false + } } ] } @@ -4640,3 +5973,4 @@ GET /v4.0/event-codes

--- + diff --git a/ko/api-guide-v4.0.md b/ko/api-guide-v4.0.md index f0ec377f..ae6958c7 100644 --- a/ko/api-guide-v4.0.md +++ b/ko/api-guide-v4.0.md @@ -1,39 +1,39 @@ -## Database > RDS for MySQL > API 가이드 +## Database > RDS for MySQL > API v4.0 가이드 ## RDS for MySQL API 공통 정보 ### API 엔드포인트 -| 리전 | 엔드포인트 | -|-----------|-----------------------------------------------| +| 리전 | 엔드포인트 | +|------|----------| | 한국(판교) 리전 | https://kr1-rds-mysql.api.nhncloudservice.com | | 한국(평촌) 리전 | https://kr2-rds-mysql.api.nhncloudservice.com | | 일본 리전 | https://jp1-rds-mysql.api.nhncloudservice.com | + ### 인증 및 권한 RDS for MySQL은(는) API 호출 시 인증/인가를 위해 User Access Key 토큰을 사용합니다. User Access Key 토큰은 User Access Key를 기반으로 발급되는 Bearer 타입의 일시적 액세스 토큰입니다. User Access Key 토큰 발급 및 사용에 대한 자세한 내용은 [User Access Key 토큰](/nhncloud/ko/public-api/user-access-key-token)을 참고하세요. 발급 받은 토큰은 Appkey와 함께 요청 Header에 포함해야 합니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|--------|--------|----|-------------------------------------------------------------| -| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | -| X-NHN-AUTHORIZATION | Header | String | O | Public API로 발급 받은 Bearer 유형 토큰 | - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| X-TC-APP-KEY | Header | String | O | RDS for MySQL 서비스의 Appkey 또는 프로젝트 통합 Appkey | +| X-NHN-AUTHORIZATION | Header | String | O | Public API로 발급 받은 Bearer 유형 토큰 | -또한 프로젝트 멤버 역할에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER`로 구분하여 권한을 부여할 수 있습니다. +또한 프로젝트 권한에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MySQL ADMIN`, `RDS for MySQL VIEWER` 역할에는 아래처럼 기본 권한이 부여돼 있고 프로젝트 내 역할 그룹 관리 메뉴에서 필요한 권한만 부여할 수 있습니다. -* `RDS for MySQL ADMIN` 권한은 모든 기능을 사용 가능합니다. -* `RDS for MySQL VIEWER` 권한은 정보를 조회하는 기능만 사용 가능합니다. +* `RDS for MySQL ADMIN` 역할은 API 실행에 필요한 모든 권한이 부여됩니다. +* `RDS for MySQL VIEWER` 역할은 정보를 조회하는 권한만 부여됩니다. * DB 인스턴스를 생성, 수정, 삭제하거나, DB 인스턴스를 대상으로 하는 어떠한 기능도 사용할 수 없습니다. - * 단, 알림 그룹 및 사용자 그룹 관련 기능은 사용 가능합니다. + * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용할 수 있습니다. API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같은 오류가 발생합니다. -| resultCode | resultMessage | 설명 | -|------------|---------------|-------------| -| 80401 | Unauthorized | 인증에 실패했습니다. | -| 80403 | Forbidden | 권한이 없습니다. | +| resultCode | resultMessage | 설명 | +|------------|---------------|-----| +| 80401 | Unauthorized | 인증에 실패했습니다. | +| 80403 | Forbidden | 권한이 없습니다. | ### 응답 공통 정보 @@ -51,59 +51,58 @@ API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같 ``` #### 필드 -| 이름 | 형식 | 설명 | -|---------------|---------|-----------------------------------------| -| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | -| resultMessage | String | 결과 메시지 | -| isSuccessful | Boolean | 성공 여부 | - +| 이름 | 형식 | 설명 | +|-----|-----|-----| +| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | +| resultMessage | String | 결과 메시지 | +| isSuccessful | Boolean | 성공 여부 | ### DB 엔진 유형 -| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 | -|--------------|----------|-----------------|--------| -| MYSQL\_V5633 | X | X | NATIVE | -| MYSQL\_V5715 | O | O | NATIVE | -| MYSQL\_V5719 | O | O | NATIVE | -| MYSQL\_V5726 | O | O | NATIVE | -| MYSQL\_V5731 | X | X | NATIVE | -| MYSQL\_V5733 | O | X | NATIVE, SHA256 | -| MYSQL\_V5737 | O | O | NATIVE, SHA256 | -| MYSQL\_V8018 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8023 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8028 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8032 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8033 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL\_V8034 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8044 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8045 | O | O | NATIVE, CACHING_SHA2 | -| MYSQL_V8405 | O | O | CACHING_SHA2 | -| MYSQL_V8406 | O | O | CACHING_SHA2 | -| MYSQL_V8407 | O | O | CACHING_SHA2 | -| MYSQL_V8408 | O | O | CACHING_SHA2 | - -* ENUM 타입의 dbVersion 필드에서 해당 값을 사용할 수 있습니다. +| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 | +|------------|----------|------------------|------------| +| MYSQL_V5633 | X | X | NATIVE | +| MYSQL_V5715 | O | O | NATIVE | +| MYSQL_V5719 | O | O | NATIVE | +| MYSQL_V5726 | O | O | NATIVE | +| MYSQL_V5731 | X | X | NATIVE | +| MYSQL_V5733 | O | X | NATIVE, SHA256 | +| MYSQL_V5737 | O | O | NATIVE, SHA256 | +| MYSQL_V8018 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8023 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8028 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8032 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8033 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8034 | X | X | NATIVE, CACHING_SHA2 | +| MYSQL_V8035 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8036 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8040 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8041 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8042 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8043 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8044 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8045 | O | O | NATIVE, CACHING_SHA2 | +| MYSQL_V8405 | O | O | CACHING_SHA2 | +| MYSQL_V8406 | O | O | CACHING_SHA2 | +| MYSQL_V8407 | O | O | CACHING_SHA2 | +| MYSQL_V8408 | O | O | CACHING_SHA2 | + +* ENUM 타입의 dbVersion 필드에 대해 해당 값을 사용할 수 있습니다. * 버전에 따라 생성 또는 복원이 불가능한 경우가 있을 수 있습니다. ## 프로젝트 정보 -### 리전 목록 보기 +### 프로젝트 멤버 목록 보기 ```http -GET /v4.0/project/regions +GET /v4.0/project/members ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|------------| -| RDSforMySQL:Project.Get | 프로젝트 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Project.Get | 프로젝트 멤버 목록 보기 | #### 요청 @@ -111,11 +110,13 @@ GET /v4.0/project/regions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------|------|---------|----------------------------------------------------------------------------| -| regions | Body | Array | 리전 목록 | -| regions.regionCode | Body | Enum | 리전 코드
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| members.memberName | Body | String | 프로젝트 멤버의 이름 | +| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | +| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 |
예시

@@ -127,38 +128,33 @@ GET /v4.0/project/regions "resultMessage": "SUCCESS", "isSuccessful": true }, - "regions": [ - { - "regionCode": "KR1", - "isEnabled": true - }, - { - "regionCode": "KR2", - "isEnabled": true - }, + "members": [ { - "regionCode": "JP1", - "isEnabled": true + "memberId": "550e8400-e29b-41d4-a716-446655440000", + "memberName": "memberName-example", + "emailAddress": "emailAddress-example", + "phoneNumber": "phoneNumber-example" } ] } ``` +

--- -### 프로젝트 멤버 목록 보기 +### 리전 목록 보기 ```http -GET /v4.0/project/members +GET /v4.0/project/regions ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|------------| -| RDSforMySQL:Project.Get | 프로젝트 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Project.Get | 리전 목록 보기 | #### 요청 @@ -166,13 +162,11 @@ GET /v4.0/project/members #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|--------|-----------------| -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| members.memberName | Body | String | 프로젝트 멤버의 이름 | -| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | -| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| regions | Body | Array | 리전 목록 | +| regions.regionCode | Body | Enum | 리전 코드
- KR1: `한국(판교)`
- KR2: `한국(평촌)`
- JP1: `일본(도쿄)` | +| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 |
예시

@@ -184,12 +178,10 @@ GET /v4.0/project/members "resultMessage": "SUCCESS", "isSuccessful": true }, - "members": [ + "regions": [ { - "memberId": "1b1d3627-507a-49ea-8cb7-c86dfa9caa58", - "memberName": "홍길동", - "emailAddress": "gildong.hong@nhn.com", - "phoneNumber": "+821012345678" + "regionCode": "KR1", + "isEnabled": false } ] } @@ -210,8 +202,8 @@ GET /v4.0/db-flavors #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbFlavor.List | DB 인스턴스 사양 목록 보기 | #### 요청 @@ -220,13 +212,13 @@ GET /v4.0/db-flavors #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------| -| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | -| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | -| dbFlavors.ram | Body | Number | 메모리 용량(MB) | -| dbFlavors.vcpus | Body | Number | CPU 코어 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | +| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | +| dbFlavors.ram | Body | Number | 메모리 용량(MB) | +| dbFlavors.vcpus | Body | Number | CPU 코어 수 |

예시

@@ -240,9 +232,9 @@ GET /v4.0/db-flavors }, "dbFlavors": [ { - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbFlavorName": "m2.c1m2", - "ram": 2048, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbFlavorName": "dbFlavorName-example", + "ram": 1, "vcpus": 1 } ] @@ -264,8 +256,8 @@ GET /v4.0/network/subnets #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------|-----------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Network.List | 서브넷 목록 보기 | #### 요청 @@ -274,14 +266,14 @@ GET /v4.0/network/subnets #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|---------|------------------| -| subnets | Body | Array | 서브넷 목록 | -| subnets.subnetId | Body | UUID | 서브넷의 식별자 | -| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | -| subnets.subnetCidr | Body | String | 서브넷의 CIDR | -| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | -| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| subnets | Body | Array | 서브넷 목록 | +| subnets.subnetId | Body | UUID | 서브넷의 식별자 | +| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnets.subnetCidr | Body | String | 서브넷의 CIDR | +| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | +| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 |

예시

@@ -295,11 +287,11 @@ GET /v4.0/network/subnets }, "subnets": [ { - "subnetId": "1b2a9b23-0725-4b92-8c78-35db66b8ad9f", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/24", - "usingGateway": true, - "availableIpCount": 240 + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example", + "usingGateway": false, + "availableIpCount": 1 } ] } @@ -320,8 +312,8 @@ GET /v4.0/db-versions #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbVersion.List | DB 엔진 목록 보기 | #### 요청 @@ -330,11 +322,11 @@ GET /v4.0/db-versions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|---------|-----------------------| -| dbVersions | Body | Array | DB 엔진 목록 | -| dbVersions.dbVersion | Body | String | DB 엔진 유형 | -| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbVersions | Body | Array | DB 엔진 목록 | +| dbVersions.dbVersion | Body | String | DB 엔진 유형 | +| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | | dbVersions.restorableFromObs | Body | Boolean | 오브젝트 스토리지로부터 복원 가능 여부 |

예시 @@ -349,9 +341,9 @@ GET /v4.0/db-versions }, "dbVersions": [ { - "dbVersion": "MYSQL_V8028", - "dbVersionName": "MySQL 8.0.28", - "restorableFromObs": true + "dbVersion": "MYSQL_V8036", + "dbVersionName": "dbVersionName-example", + "restorableFromObs": false } ] } @@ -364,7 +356,7 @@ GET /v4.0/db-versions ## 데이터 스토리지 -### 데이터 스토리지 타입 목록 보기 +### 스토리지 타입 목록 보기 ```http GET /v4.0/storage-types @@ -372,9 +364,9 @@ GET /v4.0/storage-types #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------|-------------------| -| RDSforMySQL:Storage.List | 데이터 스토리지 타입 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Storage.List | 스토리지 타입 목록 보기 | #### 요청 @@ -382,9 +374,9 @@ GET /v4.0/storage-types #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|-------|----------------| -| storageTypes | Body | Array | 데이터 스토리지 타입 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageTypes | Body | Array | 스토리지 타입 목록 |
예시

@@ -396,10 +388,7 @@ GET /v4.0/storage-types "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageTypes": [ - "General SSD", - "General HDD" - ] + "storageTypes": [] } ``` @@ -435,29 +424,29 @@ GET /v4.0/jobs/{jobId} #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Job.Get | 작업 정보 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------|-----|------|----|---------| -| jobId | URL | UUID | O | 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| jobId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------|------|----------|-----------------------------------| -| jobId | Body | UUID | 작업의 식별자 | -| jobStatus | Body | Enum | 작업의 현재 상태 | -| resourceRelations | Body | Array | 연관 리소스 목록 | -| resourceRelations.resourceType | Body | Enum | 연관 리소스 유형 | -| resourceRelations.resourceId | Body | UUID | 연관 리소스의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | +| jobStatus | Body | Enum | 작업의 현재 상태
- DELETED
- CANNOT_PROGRESS
- FAILED
- ERROR
- CANCELED
- INTERRUPTED
- COMPLETED
- RUNNING
- PREPARING
- READY
- CREATED
- FAIL_TO_READY
- REGISTERED
- FAIL_TO_REGISTER
- WAIT_TO_REGISTER | +| resourceRelations | Body | Array | 연관 리소스 목록 | +| resourceRelations.resourceType | Body | String | 연관 리소스 유형 | +| resourceRelations.resourceId | Body | String | 연관 리소스의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -469,16 +458,16 @@ GET /v4.0/jobs/{jobId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "jobId": "0ddb042c-5af6-43fb-a914-f4dd0540eb7c", - "jobStatus": "RUNNING", + "jobId": "550e8400-e29b-41d4-a716-446655440000", + "jobStatus": "DELETED", "resourceRelations": [ { - "resourceType": "DB_INSTANCE", - "resourceId": "56b39dcf-65eb-47ec-9d4f-09f160ba2266" + "resourceType": "resourceType-example", + "resourceId": "resourceId-example" } ], - "createdYmdt": "2023-02-22T20:47:12+09:00", - "updatedYmdt": "2023-02-22T20:49:46+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -497,8 +486,8 @@ GET /v4.0/db-instance-groups #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstanceGroup.List | DB 인스턴스 그룹 목록 보기 | #### 요청 @@ -507,13 +496,13 @@ GET /v4.0/db-instance-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------|------|----------|--------------------------------------------------------------------------| -| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | -| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | +| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -527,10 +516,10 @@ GET /v4.0/db-instance-groups }, "dbInstanceGroups": [ { - "dbInstanceGroupId": "05de0746-89fd-49c8-94f9-9c5b1df97009", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", - "createdYmdt": "2023-02-13T17:35:20+09:00", - "updatedYmdt": "2023-02-13T17:35:20+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -549,30 +538,30 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstanceGroup.Get | DB 인스턴스 그룹 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|-----------------| -| dbInstanceGroupId | URL | UUID | O | DB 인스턴스 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -584,17 +573,17 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbInstanceGroupId": "36617a8e-0df8-4b16-b6ea-6306019e95da", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", "dbInstances": [ { - "dbInstanceId": "6d2db0ef-fe9b-4ed4-97b1-d97fcb4cf1b8", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE" + "dbInstanceStatus": "BEFORE_CREATE" } ], - "createdYmdt": "2023-03-03T17:38:14+09:00", - "updatedYmdt": "2023-03-03T17:38:14+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -627,8 +616,8 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} | `BACKING_UP` | 백업 중 | | `CANCELING` | 취소 중 | | `CREATING` | 생성 중 | -| `CREATING_SCHEMA` | DB 스키마 생성 중 | -| `CREATING_USER` | 사용자 생성 중 | +| `CREATING_SCHEMA` | DB 스키마 생성 중 | +| `CREATING_USER` | 사용자 생성 중 | | `DELETING` | 삭제 중 | | `DELETING_SCHEMA` | DB 스키마 삭제 중 | | `DELETING_USER` | 사용자 삭제 중 | @@ -647,8 +636,8 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} | `STARTING` | 시작 중 | | `STOPPING` | 정지 중 | | `SYNCING_SCHEMA` | DB 스키마 동기화 중 | -| `SYNCING_USER` | 사용자 동기화 중 | -| `UPDATING_USER` | 사용자 수정 중 | +| `SYNCING_USER` | 사용자 동기화 중 | +| `UPDATING_USER` | 사용자 수정 중 | ### DB 인스턴스 목록 보기 @@ -658,8 +647,8 @@ GET /v4.0/db-instances #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstance.List | DB 인스턴스 목록 보기 | #### 요청 @@ -668,20 +657,20 @@ GET /v4.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstances | Body | Array | DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | -| dbInstances.dbPort | Body | Number | DB 포트 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태 | -| dbInstances.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstances.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstances | Body | Array | DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | +| dbInstances.dbPort | Body | Number | DB 포트 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbInstances.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstances.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -695,17 +684,17 @@ GET /v4.0/db-instances }, "dbInstances": [ { - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", + "dbInstanceStatus": "BEFORE_CREATE", "progressStatus": "NONE", - "createdYmdt": "2023-01-23T12:03:13+09:00", - "updatedYmdt": "2023-02-02T17:20:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -716,51 +705,130 @@ GET /v4.0/db-instances --- -### DB 인스턴스 상세 보기 +### DB 인스턴스 생성하기 ```http -GET /v4.0/db-instances/{dbInstanceId} +POST /v4.0/db-instances ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Create | DB 인스턴스 생성하기 | -#### 요청 +#### 공통 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| authenticationPlugin | Body | Enum | X | 인증 Plugin
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | TLS Option
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 데이터 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)`
- KR2: `한국(평촌)`
- JP1: `일본(도쿄)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | + +

예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE", + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "backup": { + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 1800, + "replicationRegion": "KR1", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + } +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| dbPort | Body | Number | DB 포트 | -| dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| progressStatus | Body | Enum | DB 인스턴스의 현재 작업 진행 상태 | -| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | -| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | -| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | -| useSlowQueryAnalysis | Body | Boolean | Slow query 분석 여부 | -| supportAuthenticationPlugin | Body | Boolean | 인증 플러그인 지원 여부 | -| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | -| needMigration | Body | Boolean | 마이그레이션 필요 여부 | -| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -772,27 +840,7 @@ GET /v4.0/db-instances/{dbInstanceId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", - "progressStatus": "NONE", - "dbFlavorId": "e9ed4ef6-78d7-46fa-ace9-32481e97f3b7", - "parameterGroupId": "b03e8b13-de27-4d04-a488-ff5689589372", - "dbSecurityGroupIds": ["01908c35-d2c9-4852-baf0-17f06ec42c03"], - "notificationGroupIds": ["83a62a33-ddbf-4a04-8653-e54463d5b1ac"], - "useDeletionProtection": false, - "useSlowQueryAnalysis": true, - "supportAuthenticationPlugin": true, - "needToApplyParameterGroup": false, - "needMigration": false, - "supportDbVersionUpgrade": true, - "createdYmdt": "2022-11-23T12:03:13+09:00", - "updatedYmdt": "2022-12-02T17:20:17+09:00" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -801,97 +849,124 @@ GET /v4.0/db-instances/{dbInstanceId} --- -### DB 인스턴스 생성하기 +### 오브젝트 스토리지를 이용한 DB 인스턴스 복원 ```http -POST /v4.0/db-instances +POST /v4.0/db-instances/restore-from-obs ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Create | DB 인스턴스 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.RestoreFromObs | 오브젝트 스토리지를 이용한 DB 인스턴스 복원 | -#### 요청 +#### 공통 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|-------|---------|----|---------------------------------------------------------------------| -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbUserName | Body | String | O | DB 사용자 계정명 | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| pingType | Body | Enum | X | 고가용성 사용 시 Ping 타입
- 기본값: `INSERT`
- `INSERT`
- `SELECT` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- 기본값: `NATIVE`(미지원 시 `CACHING_SHA2`)
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | O | DB 포트 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)`
- KR2: `한국(평촌)`
- JP1: `일본(도쿄)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | +| restore.username | Body | String | O | NHN Cloud 계정 혹은 IAM 멤버 ID | +| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | +| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | +| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` |

예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbVersion": "MYSQL_V8028", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", - "availabilityZone": "kr-pub-a" - }, + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "dbVersion": "MYSQL_V8036", + "useHighAvailability": false, + "pingInterval": 3, "storage": { "storageType": "General SSD", - "storageSize": 20 + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR1", + "useBackupLock": true, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR" + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" } ] - } + }, + "restore": { + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" + }, + "useDefaultNotification": false, + "useSlowQueryAnalysis": true, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDeletionProtection": false } ``` @@ -900,66 +975,27 @@ POST /v4.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### DB 인스턴스 수정하기 - -```http -PUT /v4.0/db-instances/{dbInstanceId} -``` - -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|------|---------|----|---------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbPort | Body | Number | X | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbVersion | Body | Enum | X | DB 엔진 유형 | -| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| useReadOnly | Body | Boolean | X | 읽기 전용으로 변경 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -

예시

```json { - "dbInstanceName": "db-instance2", - "description": "description2", - "dbPort": 10001, - "dbSecurityGroupIds": [], - "executeBackup": true + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- ### DB 인스턴스 삭제하기 @@ -970,79 +1006,99 @@ DELETE /v4.0/db-instances/{dbInstanceId} #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbInstance.Delete | DB 인스턴스 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| deleteAutoBackup | Body | Boolean | X | 자동 백업 삭제 여부
- 기본값: `false` | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| deleteAutoBackup | Body | Boolean | X | 자동 백업 삭제 여부
- 기본값: `false` | -### DB 인스턴스 재시작하기 +
예시 +

-```http -POST /v4.0/db-instances/{dbInstanceId}/restart +```json +{ + "deleteAutoBackup": false +} ``` -#### 필요 권한 +

+
-| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Restart | DB 인스턴스 재시작하기 | +#### 응답 -#### 요청 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | -| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| useReadOnly | Body | Boolean | X | 읽기 전용으로 변경 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### DB 인스턴스 강제 재시작하기 + +### DB 인스턴스 상세 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/force-restart +GET /v4.0/db-instances/{dbInstanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|------------------| -| RDSforMySQL:DbInstance.ForceRestart | DB 인스턴스 강제 재시작하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| dbPort | Body | Number | DB 포트 | +| dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | +| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | +| useSlowQueryAnalysis | Body | Boolean | Slow query 분석 여부 | +| supportAuthenticationPlugin | Body | Boolean | 인증 plugin 지원 여부 | +| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | +| needMigration | Body | Boolean | 마이그레이션 필요 여부 | +| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -1053,134 +1109,222 @@ POST /v4.0/db-instances/{dbInstanceId}/force-restart "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbInstanceType": "MASTER", + "dbInstanceStatus": "BEFORE_CREATE", + "progressStatus": "NONE", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "notificationGroupIds": [], + "useDeletionProtection": false, + "useSlowQueryAnalysis": false, + "supportAuthenticationPlugin": false, + "needToApplyParameterGroup": false, + "needMigration": false, + "supportDbVersionUpgrade": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

- --- -### DB 인스턴스 시작하기 +### DB 인스턴스 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/start +PUT /v4.0/db-instances/{dbInstanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Start | DB 인스턴스 시작하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbPort | Body | Number | X | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbVersion | Body | Enum | X | DB 엔진 버전 코드 | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부 | +| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
- 기본값: `false` | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` | + +
예시 +

-| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +```json +{ + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbPort": 1, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "useSlowQueryAnalysis": false, + "useDummy": false, + "dbSecurityGroupIds": [], + "executeBackup": false, + "useOnlineFailover": false, + "waitReplicationDelay": false, + "useReadOnly": false +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 인스턴스 정지하기 +### 백업 정보 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/stop +GET /v4.0/db-instances/{dbInstanceId}/backup-info ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Stop | DB 인스턴스 정지하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 백업 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| backupPeriod | Body | Number | 백업 보관 기간(일) | +| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | +| backupRetryCount | Body | Number | 백업 재시도 횟수 | +| replicationRegion | Body | Enum | 백업 복제 리전
- KR1: `한국(판교)`
- KR2: `한국(평촌)`
- JP1: `일본(도쿄)` | +| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration
- HALF_AN_HOUR
- ONE_HOUR
- ONE_HOUR_AND_HALF
- TWO_HOURS
- TWO_HOURS_AND_HALF
- THREE_HOURS | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "backupPeriod": 1, + "ftwrlWaitTimeout": 1, + "backupRetryCount": 1, + "replicationRegion": "KR1", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] +} +``` + +

+
--- -### DB 인스턴스 복제하기 +### 백업 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/replicate +PUT /v4.0/db-instances/{dbInstanceId}/backup-info ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Replicate | DB 인스턴스 복제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | 백업 정보 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------------------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbPort | Body | Number | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록
- 기본값: 원본 DB 인스턴스 값 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: 원본 DB 인스턴스 값 | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입
- 기본값: 원본 DB 인스턴스 값
- 예시: `General SSD` | -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전
- 기본값: 원본 DB 인스턴스 값 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각
- 예시: `00:00:00`
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간
- 기본값: 원본 DB 인스턴스 값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)`
- KR2: `한국(평촌)`
- JP1: `일본(도쿄)` | +| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json { - "dbInstanceName": "db-instance-replicate", - "description": "description", - "dbPort": 11000, - "network": { - "availabilityZone": "kr-pub-a" - }, - "storage": { - "stroageSize": 100 - } + "backupPeriod": 0, + "ftwrlWaitTimeout": 0, + "backupRetryCount": 0, + "replicationRegion": "KR1", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] } ``` @@ -1189,147 +1333,234 @@ POST /v4.0/db-instances/{dbInstanceId}/replicate #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- +

예시 +

-### DB 인스턴스 승격하기 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 바이너리 로그 목록 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/promote +GET /v4.0/db-instances/{dbInstanceId}/binlogs ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Promote | DB 인스턴스 승격하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceBinLog.List | 바이너리 로그 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| binLogs | Body | Array | BinLog 파일 목록 | +| binLogs.binLogFileName | Body | String | BinLog 파일 이름 | +| binLogs.binLogFileSize | Body | Number | BinLog 파일 크기 (Byte) | +| binLogs.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "binLogs": [ + { + "binLogFileName": "binLogFileName-example", + "binLogFileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
--- -### DB 인스턴스 재구축하기 +### 바이너리 로그 삭제 ```http -POST /v4.0/db-instances/{dbInstanceId}/rebuild +POST /v4.0/db-instances/{dbInstanceId}/binlogs/purge ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Rebuild | DB 인스턴스 재구축하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceBinLog.Purge | 바이너리 로그 삭제 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| lastBinLogFileName | Body | String | O | 삭제할 마지막 BinLog 파일 이름 (해당 파일 직전까지 삭제됨) | + +
예시 +

+ +```json +{ + "lastBinLogFileName": "mysql-bin.000010" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 복원 정보 조회 +### 인증서 파일 목록 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/restoration-info +GET /v4.0/db-instances/{dbInstanceId}/certificates ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceCertificate.List | 인증서 파일 목록 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------------|------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| oldestRestorableYmdt | Body | DateTime | 가장 오래된 복원 가능한 시각 | -| latestRestorableYmdt | Body | DateTime | 가장 최신의 복원 가능한 시각 | -| restorableBackups | Body | Array | 복원 가능한 백업 목록 | -| restorableBackups.backup | Body | Object | 백업 정보 객체 | -| restorableBackups.backup.backupId | Body | UUID | 백업의 식별자 | -| restorableBackups.backup.backupName | Body | String | 백업 이름 | -| restorableBackups.backup.useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| restorableBackups.backup.backupSize | Body | Number | 백업 크기 | -| restorableBackups.backup.backupType | Body | Enum | 백업 유형
- `AUTO`: 자동
- `MANUAL`: 수동 | -| restorableBackups.backup.backupStatus | Body | Enum | 백업 상태
- `BACKING_UP`: 백업 중인 경우
- `COMPLETED`: 백업이 완료된 경우
- `DELETING`: 백업이 삭제 중인 경우
- `DELETED`: 백업이 삭제된 경우
- `ERROR`: 오류가 발생한 경우 | -| restorableBackups.backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| restorableBackups.backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | -| restorableBackups.backup.dbVersion | Body | String | DB 엔진 유형 | -| restorableBackups.backup.failoverCount | Body | Number | 장애 조치 횟수 | -| restorableBackups.backup.binLogFileName | Body | String | 바이너리 로그 파일명 | -| restorableBackups.backup.binLogPosition | Body | Number | 바이너리 로그 파일 위치 | -| restorableBackups.backup.createdYmdt | Body | DateTime | 백업 생성 일시 | -| restorableBackups.backup.updatedYmdt | Body | DateTime | 백업 갱신 일시 | -| restorableBackups.restorableBinLogs | Body | Array | 해당 백업을 이용하여 복원 가능한 바이너리 로그 이름 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| certificates | Body | Array | 인증서 파일 목록 | +| certificates.fileName | Body | String | 인증서 파일 이름 | +| certificates.certificateType | Body | Enum | 인증서 타입
- CA_FILE
- CERT_FILE
- KEY_FILE | +| certificates.fileSize | Body | Number | 인증서 파일 크기(Byte) | +| certificates.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "certificates": [ + { + "fileName": "fileName-example", + "certificateType": "CA_FILE", + "fileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### 인증서 파일 내보내기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/certificates/upload +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceCertificate.Export | 인증서 파일 내보내기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| certificateTypes | Body | Array | O | 업로드할 인증서 타입 목록 | +| tenantId | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 회원 또는 IAM 멤버 ID | +| password | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 인증서 파일의 경로 | + +
예시 +

+ +```json +{ + "certificateTypes": [], + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" +} +``` +

+
+ +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "oldestRestorableYmdt": "2023-07-09T16:33:33+09:00", - "latestRestorableYmdt": "2023-07-10T15:44:44+09:00", - "restorableBackups": [ - { - "backup": { - "backupId": "145d889a-fe08-474f-8f58-bde576ff96a9", - "backupName": "example-backup-name", - "backupStatus": "COMPLETED", - "dbInstanceId": "dba1be25-9429-4589-9716-7fb6daad7cb9", - "dbInstanceName": "original-db-instance-name", - "dbVersion": "MYSQL_V8028", - "backupType": "MANUAL", - "backupSize": 8299904, - "useBackupLock": true, - "failoverCount": 0, - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 367916037, - "createdYmdt": "2023-07-10T15:44:44+09:00", - "updatedYmdt": "2023-07-10T15:46:07+09:00" - }, - "restorableBinLogs": [ - "mysql-bin.000001" - ] - } - ] + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1338,45 +1569,98 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info --- -### 복원될 마지막 쿼리 조회 +### DB 스키마 목록 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query +GET /v4.0/db-instances/{dbInstanceId}/db-schemas ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceSchema.List | DB 스키마 목록 보기 | -#### 공통 요청 +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSchemas | Body | Array | DB 스키마 목록 | +| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | +| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | +| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- STABLE
- CREATING
- SYNCING
- DELETING
- DELETED | +| dbSchemas.createdYmdt | Body | DateTime | 생성 일시 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSchemas": [ + { + "dbSchemaId": "550e8400-e29b-41d4-a716-446655440000", + "dbSchemaName": "dbSchemaName-example", + "dbSchemaStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|------|----|-----------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restoreType | Query | Enum | O | 복원 타입 종류
- `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
- `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입 | +### DB 스키마 생성하기 -#### restoreType이 `TIMESTAMP`인 경우 +```http +POST /v4.0/db-instances/{dbInstanceId}/db-schemas +``` + +#### 필요 권한 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-------|----------|----|-------------------------------------------| -| restoreYmdt | Query | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceSchema.Create | DB 스키마 생성하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbSchemaName | Body | String | O | DB 스키마 이름
- 최대 길이: `64`
- 영문 시작, 영문/숫자/_ 허용, 1~64자, MySQL 예약어 불가 | + +
예시 +

-#### restoreType이 `BINLOG`인 경우 +```json +{ + "dbSchemaName": "dbSchemaName-example" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------|-------|--------|----|--------------------| -| backupId | Query | UUID | O | 복원에 사용할 백업의 식별자 | -| binLogFileName | Query | String | O | 복원에 사용할 바이너리 로그 이름 | -| binLogPosition | Query | Number | O | 복원에 사용할 바이너리 로그 위치 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|----------|--------------------------------------| -| executedYmdt | Body | DateTime | 쿼리 수행 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| lastQuery | Body | String | 마지막 수행 쿼리 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -1388,8 +1672,7 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query "resultMessage": "SUCCESS", "isSuccessful": true }, - "executedYmdt": "2023-03-17T14:02:29+09:00", - "lastQuery": "INSERT INTO `test`.`test`SET @1='0123'" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1398,213 +1681,153 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query --- -### 복원 +### DB 스키마 삭제하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/restore +DELETE /v4.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Restore | DB 인스턴스 복원하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceSchema.Delete | DB 스키마 삭제하기 | -#### 공통 요청 +#### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restore | Body | Object | O | 복원 정보 객체 | -| restore.restoreType | Body | Enum | O | 복원 타입 종류
- `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
- `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입
- `BACKUP`: 기존에 생성한 백업을 이용한 스냅숏 복원 타입 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 고가용성 사용 시 필수 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| pingType | Body | Enum | X | 고가용성 사용 시 Ping 타입
- 기본값: `INSERT`
- `INSERT`
- `SELECT` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | X | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | X | 서브넷의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a`
- 기본값: 랜덤 선택 | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입
- 예시: `General SSD`
- 기본값: 원본 DB 인스턴스 값 | -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +이 API는 요청 본문을 요구하지 않습니다. -#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbSchemaId | URL | UUID | O | DB 스키마의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|----------|----|------------------------------------------------------------------------------------------------| -| restore.restoreYmdt | Body | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD)
복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능합니다. | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |

예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "TIMESTAMP", - "restoreYmdt": "2023-07-10T15:44:44+09:00" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) +--- -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------------|------|--------|----|--------------------| -| restore.backupId | Body | UUID | O | 복원에 사용할 백업의 식별자 | -| restore.binLog | Body | Object | O | 바이너리 로그 정보 객체 | -| restore.binLog.binLogFileName | Body | String | O | 복원에 사용할 바이너리 로그 이름 | -| restore.binLog.binLogPosition | Body | Number | O | 복원에 사용할 바이너리 로그 위치 | +### DB 사용자 목록 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/db-users +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.List | DB 사용자 목록 보기 | + +#### 요청 -* 바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그를 복원할 수 있습니다. +이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbUsers | Body | Array | DB 사용자 목록 | +| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | +| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | +| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | +| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- STABLE
- CREATING
- UPDATING
- SYNCING
- DELETING
- DELETED | +| dbUsers.createdYmdt | Body | DateTime | 생성 일시 | +| dbUsers.updatedYmdt | Body | DateTime | 수정 일시 | +| dbUsers.authenticationPlugin | Body | Enum | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| dbUsers.tlsOption | Body | Enum | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BINLOG", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36", - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 1234567 - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbUsers": [ + { + "dbUserId": "550e8400-e29b-41d4-a716-446655440000", + "dbUserName": "dbUserName-example", + "host": "host-example", + "authorityType": "CUSTOM", + "dbUserStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" + } + ] } ```

-#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) +--- -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|------|------------------------------|-----------------| -| restore.backupId | Body | UUID | O(restoreType이 `BACKUP`인 경우) | 복원에 사용할 백업의 식별자 | +### DB 사용자 생성하기 +```http +POST /v4.0/db-instances/{dbInstanceId}/db-users +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.Create | DB 사용자 생성하기 | +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| host | Body | String | O | DB 사용자 계정의 호스트명
- 최대 길이: `45` | +| authorityType | Body | Enum | O | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BACKUP", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "host": "host-example", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" } ``` @@ -1613,115 +1836,107 @@ POST /v4.0/db-instances/{dbInstanceId}/restore #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### 오브젝트 스토리지로부터 복원 +### DB 사용자 삭제하기 ```http -POST /v4.0/db-instances/restore-from-obs +DELETE /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------------|-------------------------| -| RDSforMySQL:DbInstance.RestoreFromObs | DB 인스턴스 오브젝트 스토리지로부터 복원 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.Delete | DB 사용자 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|----------------------------------------------------------------------------------------| -| restore | Body | Object | O | 복원 정보 객체 | -| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | -| restore.username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | -| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | -| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| pingType | Body | Enum | X | 고가용성 사용 시 Ping 타입
- 기본값: `INSERT`
- `INSERT`
- `SELECT` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbVersion": "MYSQL_V8028", - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "tenantId":"tenant-id", - "username":"username", - "password":"password", - "targetContainer":"targetContainer", - "objectPath":"objectPath" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 사용자 수정하기 + +```http +PUT /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceUser.Modify | DB 사용자 수정하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| authorityType | Body | Enum | X | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- CACHING_SHA2: `caching_sha2_password 인증 (MySQL 전용)`
- SHA256: `sha256_password 인증 (MySQL 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | + +
예시 +

+ +```json +{ + "dbPassword": "dbPassword", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" } ``` @@ -1730,15 +1945,30 @@ POST /v4.0/db-instances/restore-from-obs #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

---- +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` +

+
+ +--- -### DB 인스턴스 삭제 보호 설정 변경하기 +### DB 인스턴스 삭제 보호 설정 변경 ```http PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection @@ -1746,21 +1976,90 @@ PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | DB 인스턴스 삭제 보호 설정 변경 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | + +
예시 +

+ +```json +{ + "useDeletionProtection": false +} +``` + +

+
#### 응답 이 API는 응답 본문을 반환하지 않습니다. +--- + +### DB 인스턴스 강제 재시작하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/force-restart +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.ForceRestart | DB 인스턴스 강제 재시작하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 고가용성 정보 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/high-availability +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 고가용성 정보 보기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| useHighAvailability | Body | Boolean | 고가용성 사용 여부
- 기본값: `false` | +| haStatus | Body | Enum | 고가용성 상태
- CREATED: `생성됨`
- STABLE: `정상`
- PAUSING: `일시 중지 중`
- DISABLE: `정지`
- DISABLE_MASTER_IN_REPLICATION: `마스터 비정상 복제 감지로 인한 고가용성 중단`
- DISABLE_MHA_PROCESS: `고가용성 프로세스 중단`
- DISABLE_REPLICATION_STOP: `복제 중단으로 인한 고가용성 중단`
- DISABLE_REPLICATION_DELAY: `복제 지연으로 인한 고가용성 중단`
- FAILOVER_STARTED: `장애 조치 시작`
- FAILOVER_FAILED: `장애 조치 실패`
- FAILOVER_COMPLETED: `장애 조치 완료`
- DELETED: `삭제됨`
- PAUSED: `일시 중지`
- PAUSED_DUE_TO_TASK: `작업으로 인한 일시 중지`
- MASTER_FAILURE_DETECTION: `마스터 장애 감지` | +| pingInterval | Body | Number | Ping 간격(초) | +| pingType | Body | String | Ping 방식 | +
예시

@@ -1770,7 +2069,11 @@ PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "useHighAvailability": false, + "haStatus": "CREATED", + "pingInterval": 1, + "pingType": "pingType-example" } ``` @@ -1779,58 +2082,97 @@ PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection --- -### 고가용성 상태 - -| 상태 | 설명 | -|----------------------------------|---------------------------------| -| `CREATED` | 고가용성이 생성된 경우 | -| `STABLE` | 고가용성이 정상인 경우 | -| `PAUSING` | 고가용성이 일시 중지 중인 경우 | -| `PAUSED` | 고가용성이 일시 중지된 경우 | -| `PAUSED_DUE_TO_TASK` | 작업으로 인해 고가용성이 일시 중지된 경우 | -| `DISABLE_MASTER_IN_REPLICATION` | 마스터 비정상 복제 감지로 고가용성이 중단된 경우 | -| `DISABLE_MHA_PROCESS` | 고가용성 프로세스가 중단된 경우 | -| `DISABLE_REPLICATION_STOP` | 복제 중단으로 인해 고가용성이 중단된 경우 | -| `DISABLE_REPLICATION_DELAY` | 복제 지연으로 인해 고가용성이 중단된 경우 | -| `MASTER_FAILURE_DETECTION` | 마스터 장애가 감지된 경우 | -| `FAILOVER_STARTED` | 장애 조치가 시작된 경우 | -| `FAILOVER_FAILED` | 장애 조치가 실패한 경우 | -| `FAILOVER_COMPLETED` | 장애 조치가 완료된 경우 | -| `DELETED` | 고가용성이 삭제된 경우 | +### 고가용성 수정하기 + +```http +PUT /v4.0/db-instances/{dbInstanceId}/high-availability +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Modify | 고가용성 수정하기 | + +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +

예시 +

+ +```json +{ + "useHighAvailability": false, + "pingInterval": 1 +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### 고가용성 정보 보기 +### 고가용성 일시 중지하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/high-availability +POST /v4.0/db-instances/{dbInstanceId}/high-availability/pause ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Pause | 고가용성 일시 중지하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|---------|---------------------------------------------------------------------------------------------------------------------| -| useHighAvailability | Body | Boolean | 고가용성 사용 여부 | -| haStatus | Body | Enum | 고가용성 상태 | -| pingInterval | Body | Number | Ping 간격(초) | -| pingType | Body | Enum | Ping 타입
- `INSERT`
- `SELECT` | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시 -

```json @@ -1840,47 +2182,58 @@ GET /v4.0/db-instances/{dbInstanceId}/high-availability "resultMessage": "SUCCESS", "isSuccessful": true }, - "useHighAvailability": true, - "haStatus": "STABLE", - "pingInterval": 3, - "pingType": "INSERT" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-
--- -### 고가용성 수정하기 +### 고가용성 복구하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/high-availability +POST /v4.0/db-instances/{dbInstanceId}/high-availability/repair ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|-----------| -| RDSforMySQL:HighAvailability.Modify | 고가용성 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Repair | 고가용성 복구하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|---------|----|------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | -| pingType | Body | Enum | X | 고가용성 사용 시 Ping 타입
- `INSERT`
- `SELECT` | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 고가용성 사용 시 필수값 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- ### 고가용성 다시 시작하기 @@ -1891,142 +2244,190 @@ POST /v4.0/db-instances/{dbInstanceId}/high-availability/resume #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:HighAvailability.Resume | 고가용성 다시 시작하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### 고가용성 일시 중지하기 +
예시 +

-```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/pause +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|----------------------------------------------------|--------------| -| RDSforMySQL:HighAvailability.Pause | 고가용성 일시 중지하기 | - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 고가용성 복구하기 +### 고가용성 분리하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/repair +POST /v4.0/db-instances/{dbInstanceId}/high-availability/split ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|-----------| -| RDSforMySQL:HighAvailability.Repair | 고가용성 복구하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:HighAvailability.Split | 고가용성 분리하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 고가용성 분리하기 +### 로그 파일 목록 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/split +GET /v4.0/db-instances/{dbInstanceId}/log-files ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|-----------| -| RDSforMySQL:HighAvailability.Split | 고가용성 분리하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceLog.List | 로그 파일 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| logFiles | Body | Array | 로그 파일 목록 | +| logFiles.logFileName | Body | String | 로그 파일 이름 | +| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- ERROR
- BINLOG
- GENERAL
- SLOW_QUERY
- AUDIT
- BACKUP | +| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | +| logFiles.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "logFiles": [ + { + "logFileName": "logFileName-example", + "logFileType": "ERROR", + "logFileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
--- -### 데이터 스토리지 정보 보기 +### 로그 파일 내보내기 ```http -GET /v4.0/db-instances/{dbInstanceId}/storage-info +POST /v4.0/db-instances/{dbInstanceId}/log-files/export ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceLog.Export | 로그 파일 내보내기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| logFileNames | Body | Array | O | 로그 파일 이름 목록 | +| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 회원 또는 IAM 멤버 ID | +| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | + +
예시 +

-| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +```json +{ + "logFileNames": [], + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|---------|--------------------------------------------------------------------------------------| -| storageType | Body | Enum | 데이터 스토리지 타입 | -| storageSize | Body | Number | 데이터 스토리지 크기(GB) | -| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- `DETACHED`: 부착되지 않음
- `ATTACHED`: 부착됨
- `DELETED`: 삭제됨 | -| storageAutoscale | Body | Object | 데이터 스토리지 자동 확장 객체 | -| storageAutoscale.useStorageAutoscale | Body | Boolean | 스토리지 자동 확장 여부 | -| storageAutoscale.threshold | Body | Number | 자동 확장 조건(%) | -| storageAutoscale.maxStorageSize | Body | Number | 자동 확장 최대 크기(GB) | -| storageAutoscale.cooldownTime | Body | Number | 자동 확장 쿨다운 시간(분) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2038,89 +2439,103 @@ GET /v4.0/db-instances/{dbInstanceId}/storage-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageType": "General SSD", - "storageSize": 20, - "storageStatus": "ATTACHED", - "storageAutoscale": { - "useStorageAutoscale": true, - "threshold": 80, - "maxStorageSize": 100, - "cooldownTime": 10 - } + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- --- -### 데이터 스토리지 정보 수정하기 +### 로그 파일 내용 보기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/storage-info +GET /v4.0/db-instances/{dbInstanceId}/log-files/{logFileName} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstanceLog.Get | 로그 파일 내용 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: 현재값
- 최댓값: `2048` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| logFileName | URL | UUID | O | 로그 파일 이름 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| content | Body | String | 로그 파일 내용 (최대 65533 bytes) | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "content": "content-example" +} +``` + +

+
--- -### 백업 정보 보기 +### DB 인스턴스 유지 관리 목록 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/backup-info +GET /v4.0/db-instances/{dbInstanceId}/maintenances ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.List | DB 인스턴스 유지 관리 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| type | Query | String | X | | +| statuses | Query | String | X | | +| category | Query | String | X | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|---------|----------------| -| backupPeriod | Body | Number | 백업 보관 기간(일) | -| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | -| backupRetryCount | Body | Number | 백업 재시도 횟수 | -| replicationRegion | Body | Enum | 백업 복제 리전 | -| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | -| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 유지 관리 목록 갯수 | +| maintenances | Body | Array | 유지 관리 목록 | +| maintenances.maintenanceId | Body | UUID | 유지 관리 아이디 | +| maintenances.dbInstanceId | Body | UUID | DB 인스턴스 아이디 | +| maintenances.category | Body | Enum | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| maintenances.description | Body | String | 유지 관리 설명 | +| maintenances.type | Body | Enum | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| maintenances.payload | Body | Object | 유지 관리 타입에 따른 Payload | +| maintenances.required | Body | Boolean | 유지 관리 필수 여부 | +| maintenances.deadlineYmdt | Body | DateTime | 유지 관리 강제 적용 일시 | +| maintenances.status | Body | Enum | 유지 관리 상태
- PENDING: `대기`
- READY: `준비`
- RUNNING: `실행 중`
- COMPLETED: `완료`
- FAILED: `실패`
- EXCLUDED: `제외`
- DELETED: `삭제`
- UNKNOWN | +| maintenances.executionType | Body | Enum | 유지 관리 실행 타입
- SCHEDULED: `예약 실행 (유지 관리 기간 자동 실행)`
- MANUAL: `수동 실행 (즉시 실행)`
- FORCED: `강제 실행 (데드라인 초과 자동 실행)` | +| maintenances.addedYmdt | Body | DateTime | 유지 관리 스케줄 등록 일시 | +| maintenances.executionStartedYmdt | Body | DateTime | 유지 관리 시작 일시 | +| maintenances.executionCompletedYmdt | Body | DateTime | 유지 관리 종료 일시 |
예시

@@ -2132,15 +2547,23 @@ GET /v4.0/db-instances/{dbInstanceId}/backup-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "backupPeriod": 1, - "ftwrlWaitTimeout": 1800, - "backupRetryCount": 0, - "replicationRegion": null, - "useBackupLock": false, - "backupSchedules": [ + "totalCounts": 1, + "maintenances": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" + "maintenanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": { + }, + "required": false, + "deadlineYmdt": "2023-12-31T15:00:00+09:00", + "status": "PENDING", + "executionType": "SCHEDULED", + "addedYmdt": "2023-12-31T15:00:00+09:00", + "executionStartedYmdt": "2023-12-31T15:00:00+09:00", + "executionCompletedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -2149,48 +2572,41 @@ GET /v4.0/db-instances/{dbInstanceId}/backup-info

- --- -### 백업 정보 수정하기 +### DB 인스턴스 유지 관리 즉시 실행하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/backup-info +POST /v4.0/db-instances/{dbInstanceId}/maintenances/execute-now ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.Execute | DB 인스턴스 유지 관리 즉시 실행하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------------------------|------|---------|----|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | -| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | -| replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| configId | Body | String | O | 설정 아이디 | +| category | Body | Enum | O | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| description | Body | String | X | 유지 관리 설명 | +| type | Body | Enum | O | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| payload | Body | String | O | 유지 관리 타입에 따른 Payload |
예시

```json { - "backupPeriod": 5, - "useBackupLock": true, - "backupSchedules": [ - { - "backupWndBgnTime": "01:00:00", - "backupWndDuration": "TWO_HOURS" - } - ] + "configId": "configId-example", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": "payload-example" } ``` @@ -2199,138 +2615,134 @@ PUT /v4.0/db-instances/{dbInstanceId}/backup-info #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 네트워크 정보 보기 +### DB 인스턴스 유지 관리 예약하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/network-info +POST /v4.0/db-instances/{dbInstanceId}/maintenances/schedule ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMySQL:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.Update | DB 인스턴스 유지 관리 예약하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------------------------------------------------------------------------------------------------------------------------------| -| availabilityZone | Body | Enum | DB 인스턴스를 생성할 가용성 영역 | -| subnet | Body | Object | 서브넷 객체 | -| subnet.subnetId | Body | UUID | 서브넷의 식별자 | -| subnet.subnetName | Body | UUID | 서브넷을 식별할 수 있는 이름 | -| subnet.subnetCidr | Body | UUID | 서브넷의 CIDR | -| endPoints | Body | Array | 접속 정보 목록 | -| endPoints.domain | Body | String | 도메인 | -| endPoints.ipAddress | Body | String | IP 주소 | -| endPoints.endPointType | Body | Enum | 접속 정보 타입
-`EXTERNAL`: 외부 접속 도메인
-`INTERNAL`: 내부 접속 도메인
-`PUBLIC`: (Deprecated) 외부 접속 도메인
-`PRIVATE`: (Deprecated) 내부 접속 도메인 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| configId | Body | String | O | 설정 아이디 | +| category | Body | Enum | O | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| description | Body | String | X | 유지 관리 설명 | +| type | Body | Enum | O | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| payload | Body | String | O | 유지 관리 타입에 따른 Payload |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "availabilityZone": "kr-pub-a", - "subnet": { - "subnetId": "bd453789-34ae-416c-9f78-05b9e43a46be", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/16" - }, - "endPoints": [ - { - "domain": "ea548a78-d85f-43b4-8ddf-c88d999b9905.internal.kr1.mysql.rds.nhncloudservice.com", - "ipAddress": "192.168.0.2", - "endPointType": "INTERNAL" - } - ] + "configId": "configId-example", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": "payload-example" } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- -### 네트워크 정보 수정하기 +### DB 인스턴스 유지 관리 삭제하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/network-info +DELETE /v4.0/db-instances/{dbInstanceId}/maintenances/{maintenanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMySQL:DbInstance.Modify | DB 인스턴스 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Maintenance.Delete | DB 인스턴스 유지 관리 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| maintenanceId | URL | UUID | O | 유지 관리 아이디 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### DB 사용자 목록 보기 +### 네트워크 정보 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/db-users +GET /v4.0/db-instances/{dbInstanceId}/network-info ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|---------------------| -| RDSforMySQL:DbInstanceUser.List | DB 인스턴스 내 사용자 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 네트워크 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|-----------------------------------------------------------------------------------------------------------------------------| -| dbUsers | Body | Array | DB 사용자 목록 | -| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | -| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | -| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | -| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `UPDATING`: 수정 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbUsers.authenticationPlugin | Body | Enum | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| dbUsers.tlsOption | Body | Enum | TLS Option
- NONE
- SSL
- X509 | -| dbUsers.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbUsers.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| availabilityZone | Body | String | DB 인스턴스를 생성할 가용성 영역 | +| subnet | Body | Object | 서브넷 객체 | +| subnet.subnetId | Body | UUID | 서브넷의 식별자 | +| subnet.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnet.subnetCidr | Body | String | 서브넷의 CIDR | +| endPoints | Body | Array | 접속 정보 목록 | +| endPoints.domain | Body | String | 도메인 | +| endPoints.ipAddress | Body | String | IP 주소 | +| endPoints.endPointType | Body | String | 접속 정보 타입 |
예시

@@ -2342,17 +2754,17 @@ GET /v4.0/db-instances/{dbInstanceId}/db-users "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbUsers": [ + "availabilityZone": "kr-pub-a", + "subnet": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example" + }, + "endPoints": [ { - "dbUserId": "4b3d530b-fd02-4d59-a620-83d019a67bbb", - "dbUserName": "db-user", - "host": "%", - "authorityType": "DDL", - "dbUserStatus": "STABLE", - "authenticationPlugin": "NATIVE", - "tlsOption": "NONE", - "createdYmdt": "2023-03-17T14:02:29+09:00", - "updatedYmdt": "2023-03-17T14:02:31+09:00" + "domain": "domain-example", + "ipAddress": "ipAddress-example", + "endPointType": "endPointType-example" } ] } @@ -2363,45 +2775,31 @@ GET /v4.0/db-instances/{dbInstanceId}/db-users --- -### DB 사용자 생성하기 +### 네트워크 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/db-users +PUT /v4.0/db-instances/{dbInstanceId}/network-info ``` - #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceUser.Create | DB 인스턴스 내 사용자 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | 네트워크 정보 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserName | Body | String | O | DB 사용자 계정 이름
- 최소 길이: `1`
- 최대 길이: `32` | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | -| host | Body | String | O | DB 사용자 계정의 호스트명
- 예시: `1.1.1.%` | -| authorityType | Body | Enum | O | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- 기본값: `NATIVE`(미지원 시 `CACHING_SHA2`)
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | - -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 설정할 수 있습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 |

예시

```json { - "dbUserName": "db-user", - "dbPassword": "password", - "host": "1.1.1.%", - "authorityType": "CRUD", - "authenticationPlugin": "NATIVE", - "tlsOption": "NONE" + "usePublicAccess": false } ``` @@ -2410,117 +2808,222 @@ POST /v4.0/db-instances/{dbInstanceId}/db-users #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 사용자 수정하기 +### DB 인스턴스 승격하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +POST /v4.0/db-instances/{dbInstanceId}/promote ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceUser.Modify | DB 인스턴스 내 사용자 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Promote | DB 인스턴스 승격하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | -| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | -| authorityType | Body | Enum | X | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- SHA256: `sha256_password`
- CACHING_SHA2: `caching_sha2_password` | -| tlsOption | Body | Enum | X | TLS Option
- NONE
- SSL
- X509 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 -> [주의] -> DB 인스턴스의 `supportAuthenticationPlugin` 값이 true인 DB 인스턴스만 `authenticationPlugin`, `tlsOption`의 값을 수정할 수 있습니다. -> `authenticationPlugin`의 값은 `dbPassword`와 동시에 수정을 해야 합니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "authorityType": "DDL" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### DB 사용자 삭제하기 +### DB 인스턴스 재구축하기 ```http -DELETE /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +POST /v4.0/db-instances/{dbInstanceId}/rebuild ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceUser.Delete | DB 인스턴스 내 사용자 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Rebuild | DB 인스턴스 재구축하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 스키마 목록 보기 +### DB 인스턴스 복제하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/db-schemas +POST /v4.0/db-instances/{dbInstanceId}/replicate ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|---------------------| -| RDSforMySQL:DbInstanceSchema.List | DB 인스턴스 내 스키마 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Replicate | DB 인스턴스 복제하기 | -#### 요청 +#### 공통 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | X | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부 | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | X | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | X | 데이터 스토리지 타입 | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | X | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)`
- KR2: `한국(평촌)`
- JP1: `일본(도쿄)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | + +
예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, + "network": { + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "backup": { + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 0, + "replicationRegion": "KR1", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + } +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|------------------------------------------------------------------------------------------------------| -| dbSchemas | Body | Array | DB 스키마 목록 | -| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | -| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | -| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbSchemas.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2532,14 +3035,7 @@ GET /v4.0/db-instances/{dbInstanceId}/db-schemas "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSchemas": [ - { - "dbSchemaId": "7c9a94b8-86c1-435d-8af2-82a5e9d53fd4", - "dbSchemaName": "schema", - "dbSchemaStatus": "STABLE", - "createdYmdt": "2023-03-20T13:37:45+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2548,93 +3044,111 @@ GET /v4.0/db-instances/{dbInstanceId}/db-schemas --- -### DB 스키마 생성하기 +### DB 인스턴스 재시작하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/db-schemas +POST /v4.0/db-instances/{dbInstanceId}/restart ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceSchema.Create | DB 인스턴스 내 스키마 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Restart | DB 인스턴스 재시작하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|--------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaName | Body | String | O | DB 스키마 이름 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` | -### DB 스키마 삭제하기 +

예시 +

-```http -DELETE /v4.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} +```json +{ + "useOnlineFailover": false, + "executeBackup": false, + "waitReplicationDelay": false, + "useReadOnly": false +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------------|--------------------| -| RDSforMySQL:DbInstanceSchema.Delete | DB 인스턴스 내 스키마 삭제하기 | +

+
-#### 요청 +#### 응답 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaId | URL | UUID | O | DB 스키마의 식별자 | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 로그 파일 목록 보기 +### DB 인스턴스 복원 정보 조회 ```http -GET /v4.0/db-instances/{dbInstanceId}/log-files +GET /v4.0/db-instances/{dbInstanceId}/restoration-info ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|-----------------------| -| RDSforMySQL:DbInstanceLog.List | DB 인스턴스 내 로그 파일 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | DB 인스턴스 복원 정보 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|-------|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileTypes | Query | Array | X | 로그 파일 타입 종류 목록
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| logFiles | Body | Array | 로그 파일 목록 | -| logFiles.logFileName | Body | String | 로그 파일명 | -| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | -| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | -| logFiles.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| oldestRestorableYmdt | Body | DateTime | 가장 오래된 복원 가능한 시각 | +| latestRestorableYmdt | Body | DateTime | 가장 최신의 복원 가능한 시각 | +| restorableBackups | Body | Array | 복원 가능한 백업 목록 | +| restorableBackups.backup | Body | Object | 백업 정보 객체 | +| restorableBackups.backup.backupId | Body | UUID | 백업의 식별자 | +| restorableBackups.backup.backupName | Body | String | 백업 이름 | +| restorableBackups.backup.backupStatus | Body | Enum | 백업 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| restorableBackups.backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| restorableBackups.backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | +| restorableBackups.backup.dbVersion | Body | Enum | DB 엔진 유형 | +| restorableBackups.backup.backupType | Body | Enum | 백업 유형
- AUTO
- MANUAL | +| restorableBackups.backup.backupSize | Body | Number | 백업 크기 | +| restorableBackups.backup.useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | +| restorableBackups.backup.failoverCount | Body | Number | 장애 조치 횟수 | +| restorableBackups.backup.binLogFileName | Body | String | 바이너리 로그 파일 이름 | +| restorableBackups.backup.binLogPosition | Body | Object | 바이너리 로그 파일 위치 | +| restorableBackups.backup.createdYmdt | Body | DateTime | 백업 생성 일시 | +| restorableBackups.backup.updatedYmdt | Body | DateTime | 백업 갱신 일시 | +| restorableBackups.restorableBinLogs | Body | Array | 해당 백업을 이용하여 복원 가능한 바이너리 로그 이름 목록 |
예시

@@ -2646,12 +3160,28 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files "resultMessage": "SUCCESS", "isSuccessful": true }, - "logFiles": [ + "oldestRestorableYmdt": "2023-12-31T15:00:00+09:00", + "latestRestorableYmdt": "2023-12-31T15:00:00+09:00", + "restorableBackups": [ { - "logFileName": "xtra_full.log-20230317", - "logFileType": "BACKUP", - "logFileSize": 4096, - "createdYmdt": "2023-03-17T14:02:29+09:00" + "backup": { + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "dbVersion": "MYSQL_V8036", + "backupType": "AUTO", + "backupSize": 1, + "useBackupLock": false, + "failoverCount": 1, + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + }, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + }, + "restorableBinLogs": [] } ] } @@ -2662,33 +3192,32 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files --- -### 로그 파일 내용 보기 +### 복원될 마지막 쿼리 조회 ```http -GET /v4.0/db-instances/{dbInstanceId}/log-files/{logFileName} +GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|-----------------------| -| RDSforMySQL:DbInstanceLog.Get | DB 인스턴스 내 로그 파일 내용 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 복원될 마지막 쿼리 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|--------|----|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileName | URL | String | O | 로그 파일명 | -| logFileType | Query | Enum | O | 로그 파일 타입 종류
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------|------|--------|---------------------------| -| content | Body | String | 로그 파일 내용(최대 65533 Bytes) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| executedYmdt | Body | DateTime | 쿼리 수행 일시 | +| lastQuery | Body | String | 마지막 수행 쿼리 |

예시

@@ -2700,7 +3229,8 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files/{logFileName} "resultMessage": "SUCCESS", "isSuccessful": true }, - "content": "..." + "executedYmdt": "2023-12-31T15:00:00+09:00", + "lastQuery": "lastQuery-example" } ``` @@ -2709,41 +3239,145 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files/{logFileName} --- -### 로그 파일 내보내기 +### DB 인스턴스 복원 ```http -POST /v4.0/db-instances/{dbInstanceId}/log-files/export +POST /v4.0/db-instances/{dbInstanceId}/restore ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|----------------------| -| RDSforMySQL:DbInstanceLog.Export | DB 인스턴스 내 로그 파일 내보내기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Restore | DB 인스턴스 복원 | -#### 요청 +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자. 미입력 시 원본 인스턴스의 사양이 적용됩니다. | +| dbPort | Body | Number | X | DB 포트 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | X | 스토리지 정보 객체. 미입력 시 원본 인스턴스의 스토리지 설정이 적용됩니다. | +| storage.storageType | Body | Enum | X | 스토리지 타입. 미입력 시 원본 인스턴스의 스토리지 타입이 적용됩니다. | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB). 미입력 시 원본 인스턴스의 스토리지 크기가 적용됩니다.
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| network | Body | Object | X | 네트워크 정보 객체. 미입력 시 원본 인스턴스의 네트워크 설정이 적용됩니다. | +| network.subnetId | Body | UUID | X | 서브넷의 식별자. 미입력 시 원본 인스턴스 값 사용 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역. 미입력 시 랜덤 선택 | +| backup | Body | Object | X | 백업 정보 객체. 미입력 시 원본 인스턴스의 백업 설정이 적용됩니다. | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일). 미입력 시 원본 인스턴스의 백업 보관 기간이 적용됩니다.
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)`
- KR2: `한국(평촌)`
- JP1: `일본(도쿄)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록. 미입력 시 원본 인스턴스의 백업 스케쥴이 적용됩니다. | +| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.restoreType | Body | Enum | O | 복원 타입
- TIMESTAMP: `복원 가능한 시간 이내의 시간을 이용한 시점 복원`
- BINLOG: `복원 가능한 바이너리 로그 위치를 이용한 시점 복원`
- BACKUP: `기존에 생성한 백업을 이용한 스냅숏 복원` | +| restore.binLog.binLogFileName | Body | String | X | 복원에 사용할 바이너리 로그 이름 | +| restore.binLog.binLogPosition | Body | Object | X | 복원에 사용할 바이너리 로그 위치 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자. 미입력 시 원본 인스턴스의 파라미터 그룹이 적용됩니다. | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록. 미입력 시 원본 인스턴스의 보안 그룹이 적용됩니다. | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | + +#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.restoreYmdt | Body | DateTime | X | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | + +복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능합니다. + +#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 | +| restore.binLog | Body | Object | X | 복원에 사용할 바이너리 로그 정보 객체 | + +바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. + +#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|--------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileNames | Body | Array | O | 로그 파일명 목록
- 최소 크기: `1` | -| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 |

예시

```json { - "logFileNames": ["xtra_full.log-20230317"], - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "logs/backup" + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "useHighAvailability": false, + "pingInterval": 3, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "backup": { + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR1", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + }, + "restore": { + "restoreType": "TIMESTAMP", + "binLog": { + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + } + } + }, + "useDefaultNotification": false, + "useSlowQueryAnalysis": true, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDeletionProtection": false } ``` @@ -2752,41 +3386,54 @@ POST /v4.0/db-instances/{dbInstanceId}/log-files/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### BinLog 목록 보기 +### DB 인스턴스 시작하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/binlogs +POST /v4.0/db-instances/{dbInstanceId}/start ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|---------------| -| RDSforMySQL:DbInstanceBinLog.List | BinLog 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Start | DB 인스턴스 시작하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|---------|----|---------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| deletable | Query | Boolean | X | 삭제 가능한 BinLog만 조회할지 여부
- `true`: 마지막 BinLog 제외
- `false`: 전체
- 기본값: `false` | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|----------|-----------------------------------| -| binLogs | Body | Array | BinLog 파일 목록 | -| binLogs.binLogFileName | Body | String | BinLog 파일명 | -| binLogs.binLogFileSize | Body | Number | BinLog 파일 크기(Byte) | -| binLogs.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2798,13 +3445,7 @@ GET /v4.0/db-instances/{dbInstanceId}/binlogs "resultMessage": "SUCCESS", "isSuccessful": true }, - "binLogs": [ - { - "binLogFileName": "mysql-bin.000001", - "binLogFileSize": 1073741824, - "createdYmdt": "2023-03-17T14:02:29+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2813,40 +3454,31 @@ GET /v4.0/db-instances/{dbInstanceId}/binlogs --- -### BinLog 삭제 +### DB 인스턴스 정지하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/binlogs/purge +POST /v4.0/db-instances/{dbInstanceId}/stop ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|------------| -| RDSforMySQL:DbInstanceBinLog.Purge | BinLog 삭제 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Stop | DB 인스턴스 정지하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| lastBinLogFileName | Body | String | O | 삭제할 마지막 BinLog 파일명(해당 파일 직전까지 삭제됩니다) | - -

예시 -

- -```json -{ - "lastBinLogFileName": "mysql-bin.000010" -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2857,7 +3489,8 @@ POST /v4.0/db-instances/{dbInstanceId}/binlogs/purge "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2866,35 +3499,38 @@ POST /v4.0/db-instances/{dbInstanceId}/binlogs/purge --- -### 인증서 파일 목록 보기 +### 스토리지 정보 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/certificates +GET /v4.0/db-instances/{dbInstanceId}/storage-info ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------------|---------------| -| RDSforMySQL:DbInstanceCertificate.List | 인증서 파일 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Get | 스토리지 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|---------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|------------------------------------------------------------------------------| -| certificates | Body | Array | 인증서 파일 목록 | -| certificates.fileName | Body | String | 인증서 파일명 | -| certificates.certificateType | Body | Enum | 인증서 타입
- `CA_FILE`: CA 인증서
- `CERT_FILE`: 인증서
- `KEY_FILE`: 비밀 키 | -| certificates.fileSize | Body | Number | 인증서 파일 크기(Byte) | -| certificates.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageType | Body | String | 데이터 스토리지 타입 | +| storageSize | Body | Number | 데이터 스토리지 크기(GB) | +| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- DELETED: `삭제됨`
- PENDING_DELETION: `삭제 유예됨`
- DELETION_RESERVED: `삭제 예약됨 (스냅샷 정리 대기)`
- DETACHED: `해제됨`
- ATTACHED: `할당됨` | +| storageAutoscale | Body | Object | 데이터 스토리지 자동 확장 객체 | +| storageAutoscale.useStorageAutoscale | Body | Boolean | 스토리지 자동 확장 여부 | +| storageAutoscale.threshold | Body | Number | 자동 확장 조건(%) | +| storageAutoscale.maxStorageSize | Body | Number | 자동 확장 최대 크기(GB) | +| storageAutoscale.cooldownTime | Body | Number | 자동 확장 쿨다운 시간(분) |

예시

@@ -2906,14 +3542,15 @@ GET /v4.0/db-instances/{dbInstanceId}/certificates "resultMessage": "SUCCESS", "isSuccessful": true }, - "certificates": [ - { - "fileName": "ca.pem", - "certificateType": "CA_FILE", - "fileSize": 2048, - "createdYmdt": "2023-03-17T14:02:29+09:00" - } - ] + "storageType": "General SSD", + "storageSize": 1, + "storageStatus": "DELETED", + "storageAutoscale": { + "useStorageAutoscale": false, + "threshold": 1, + "maxStorageSize": 1, + "cooldownTime": 1 + } } ``` @@ -2922,41 +3559,44 @@ GET /v4.0/db-instances/{dbInstanceId}/certificates --- -### 인증서 파일 내보내기 +### 스토리지 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/certificates/upload +PUT /v4.0/db-instances/{dbInstanceId}/storage-info ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------------|-------------| -| RDSforMySQL:DbInstanceCertificate.Export | 인증서 파일 내보내기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbInstance.Modify | 스토리지 정보 수정하기 | -#### 요청 +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최댓값: `2048` | +| storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|--------|----|------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| certificateTypes | Body | Array | O | 업로드할 인증서 타입
- `CA_FILE`: CA 인증서
- `CERT_FILE`: 인증서
- `KEY_FILE`: 비밀 키 | -| tenantId | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 인증서 파일의 경로 | +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` |

예시

```json { - "certificateTypes": ["CA_FILE", "CERT_FILE", "KEY_FILE"], - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "certificates/" + "storageSize": 1, + "storageAutoscale": { + "useStorageAutoscale": false + } } ``` @@ -2965,10 +3605,27 @@ POST /v4.0/db-instances/{dbInstanceId}/certificates/upload #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- ## 백업 @@ -2983,48 +3640,38 @@ POST /v4.0/db-instances/{dbInstanceId}/certificates/upload | `DELETED` | 백업이 삭제된 경우 | | `ERROR` | 오류가 발생한 경우 | -### 백업 상세 보기 +### 백업 목록 조회 ```http -GET /v4.0/backups/{backupId} +GET /v4.0/backups ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------|----------| -| RDSforMySQL:Backup.Get | 백업 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.List | 백업 목록 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------|-----|------|----|---------| -| backupId | URL | UUID | O | 백업의 식별자 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------|------|----------|-----------------| -| backup | Body | Object | 백업 상세 정보 | -| backup.backupId | Body | UUID | 백업의 식별자 | -| backup.regionCode | Body | Enum | 리전 코드 | -| backup.backupName | Body | String | 백업을 식별할 수 있는 이름 | -| backup.backupStatus | Body | Enum | 백업의 현재 상태 | -| backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | -| backup.dbVersion | Body | Enum | DB 엔진 버전 | -| backup.utilVersion | Body | String | 백업에 사용된 xtrabackup 유틸리티 버전 | -| backup.backupType | Body | Enum | 백업 유형 | -| backup.backupMethodType | Body | Enum | 백업 방식 | -| backup.backupFileType | Body | Enum | 백업 파일 유형 | -| backup.backupSize | Body | Number | 백업의 크기(Byte) | -| backup.isReplicable | Body | Boolean | 복제 가능 여부 | -| backup.binLogFileName | Body | String | 바이너리 로그 파일명 | -| backup.binLogPosition | Body | Number | 바이너리 로그 위치 | -| backup.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| backup.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 백업 목록 수 | +| backups | Body | Array | 백업 목록 | +| backups.backupId | Body | UUID | 백업의 식별자 | +| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | +| backups.backupStatus | Body | Enum | 백업의 현재 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| backups.dbVersion | Body | Enum | DB 엔진 유형 | +| backups.utilVersion | Body | String | 유틸리티 버전 | +| backups.backupType | Body | Enum | 백업 유형
- AUTO
- MANUAL | +| backups.backupSize | Body | Number | 백업의 크기(Byte) | +| backups.createdYmdt | Body | DateTime | 생성 일시 | +| backups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3036,25 +3683,21 @@ GET /v4.0/backups/{backupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "backup": { - "backupId": "0017f136-3e01-4530-94aa-20661afe6632", - "regionCode": "KR1", - "backupName": "backup", - "backupStatus": "COMPLETED", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd", - "dbInstanceName": "db-instance", - "dbVersion": "MYSQL_V8028", - "utilVersion": "8.0.28", - "backupType": "AUTO", - "backupMethodType": "FULL", - "backupFileType": "XTRA_BACKUP", - "backupSize": 4996786, - "isReplicable": true, - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 154, - "createdYmdt": "2023-02-21T00:35:00+09:00", - "updatedYmdt": "2023-02-22T00:35:32+09:00" - } + "totalCounts": 1, + "backups": [ + { + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "utilVersion": "utilVersion-example", + "backupType": "AUTO", + "backupSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -3063,46 +3706,47 @@ GET /v4.0/backups/{backupId} --- -### 백업 목록 조회 +### 백업 생성하기 ```http -GET /v4.0/backups +POST /v4.0/backups ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| -| RDSforMySQL:Backup.List | 백업 목록 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.Create | 백업 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupName | Body | String | O | 백업을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| baseBackupId | Body | UUID | X | 원본 백업의 식별자 | +| dbInstanceId | Body | UUID | X | DB 인스턴스의 식별자 | +| backupMethodType | Body | Enum | O | 백업 방식 타입
- FULL: `전체 백업`
- INCREMENTAL: `증분 백업`
- SNAPSHOT: `스냅숏 백업` | + +

예시 +

+ +```json +{ + "backupName": "backupName", + "baseBackupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "backupMethodType": "FULL" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | X | 조회할 목록의 페이지
- 기본값: 1
- 최솟값: `1` | -| size | Query | Number | X | 조회할 목록의 페이지 크기
- 기본값: 20 | -| backupType | Query | Enum | X | 백업 유형
- `AUTO`: 자동
- `MANUAL`: 수동
- 기본값: 전체 | -| dbInstanceId | Query | UUID | X | 원본 DB 인스턴스의 식별자 | -| dbVersion | Query | Enum | X | DB 엔진 유형 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|-----------------------------------| -| totalCounts | Body | Number | 전체 백업 목록 수 | -| backups | Body | Array | 백업 목록 | -| backups.backupId | Body | UUID | 백업의 식별자 | -| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | -| backups.backupStatus | Body | Enum | 백업의 현재 상태 | -| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| backups.dbVersion | Body | Enum | DB 엔진 유형 | -| backups.utilVersion | Body | String | 백업에 사용된 xtrabackup 유틸리티 버전 | -| backups.backupType | Body | Enum | 백업 유형 | -| backups.backupSize | Body | Number | 백업의 크기(Byte) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -3114,21 +3758,7 @@ GET /v4.0/backups "resultMessage": "SUCCESS", "isSuccessful": true }, - "totalCounts": 1, - "backups": [ - { - "backupId": "0017f136-3e01-4530-94aa-20661afe6632", - "backupName": "backup", - "backupStatus": "COMPLETED", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd", - "dbVersion": "MYSQL_V8028", - "utilVersion": "8.0.28", - "backupType": "AUTO", - "backupSize": 4996786, - "createdYmdt": "2023-02-21T00:35:00+09:00", - "updatedYmdt": "2023-02-22T00:35:32+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3137,96 +3767,130 @@ GET /v4.0/backups --- -### 백업 생성하기 +### 백업 삭제하기 ```http -POST /v4.0/backups +DELETE /v4.0/backups/{backupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|---------| -| RDSforMySQL:Backup.Create | 백업 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.Delete | 백업 삭제하기 | -#### 공통 요청 +#### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|--------|----|--------------------------------------------------------------------------------------| -| backupName | Body | String | O | 백업을 식별할 수 있는 이름 | -| backupMethodType | Body | Enum | O | 백업 방식 타입 종류
- `FULL`: 전체 백업
- `INCREMENTAL`: 증분 백업
- `SNAPSHOT`: 스냅숏 백업 | +이 API는 요청 본문을 요구하지 않습니다. -#### 전체 백업(backupMethodType이 `FULL`인 경우) +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|------|----|--------------| -| dbInstanceId | Body | UUID | O | DB 인스턴스의 식별자 | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |

예시

```json { - "backupName": "example-backup-name", - "backupMethodType": "FULL", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 증분 백업(backupMethodType이 `INCREMENTAL`인 경우) +--- -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|------|----|------------| -| baseBackupId | Body | UUID | O | 기준 백업의 식별자 | +### 백업 단건 조회 +```http +GET /v4.0/backups/{backupId} +``` -
예시 -

+#### 필요 권한 -```json -{ - "backupName": "example-backup-name", - "backupMethodType": "INCREMENTAL", - "baseBackupId": "3ae7914f-9b42-4729-b125-87417b72cf36" -} -``` +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Backup.Get | 백업 단건 조회 | -

-
+#### 요청 +이 API는 요청 본문을 요구하지 않습니다. -#### 스냅숏 백업(backupMethodType이 `SNAPSHOT`인 경우) +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|------|----|--------------| -| dbInstanceId | Body | UUID | O | DB 인스턴스의 식별자 | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| backup | Body | Object | 백업 상세 정보 | +| backup.backupId | Body | UUID | 백업의 식별자 | +| backup.regionCode | Body | Enum | 리전 코드
- KR1: `한국(판교)`
- KR2: `한국(평촌)`
- JP1: `일본(도쿄)` | +| backup.backupName | Body | String | 백업을 식별할 수 있는 이름 | +| backup.backupStatus | Body | Enum | 백업의 현재 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | +| backup.dbVersion | Body | Enum | DB 엔진 버전 | +| backup.utilVersion | Body | String | 유틸리티 버전 | +| backup.backupType | Body | Enum | 백업 유형 (AUTO, MANUAL)
- AUTO
- MANUAL | +| backup.backupMethodType | Body | Enum | 백업 방식 (FULL, SNAPSHOT, INCREMENTAL)
- FULL
- INCREMENTAL
- SNAPSHOT | +| backup.backupFileType | Body | Enum | 백업 파일 유형
- XBSTREAM
- TAR_ZSTD
- TAR_LZ4
- TAR_GZIP
- SNAPSHOT | +| backup.backupSize | Body | Number | 백업의 크기(Byte) | +| backup.isReplicable | Body | Boolean | 복제 가능 여부 | +| backup.binLogFileName | Body | String | 바이너리 로그 파일명 | +| backup.binLogPosition | Body | Object | 바이너리 로그 위치 | +| backup.createdYmdt | Body | DateTime | 생성 일시 | +| backup.updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "backupName": "example-backup-name", - "backupMethodType": "SNAPSHOT", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "backup": { + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "regionCode": "KR1", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "dbVersion": "MYSQL_V8036", + "utilVersion": "utilVersion-example", + "backupType": "AUTO", + "backupMethodType": "FULL", + "backupFileType": "XBSTREAM", + "backupSize": 1, + "isReplicable": false, + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + }, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } } ```

- -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- ### 백업 내보내기 @@ -3237,31 +3901,31 @@ POST /v4.0/backups/{backupId}/export #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|---------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Backup.Export | 백업 내보내기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|-----------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 계정 혹은 IAM 회원 ID | +| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 |
예시

```json { - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "backups/backup_file" + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" } ``` @@ -3270,12 +3934,26 @@ POST /v4.0/backups/{backupId}/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | -> [주의] -> 수동 백업의 경우 백업이 수행된 DB 인스턴스가 존재하지 않으면, 백업을 오브젝트 스토리지로 내보낼 수 없습니다. +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -3287,74 +3965,98 @@ POST /v4.0/backups/{backupId}/restore #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Backup.Restore | 백업 복원하기 | -#### 요청 +#### 공통 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------------------------------|------|---------|----|---------------------------------------------------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbPort | Body | Integer | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 ||network|Body|Object|O|네트워크 정보 객체| -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| pingType | Body | Enum | X | 고가용성 사용 시 Ping 타입
- 기본값: `INSERT`
- `INSERT`
- `SELECT` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | X | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | X | 서브넷의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a`
- 기본값: 랜덤 선택 | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입
- 예시: `General SSD`
- 기본값: 원본 DB 인스턴스 값 | -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: 원본 DB 인스턴스 값 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- `KR1`: 한국(판교) 리전
- `KR2`: 한국(평촌) 리전
- `JP1`: 일본(도쿄) 리전 | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| dbPort | Body | Number | X | DB 포트. 미지정 시 원본 인스턴스 값 사용
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| network | Body | Object | X | 네트워크 정보 객체. 미지정 시 원본 인스턴스 값 사용 | +| network.subnetId | Body | UUID | X | 서브넷의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역. 미지정 시 랜덤 선택 | +| storage | Body | Object | X | 스토리지 정보 객체. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageType | Body | Enum | X | 스토리지 타입. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | X | 백업 정보 객체. 미지정 시 원본 인스턴스 백업 설정 사용 | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수. 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)`
- KR2: `한국(평촌)`
- JP1: `일본(도쿄)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부. 미지정 시 원본 인스턴스 값 사용 | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록. 미지정 시 원본 인스턴스 값 사용 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` |
예시

```json - { - "dbInstanceName": "db-instance-restore", - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbPort": 10000, - "parameterGroupId": "132d383c-38e3-468a-a826-5e9a8fff15d0", + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, "availabilityZone": "kr-pub-a" }, "storage": { "storageType": "General SSD", - "storageSize": 20 + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 0, + "replicationRegion": "KR1", + "useBackupLock": false, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", + "backupWndBgnTime": "backupWndBgnTime-example", "backupWndDuration": "HALF_AN_HOUR" } ] @@ -3367,37 +4069,26 @@ POST /v4.0/backups/{backupId}/restore #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### 백업 삭제하기 +

예시 +

-```http -DELETE /v4.0/backups/{backupId} +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|-------------------------------------------|---------| -| RDSforMySQL:Backup.Delete | 백업 삭제하기 | - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------|-----|------|----|---------| -| backupId | URL | UUID | O | 백업의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -3420,30 +4111,26 @@ GET /v4.0/db-security-groups #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|----------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroup.List | DB 보안 그룹 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | X | 조회할 목록의 페이지
- 기본값: 1
- 최솟값: `1` | -| size | Query | Number | X | 조회할 목록의 페이지 크기
- 기본값: 20 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-----------------------------------| -| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | -| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 DB 보안 그룹 목록 수 | +| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | +| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3455,14 +4142,15 @@ GET /v4.0/db-security-groups "resultMessage": "SUCCESS", "isSuccessful": true }, + "totalCounts": 1, "dbSecurityGroups": [ { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", "progressStatus": "NONE", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2022-02-19T19:18:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3473,48 +4161,65 @@ GET /v4.0/db-security-groups --- -### DB 보안 그룹 상세 보기 +### DB 보안 그룹 생성하기 ```http -GET /v4.0/db-security-groups/{dbSecurityGroupId} +POST /v4.0/db-security-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|----------------| -| RDSforMySQL:DbSecurityGroup.Get | DB 보안 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroup.Create | DB 보안 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` | +| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | +| rules.direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| rules.etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| rules.port | Body | Object | O | 포트 객체 | +| rules.port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| rules.cidr | Body | String | O | CIDR | +| rules.description | Body | String | X | 보안 그룹 규칙에 대한 추가 정보 | + +

예시 +

+ +```json +{ + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example", + "rules": [ + { + "direction": "INGRESS", + "etherType": "IPV4", + "port": { + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 + }, + "cidr": "cidr-example", + "description": "description-example" + } + ] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|----------|--------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| rules | Body | Array | DB 보안 그룹 규칙 목록 | -| rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | -| rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.port | Body | Object | 포트 객체 | -| rules.port.portType | Body | Enum | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다.
- `PORT`: 지정된 포트값으로 설정됩니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | 최소 포트 범위 | -| rules.port.maxPort | Body | Number | 최대 포트 범위 | -| rules.cidr | Body | String | 허용할 트래픽의 원격 소스 | -| rules.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| rules.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 |
예시

@@ -3526,30 +4231,7 @@ GET /v4.0/db-security-groups/{dbSecurityGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSecurityGroup": { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", - "progressStatus": "NONE", - "rules": [ - { - "ruleId": "17c88ef6-95f1-4678-84f9-fee1b22e250d", - "description": "description", - "direction": "INGRESS", - "etherType": "IPV4", - "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 - }, - "cidr": "0.0.0.0/0", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } - ], - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3558,68 +4240,113 @@ GET /v4.0/db-security-groups/{dbSecurityGroupId} --- -### DB 보안 그룹 생성하기 +### DB 보안 그룹 삭제하기 ```http -POST /v4.0/db-security-groups +DELETE /v4.0/db-security-groups/{dbSecurityGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| -| RDSforMySQL:DbSecurityGroup.Create | DB 보안 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroup.Delete | DB 보안 그룹 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### DB 보안 그룹 상세 보기 + +```http +GET /v4.0/db-security-groups/{dbSecurityGroupId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroup.Get | DB 보안 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | -| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | -| rules.description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | -| rules.port | Body | Object | O | 포트 객체 | -| rules.port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 필요하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| rules | Body | Array | DB 보안 그룹 규칙 목록 | +| rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | +| rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | +| rules.direction | Body | Enum | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| rules.etherType | Body | Enum | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| rules.port | Body | Object | 포트 객체 | +| rules.port.portType | Body | Enum | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| rules.port.minPort | Body | Number | 최소 포트 범위 | +| rules.port.maxPort | Body | Number | 최대 포트 범위 | +| rules.cidr | Body | String | CIDR | +| rules.createdYmdt | Body | DateTime | 생성 일시 | +| rules.updatedYmdt | Body | DateTime | 수정 일시 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

```json { - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", + "progressStatus": "NONE", "rules": [ { + "ruleId": "550e8400-e29b-41d4-a716-446655440000", + "description": "description-example", "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 + "portType": "ALL", + "minPort": 1, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } - ] + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|------|---------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | - --- ### DB 보안 그룹 수정하기 @@ -3630,25 +4357,25 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId} #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroup.Modify | DB 보안 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|-----------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description" + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example" } ``` @@ -3659,48 +4386,34 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- - --- -### DB 보안 그룹 삭제하기 +### DB 보안 그룹 규칙 삭제하기 ```http -DELETE /v4.0/db-security-groups/{dbSecurityGroupId} +DELETE /v4.0/db-security-groups/{dbSecurityGroupId}/rules ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| -| RDSforMySQL:DbSecurityGroup.Delete | DB 보안 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:DbSecurityGroupRule.Delete | DB 보안 그룹 규칙 삭제하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleIds | Query | String | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -3711,7 +4424,8 @@ DELETE /v4.0/db-security-groups/{dbSecurityGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3728,26 +4442,23 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroupRule.Create | DB 보안 그룹 규칙 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 필요하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |

예시

@@ -3757,11 +4468,12 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "PORT", - "minPort": 10000, - "maxPort": 10000 + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -3770,9 +4482,26 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -3784,27 +4513,24 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:DbSecurityGroupRule.Modify | DB 보안 그룹 규칙 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleId | URL | UUID | O | DB 보안 그룹 규칙의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 필요하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |
예시

@@ -3814,9 +4540,12 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "DB_PORT" + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -3825,38 +4554,26 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -### DB 보안 그룹 규칙 삭제하기 +

예시 +

-```http -DELETE /v4.0/db-security-groups/{dbSecurityGroupId}/rules +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| -| RDSforMySQL:DbSecurityGroupRule.Create | DB 보안 그룹 규칙 삭제하기 | - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|-------|----|---------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleIds | Query | Array | O | DB 보안 그룹 규칙의 식별자 목록 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -3870,30 +4587,28 @@ GET /v4.0/parameter-groups #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:ParameterGroup.List | 파라미터 그룹 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------|-------|------|----|----------| -| dbVersion | Query | Enum | X | DB 엔진 유형 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-------------------------------------------------------------------| -| parameterGroups | Body | Array | 파라미터 그룹 목록 | -| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameterGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 파라미터 그룹 수 | +| parameterGroups | Body | Array | 파라미터 그룹 목록 | +| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroups.parameterGroupType | Body | Enum | 파라미터 그룹 유형
- USER
- ADMIN
- DEFAULT
- CLUSTER_USER | +| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameterGroups.createdYmdt | Body | DateTime | 생성 일시 | +| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3905,15 +4620,17 @@ GET /v4.0/parameter-groups "resultMessage": "SUCCESS", "isSuccessful": true }, + "totalCounts": 1, "parameterGroups": [ { - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "parameterGroupType": "USER", "parameterGroupStatus": "STABLE", - "createdYmdt": "2023-02-31T15:28:17+09:00", - "updatedYmdt": "2023-02-31T15:28:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3922,50 +4639,47 @@ GET /v4.0/parameter-groups

- --- -### 파라미터 그룹 상세 보기 +### 파라미터 그룹 생성하기 ```http -GET /v4.0/parameter-groups/{parameterGroupId} +POST /v4.0/parameter-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMySQL:ParameterGroup.Get | 파라미터 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Create | 파라미터 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` | +| dbVersion | Body | Enum | O | DB 엔진 유형 | + +
예시 +

+ +```json +{ + "parameterGroupName": "parameterGroupName", + "description": "description-example", + "dbVersion": "MYSQL_V8036" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|--------------------------------------------------------------------------------------------------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameters | Body | Array | 파라미터 목록 | -| parameters.parameterId | Body | UUID | 파라미터 식별자 | -| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- `CLIENT`: client
- `MYSQL`: mysql
- `MYSQLD`: mysqld | -| parameters.parameterName | Body | String | 파라미터 이름 | -| parameters.fileParameterName | Body | String | 파라미터 파일명 | -| parameters.value | Body | String | 현재 설정된 값 | -| parameters.defaultValue | Body | String | 기본값 | -| parameters.allowedValue | Body | String | 허용된 값 | -| parameters.updateType | Body | Enum | 수정 타입
- `VARIABLE`: 언제든 수정 가능
- `CONSTANT`: 수정 불가능
- `INIT_VARIABLE`: DB 인스턴스 생성 시에만 수정 가능 | -| parameters.applyType | Body | Enum | 적용 타입
- `SESSION`: 세션 적용
- `FILE`: 설정 파일 적용(재시작 필요)
- `BOTH`: 전체(재시작 필요) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |
예시

@@ -3977,115 +4691,119 @@ GET /v4.0/parameter-groups/{parameterGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MYSQL_V8028", - "parameterGroupStatus": "STABLE", - "parameters": [ - { - "parameterId": "fa040b5e-f29f-46de-8f0d-bba4cb82887a", - "parameterFileGroup": "client", - "parameterName": "socket", - "fileParameterName": "socket", - "value": "/home/tcrds/db/mysql/tmp/mysql.sock", - "defaultValue": "/home/tcrds/db/mysql/tmp/mysql.sock", - "allowedValue": "", - "updateType": "CONSTANT", - "applyType": "BOTH" - } - ], - "createdYmdt": "2023-03-13T11:02:28+09:00", - "updatedYmdt": "2023-03-13T11:02:28+09:00" + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ```

- --- -### 파라미터 그룹 생성하기 +### 파라미터 그룹 삭제하기 ```http -POST /v4.0/parameter-groups +DELETE /v4.0/parameter-groups/{parameterGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Create | 파라미터 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Delete | 파라미터 그룹 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | - -
예시 -

- -```json -{ - "parameterGroupName": "parameter-group", - "dbVersion": "MYSQL_V8028" -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 복사하기 +### 파라미터 그룹 상세 보기 ```http -POST /v4.0/parameter-groups/{parameterGroupId}/copy +GET /v4.0/parameter-groups/{parameterGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Copy | 파라미터 그룹 복사하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Get | 파라미터 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameters | Body | Array | 파라미터 목록 | +| parameters.parameterId | Body | UUID | 파라미터의 식별자 | +| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- CLIENT
- MYSQL
- MYSQLD | +| parameters.parameterName | Body | String | 파라미터 이름 | +| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | +| parameters.value | Body | String | 현재 설정된 값 | +| parameters.defaultValue | Body | String | 기본값 | +| parameters.allowedValue | Body | String | 허용된 값 | +| parameters.updateType | Body | Enum | 수정 타입
- VARIABLE
- CONSTANT
- INIT_VARIABLE | +| parameters.applyType | Body | Enum | 적용 타입
- BOTH
- SESSION
- FILE | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "parameterGroupName": "parameter-group-copy", - "description": "copy" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "parameterGroupStatus": "STABLE", + "parameters": [ + { + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "parameterFileGroup": "CLIENT", + "parameterName": "parameterName-example", + "fileParameterName": "fileParameterName-example", + "value": "value-example", + "defaultValue": "defaultValue-example", + "allowedValue": "allowedValue-example", + "updateType": "VARIABLE", + "applyType": "BOTH" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | - --- ### 파라미터 그룹 수정하기 @@ -4096,24 +4814,25 @@ PUT /v4.0/parameter-groups/{parameterGroupId} #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:ParameterGroup.Modify | 파라미터 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "parameterGroupName": "parameter-group" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -4124,56 +4843,35 @@ PUT /v4.0/parameter-groups/{parameterGroupId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- -### 파라미터 수정하기 +### 파라미터 그룹 복사하기 ```http -PUT /v4.0/parameter-groups/{parameterGroupId}/parameters +POST /v4.0/parameter-groups/{parameterGroupId}/copy ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Modify | 파라미터 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Copy | 파라미터 그룹 복사하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------------|------|--------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | -| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | -| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "modifiedParameters": [ - { - "parameterId": "3abac558-7274-44e1-9f4a-f100f53f67ba", - "value": "0" - } - ] + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -4182,7 +4880,9 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |

예시

@@ -4193,7 +4893,8 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4202,86 +4903,74 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters --- -### 파라미터 그룹 재설정하기 +### 파라미터 수정하기 ```http -PUT /v4.0/parameter-groups/{parameterGroupId}/reset +PUT /v4.0/parameter-groups/{parameterGroupId}/parameters ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|---------------| -| RDSforMySQL:ParameterGroup.Reset | 파라미터 그룹 재설정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Modify | 파라미터 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | +| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | +| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 |

예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } + "modifiedParameters": [ + { + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "value": "value-example" + } + ] } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- -### 파라미터 그룹 삭제하기 +### 파라미터 그룹 재설정하기 ```http -DELETE /v4.0/parameter-groups/{parameterGroupId} +PUT /v4.0/parameter-groups/{parameterGroupId}/reset ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMySQL:ParameterGroup.Delete | 파라미터 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:ParameterGroup.Reset | 파라미터 그룹 재설정하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | #### 응답 이 API는 응답 본문을 반환하지 않습니다. -
예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- ## 사용자 그룹 @@ -4294,8 +4983,8 @@ GET /v4.0/user-groups #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:UserGroup.List | 사용자 그룹 목록 보기 | #### 요청 @@ -4304,13 +4993,14 @@ GET /v4.0/user-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|-----------------------------------| -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| userGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 사용자 그룹 목록 수 | +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroups.createdYmdt | Body | DateTime | 생성 일시 | +| userGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4322,12 +5012,13 @@ GET /v4.0/user-groups "resultMessage": "SUCCESS", "isSuccessful": true }, + "totalCounts": 1, "userGroups": [ { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -4338,37 +5029,45 @@ GET /v4.0/user-groups --- -### 사용자 그룹 상세 보기 +### 사용자 그룹 생성하기 ```http -GET /v4.0/user-groups/{userGroupId} +POST /v4.0/user-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|--------------| -| RDSforMySQL:UserGroup.Get | 사용자 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.Create | 사용자 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록 | +| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` | + +

예시 +

+ +```json +{ + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAll": false +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|----------|-----------------------------------------------------------------------------------------------------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
`ENTIRE`: 프로젝트 멤버 전체를 포함하는 사용자 그룹
`INDIVIDUAL_MEMBER`: 특정 프로젝트 멤버를 포함하는 사용자 그룹 | -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 |
예시

@@ -4380,16 +5079,7 @@ GET /v4.0/user-groups/{userGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "userGroupTypeCode": "INDIVIDUAL_MEMBER", - "members": [ - { - "memberId": "1321e759-2ef3-4b85-9921-b13e918b24b5" - } - ], - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" + "userGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4398,96 +5088,63 @@ GET /v4.0/user-groups/{userGroupId} --- -### 사용자 그룹 생성하기 +### 사용자 그룹 삭제하기 ```http -POST /v4.0/user-groups +DELETE /v4.0/user-groups/{userGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMySQL:UserGroup.Create | 사용자 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.Delete | 사용자 그룹 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|-----------------------------------------------------------| -| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록
`selectAll`이 true인 경우 해당 필드 값은 무시됩니다 | -| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 여부
true인 경우 해당 그룹은 전체 멤버를 대상으로 설정됩니다 | - -

예시 -

- -```json -{ - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5" - ] -} -``` - -```json -{ - "userGroupName": "dev-team", - "selectAll": true -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------|------|------|-------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 사용자 그룹 수정하기 +### 사용자 그룹 상세 보기 ```http -PUT /v4.0/user-groups/{userGroupId} +GET /v4.0/user-groups/{userGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMySQL:UserGroup.Modify | 사용자 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.Get | 사용자 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|----------------------------------------------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | -| userGroupName | Body | String | X | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | -| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 여부
true인 경우 해당 그룹은 전체 멤버를 대상으로 설정됩니다 | - -
예시 -

- -```json -{ - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5", - "f9064b09-2b15-442e-a4b0-3a5a2754555e" - ] -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
- ENTIRE
- INDIVIDUAL_MEMBER | +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4498,7 +5155,17 @@ PUT /v4.0/user-groups/{userGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "userGroupTypeCode": "ENTIRE", + "members": [ + { + "memberId": "550e8400-e29b-41d4-a716-446655440000" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -4507,44 +5174,45 @@ PUT /v4.0/user-groups/{userGroupId} --- -### 사용자 그룹 삭제하기 +### 사용자 그룹 수정하기 ```http -DELETE /v4.0/user-groups/{userGroupId} +PUT /v4.0/user-groups/{userGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMySQL:UserGroup.Delete | 사용자 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:UserGroup.Modify | 사용자 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | +| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` |

예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAll": false } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- ## 알림 그룹 @@ -4557,8 +5225,8 @@ GET /v4.0/notification-groups #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:NotificationGroup.List | 알림 그룹 목록 보기 | #### 요청 @@ -4567,16 +5235,16 @@ GET /v4.0/notification-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------------|------|----------|-----------------------------------| -| notificationGroups | Body | Array | 알림 그룹 목록 | -| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | -| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | -| notificationGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroups | Body | Array | 알림 그룹 목록 | +| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | +| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | +| notificationGroups.createdYmdt | Body | DateTime | 생성 일시 | +| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4590,13 +5258,13 @@ GET /v4.0/notification-groups }, "notificationGroups": [ { - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, "notifySms": false, - "isEnabled": true, - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" + "isEnabled": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -4607,43 +5275,51 @@ GET /v4.0/notification-groups --- -### 알림 그룹 상세 보기 +### 알림 그룹 생성하기 ```http -GET /v4.0/notification-groups/{notificationGroupId} +POST /v4.0/notification-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|-------------| -| RDSforMySQL:NotificationGroup.Get | 알림 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.Create | 알림 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | +| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | + +

예시 +

+ +```json +{ + "notificationGroupName": "notificationGroupName", + "notifyEmail": true, + "notifySms": true, + "isEnabled": true, + "dbInstanceIds": [], + "userGroupIds": [] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------------|------|----------|-----------------------------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notifySms | Body | Boolean | SMS 알림 여부 | -| isEnabled | Body | Boolean | 활성화 여부 | -| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 |
예시

@@ -4655,25 +5331,7 @@ GET /v4.0/notification-groups/{notificationGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, - "notifySms": false, - "isEnabled": true, - "dbInstances": [ - { - "dbInstanceId": "ed5cb985-526f-4c54-9ae0-40288593de65", - "dbInstanceName": "database" - } - ], - "userGroups": [ - { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team" - } - ], - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4682,100 +5340,69 @@ GET /v4.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 생성하기 +### 알림 그룹 삭제하기 ```http -POST /v4.0/notification-groups +DELETE /v4.0/notification-groups/{notificationGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMySQL:NotificationGroup.Create | 알림 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.Delete | 알림 그룹 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------------| -| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | -| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | -| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | -| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | - -

예시 -

- -```json -{ - "notificationGroupName": "dev-team-noti", - "notifyEmail": false, - "isEnable": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65" - ], - "userGroupIds": [ - "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0" - ] -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|------|------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 알림 그룹 수정하기 +### 알림 그룹 상세 보기 ```http -PUT /v4.0/notification-groups/{notificationGroupId} +GET /v4.0/notification-groups/{notificationGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMySQL:NotificationGroup.Modify | 알림 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.Get | 알림 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부 | -| notifySms | Body | Boolean | X | SMS 알림 여부 | -| isEnabled | Body | Boolean | X | 활성화 여부 | -| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | - -
예시 -

- -```json -{ - "notifyEmail": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65", - "d51b7da0-682f-47ff-b588-b739f6adc740" - ] -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notifySms | Body | Boolean | SMS 알림 여부 | +| isEnabled | Body | Boolean | 활성화 여부 | +| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4786,7 +5413,26 @@ PUT /v4.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, + "notifySms": false, + "isEnabled": false, + "dbInstances": [ + { + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example" + } + ], + "userGroups": [ + { + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -4795,60 +5441,65 @@ PUT /v4.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 삭제하기 +### 알림 그룹 수정하기 ```http -DELETE /v4.0/notification-groups/{notificationGroupId} +PUT /v4.0/notification-groups/{notificationGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMySQL:NotificationGroup.Delete | 알림 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:NotificationGroup.Modify | 알림 그룹 수정하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | +| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `false` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `false` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `false` | +| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 |

예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, + "notifySms": false, + "isEnabled": false, + "dbInstanceIds": [], + "userGroupIds": [] } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- ## 모니터링 -### Metric 목록 보기 +### 통계 정보 조회 ```http -GET /v4.0/metrics +GET /v4.0/metric-statistics ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:Metric.List | 통계 정보 조회 | #### 요청 @@ -4857,92 +5508,48 @@ GET /v4.0/metrics #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|--------|-----------| -| metrics | Body | Array | Metric 목록 | -| metrics.measureName | Body | Enum | 조회 지표 유형 | -| metrics.unit | Body | String | 측정값 단위 | - -
예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "metrics": [ - { - "measureName": "CPU_USAGE", - "unit": "%" - } - ] -} -``` - -

-
+이 API는 응답 본문을 반환하지 않습니다. --- -### 통계 정보 조회 +### Metric 목록 보기 ```http -GET /v4.0/metric-statistics +GET /v4.0/metrics ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| -| RDSforMySQL:Metric.List | 통계 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Metric.List | Metric 목록 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|----------|----|-----------------------------------| -| dbInstanceId | Query | UUID | O | DB 인스턴스의 식별자 | -| measureNames | Query | Array | O | 조회 지표 목록
- 최소 크기: `1` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| interval | Query | Number | X | 조회 간격 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|-----------|----------| -| metricStatistics | Body | Array | 통계 정보 목록 | -| metricStatistics.measureName | Body | Enum | 측정 항목 유형 | -| metricStatistics.unit | Body | String | 측정값 단위 | -| metricStatistics.values | Body | Array | 측정값 목록 | -| metricStatistics.values.timestamp | Body | Timestamp | 측정 시간 | -| metricStatistics.values.value | Body | Object | 측정값 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| metrics | Body | Array | Metric 목록 | +| metrics.measureName | Body | String | 조회 지표 유형 | +| metrics.unit | Body | String | 측정값 단위 |
예시

```json { - "metricStatistics": [ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "metrics": [ { - "measureName": "MYSQL_STATUS", - "unit": "", - "values": [ - [ - 1679298540, - "1" - ], - [ - 1679298600, - "1" - ], - [ - 1679298660, - "1" - ] - ] + "measureName": "measureName-example", + "unit": "unit-example" } ] } @@ -4968,47 +5575,29 @@ GET /v4.0/metric-statistics | TENANT | 테넌트 | | MONITORING | 모니터링 | -### 이벤트 목록 조회 +### 구독 가능한 이벤트 코드 목록 보기 ```http -GET /v4.0/events +GET /v4.0/event-codes ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------|-----------| -| RDSforMySQL:Event.List | 이벤트 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Event.List | 구독 가능한 이벤트 코드 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | X | 조회할 목록의 페이지
- 기본값: 1
- 최솟값: `1` | -| size | Query | Number | X | 조회할 목록의 페이지 크기
- 기본값: 20 | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| eventCategoryType | Query | Enum | O | 조회할 이벤트 카테고리 유형
- `ALL`: 전체
- `INSTANCE`: DB 인스턴스
- `BACKUP`: 백업
- `DB_SECURITY_GROUP`: DB 보안 그룹
- `TENANT`: 테넌트 | -| sourceId | Query | String | X | 이벤트가 발생한 대상 리소스의 식별자 | -| keyword | Query | String | X | 이벤트 메시지에 포함된 문자열 검색어 | -| ascendingOrder | Query | Enum | X | 이벤트 메시지 정렬 순서
- `ASC`: 오름차순
- `DESC`: 내림차순
- 기본값: `DESC` | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|---------------------------------------| -| totalCounts | Body | Number | 전체 이벤트 목록 수 | -| events | Body | Array | 이벤트 목록 | -| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | -| events.sourceId | Body | String | 이벤트 소스의 식별자 | -| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | -| events.messages | Body | Array | 이벤트 메시지 목록 | -| events.messages.langCode | Body | String | 언어 코드 | -| events.messages.message | Body | String | 이벤트 메시지 | -| events.eventYmdt | Body | DateTime | 이벤트 발생 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventCodes | Body | Array | 이벤트 코드 목록 | +| eventCodes.eventCode | Body | Enum | 이벤트 코드 | +| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT |

예시

@@ -5020,32 +5609,10 @@ GET /v4.0/events "resultMessage": "SUCCESS", "isSuccessful": true }, - "totalCounts": 28, - "events": [ + "eventCodes": [ { - "eventCategoryType": "INSTANCE", - "eventCode": "INSTC_02_01", - "sourceId": "76f00947-356e-4a20-8922-428368cc45ed", - "sourceName": "db-instance", - "messages": [ - { - "langCode": "EN", - "message": "DB instance started" - }, - { - "langCode": "JA", - "message": "DBインスタンスの起動" - }, - { - "langCode": "KO", - "message": "DB 인스턴스 시작" - }, - { - "langCode": "ZH", - "message": "DB instance started" - } - ], - "eventYmdt": "2023-03-20T16:31:59+09:00" + "eventCode": "ENUM_VALUE", + "eventCategoryType": "ALL" } ] } @@ -5056,17 +5623,17 @@ GET /v4.0/events --- -### 구독 가능한 이벤트 코드 목록 보기 +### 이벤트 목록 조회 ```http -GET /v4.0/event-codes +GET /v4.0/events ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------|-----------| -| RDSforMySQL:Event.List | 이벤트 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:Event.List | 이벤트 목록 조회 | #### 요청 @@ -5074,11 +5641,18 @@ GET /v4.0/event-codes #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|-------|-------------| -| eventCodes | Body | Array | 이벤트 코드 목록 | -| eventCodes.eventCode | Body | Enum | 이벤트 코드 | -| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 목록 수 | +| events | Body | Array | 이벤트 목록 | +| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | +| events.sourceId | Body | String | 이벤트 소스의 식별자 | +| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | +| events.messages | Body | Array | 이벤트 메세지 목록 | +| events.messages.langCode | Body | Enum | 언어 코드
- KO
- EN
- JA
- ZH | +| events.messages.message | Body | String | 이벤트 메세지 | +| events.eventYmdt | Body | DateTime | 이벤트 발생 일시 |

예시

@@ -5090,10 +5664,20 @@ GET /v4.0/event-codes "resultMessage": "SUCCESS", "isSuccessful": true }, - "eventCodes": [ + "totalCounts": 1, + "events": [ { - "eventCode": "INSTC_05_01", - "eventCategoryType": "INSTANCE" + "eventCategoryType": "ALL", + "eventCode": "ENUM_VALUE", + "sourceId": "sourceId-example", + "sourceName": "sourceName-example", + "messages": [ + { + "langCode": "KO", + "message": "message-example" + } + ], + "eventYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -5114,38 +5698,32 @@ GET /v4.0/event-subscriptions #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:EventSubscription.List | 이벤트 구독 목록 조회 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|------------------------------------------| -| page | Query | Number | X | 조회할 목록의 페이지
- 기본값: 1
- 최솟값: `1` | -| size | Query | Number | X | 조회할 목록의 페이지 크기
- 기본값: 20 | -| eventSubscriptionId | Query | UUID | X | 이벤트 구독의 식별자 | -| eventSubscriptionName | Query | String | X | 이벤트 구독을 식별할 수 있는 이름 | -| userGroupId | Query | UUID | X | 사용자 그룹의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------------------|------|----------|--------------------------| -| totalCounts | Body | Number | 전체 이벤트 구독 목록 수 | -| eventSubscriptions | Body | Array | 이벤트 구독 목록 | -| eventSubscriptions.eventSubscriptionId | Body | UUID | 이벤트의 구독 식별자 | -| eventSubscriptions.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| eventSubscriptions.eventSubscriptionName | Body | String | 이벤트 구독을 식별할 수 있는 이름 | -| eventSubscriptions.enabled | Body | Boolean | 활성화 여부 | -| eventSubscriptions.notifyEmail | Body | Boolean | 이메일 발송 여부 | -| eventSubscriptions.notifySms | Body | Boolean | SMS 발송 여부 | -| eventSubscriptions.eventCodes | Body | Array | 구독할 이벤트 코드 목록 | -| eventSubscriptions.sources | Body | Array | 구독할 이벤트 소스 목록 | -| eventSubscriptions.sources.sourceId | Body | UUID | 이벤트 소스의 식별자 | -| eventSubscriptions.sources.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| eventSubscriptions.userGroupIds | Body | Array | 이벤트 구독 중인 사용자 그룹의 식별자 목록 | -| eventSubscriptions.createdYmdt | Body | DateTime | 생성 일시 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 구독 목록 수 | +| eventSubscriptions | Body | Array | 이벤트 구독 목록 | +| eventSubscriptions.eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 | +| eventSubscriptions.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.eventSubscriptionName | Body | String | 이벤트 구독의 식별할 수 있는 이름 | +| eventSubscriptions.enabled | Body | Boolean | 활성화 여부 | +| eventSubscriptions.notifyEmail | Body | Boolean | 이메일 발송 여부 | +| eventSubscriptions.notifySms | Body | Boolean | SMS 발송 여부 | +| eventSubscriptions.eventCodes | Body | Array | 구독할 이벤트 코드 목록 | +| eventSubscriptions.sources | Body | Array | 구독할 이벤트 소스 목록 | +| eventSubscriptions.sources.sourceId | Body | String | 이벤트 소스의 식별자 | +| eventSubscriptions.sources.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.userGroupIds | Body | Array | 이벤트 구독 중인 사용자 그룹의 식별자 목록 | +| eventSubscriptions.createdYmdt | Body | DateTime | 생성 일시 |

예시

@@ -5160,25 +5738,21 @@ GET /v4.0/event-subscriptions "totalCounts": 1, "eventSubscriptions": [ { - "eventSubscriptionId": "12345678-1234-1234-1234-123456789012", - "eventCategoryType": "INSTANCE", - "eventSubscriptionName": "example-event-subscription", - "enabled": true, - "notifyEmail": true, + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, "notifySms": false, - "eventCodes": [ - "INSTC_05_01" - ], + "eventCodes": [], "sources": [ { - "sourceId": "87654321-4321-4321-4321-210987654321", - "eventCategoryType": "INSTANCE" + "sourceId": "sourceId-example", + "eventCategoryType": "ALL" } ], - "userGroupIds": [ - "11111111-2222-3333-4444-555555555555" - ], - "createdYmdt": "2024-01-01T12:00:00+09:00" + "userGroupIds": [], + "createdYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -5197,47 +5771,43 @@ POST /v4.0/event-subscriptions #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:EventSubscription.Create | 이벤트 구독 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------------------|------|---------|----|-----------------------------------------| -| eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형 | -| eventSubscriptionName | Body | String | O | 이벤트 구독을 식별할 수 있는 이름
- 최대 길이: `100` | -| enabled | Body | Boolean | O | 활성화 여부 | -| notifyEmail | Body | Boolean | O | 이메일 발송 여부 | -| notifySms | Body | Boolean | O | SMS 발송 여부 | -| eventCodes | Body | Array | O | 구독할 이벤트 코드 목록 | -| sources | Body | Array | O | 구독할 이벤트 소스 목록 | -| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | -| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형 | -| userGroupIds | Body | Array | O | 이벤트 구독할 사용자 그룹의 식별자 목록 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | O | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | O | 활성화 여부 | +| notifyEmail | Body | Boolean | O | 이메일 발송 여부 | +| notifySms | Body | Boolean | O | SMS 발송 여부 | +| eventCodes | Body | Array | O | 구독할 이벤트 코드 목록 | +| sources | Body | Array | O | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | O | 이벤트 구독할 사용자 그룹의 식별자 목록 |

예시

```json { - "eventCategoryType": "INSTANCE", - "eventSubscriptionName": "example-event-subscription", - "enabled": true, - "notifyEmail": true, + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, "notifySms": false, - "eventCodes": [ - "INSTC_05_01" - ], + "eventCodes": [], "sources": [ { - "sourceId": "87654321-4321-4321-4321-210987654321", - "eventCategoryType": "INSTANCE" + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" } ], - "userGroupIds": [ - "11111111-2222-3333-4444-555555555555" - ] + "userGroupIds": [] } ``` @@ -5246,9 +5816,9 @@ POST /v4.0/event-subscriptions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------|------|------|-------------| -| eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 |

예시

@@ -5260,7 +5830,7 @@ POST /v4.0/event-subscriptions "resultMessage": "SUCCESS", "isSuccessful": true }, - "eventSubscriptionId": "12345678-1234-1234-1234-123456789012" + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -5269,6 +5839,32 @@ POST /v4.0/event-subscriptions --- +### 이벤트 구독 삭제하기 + +```http +DELETE /v4.0/event-subscriptions/{eventSubscriptionId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:EventSubscription.Delete | 이벤트 구독 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + ### 이벤트 구독 수정하기 ```http @@ -5277,49 +5873,44 @@ PUT /v4.0/event-subscriptions/{eventSubscriptionId} #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMySQL:EventSubscription.Modify | 이벤트 구독 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------------------|------|---------|----|-----------------------------------| -| eventSubscriptionId | URL | UUID | O | 이벤트 구독의 식별자 | -| eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형 | -| eventSubscriptionName | Body | String | X | 이벤트 구독을 식별할 수 있는 이름 | -| enabled | Body | Boolean | X | 활성화 여부 | -| notifyEmail | Body | Boolean | X | 이메일 발송 여부 | -| notifySms | Body | Boolean | X | SMS 발송 여부 | -| eventCodes | Body | Array | X | 구독할 이벤트 코드 목록 | -| sources | Body | Array | X | 구독할 이벤트 소스 목록 | -| sources.sourceId | Body | UUID | X | 이벤트 소스의 식별자 | -| sources.eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형 | -| userGroupIds | Body | Array | X | 이벤트 구독할 사용자 그룹의 식별자 목록 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | +| eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | X | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | X | 활성화 여부 | +| notifyEmail | Body | Boolean | X | 이메일 발송 여부 | +| notifySms | Body | Boolean | X | SMS 발송 여부 | +| eventCodes | Body | Array | X | 구독할 이벤트 코드 목록 | +| sources | Body | Array | X | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | X | 이벤트 구독할 사용자 그룹의 식별자 목록 |

예시

```json { - "eventSubscriptionName": "updated-event-subscription", + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", "enabled": false, "notifyEmail": false, - "notifySms": true, - "eventCodes": [ - "INSTC_05_01", - "INSTC_06_01" - ], + "notifySms": false, + "eventCodes": [], "sources": [ { - "sourceId": "87654321-4321-4321-4321-210987654321", - "eventCategoryType": "INSTANCE" + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" } ], - "userGroupIds": [ - "11111111-2222-3333-4444-555555555555", - "22222222-3333-4444-5555-666666666666" - ] + "userGroupIds": [] } ``` @@ -5330,45 +5921,34 @@ PUT /v4.0/event-subscriptions/{eventSubscriptionId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- -### 이벤트 구독 삭제하기 +## 가용성 영역 + +### 가용성 영역 목록 보기 ```http -DELETE /v4.0/event-subscriptions/{eventSubscriptionId} +GET /v4.0/availability-zones ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------------|--------------| -| RDSforMySQL:EventSubscription.Delete | 이벤트 구독 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMySQL:AvailabilityZone.List | 가용성 영역 목록 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|-----|------|----|-------------| -| eventSubscriptionId | URL | UUID | O | 이벤트 구독의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| availabilityZones | Body | Array | 가용성 영역 목록 | +| availabilityZones.availabilityZoneName | Body | String | 가용성 영역 이름 | +| availabilityZones.zoneState | Body | Object | 가용성 영역 상태 | +| availabilityZones.zoneState.available | Body | Boolean | 가용성 영역의 사용 가능 여부 |
예시

@@ -5379,7 +5959,15 @@ DELETE /v4.0/event-subscriptions/{eventSubscriptionId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "availabilityZones": [ + { + "availabilityZoneName": "availabilityZoneName-example", + "zoneState": { + "available": false + } + } + ] } ``` @@ -5387,3 +5975,4 @@ DELETE /v4.0/event-subscriptions/{eventSubscriptionId}

--- + diff --git a/mariadb/ko/api-guide-v4.0-gov.md b/mariadb/ko/api-guide-v4.0-gov.md index 6bdd3be3..2e288b6e 100644 --- a/mariadb/ko/api-guide-v4.0-gov.md +++ b/mariadb/ko/api-guide-v4.0-gov.md @@ -1,37 +1,37 @@ -## Database > RDS for MariaDB > API 가이드 +## Database > RDS for MariaDB > API v4.0 가이드 ## RDS for MariaDB API 공통 정보 ### API 엔드포인트 -| 리전 | 엔드포인트 | -|-----------|-----------------------------------------------| +| 리전 | 엔드포인트 | +|------|----------| | 한국(판교) 리전 | https://kr1-rds-mariadb.api.gov-nhncloudservice.com | + ### 인증 및 권한 RDS for MariaDB은(는) API 호출 시 인증/인가를 위해 User Access Key 토큰을 사용합니다. User Access Key 토큰은 User Access Key를 기반으로 발급되는 Bearer 타입의 일시적 액세스 토큰입니다. User Access Key 토큰 발급 및 사용에 대한 자세한 내용은 [User Access Key 토큰](/nhncloud/ko/public-api/user-access-key-token)을 참고하세요. 발급 받은 토큰은 Appkey와 함께 요청 Header에 포함해야 합니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|--------|--------|----|-------------------------------------------------------------| -| X-TC-APP-KEY | Header | String | O | RDS for MariaDB 서비스의 Appkey 또는 프로젝트 통합 Appkey | -| X-NHN-AUTHORIZATION | Header | String | O | Public API로 발급 받은 Bearer 유형 토큰 | - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| X-TC-APP-KEY | Header | String | O | RDS for MariaDB 서비스의 Appkey 또는 프로젝트 통합 Appkey | +| X-NHN-AUTHORIZATION | Header | String | O | Public API로 발급 받은 Bearer 유형 토큰 | -또한 프로젝트 멤버 역할에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MariaDB ADMIN`, `RDS for MariaDB VIEWER`로 구분하여 권한을 부여할 수 있습니다. +또한 프로젝트 권한에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MariaDB ADMIN`, `RDS for MariaDB VIEWER` 역할에는 아래처럼 기본 권한이 부여돼 있고 프로젝트 내 역할 그룹 관리 메뉴에서 필요한 권한만 부여할 수 있습니다. -* `RDS for MariaDB ADMIN` 권한은 모든 기능을 사용 가능합니다. -* `RDS for MariaDB VIEWER` 권한은 정보를 조회하는 기능만 사용 가능합니다. +* `RDS for MariaDB ADMIN` 역할은 API 실행에 필요한 모든 권한이 부여됩니다. +* `RDS for MariaDB VIEWER` 역할은 정보를 조회하는 권한만 부여됩니다. * DB 인스턴스를 생성, 수정, 삭제하거나, DB 인스턴스를 대상으로 하는 어떠한 기능도 사용할 수 없습니다. - * 단, 알림 그룹 및 사용자 그룹 관련 기능은 사용 가능합니다. + * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용할 수 있습니다. API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같은 오류가 발생합니다. -| resultCode | resultMessage | 설명 | -|------------|---------------|-------------| -| 80401 | Unauthorized | 인증에 실패했습니다. | -| 80403 | Forbidden | 권한이 없습니다. | +| resultCode | resultMessage | 설명 | +|------------|---------------|-----| +| 80401 | Unauthorized | 인증에 실패했습니다. | +| 80403 | Forbidden | 권한이 없습니다. | ### 응답 공통 정보 @@ -49,43 +49,46 @@ API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같 ``` #### 필드 -| 이름 | 형식 | 설명 | -|---------------|---------|-----------------------------------------| -| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | -| resultMessage | String | 결과 메시지 | -| isSuccessful | Boolean | 성공 여부 | - +| 이름 | 형식 | 설명 | +|-----|-----|-----| +| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | +| resultMessage | String | 결과 메시지 | +| isSuccessful | Boolean | 성공 여부 | ### DB 엔진 유형 -| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 | -|-----------------|----------|------------------|--| -| MARIADB_V10330 | O | O | NATIVE, ED25519 | -| MARIADB_V10611 | O | O | NATIVE, ED25519 | -| MARIADB_V10612 | O | O | NATIVE, ED25519 | -| MARIADB_V10616 | O | O | NATIVE, ED25519 | -| MARIADB_V10622 | O | O | NATIVE, ED25519 | -| MARIADB_V101107 | O | O | NATIVE, ED25519 | -| MARIADB_V101108 | O | O | NATIVE, ED25519 | -| MARIADB_V101113 | O | O | NATIVE, ED25519 | -| MARIADB_V11407 | O | O | NATIVE, ED25519 | - -* ENUM 타입의 dbVersion 필드에서 해당 값을 사용할 수 있습니다. +| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 | +|------------|----------|------------------|------------| +| MARIADB_V10330 | X | X | NATIVE, ED25519 | +| MARIADB_V10611 | X | X | NATIVE, ED25519 | +| MARIADB_V10612 | X | X | NATIVE, ED25519 | +| MARIADB_V10616 | X | X | NATIVE, ED25519 | +| MARIADB_V10622 | X | X | NATIVE, ED25519 | +| MARIADB_V10625 | X | X | NATIVE, ED25519 | +| MARIADB_V101107 | O | O | NATIVE, ED25519 | +| MARIADB_V101108 | O | O | NATIVE, ED25519 | +| MARIADB_V101113 | O | O | NATIVE, ED25519 | +| MARIADB_V101116 | O | O | NATIVE, ED25519 | +| MARIADB_V11407 | O | O | NATIVE, ED25519 | +| MARIADB_V11410 | O | O | NATIVE, ED25519 | +| MARIADB_V11806 | O | O | NATIVE, ED25519 | + +* ENUM 타입의 dbVersion 필드에 대해 해당 값을 사용할 수 있습니다. * 버전에 따라 생성 또는 복원이 불가능한 경우가 있을 수 있습니다. ## 프로젝트 정보 -### 리전 목록 보기 +### 프로젝트 멤버 목록 보기 ```http -GET /v4.0/project/regions +GET /v4.0/project/members ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|------------| -| RDSforMariaDB:Project.Get | 프로젝트 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:Project.Get | 프로젝트 멤버 목록 보기 | #### 요청 @@ -93,11 +96,13 @@ GET /v4.0/project/regions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------|------|---------|----------------------------------------------------------------------------| -| regions | Body | Array | 리전 목록 | -| regions.regionCode | Body | Enum | 리전 코드
- `KR1`: 한국(판교) 리전 | -| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| members.memberName | Body | String | 프로젝트 멤버의 이름 | +| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | +| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 |
예시

@@ -109,30 +114,33 @@ GET /v4.0/project/regions "resultMessage": "SUCCESS", "isSuccessful": true }, - "regions": [ + "members": [ { - "regionCode": "KR1", - "isEnabled": true + "memberId": "550e8400-e29b-41d4-a716-446655440000", + "memberName": "memberName-example", + "emailAddress": "emailAddress-example", + "phoneNumber": "phoneNumber-example" } ] } ``` +

--- -### 프로젝트 멤버 목록 보기 +### 리전 목록 보기 ```http -GET /v4.0/project/members +GET /v4.0/project/regions ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|------------| -| RDSforMariaDB:Project.Get | 프로젝트 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:Project.Get | 리전 목록 보기 | #### 요청 @@ -140,13 +148,11 @@ GET /v4.0/project/members #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|--------|-----------------| -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| members.memberName | Body | String | 프로젝트 멤버의 이름 | -| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | -| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| regions | Body | Array | 리전 목록 | +| regions.regionCode | Body | Enum | 리전 코드
- KR1: `한국(판교)` | +| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 |
예시

@@ -158,12 +164,10 @@ GET /v4.0/project/members "resultMessage": "SUCCESS", "isSuccessful": true }, - "members": [ + "regions": [ { - "memberId": "1b1d3627-507a-49ea-8cb7-c86dfa9caa58", - "memberName": "홍길동", - "emailAddress": "gildong.hong@nhn.com", - "phoneNumber": "+821012345678" + "regionCode": "KR1", + "isEnabled": false } ] } @@ -184,8 +188,8 @@ GET /v4.0/db-flavors #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:DbFlavor.List | DB 인스턴스 사양 목록 보기 | #### 요청 @@ -194,13 +198,13 @@ GET /v4.0/db-flavors #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------| -| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | -| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | -| dbFlavors.ram | Body | Number | 메모리 용량(MB) | -| dbFlavors.vcpus | Body | Number | CPU 코어 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | +| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | +| dbFlavors.ram | Body | Number | 메모리 용량(MB) | +| dbFlavors.vcpus | Body | Number | CPU 코어 수 |

예시

@@ -214,9 +218,9 @@ GET /v4.0/db-flavors }, "dbFlavors": [ { - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbFlavorName": "m2.c1m2", - "ram": 2048, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbFlavorName": "dbFlavorName-example", + "ram": 1, "vcpus": 1 } ] @@ -238,8 +242,8 @@ GET /v4.0/network/subnets #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------|-----------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:Network.List | 서브넷 목록 보기 | #### 요청 @@ -248,14 +252,14 @@ GET /v4.0/network/subnets #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|---------|------------------| -| subnets | Body | Array | 서브넷 목록 | -| subnets.subnetId | Body | UUID | 서브넷의 식별자 | -| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | -| subnets.subnetCidr | Body | String | 서브넷의 CIDR | -| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | -| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| subnets | Body | Array | 서브넷 목록 | +| subnets.subnetId | Body | UUID | 서브넷의 식별자 | +| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnets.subnetCidr | Body | String | 서브넷의 CIDR | +| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | +| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 |

예시

@@ -269,11 +273,11 @@ GET /v4.0/network/subnets }, "subnets": [ { - "subnetId": "1b2a9b23-0725-4b92-8c78-35db66b8ad9f", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/24", - "usingGateway": true, - "availableIpCount": 240 + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example", + "usingGateway": false, + "availableIpCount": 1 } ] } @@ -294,8 +298,8 @@ GET /v4.0/db-versions #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:DbVersion.List | DB 엔진 목록 보기 | #### 요청 @@ -304,11 +308,11 @@ GET /v4.0/db-versions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|---------|-----------------------| -| dbVersions | Body | Array | DB 엔진 목록 | -| dbVersions.dbVersion | Body | String | DB 엔진 유형 | -| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbVersions | Body | Array | DB 엔진 목록 | +| dbVersions.dbVersion | Body | String | DB 엔진 유형 | +| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | | dbVersions.restorableFromObs | Body | Boolean | 오브젝트 스토리지로부터 복원 가능 여부 |

예시 @@ -323,9 +327,9 @@ GET /v4.0/db-versions }, "dbVersions": [ { - "dbVersion": "MARIADB_V10330", - "dbVersionName": "Maria DB 10.3.30", - "restorableFromObs": true + "dbVersion": "MYSQL_V8036", + "dbVersionName": "dbVersionName-example", + "restorableFromObs": false } ] } @@ -338,7 +342,7 @@ GET /v4.0/db-versions ## 데이터 스토리지 -### 데이터 스토리지 타입 목록 보기 +### 스토리지 타입 목록 보기 ```http GET /v4.0/storage-types @@ -346,9 +350,9 @@ GET /v4.0/storage-types #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------|-------------------| -| RDSforMariaDB:Storage.List | 데이터 스토리지 타입 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:Storage.List | 스토리지 타입 목록 보기 | #### 요청 @@ -356,9 +360,9 @@ GET /v4.0/storage-types #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|-------|----------------| -| storageTypes | Body | Array | 데이터 스토리지 타입 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageTypes | Body | Array | 스토리지 타입 목록 |
예시

@@ -370,10 +374,7 @@ GET /v4.0/storage-types "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageTypes": [ - "General SSD", - "General HDD" - ] + "storageTypes": [] } ``` @@ -409,29 +410,29 @@ GET /v4.0/jobs/{jobId} #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:Job.Get | 작업 정보 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------|-----|------|----|---------| -| jobId | URL | UUID | O | 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| jobId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------|------|----------|-----------------------------------| -| jobId | Body | UUID | 작업의 식별자 | -| jobStatus | Body | Enum | 작업의 현재 상태 | -| resourceRelations | Body | Array | 연관 리소스 목록 | -| resourceRelations.resourceType | Body | Enum | 연관 리소스 유형 | -| resourceRelations.resourceId | Body | UUID | 연관 리소스의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | +| jobStatus | Body | Enum | 작업의 현재 상태
- DELETED
- CANNOT_PROGRESS
- FAILED
- ERROR
- CANCELED
- INTERRUPTED
- COMPLETED
- RUNNING
- PREPARING
- READY
- CREATED
- FAIL_TO_READY
- REGISTERED
- FAIL_TO_REGISTER
- WAIT_TO_REGISTER | +| resourceRelations | Body | Array | 연관 리소스 목록 | +| resourceRelations.resourceType | Body | String | 연관 리소스 유형 | +| resourceRelations.resourceId | Body | String | 연관 리소스의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -443,16 +444,16 @@ GET /v4.0/jobs/{jobId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "jobId": "0ddb042c-5af6-43fb-a914-f4dd0540eb7c", - "jobStatus": "RUNNING", + "jobId": "550e8400-e29b-41d4-a716-446655440000", + "jobStatus": "DELETED", "resourceRelations": [ { - "resourceType": "DB_INSTANCE", - "resourceId": "56b39dcf-65eb-47ec-9d4f-09f160ba2266" + "resourceType": "resourceType-example", + "resourceId": "resourceId-example" } ], - "createdYmdt": "2023-02-22T20:47:12+09:00", - "updatedYmdt": "2023-02-22T20:49:46+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -471,8 +472,8 @@ GET /v4.0/db-instance-groups #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:DbInstanceGroup.List | DB 인스턴스 그룹 목록 보기 | #### 요청 @@ -481,13 +482,13 @@ GET /v4.0/db-instance-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------|------|----------|--------------------------------------------------------------------------| -| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | -| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | +| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -501,10 +502,10 @@ GET /v4.0/db-instance-groups }, "dbInstanceGroups": [ { - "dbInstanceGroupId": "05de0746-89fd-49c8-94f9-9c5b1df97009", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", - "createdYmdt": "2023-02-13T17:35:20+09:00", - "updatedYmdt": "2023-02-13T17:35:20+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -523,30 +524,30 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:DbInstanceGroup.Get | DB 인스턴스 그룹 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|-----------------| -| dbInstanceGroupId | URL | UUID | O | DB 인스턴스 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -558,17 +559,17 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbInstanceGroupId": "36617a8e-0df8-4b16-b6ea-6306019e95da", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", "dbInstances": [ { - "dbInstanceId": "6d2db0ef-fe9b-4ed4-97b1-d97fcb4cf1b8", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE" + "dbInstanceStatus": "BEFORE_CREATE" } ], - "createdYmdt": "2023-03-03T17:38:14+09:00", - "updatedYmdt": "2023-03-03T17:38:14+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -601,8 +602,8 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} | `BACKING_UP` | 백업 중 | | `CANCELING` | 취소 중 | | `CREATING` | 생성 중 | -| `CREATING_SCHEMA` | DB 스키마 생성 중 | -| `CREATING_USER` | 사용자 생성 중 | +| `CREATING_SCHEMA` | DB 스키마 생성 중 | +| `CREATING_USER` | 사용자 생성 중 | | `DELETING` | 삭제 중 | | `DELETING_SCHEMA` | DB 스키마 삭제 중 | | `DELETING_USER` | 사용자 삭제 중 | @@ -621,8 +622,8 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} | `STARTING` | 시작 중 | | `STOPPING` | 정지 중 | | `SYNCING_SCHEMA` | DB 스키마 동기화 중 | -| `SYNCING_USER` | 사용자 동기화 중 | -| `UPDATING_USER` | 사용자 수정 중 | +| `SYNCING_USER` | 사용자 동기화 중 | +| `UPDATING_USER` | 사용자 수정 중 | ### DB 인스턴스 목록 보기 @@ -632,8 +633,8 @@ GET /v4.0/db-instances #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:DbInstance.List | DB 인스턴스 목록 보기 | #### 요청 @@ -642,20 +643,20 @@ GET /v4.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstances | Body | Array | DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | -| dbInstances.dbPort | Body | Number | DB 포트 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태 | -| dbInstances.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstances.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstances | Body | Array | DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | +| dbInstances.dbPort | Body | Number | DB 포트 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbInstances.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstances.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -669,17 +670,17 @@ GET /v4.0/db-instances }, "dbInstances": [ { - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MARIADB_V10330", - "dbPort": 10000, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", + "dbInstanceStatus": "BEFORE_CREATE", "progressStatus": "NONE", - "createdYmdt": "2023-01-23T12:03:13+09:00", - "updatedYmdt": "2023-02-02T17:20:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -690,51 +691,130 @@ GET /v4.0/db-instances --- -### DB 인스턴스 상세 보기 +### DB 인스턴스 생성하기 ```http -GET /v4.0/db-instances/{dbInstanceId} +POST /v4.0/db-instances ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMariaDB:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Create | DB 인스턴스 생성하기 | -#### 요청 +#### 공통 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| authenticationPlugin | Body | Enum | X | 인증 Plugin
- NATIVE: `mysql_native_password 인증`
- ED25519: `ed25519 인증 (MariaDB 전용)` | +| tlsOption | Body | Enum | X | TLS Option
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 데이터 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | + +

예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE", + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "backup": { + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 1800, + "replicationRegion": "KR1", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + } +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| dbPort | Body | Number | DB 포트 | -| dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| progressStatus | Body | Enum | DB 인스턴스의 현재 작업 진행 상태 | -| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | -| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | -| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | -| useSlowQueryAnalysis | Body | Boolean | Slow query 분석 여부 | -| supportAuthenticationPlugin | Body | Boolean | 인증 플러그인 지원 여부 | -| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | -| needMigration | Body | Boolean | 마이그레이션 필요 여부 | -| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -746,27 +826,7 @@ GET /v4.0/db-instances/{dbInstanceId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MARIADB_V10330", - "dbPort": 10000, - "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", - "progressStatus": "NONE", - "dbFlavorId": "e9ed4ef6-78d7-46fa-ace9-32481e97f3b7", - "parameterGroupId": "b03e8b13-de27-4d04-a488-ff5689589372", - "dbSecurityGroupIds": ["01908c35-d2c9-4852-baf0-17f06ec42c03"], - "notificationGroupIds": ["83a62a33-ddbf-4a04-8653-e54463d5b1ac"], - "useDeletionProtection": false, - "useSlowQueryAnalysis": true, - "supportAuthenticationPlugin": true, - "needToApplyParameterGroup": false, - "needMigration": false, - "supportDbVersionUpgrade": true, - "createdYmdt": "2022-11-23T12:03:13+09:00", - "updatedYmdt": "2022-12-02T17:20:17+09:00" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -775,95 +835,124 @@ GET /v4.0/db-instances/{dbInstanceId} --- -### DB 인스턴스 생성하기 +### 오브젝트 스토리지를 이용한 DB 인스턴스 복원 ```http -POST /v4.0/db-instances +POST /v4.0/db-instances/restore-from-obs ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMariaDB:DbInstance.Create | DB 인스턴스 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.RestoreFromObs | 오브젝트 스토리지를 이용한 DB 인스턴스 복원 | -#### 요청 +#### 공통 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|-------|---------|----|---------------------------------------------------------------------| -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbUserName | Body | String | O | DB 사용자 계정명 | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| pingType | Body | Enum | X | 고가용성 사용 시 Ping 타입
- 기본값: `INSERT`
- `INSERT`
- `SELECT` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- 기본값: `NATIVE`(미지원 시 `ED25519`)
- NATIVE: `mysql_native_password`
- ED25519: `auth_ed25519` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | O | DB 포트 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | +| restore.username | Body | String | O | NHN Cloud 계정 혹은 IAM 멤버 ID | +| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | +| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | +| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` |

예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbVersion": "MARIADB_V10330", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", - "availabilityZone": "kr-pub-a" - }, + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "dbVersion": "MYSQL_V8036", + "useHighAvailability": false, + "pingInterval": 3, "storage": { "storageType": "General SSD", - "storageSize": 20 + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR1", + "useBackupLock": true, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR" + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" } ] - } + }, + "restore": { + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" + }, + "useDefaultNotification": false, + "useSlowQueryAnalysis": true, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDeletionProtection": false } ``` @@ -872,64 +961,27 @@ POST /v4.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### DB 인스턴스 수정하기 - -```http -PUT /v4.0/db-instances/{dbInstanceId} -``` - -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMariaDB:DbInstance.Modify | DB 인스턴스 수정하기 | - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|------|---------|----|---------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbPort | Body | Number | X | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| useReadOnly | Body | Boolean | X | 읽기 전용으로 변경 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -

예시

```json { - "dbInstanceName": "db-instance2", - "description": "description2", - "dbPort": 10001, - "dbSecurityGroupIds": [], - "executeBackup": true + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- ### DB 인스턴스 삭제하기 @@ -940,79 +992,99 @@ DELETE /v4.0/db-instances/{dbInstanceId} #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:DbInstance.Delete | DB 인스턴스 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| deleteAutoBackup | Body | Boolean | X | 자동 백업 삭제 여부
- 기본값: `false` | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| deleteAutoBackup | Body | Boolean | X | 자동 백업 삭제 여부
- 기본값: `false` | -### DB 인스턴스 재시작하기 +
예시 +

-```http -POST /v4.0/db-instances/{dbInstanceId}/restart +```json +{ + "deleteAutoBackup": false +} ``` -#### 필요 권한 +

+
-| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMariaDB:DbInstance.Restart | DB 인스턴스 재시작하기 | +#### 응답 -#### 요청 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | -| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| useReadOnly | Body | Boolean | X | 읽기 전용으로 변경 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### DB 인스턴스 강제 재시작하기 + +### DB 인스턴스 상세 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/force-restart +GET /v4.0/db-instances/{dbInstanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|------------------| -| RDSforMariaDB:DbInstance.ForceRestart | DB 인스턴스 강제 재시작하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Get | DB 인스턴스 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| dbPort | Body | Number | DB 포트 | +| dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | +| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | +| useSlowQueryAnalysis | Body | Boolean | Slow query 분석 여부 | +| supportAuthenticationPlugin | Body | Boolean | 인증 plugin 지원 여부 | +| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | +| needMigration | Body | Boolean | 마이그레이션 필요 여부 | +| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -1023,133 +1095,222 @@ POST /v4.0/db-instances/{dbInstanceId}/force-restart "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbInstanceType": "MASTER", + "dbInstanceStatus": "BEFORE_CREATE", + "progressStatus": "NONE", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "notificationGroupIds": [], + "useDeletionProtection": false, + "useSlowQueryAnalysis": false, + "supportAuthenticationPlugin": false, + "needToApplyParameterGroup": false, + "needMigration": false, + "supportDbVersionUpgrade": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

- --- -### DB 인스턴스 시작하기 +### DB 인스턴스 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/start +PUT /v4.0/db-instances/{dbInstanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|--------------| -| RDSforMariaDB:DbInstance.Start | DB 인스턴스 시작하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Modify | DB 인스턴스 수정하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbPort | Body | Number | X | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbVersion | Body | Enum | X | DB 엔진 버전 코드 | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부 | +| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
- 기본값: `false` | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +
예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbPort": 1, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "useSlowQueryAnalysis": false, + "useDummy": false, + "dbSecurityGroupIds": [], + "executeBackup": false, + "useOnlineFailover": false, + "waitReplicationDelay": false, + "useReadOnly": false +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 인스턴스 정지하기 +### 백업 정보 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/stop +GET /v4.0/db-instances/{dbInstanceId}/backup-info ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------|--------------| -| RDSforMariaDB:DbInstance.Stop | DB 인스턴스 정지하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Get | 백업 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| backupPeriod | Body | Number | 백업 보관 기간(일) | +| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | +| backupRetryCount | Body | Number | 백업 재시도 횟수 | +| replicationRegion | Body | Enum | 백업 복제 리전
- KR1: `한국(판교)` | +| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration
- HALF_AN_HOUR
- ONE_HOUR
- ONE_HOUR_AND_HALF
- TWO_HOURS
- TWO_HOURS_AND_HALF
- THREE_HOURS | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "backupPeriod": 1, + "ftwrlWaitTimeout": 1, + "backupRetryCount": 1, + "replicationRegion": "KR1", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] +} +``` + +

+
--- -### DB 인스턴스 복제하기 +### 백업 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/replicate +PUT /v4.0/db-instances/{dbInstanceId}/backup-info ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|--------------| -| RDSforMariaDB:DbInstance.Replicate | DB 인스턴스 복제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Modify | 백업 정보 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------------------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbPort | Body | Number | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록
- 기본값: 원본 DB 인스턴스 값 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: 원본 DB 인스턴스 값 | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입
- 기본값: 원본 DB 인스턴스 값
- 예시: `General SSD` | -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `10` | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각
- 예시: `00:00:00`
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간
- 기본값: 원본 DB 인스턴스 값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json { - "dbInstanceName": "db-instance-replicate", - "description": "description", - "dbPort": 11000, - "network": { - "availabilityZone": "kr-pub-a" - }, - "storage": { - "stroageSize": 100 - } + "backupPeriod": 0, + "ftwrlWaitTimeout": 0, + "backupRetryCount": 0, + "replicationRegion": "KR1", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] } ``` @@ -1158,147 +1319,234 @@ POST /v4.0/db-instances/{dbInstanceId}/replicate #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### DB 인스턴스 승격하기 - -```http -POST /v4.0/db-instances/{dbInstanceId}/promote -``` +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 바이너리 로그 목록 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/binlogs +``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|--------------| -| RDSforMariaDB:DbInstance.Promote | DB 인스턴스 승격하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceBinLog.List | 바이너리 로그 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| binLogs | Body | Array | BinLog 파일 목록 | +| binLogs.binLogFileName | Body | String | BinLog 파일 이름 | +| binLogs.binLogFileSize | Body | Number | BinLog 파일 크기 (Byte) | +| binLogs.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "binLogs": [ + { + "binLogFileName": "binLogFileName-example", + "binLogFileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
--- -### DB 인스턴스 재구축하기 +### 바이너리 로그 삭제 ```http -POST /v4.0/db-instances/{dbInstanceId}/rebuild +POST /v4.0/db-instances/{dbInstanceId}/binlogs/purge ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMariaDB:DbInstance.Rebuild | DB 인스턴스 재구축하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceBinLog.Purge | 바이너리 로그 삭제 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| lastBinLogFileName | Body | String | O | 삭제할 마지막 BinLog 파일 이름 (해당 파일 직전까지 삭제됨) | + +
예시 +

+ +```json +{ + "lastBinLogFileName": "mysql-bin.000010" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 복원 정보 조회 +### 인증서 파일 목록 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/restoration-info +GET /v4.0/db-instances/{dbInstanceId}/certificates ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMariaDB:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceCertificate.List | 인증서 파일 목록 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------------|------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| oldestRestorableYmdt | Body | DateTime | 가장 오래된 복원 가능한 시각 | -| latestRestorableYmdt | Body | DateTime | 가장 최신의 복원 가능한 시각 | -| restorableBackups | Body | Array | 복원 가능한 백업 목록 | -| restorableBackups.backup | Body | Object | 백업 정보 객체 | -| restorableBackups.backup.backupId | Body | UUID | 백업의 식별자 | -| restorableBackups.backup.backupName | Body | String | 백업 이름 | -| restorableBackups.backup.useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| restorableBackups.backup.backupSize | Body | Number | 백업 크기 | -| restorableBackups.backup.backupType | Body | Enum | 백업 유형
- `AUTO`: 자동
- `MANUAL`: 수동 | -| restorableBackups.backup.backupStatus | Body | Enum | 백업 상태
- `BACKING_UP`: 백업 중인 경우
- `COMPLETED`: 백업이 완료된 경우
- `DELETING`: 백업이 삭제 중인 경우
- `DELETED`: 백업이 삭제된 경우
- `ERROR`: 오류가 발생한 경우 | -| restorableBackups.backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| restorableBackups.backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | -| restorableBackups.backup.dbVersion | Body | String | DB 엔진 유형 | -| restorableBackups.backup.failoverCount | Body | Number | 장애 조치 횟수 | -| restorableBackups.backup.binLogFileName | Body | String | 바이너리 로그 파일명 | -| restorableBackups.backup.binLogPosition | Body | Number | 바이너리 로그 파일 위치 | -| restorableBackups.backup.createdYmdt | Body | DateTime | 백업 생성 일시 | -| restorableBackups.backup.updatedYmdt | Body | DateTime | 백업 갱신 일시 | -| restorableBackups.restorableBinLogs | Body | Array | 해당 백업을 이용하여 복원 가능한 바이너리 로그 이름 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| certificates | Body | Array | 인증서 파일 목록 | +| certificates.fileName | Body | String | 인증서 파일 이름 | +| certificates.certificateType | Body | Enum | 인증서 타입
- CA_FILE
- CERT_FILE
- KEY_FILE | +| certificates.fileSize | Body | Number | 인증서 파일 크기(Byte) | +| certificates.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "certificates": [ + { + "fileName": "fileName-example", + "certificateType": "CA_FILE", + "fileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### 인증서 파일 내보내기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/certificates/upload +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceCertificate.Export | 인증서 파일 내보내기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| certificateTypes | Body | Array | O | 업로드할 인증서 타입 목록 | +| tenantId | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 회원 또는 IAM 멤버 ID | +| password | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 인증서 파일의 경로 | + +
예시 +

+```json +{ + "certificateTypes": [], + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" +} +``` + +

+
+ +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "oldestRestorableYmdt": "2023-07-09T16:33:33+09:00", - "latestRestorableYmdt": "2023-07-10T15:44:44+09:00", - "restorableBackups": [ - { - "backup": { - "backupId": "145d889a-fe08-474f-8f58-bde576ff96a9", - "backupName": "example-backup-name", - "backupStatus": "COMPLETED", - "dbInstanceId": "dba1be25-9429-4589-9716-7fb6daad7cb9", - "dbInstanceName": "original-db-instance-name", - "dbVersion": "MARIADB_V10330", - "backupType": "MANUAL", - "backupSize": 8299904, - "useBackupLock": true, - "failoverCount": 0, - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 367916037, - "createdYmdt": "2023-07-10T15:44:44+09:00", - "updatedYmdt": "2023-07-10T15:46:07+09:00" - }, - "restorableBinLogs": [ - "mysql-bin.000001" - ] - } - ] + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1307,45 +1555,98 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info --- -### 복원될 마지막 쿼리 조회 +### DB 스키마 목록 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query +GET /v4.0/db-instances/{dbInstanceId}/db-schemas ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMariaDB:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceSchema.List | DB 스키마 목록 보기 | -#### 공통 요청 +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSchemas | Body | Array | DB 스키마 목록 | +| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | +| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | +| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- STABLE
- CREATING
- SYNCING
- DELETING
- DELETED | +| dbSchemas.createdYmdt | Body | DateTime | 생성 일시 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSchemas": [ + { + "dbSchemaId": "550e8400-e29b-41d4-a716-446655440000", + "dbSchemaName": "dbSchemaName-example", + "dbSchemaStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### DB 스키마 생성하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/db-schemas +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceSchema.Create | DB 스키마 생성하기 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|------|----|-----------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restoreType | Query | Enum | O | 복원 타입 종류
- `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
- `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입 | +#### 요청 -#### restoreType이 `TIMESTAMP`인 경우 +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbSchemaName | Body | String | O | DB 스키마 이름
- 최대 길이: `64`
- 영문 시작, 영문/숫자/_ 허용, 1~64자, MySQL 예약어 불가 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-------|----------|----|-------------------------------------------| -| restoreYmdt | Query | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +
예시 +

-#### restoreType이 `BINLOG`인 경우 +```json +{ + "dbSchemaName": "dbSchemaName-example" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------|-------|--------|----|--------------------| -| backupId | Query | UUID | O | 복원에 사용할 백업의 식별자 | -| binLogFileName | Query | String | O | 복원에 사용할 바이너리 로그 이름 | -| binLogPosition | Query | Number | O | 복원에 사용할 바이너리 로그 위치 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|----------|--------------------------------------| -| executedYmdt | Body | DateTime | 쿼리 수행 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| lastQuery | Body | String | 마지막 수행 쿼리 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -1357,8 +1658,7 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query "resultMessage": "SUCCESS", "isSuccessful": true }, - "executedYmdt": "2023-03-17T14:02:29+09:00", - "lastQuery": "INSERT INTO `test`.`test`SET @1='0123'" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1367,212 +1667,153 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query --- -### 복원 +### DB 스키마 삭제하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/restore +DELETE /v4.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|--------------| -| RDSforMariaDB:DbInstance.Restore | DB 인스턴스 복원하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceSchema.Delete | DB 스키마 삭제하기 | -#### 공통 요청 +#### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restore | Body | Object | O | 복원 정보 객체 | -| restore.restoreType | Body | Enum | O | 복원 타입 종류
- `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
- `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입
- `BACKUP`: 기존에 생성한 백업을 이용한 스냅숏 복원 타입 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 고가용성 사용 시 필수 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| pingType | Body | Enum | X | 고가용성 사용 시 Ping 타입
- 기본값: `INSERT`
- `INSERT`
- `SELECT` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | X | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | X | 서브넷의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a`
- 기본값: 랜덤 선택 | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입
- 예시: `General SSD`
- 기본값: 원본 DB 인스턴스 값 | -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +이 API는 요청 본문을 요구하지 않습니다. -#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbSchemaId | URL | UUID | O | DB 스키마의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|----------|----|------------------------------------------------------------------------------------------------| -| restore.restoreYmdt | Body | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD)
복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능합니다. | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |

예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "TIMESTAMP", - "restoreYmdt": "2023-07-10T15:44:44+09:00" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) +--- + +### DB 사용자 목록 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/db-users +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------------|------|--------|----|--------------------| -| restore.backupId | Body | UUID | O | 복원에 사용할 백업의 식별자 | -| restore.binLog | Body | Object | O | 바이너리 로그 정보 객체 | -| restore.binLog.binLogFileName | Body | String | O | 복원에 사용할 바이너리 로그 이름 | -| restore.binLog.binLogPosition | Body | Number | O | 복원에 사용할 바이너리 로그 위치 | +#### 필요 권한 -* 바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그를 복원할 수 있습니다. +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceUser.List | DB 사용자 목록 보기 | +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbUsers | Body | Array | DB 사용자 목록 | +| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | +| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | +| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | +| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- STABLE
- CREATING
- UPDATING
- SYNCING
- DELETING
- DELETED | +| dbUsers.createdYmdt | Body | DateTime | 생성 일시 | +| dbUsers.updatedYmdt | Body | DateTime | 수정 일시 | +| dbUsers.authenticationPlugin | Body | Enum | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- ED25519: `ed25519 인증 (MariaDB 전용)` | +| dbUsers.tlsOption | Body | Enum | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BINLOG", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36", - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 1234567 - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbUsers": [ + { + "dbUserId": "550e8400-e29b-41d4-a716-446655440000", + "dbUserName": "dbUserName-example", + "host": "host-example", + "authorityType": "CUSTOM", + "dbUserStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" + } + ] } ```

-#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) +--- -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|------|------------------------------|-----------------| -| restore.backupId | Body | UUID | O(restoreType이 `BACKUP`인 경우) | 복원에 사용할 백업의 식별자 | +### DB 사용자 생성하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/db-users +``` +#### 필요 권한 +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceUser.Create | DB 사용자 생성하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| host | Body | String | O | DB 사용자 계정의 호스트명
- 최대 길이: `45` | +| authorityType | Body | Enum | O | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- ED25519: `ed25519 인증 (MariaDB 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BACKUP", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "host": "host-example", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" } ``` @@ -1581,114 +1822,107 @@ POST /v4.0/db-instances/{dbInstanceId}/restore #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### 오브젝트 스토리지로부터 복원 +### DB 사용자 삭제하기 ```http -POST /v4.0/db-instances/restore-from-obs +DELETE /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------------|-------------------------| -| RDSforMariaDB:DbInstance.RestoreFromObs | DB 인스턴스 오브젝트 스토리지로부터 복원 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceUser.Delete | DB 사용자 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|----------------------------------------------------------------------------------------| -| restore | Body | Object | O | 복원 정보 객체 | -| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | -| restore.username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | -| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | -| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| pingType | Body | Enum | X | 고가용성 사용 시 Ping 타입
- 기본값: `INSERT`
- `INSERT`
- `SELECT` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbVersion": "MARIADB_V10330", - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "tenantId":"tenant-id", - "username":"username", - "password":"password", - "targetContainer":"targetContainer", - "objectPath":"objectPath" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 사용자 수정하기 + +```http +PUT /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceUser.Modify | DB 사용자 수정하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| authorityType | Body | Enum | X | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- ED25519: `ed25519 인증 (MariaDB 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | + +
예시 +

+ +```json +{ + "dbPassword": "dbPassword", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" } ``` @@ -1697,15 +1931,30 @@ POST /v4.0/db-instances/restore-from-obs #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

---- +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` +

+
-### DB 인스턴스 삭제 보호 설정 변경하기 +--- + +### DB 인스턴스 삭제 보호 설정 변경 ```http PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection @@ -1713,21 +1962,157 @@ PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMariaDB:DbInstance.Modify | DB 인스턴스 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Modify | DB 인스턴스 삭제 보호 설정 변경 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | + +
예시 +

+ +```json +{ + "useDeletionProtection": false +} +``` + +

+
#### 응답 이 API는 응답 본문을 반환하지 않습니다. +--- + +### DB 인스턴스 강제 재시작하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/force-restart +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.ForceRestart | DB 인스턴스 강제 재시작하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 고가용성 정보 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/high-availability +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Get | 고가용성 정보 보기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| useHighAvailability | Body | Boolean | 고가용성 사용 여부
- 기본값: `false` | +| haStatus | Body | Enum | 고가용성 상태
- CREATED: `생성됨`
- STABLE: `정상`
- PAUSING: `일시 중지 중`
- DISABLE: `정지`
- DISABLE_MASTER_IN_REPLICATION: `마스터 비정상 복제 감지로 인한 고가용성 중단`
- DISABLE_MHA_PROCESS: `고가용성 프로세스 중단`
- DISABLE_REPLICATION_STOP: `복제 중단으로 인한 고가용성 중단`
- DISABLE_REPLICATION_DELAY: `복제 지연으로 인한 고가용성 중단`
- FAILOVER_STARTED: `장애 조치 시작`
- FAILOVER_FAILED: `장애 조치 실패`
- FAILOVER_COMPLETED: `장애 조치 완료`
- DELETED: `삭제됨`
- PAUSED: `일시 중지`
- PAUSED_DUE_TO_TASK: `작업으로 인한 일시 중지`
- MASTER_FAILURE_DETECTION: `마스터 장애 감지` | +| pingInterval | Body | Number | Ping 간격(초) | +| pingType | Body | String | Ping 방식 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "useHighAvailability": false, + "haStatus": "CREATED", + "pingInterval": 1, + "pingType": "pingType-example" +} +``` + +

+
+ +--- + +### 고가용성 수정하기 + +```http +PUT /v4.0/db-instances/{dbInstanceId}/high-availability +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:HighAvailability.Modify | 고가용성 수정하기 | + +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +
예시 +

+ +```json +{ + "useHighAvailability": false, + "pingInterval": 1 +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | +
예시

@@ -1737,7 +2122,8 @@ PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1746,58 +2132,33 @@ PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection --- -### 고가용성 상태 - -| 상태 | 설명 | -|----------------------------------|---------------------------------| -| `CREATED` | 고가용성이 생성된 경우 | -| `STABLE` | 고가용성이 정상인 경우 | -| `PAUSING` | 고가용성이 일시 중지 중인 경우 | -| `PAUSED` | 고가용성이 일시 중지된 경우 | -| `PAUSED_DUE_TO_TASK` | 작업으로 인해 고가용성이 일시 중지된 경우 | -| `DISABLE_MASTER_IN_REPLICATION` | 마스터 비정상 복제 감지로 고가용성이 중단된 경우 | -| `DISABLE_MHA_PROCESS` | 고가용성 프로세스가 중단된 경우 | -| `DISABLE_REPLICATION_STOP` | 복제 중단으로 인해 고가용성이 중단된 경우 | -| `DISABLE_REPLICATION_DELAY` | 복제 지연으로 인해 고가용성이 중단된 경우 | -| `MASTER_FAILURE_DETECTION` | 마스터 장애가 감지된 경우 | -| `FAILOVER_STARTED` | 장애 조치가 시작된 경우 | -| `FAILOVER_FAILED` | 장애 조치가 실패한 경우 | -| `FAILOVER_COMPLETED` | 장애 조치가 완료된 경우 | -| `DELETED` | 고가용성이 삭제된 경우 | - ---- - -### 고가용성 정보 보기 +### 고가용성 일시 중지하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/high-availability +POST /v4.0/db-instances/{dbInstanceId}/high-availability/pause ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|------------| -| RDSforMariaDB:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:HighAvailability.Pause | 고가용성 일시 중지하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|---------|---------------------------------------------------------------------------------------------------------------------| -| useHighAvailability | Body | Boolean | 고가용성 사용 여부 | -| haStatus | Body | Enum | 고가용성 상태 | -| pingInterval | Body | Number | Ping 간격(초) | -| pingType | Body | Enum | Ping 타입
- `INSERT`
- `SELECT` | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |

예시 -

```json @@ -1807,47 +2168,58 @@ GET /v4.0/db-instances/{dbInstanceId}/high-availability "resultMessage": "SUCCESS", "isSuccessful": true }, - "useHighAvailability": true, - "haStatus": "STABLE", - "pingInterval": 3, - "pingType": "INSERT" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-
--- -### 고가용성 수정하기 +### 고가용성 복구하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/high-availability +POST /v4.0/db-instances/{dbInstanceId}/high-availability/repair ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|-----------| -| RDSforMariaDB:HighAvailability.Modify | 고가용성 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:HighAvailability.Repair | 고가용성 복구하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|---------|----|------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | -| pingType | Body | Enum | X | 고가용성 사용 시 Ping 타입
- `INSERT`
- `SELECT` | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 고가용성 사용 시 필수값 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- ### 고가용성 다시 시작하기 @@ -1858,142 +2230,190 @@ POST /v4.0/db-instances/{dbInstanceId}/high-availability/resume #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:HighAvailability.Resume | 고가용성 다시 시작하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### 고가용성 일시 중지하기 +
예시 +

-```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/pause +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|----------------------------------------------------|--------------| -| RDSforMariaDB:HighAvailability.Pause | 고가용성 일시 중지하기 | - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 고가용성 복구하기 +### 고가용성 분리하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/repair +POST /v4.0/db-instances/{dbInstanceId}/high-availability/split ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|-----------| -| RDSforMariaDB:HighAvailability.Repair | 고가용성 복구하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:HighAvailability.Split | 고가용성 분리하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 고가용성 분리하기 +### 로그 파일 목록 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/split +GET /v4.0/db-instances/{dbInstanceId}/log-files ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|-----------| -| RDSforMariaDB:HighAvailability.Split | 고가용성 분리하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceLog.List | 로그 파일 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| logFiles | Body | Array | 로그 파일 목록 | +| logFiles.logFileName | Body | String | 로그 파일 이름 | +| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- ERROR
- BINLOG
- GENERAL
- SLOW_QUERY
- AUDIT
- BACKUP | +| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | +| logFiles.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "logFiles": [ + { + "logFileName": "logFileName-example", + "logFileType": "ERROR", + "logFileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
--- -### 데이터 스토리지 정보 보기 +### 로그 파일 내보내기 ```http -GET /v4.0/db-instances/{dbInstanceId}/storage-info +POST /v4.0/db-instances/{dbInstanceId}/log-files/export ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMariaDB:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceLog.Export | 로그 파일 내보내기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| logFileNames | Body | Array | O | 로그 파일 이름 목록 | +| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 회원 또는 IAM 멤버 ID | +| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | + +
예시 +

+ +```json +{ + "logFileNames": [], + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|---------|--------------------------------------------------------------------------------------| -| storageType | Body | Enum | 데이터 스토리지 타입 | -| storageSize | Body | Number | 데이터 스토리지 크기(GB) | -| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- `DETACHED`: 부착되지 않음
- `ATTACHED`: 부착됨
- `DELETED`: 삭제됨 | -| storageAutoscale | Body | Object | 데이터 스토리지 자동 확장 객체 | -| storageAutoscale.useStorageAutoscale | Body | Boolean | 스토리지 자동 확장 여부 | -| storageAutoscale.threshold | Body | Number | 자동 확장 조건(%) | -| storageAutoscale.maxStorageSize | Body | Number | 자동 확장 최대 크기(GB) | -| storageAutoscale.cooldownTime | Body | Number | 자동 확장 쿨다운 시간(분) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2005,89 +2425,103 @@ GET /v4.0/db-instances/{dbInstanceId}/storage-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageType": "General SSD", - "storageSize": 20, - "storageStatus": "ATTACHED", - "storageAutoscale": { - "useStorageAutoscale": true, - "threshold": 80, - "maxStorageSize": 100, - "cooldownTime": 10 - } + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- --- -### 데이터 스토리지 정보 수정하기 +### 로그 파일 내용 보기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/storage-info +GET /v4.0/db-instances/{dbInstanceId}/log-files/{logFileName} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMariaDB:DbInstance.Modify | DB 인스턴스 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceLog.Get | 로그 파일 내용 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: 현재값
- 최댓값: `2048` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| logFileName | URL | UUID | O | 로그 파일 이름 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| content | Body | String | 로그 파일 내용 (최대 65533 bytes) | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "content": "content-example" +} +``` + +

+
--- -### 백업 정보 보기 +### DB 인스턴스 유지 관리 목록 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/backup-info +GET /v4.0/db-instances/{dbInstanceId}/maintenances ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMariaDB:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Maintenance.List | DB 인스턴스 유지 관리 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| type | Query | String | X | | +| statuses | Query | String | X | | +| category | Query | String | X | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|---------|----------------| -| backupPeriod | Body | Number | 백업 보관 기간(일) | -| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | -| backupRetryCount | Body | Number | 백업 재시도 횟수 | -| replicationRegion | Body | Enum | 백업 복제 리전 | -| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | -| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 유지 관리 목록 갯수 | +| maintenances | Body | Array | 유지 관리 목록 | +| maintenances.maintenanceId | Body | UUID | 유지 관리 아이디 | +| maintenances.dbInstanceId | Body | UUID | DB 인스턴스 아이디 | +| maintenances.category | Body | Enum | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| maintenances.description | Body | String | 유지 관리 설명 | +| maintenances.type | Body | Enum | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| maintenances.payload | Body | Object | 유지 관리 타입에 따른 Payload | +| maintenances.required | Body | Boolean | 유지 관리 필수 여부 | +| maintenances.deadlineYmdt | Body | DateTime | 유지 관리 강제 적용 일시 | +| maintenances.status | Body | Enum | 유지 관리 상태
- PENDING: `대기`
- READY: `준비`
- RUNNING: `실행 중`
- COMPLETED: `완료`
- FAILED: `실패`
- EXCLUDED: `제외`
- DELETED: `삭제`
- UNKNOWN | +| maintenances.executionType | Body | Enum | 유지 관리 실행 타입
- SCHEDULED: `예약 실행 (유지 관리 기간 자동 실행)`
- MANUAL: `수동 실행 (즉시 실행)`
- FORCED: `강제 실행 (데드라인 초과 자동 실행)` | +| maintenances.addedYmdt | Body | DateTime | 유지 관리 스케줄 등록 일시 | +| maintenances.executionStartedYmdt | Body | DateTime | 유지 관리 시작 일시 | +| maintenances.executionCompletedYmdt | Body | DateTime | 유지 관리 종료 일시 |
예시

@@ -2099,15 +2533,23 @@ GET /v4.0/db-instances/{dbInstanceId}/backup-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "backupPeriod": 1, - "ftwrlWaitTimeout": 1800, - "backupRetryCount": 0, - "replicationRegion": null, - "useBackupLock": false, - "backupSchedules": [ + "totalCounts": 1, + "maintenances": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" + "maintenanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": { + }, + "required": false, + "deadlineYmdt": "2023-12-31T15:00:00+09:00", + "status": "PENDING", + "executionType": "SCHEDULED", + "addedYmdt": "2023-12-31T15:00:00+09:00", + "executionStartedYmdt": "2023-12-31T15:00:00+09:00", + "executionCompletedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -2116,47 +2558,41 @@ GET /v4.0/db-instances/{dbInstanceId}/backup-info

- --- -### 백업 정보 수정하기 +### DB 인스턴스 유지 관리 즉시 실행하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/backup-info +POST /v4.0/db-instances/{dbInstanceId}/maintenances/execute-now ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMariaDB:DbInstance.Modify | DB 인스턴스 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Maintenance.Execute | DB 인스턴스 유지 관리 즉시 실행하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------------------------|------|---------|----|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | -| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | -| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| configId | Body | String | O | 설정 아이디 | +| category | Body | Enum | O | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| description | Body | String | X | 유지 관리 설명 | +| type | Body | Enum | O | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| payload | Body | String | O | 유지 관리 타입에 따른 Payload |
예시

```json { - "backupPeriod": 5, - "useBackupLock": true, - "backupSchedules": [ - { - "backupWndBgnTime": "01:00:00", - "backupWndDuration": "TWO_HOURS" - } - ] + "configId": "configId-example", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": "payload-example" } ``` @@ -2165,137 +2601,134 @@ PUT /v4.0/db-instances/{dbInstanceId}/backup-info #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 네트워크 정보 보기 +### DB 인스턴스 유지 관리 예약하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/network-info +POST /v4.0/db-instances/{dbInstanceId}/maintenances/schedule ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMariaDB:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Maintenance.Update | DB 인스턴스 유지 관리 예약하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------------------------------------------------------------------------------------------------------------------------------| -| availabilityZone | Body | Enum | DB 인스턴스를 생성할 가용성 영역 | -| subnet | Body | Object | 서브넷 객체 | -| subnet.subnetId | Body | UUID | 서브넷의 식별자 | -| subnet.subnetName | Body | UUID | 서브넷을 식별할 수 있는 이름 | -| subnet.subnetCidr | Body | UUID | 서브넷의 CIDR | -| endPoints | Body | Array | 접속 정보 목록 | -| endPoints.domain | Body | String | 도메인 | -| endPoints.ipAddress | Body | String | IP 주소 | -| endPoints.endPointType | Body | Enum | 접속 정보 타입
-`EXTERNAL`: 외부 접속 도메인
-`INTERNAL`: 내부 접속 도메인
-`PUBLIC`: (Deprecated) 외부 접속 도메인
-`PRIVATE`: (Deprecated) 내부 접속 도메인 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| configId | Body | String | O | 설정 아이디 | +| category | Body | Enum | O | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| description | Body | String | X | 유지 관리 설명 | +| type | Body | Enum | O | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| payload | Body | String | O | 유지 관리 타입에 따른 Payload |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "availabilityZone": "kr-pub-a", - "subnet": { - "subnetId": "bd453789-34ae-416c-9f78-05b9e43a46be", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/16" - }, - "endPoints": [ - { - "domain": "ea548a78-d85f-43b4-8ddf-c88d999b9905.internal.kr1.mariadb.rds.nhncloudservice.com", - "ipAddress": "192.168.0.2", - "endPointType": "INTERNAL" - } - ] + "configId": "configId-example", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": "payload-example" } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- -### 네트워크 정보 수정하기 +### DB 인스턴스 유지 관리 삭제하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/network-info +DELETE /v4.0/db-instances/{dbInstanceId}/maintenances/{maintenanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMariaDB:DbInstance.Modify | DB 인스턴스 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Maintenance.Delete | DB 인스턴스 유지 관리 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| maintenanceId | URL | UUID | O | 유지 관리 아이디 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### DB 사용자 목록 보기 +### 네트워크 정보 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/db-users +GET /v4.0/db-instances/{dbInstanceId}/network-info ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|---------------------| -| RDSforMariaDB:DbInstanceUser.List | DB 인스턴스 내 사용자 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Get | 네트워크 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|-----------------------------------------------------------------------------------------------------------------------------| -| dbUsers | Body | Array | DB 사용자 목록 | -| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | -| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | -| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | -| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `UPDATING`: 수정 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbUsers.authenticationPlugin | Body | Enum | 인증 플러그인
- NATIVE: `mysql_native_password`
- ED25519: `auth_ed25519` | -| dbUsers.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbUsers.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| availabilityZone | Body | String | DB 인스턴스를 생성할 가용성 영역 | +| subnet | Body | Object | 서브넷 객체 | +| subnet.subnetId | Body | UUID | 서브넷의 식별자 | +| subnet.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnet.subnetCidr | Body | String | 서브넷의 CIDR | +| endPoints | Body | Array | 접속 정보 목록 | +| endPoints.domain | Body | String | 도메인 | +| endPoints.ipAddress | Body | String | IP 주소 | +| endPoints.endPointType | Body | String | 접속 정보 타입 |
예시

@@ -2307,15 +2740,17 @@ GET /v4.0/db-instances/{dbInstanceId}/db-users "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbUsers": [ + "availabilityZone": "kr-pub-a", + "subnet": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example" + }, + "endPoints": [ { - "dbUserId": "4b3d530b-fd02-4d59-a620-83d019a67bbb", - "dbUserName": "db-user", - "host": "%", - "authorityType": "DDL", - "dbUserStatus": "STABLE", - "createdYmdt": "2023-03-17T14:02:29+09:00", - "updatedYmdt": "2023-03-17T14:02:31+09:00" + "domain": "domain-example", + "ipAddress": "ipAddress-example", + "endPointType": "endPointType-example" } ] } @@ -2326,39 +2761,31 @@ GET /v4.0/db-instances/{dbInstanceId}/db-users --- -### DB 사용자 생성하기 +### 네트워크 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/db-users +PUT /v4.0/db-instances/{dbInstanceId}/network-info ``` - #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMariaDB:DbInstanceUser.Create | DB 인스턴스 내 사용자 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Modify | 네트워크 정보 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserName | Body | String | O | DB 사용자 계정 이름
- 최소 길이: `1`
- 최대 길이: `32` | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | -| host | Body | String | O | DB 사용자 계정의 호스트명
- 예시: `1.1.1.%` | -| authorityType | Body | Enum | O | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- 기본값: `NATIVE`(미지원 시 `ED25519`)
- NATIVE: `mysql_native_password`
- ED25519: `auth_ed25519` | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 |

예시

```json { - "dbUserName": "db-user", - "dbPassword": "password", - "host": "1.1.1.%", - "authorityType": "CRUD" + "usePublicAccess": false } ``` @@ -2367,112 +2794,222 @@ POST /v4.0/db-instances/{dbInstanceId}/db-users #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 사용자 수정하기 +### DB 인스턴스 승격하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +POST /v4.0/db-instances/{dbInstanceId}/promote ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMariaDB:DbInstanceUser.Modify | DB 인스턴스 내 사용자 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Promote | DB 인스턴스 승격하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | -| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | -| authorityType | Body | Enum | X | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- ED25519: `auth_ed25519` | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "authorityType": "DDL" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### DB 사용자 삭제하기 +### DB 인스턴스 재구축하기 ```http -DELETE /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +POST /v4.0/db-instances/{dbInstanceId}/rebuild ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMariaDB:DbInstanceUser.Delete | DB 인스턴스 내 사용자 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Rebuild | DB 인스턴스 재구축하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 스키마 목록 보기 +### DB 인스턴스 복제하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/db-schemas +POST /v4.0/db-instances/{dbInstanceId}/replicate ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|---------------------| -| RDSforMariaDB:DbInstanceSchema.List | DB 인스턴스 내 스키마 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Replicate | DB 인스턴스 복제하기 | + +#### 공통 요청 -#### 요청 +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | X | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부 | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | X | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | X | 데이터 스토리지 타입 | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | X | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -이 API는 요청 본문을 요구하지 않습니다. +
예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, + "network": { + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "backup": { + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 0, + "replicationRegion": "KR1", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + } +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|------------------------------------------------------------------------------------------------------| -| dbSchemas | Body | Array | DB 스키마 목록 | -| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | -| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | -| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbSchemas.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2484,14 +3021,7 @@ GET /v4.0/db-instances/{dbInstanceId}/db-schemas "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSchemas": [ - { - "dbSchemaId": "7c9a94b8-86c1-435d-8af2-82a5e9d53fd4", - "dbSchemaName": "schema", - "dbSchemaStatus": "STABLE", - "createdYmdt": "2023-03-20T13:37:45+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2500,93 +3030,111 @@ GET /v4.0/db-instances/{dbInstanceId}/db-schemas --- -### DB 스키마 생성하기 +### DB 인스턴스 재시작하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/db-schemas +POST /v4.0/db-instances/{dbInstanceId}/restart ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|--------------------| -| RDSforMariaDB:DbInstanceSchema.Create | DB 인스턴스 내 스키마 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Restart | DB 인스턴스 재시작하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|--------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaName | Body | String | O | DB 스키마 이름 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` | -### DB 스키마 삭제하기 +

예시 +

-```http -DELETE /v4.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} +```json +{ + "useOnlineFailover": false, + "executeBackup": false, + "waitReplicationDelay": false, + "useReadOnly": false +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------------|--------------------| -| RDSforMariaDB:DbInstanceSchema.Delete | DB 인스턴스 내 스키마 삭제하기 | +

+
-#### 요청 +#### 응답 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaId | URL | UUID | O | DB 스키마의 식별자 | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 로그 파일 목록 보기 +### DB 인스턴스 복원 정보 조회 ```http -GET /v4.0/db-instances/{dbInstanceId}/log-files +GET /v4.0/db-instances/{dbInstanceId}/restoration-info ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|-----------------------| -| RDSforMariaDB:DbInstanceLog.List | DB 인스턴스 내 로그 파일 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Get | DB 인스턴스 복원 정보 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|-------|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileTypes | Query | Array | X | 로그 파일 타입 종류 목록
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| logFiles | Body | Array | 로그 파일 목록 | -| logFiles.logFileName | Body | String | 로그 파일명 | -| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | -| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | -| logFiles.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| oldestRestorableYmdt | Body | DateTime | 가장 오래된 복원 가능한 시각 | +| latestRestorableYmdt | Body | DateTime | 가장 최신의 복원 가능한 시각 | +| restorableBackups | Body | Array | 복원 가능한 백업 목록 | +| restorableBackups.backup | Body | Object | 백업 정보 객체 | +| restorableBackups.backup.backupId | Body | UUID | 백업의 식별자 | +| restorableBackups.backup.backupName | Body | String | 백업 이름 | +| restorableBackups.backup.backupStatus | Body | Enum | 백업 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| restorableBackups.backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| restorableBackups.backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | +| restorableBackups.backup.dbVersion | Body | Enum | DB 엔진 유형 | +| restorableBackups.backup.backupType | Body | Enum | 백업 유형
- AUTO
- MANUAL | +| restorableBackups.backup.backupSize | Body | Number | 백업 크기 | +| restorableBackups.backup.useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | +| restorableBackups.backup.failoverCount | Body | Number | 장애 조치 횟수 | +| restorableBackups.backup.binLogFileName | Body | String | 바이너리 로그 파일 이름 | +| restorableBackups.backup.binLogPosition | Body | Object | 바이너리 로그 파일 위치 | +| restorableBackups.backup.createdYmdt | Body | DateTime | 백업 생성 일시 | +| restorableBackups.backup.updatedYmdt | Body | DateTime | 백업 갱신 일시 | +| restorableBackups.restorableBinLogs | Body | Array | 해당 백업을 이용하여 복원 가능한 바이너리 로그 이름 목록 |
예시

@@ -2598,12 +3146,28 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files "resultMessage": "SUCCESS", "isSuccessful": true }, - "logFiles": [ + "oldestRestorableYmdt": "2023-12-31T15:00:00+09:00", + "latestRestorableYmdt": "2023-12-31T15:00:00+09:00", + "restorableBackups": [ { - "logFileName": "xtra_full.log-20230317", - "logFileType": "BACKUP", - "logFileSize": 4096, - "createdYmdt": "2023-03-17T14:02:29+09:00" + "backup": { + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "dbVersion": "MYSQL_V8036", + "backupType": "AUTO", + "backupSize": 1, + "useBackupLock": false, + "failoverCount": 1, + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + }, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + }, + "restorableBinLogs": [] } ] } @@ -2614,33 +3178,32 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files --- -### 로그 파일 내용 보기 +### 복원될 마지막 쿼리 조회 ```http -GET /v4.0/db-instances/{dbInstanceId}/log-files/{logFileName} +GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|-----------------------| -| RDSforMariaDB:DbInstanceLog.Get | DB 인스턴스 내 로그 파일 내용 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Get | 복원될 마지막 쿼리 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|--------|----|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileName | URL | String | O | 로그 파일명 | -| logFileType | Query | Enum | O | 로그 파일 타입 종류
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------|------|--------|---------------------------| -| content | Body | String | 로그 파일 내용(최대 65533 Bytes) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| executedYmdt | Body | DateTime | 쿼리 수행 일시 | +| lastQuery | Body | String | 마지막 수행 쿼리 |

예시

@@ -2652,7 +3215,8 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files/{logFileName} "resultMessage": "SUCCESS", "isSuccessful": true }, - "content": "..." + "executedYmdt": "2023-12-31T15:00:00+09:00", + "lastQuery": "lastQuery-example" } ``` @@ -2661,41 +3225,145 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files/{logFileName} --- -### 로그 파일 내보내기 +### DB 인스턴스 복원 ```http -POST /v4.0/db-instances/{dbInstanceId}/log-files/export +POST /v4.0/db-instances/{dbInstanceId}/restore ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|----------------------| -| RDSforMariaDB:DbInstanceLog.Export | DB 인스턴스 내 로그 파일 내보내기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Restore | DB 인스턴스 복원 | -#### 요청 +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자. 미입력 시 원본 인스턴스의 사양이 적용됩니다. | +| dbPort | Body | Number | X | DB 포트 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | X | 스토리지 정보 객체. 미입력 시 원본 인스턴스의 스토리지 설정이 적용됩니다. | +| storage.storageType | Body | Enum | X | 스토리지 타입. 미입력 시 원본 인스턴스의 스토리지 타입이 적용됩니다. | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB). 미입력 시 원본 인스턴스의 스토리지 크기가 적용됩니다.
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| network | Body | Object | X | 네트워크 정보 객체. 미입력 시 원본 인스턴스의 네트워크 설정이 적용됩니다. | +| network.subnetId | Body | UUID | X | 서브넷의 식별자. 미입력 시 원본 인스턴스 값 사용 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역. 미입력 시 랜덤 선택 | +| backup | Body | Object | X | 백업 정보 객체. 미입력 시 원본 인스턴스의 백업 설정이 적용됩니다. | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일). 미입력 시 원본 인스턴스의 백업 보관 기간이 적용됩니다.
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록. 미입력 시 원본 인스턴스의 백업 스케쥴이 적용됩니다. | +| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.restoreType | Body | Enum | O | 복원 타입
- TIMESTAMP: `복원 가능한 시간 이내의 시간을 이용한 시점 복원`
- BINLOG: `복원 가능한 바이너리 로그 위치를 이용한 시점 복원`
- BACKUP: `기존에 생성한 백업을 이용한 스냅숏 복원` | +| restore.binLog.binLogFileName | Body | String | X | 복원에 사용할 바이너리 로그 이름 | +| restore.binLog.binLogPosition | Body | Object | X | 복원에 사용할 바이너리 로그 위치 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자. 미입력 시 원본 인스턴스의 파라미터 그룹이 적용됩니다. | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록. 미입력 시 원본 인스턴스의 보안 그룹이 적용됩니다. | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | + +#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.restoreYmdt | Body | DateTime | X | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | + +복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능합니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|--------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileNames | Body | Array | O | 로그 파일명 목록
- 최소 크기: `1` | -| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | +#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 | +| restore.binLog | Body | Object | X | 복원에 사용할 바이너리 로그 정보 객체 | + +바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. + +#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 |

예시

```json { - "logFileNames": ["xtra_full.log-20230317"], - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "logs/backup" + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "useHighAvailability": false, + "pingInterval": 3, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "backup": { + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR1", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + }, + "restore": { + "restoreType": "TIMESTAMP", + "binLog": { + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + } + } + }, + "useDefaultNotification": false, + "useSlowQueryAnalysis": true, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDeletionProtection": false } ``` @@ -2704,41 +3372,54 @@ POST /v4.0/db-instances/{dbInstanceId}/log-files/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### BinLog 목록 보기 +### DB 인스턴스 시작하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/binlogs +POST /v4.0/db-instances/{dbInstanceId}/start ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|---------------| -| RDSforMariaDB:DbInstanceBinLog.List | BinLog 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Start | DB 인스턴스 시작하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|---------|----|---------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| deletable | Query | Boolean | X | 삭제 가능한 BinLog만 조회할지 여부
- `true`: 마지막 BinLog 제외
- `false`: 전체
- 기본값: `false` | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|----------|-----------------------------------| -| binLogs | Body | Array | BinLog 파일 목록 | -| binLogs.binLogFileName | Body | String | BinLog 파일명 | -| binLogs.binLogFileSize | Body | Number | BinLog 파일 크기(Byte) | -| binLogs.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2750,13 +3431,7 @@ GET /v4.0/db-instances/{dbInstanceId}/binlogs "resultMessage": "SUCCESS", "isSuccessful": true }, - "binLogs": [ - { - "binLogFileName": "mysql-bin.000001", - "binLogFileSize": 1073741824, - "createdYmdt": "2023-03-17T14:02:29+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2765,40 +3440,31 @@ GET /v4.0/db-instances/{dbInstanceId}/binlogs --- -### BinLog 삭제 +### DB 인스턴스 정지하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/binlogs/purge +POST /v4.0/db-instances/{dbInstanceId}/stop ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|------------| -| RDSforMariaDB:DbInstanceBinLog.Purge | BinLog 삭제 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Stop | DB 인스턴스 정지하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| lastBinLogFileName | Body | String | O | 삭제할 마지막 BinLog 파일명(해당 파일 직전까지 삭제됩니다) | - -

예시 -

- -```json -{ - "lastBinLogFileName": "mysql-bin.000010" -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2809,7 +3475,8 @@ POST /v4.0/db-instances/{dbInstanceId}/binlogs/purge "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2818,35 +3485,38 @@ POST /v4.0/db-instances/{dbInstanceId}/binlogs/purge --- -### 인증서 파일 목록 보기 +### 스토리지 정보 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/certificates +GET /v4.0/db-instances/{dbInstanceId}/storage-info ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------------|---------------| -| RDSforMariaDB:DbInstanceCertificate.List | 인증서 파일 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Get | 스토리지 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|---------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|------------------------------------------------------------------------------| -| certificates | Body | Array | 인증서 파일 목록 | -| certificates.fileName | Body | String | 인증서 파일명 | -| certificates.certificateType | Body | Enum | 인증서 타입
- `CA_FILE`: CA 인증서
- `CERT_FILE`: 인증서
- `KEY_FILE`: 비밀 키 | -| certificates.fileSize | Body | Number | 인증서 파일 크기(Byte) | -| certificates.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageType | Body | String | 데이터 스토리지 타입 | +| storageSize | Body | Number | 데이터 스토리지 크기(GB) | +| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- DELETED: `삭제됨`
- PENDING_DELETION: `삭제 유예됨`
- DELETION_RESERVED: `삭제 예약됨 (스냅샷 정리 대기)`
- DETACHED: `해제됨`
- ATTACHED: `할당됨` | +| storageAutoscale | Body | Object | 데이터 스토리지 자동 확장 객체 | +| storageAutoscale.useStorageAutoscale | Body | Boolean | 스토리지 자동 확장 여부 | +| storageAutoscale.threshold | Body | Number | 자동 확장 조건(%) | +| storageAutoscale.maxStorageSize | Body | Number | 자동 확장 최대 크기(GB) | +| storageAutoscale.cooldownTime | Body | Number | 자동 확장 쿨다운 시간(분) |

예시

@@ -2858,14 +3528,15 @@ GET /v4.0/db-instances/{dbInstanceId}/certificates "resultMessage": "SUCCESS", "isSuccessful": true }, - "certificates": [ - { - "fileName": "ca.pem", - "certificateType": "CA_FILE", - "fileSize": 2048, - "createdYmdt": "2023-03-17T14:02:29+09:00" - } - ] + "storageType": "General SSD", + "storageSize": 1, + "storageStatus": "DELETED", + "storageAutoscale": { + "useStorageAutoscale": false, + "threshold": 1, + "maxStorageSize": 1, + "cooldownTime": 1 + } } ``` @@ -2874,41 +3545,44 @@ GET /v4.0/db-instances/{dbInstanceId}/certificates --- -### 인증서 파일 내보내기 +### 스토리지 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/certificates/upload +PUT /v4.0/db-instances/{dbInstanceId}/storage-info ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------------|-------------| -| RDSforMariaDB:DbInstanceCertificate.Export | 인증서 파일 내보내기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Modify | 스토리지 정보 수정하기 | -#### 요청 +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최댓값: `2048` | +| storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | + +#### 스토리지 자동 확장 사용 시 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|--------|----|------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| certificateTypes | Body | Array | O | 업로드할 인증서 타입
- `CA_FILE`: CA 인증서
- `CERT_FILE`: 인증서
- `KEY_FILE`: 비밀 키 | -| tenantId | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 인증서 파일의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` |

예시

```json { - "certificateTypes": ["CA_FILE", "CERT_FILE", "KEY_FILE"], - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "certificates/" + "storageSize": 1, + "storageAutoscale": { + "useStorageAutoscale": false + } } ``` @@ -2917,10 +3591,27 @@ POST /v4.0/db-instances/{dbInstanceId}/certificates/upload #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- ## 백업 @@ -2935,47 +3626,38 @@ POST /v4.0/db-instances/{dbInstanceId}/certificates/upload | `DELETED` | 백업이 삭제된 경우 | | `ERROR` | 오류가 발생한 경우 | -### 백업 상세 보기 +### 백업 목록 조회 ```http -GET /v4.0/backups/{backupId} +GET /v4.0/backups ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------|----------| -| RDSforMariaDB:Backup.Get | 백업 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:Backup.List | 백업 목록 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------|-----|------|----|---------| -| backupId | URL | UUID | O | 백업의 식별자 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------|------|----------|-----------------| -| backup | Body | Object | 백업 상세 정보 | -| backup.backupId | Body | UUID | 백업의 식별자 | -| backup.regionCode | Body | Enum | 리전 코드 | -| backup.backupName | Body | String | 백업을 식별할 수 있는 이름 | -| backup.backupStatus | Body | Enum | 백업의 현재 상태 | -| backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | -| backup.dbVersion | Body | Enum | DB 엔진 버전 | -| backup.backupType | Body | Enum | 백업 유형 | -| backup.backupMethodType | Body | Enum | 백업 방식 | -| backup.backupFileType | Body | Enum | 백업 파일 유형 | -| backup.backupSize | Body | Number | 백업의 크기(Byte) | -| backup.isReplicable | Body | Boolean | 복제 가능 여부 | -| backup.binLogFileName | Body | String | 바이너리 로그 파일명 | -| backup.binLogPosition | Body | Number | 바이너리 로그 위치 | -| backup.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| backup.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 백업 목록 수 | +| backups | Body | Array | 백업 목록 | +| backups.backupId | Body | UUID | 백업의 식별자 | +| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | +| backups.backupStatus | Body | Enum | 백업의 현재 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| backups.dbVersion | Body | Enum | DB 엔진 유형 | +| backups.utilVersion | Body | String | 유틸리티 버전 | +| backups.backupType | Body | Enum | 백업 유형
- AUTO
- MANUAL | +| backups.backupSize | Body | Number | 백업의 크기(Byte) | +| backups.createdYmdt | Body | DateTime | 생성 일시 | +| backups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -2987,24 +3669,21 @@ GET /v4.0/backups/{backupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "backup": { - "backupId": "0017f136-3e01-4530-94aa-20661afe6632", - "regionCode": "KR1", - "backupName": "backup", - "backupStatus": "COMPLETED", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd", - "dbInstanceName": "db-instance", - "dbVersion": "MARIADB_V10330", - "backupType": "AUTO", - "backupMethodType": "FULL", - "backupFileType": "XTRA_BACKUP", - "backupSize": 4996786, - "isReplicable": true, - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 154, - "createdYmdt": "2023-02-21T00:35:00+09:00", - "updatedYmdt": "2023-02-22T00:35:32+09:00" - } + "totalCounts": 1, + "backups": [ + { + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "utilVersion": "utilVersion-example", + "backupType": "AUTO", + "backupSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -3013,45 +3692,47 @@ GET /v4.0/backups/{backupId} --- -### 백업 목록 조회 +### 백업 생성하기 ```http -GET /v4.0/backups +POST /v4.0/backups ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| -| RDSforMariaDB:Backup.List | 백업 목록 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:Backup.Create | 백업 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupName | Body | String | O | 백업을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| baseBackupId | Body | UUID | X | 원본 백업의 식별자 | +| dbInstanceId | Body | UUID | X | DB 인스턴스의 식별자 | +| backupMethodType | Body | Enum | O | 백업 방식 타입
- FULL: `전체 백업`
- INCREMENTAL: `증분 백업`
- SNAPSHOT: `스냅숏 백업` | + +

예시 +

-| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | X | 조회할 목록의 페이지
- 기본값: 1
- 최솟값: `1` | -| size | Query | Number | X | 조회할 목록의 페이지 크기
- 기본값: 20 | -| backupType | Query | Enum | X | 백업 유형
- `AUTO`: 자동
- `MANUAL`: 수동
- 기본값: 전체 | -| dbInstanceId | Query | UUID | X | 원본 DB 인스턴스의 식별자 | -| dbVersion | Query | Enum | X | DB 엔진 유형 | +```json +{ + "backupName": "backupName", + "baseBackupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "backupMethodType": "FULL" +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|-----------------------------------| -| totalCounts | Body | Number | 전체 백업 목록 수 | -| backups | Body | Array | 백업 목록 | -| backups.backupId | Body | UUID | 백업의 식별자 | -| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | -| backups.backupStatus | Body | Enum | 백업의 현재 상태 | -| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| backups.dbVersion | Body | Enum | DB 엔진 유형 | -| backups.backupType | Body | Enum | 백업 유형 | -| backups.backupSize | Body | Number | 백업의 크기(Byte) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -3063,20 +3744,7 @@ GET /v4.0/backups "resultMessage": "SUCCESS", "isSuccessful": true }, - "totalCounts": 1, - "backups": [ - { - "backupId": "0017f136-3e01-4530-94aa-20661afe6632", - "backupName": "backup", - "backupStatus": "COMPLETED", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd", - "dbVersion": "MARIADB_V10330", - "backupType": "AUTO", - "backupSize": 4996786, - "createdYmdt": "2023-02-21T00:35:00+09:00", - "updatedYmdt": "2023-02-22T00:35:32+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3085,96 +3753,130 @@ GET /v4.0/backups --- -### 백업 생성하기 +### 백업 삭제하기 ```http -POST /v4.0/backups +DELETE /v4.0/backups/{backupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|---------| -| RDSforMariaDB:Backup.Create | 백업 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:Backup.Delete | 백업 삭제하기 | -#### 공통 요청 +#### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|--------|----|--------------------------------------------------------------------------------------| -| backupName | Body | String | O | 백업을 식별할 수 있는 이름 | -| backupMethodType | Body | Enum | O | 백업 방식 타입 종류
- `FULL`: 전체 백업
- `INCREMENTAL`: 증분 백업
- `SNAPSHOT`: 스냅숏 백업 | +이 API는 요청 본문을 요구하지 않습니다. -#### 전체 백업(backupMethodType이 `FULL`인 경우) +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|------|----|--------------| -| dbInstanceId | Body | UUID | O | DB 인스턴스의 식별자 | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |

예시

```json { - "backupName": "example-backup-name", - "backupMethodType": "FULL", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 증분 백업(backupMethodType이 `INCREMENTAL`인 경우) +--- -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|------|----|------------| -| baseBackupId | Body | UUID | O | 기준 백업의 식별자 | +### 백업 단건 조회 +```http +GET /v4.0/backups/{backupId} +``` -
예시 -

+#### 필요 권한 -```json -{ - "backupName": "example-backup-name", - "backupMethodType": "INCREMENTAL", - "baseBackupId": "3ae7914f-9b42-4729-b125-87417b72cf36" -} -``` +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:Backup.Get | 백업 단건 조회 | -

-
+#### 요청 +이 API는 요청 본문을 요구하지 않습니다. -#### 스냅숏 백업(backupMethodType이 `SNAPSHOT`인 경우) +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|------|----|--------------| -| dbInstanceId | Body | UUID | O | DB 인스턴스의 식별자 | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| backup | Body | Object | 백업 상세 정보 | +| backup.backupId | Body | UUID | 백업의 식별자 | +| backup.regionCode | Body | Enum | 리전 코드
- KR1: `한국(판교)` | +| backup.backupName | Body | String | 백업을 식별할 수 있는 이름 | +| backup.backupStatus | Body | Enum | 백업의 현재 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | +| backup.dbVersion | Body | Enum | DB 엔진 버전 | +| backup.utilVersion | Body | String | 유틸리티 버전 | +| backup.backupType | Body | Enum | 백업 유형 (AUTO, MANUAL)
- AUTO
- MANUAL | +| backup.backupMethodType | Body | Enum | 백업 방식 (FULL, SNAPSHOT, INCREMENTAL)
- FULL
- INCREMENTAL
- SNAPSHOT | +| backup.backupFileType | Body | Enum | 백업 파일 유형
- XBSTREAM
- TAR_ZSTD
- TAR_LZ4
- TAR_GZIP
- SNAPSHOT | +| backup.backupSize | Body | Number | 백업의 크기(Byte) | +| backup.isReplicable | Body | Boolean | 복제 가능 여부 | +| backup.binLogFileName | Body | String | 바이너리 로그 파일명 | +| backup.binLogPosition | Body | Object | 바이너리 로그 위치 | +| backup.createdYmdt | Body | DateTime | 생성 일시 | +| backup.updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "backupName": "example-backup-name", - "backupMethodType": "SNAPSHOT", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "backup": { + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "regionCode": "KR1", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "dbVersion": "MYSQL_V8036", + "utilVersion": "utilVersion-example", + "backupType": "AUTO", + "backupMethodType": "FULL", + "backupFileType": "XBSTREAM", + "backupSize": 1, + "isReplicable": false, + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + }, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } } ```

- -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- ### 백업 내보내기 @@ -3185,31 +3887,31 @@ POST /v4.0/backups/{backupId}/export #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|---------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:Backup.Export | 백업 내보내기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|-----------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 계정 혹은 IAM 회원 ID | +| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 |
예시

```json { - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "backups/backup_file" + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" } ``` @@ -3218,12 +3920,26 @@ POST /v4.0/backups/{backupId}/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | -> [주의] -> 수동 백업의 경우 백업이 수행된 DB 인스턴스가 존재하지 않으면, 백업을 오브젝트 스토리지로 내보낼 수 없습니다. +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -3235,73 +3951,98 @@ POST /v4.0/backups/{backupId}/restore #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:Backup.Restore | 백업 복원하기 | -#### 요청 +#### 공통 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------------------------------|------|---------|----|---------------------------------------------------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbPort | Body | Integer | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 ||network|Body|Object|O|네트워크 정보 객체| -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| pingType | Body | Enum | X | 고가용성 사용 시 Ping 타입
- 기본값: `INSERT`
- `INSERT`
- `SELECT` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | X | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | X | 서브넷의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a`
- 기본값: 랜덤 선택 | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입
- 예시: `General SSD`
- 기본값: 원본 DB 인스턴스 값 | -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: 원본 DB 인스턴스 값 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| dbPort | Body | Number | X | DB 포트. 미지정 시 원본 인스턴스 값 사용
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| network | Body | Object | X | 네트워크 정보 객체. 미지정 시 원본 인스턴스 값 사용 | +| network.subnetId | Body | UUID | X | 서브넷의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역. 미지정 시 랜덤 선택 | +| storage | Body | Object | X | 스토리지 정보 객체. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageType | Body | Enum | X | 스토리지 타입. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | X | 백업 정보 객체. 미지정 시 원본 인스턴스 백업 설정 사용 | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수. 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부. 미지정 시 원본 인스턴스 값 사용 | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록. 미지정 시 원본 인스턴스 값 사용 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` |
예시

```json - { - "dbInstanceName": "db-instance-restore", - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbPort": 10000, - "parameterGroupId": "132d383c-38e3-468a-a826-5e9a8fff15d0", + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, "availabilityZone": "kr-pub-a" }, "storage": { "storageType": "General SSD", - "storageSize": 20 + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 0, + "replicationRegion": "KR1", + "useBackupLock": false, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", + "backupWndBgnTime": "backupWndBgnTime-example", "backupWndDuration": "HALF_AN_HOUR" } ] @@ -3314,37 +4055,26 @@ POST /v4.0/backups/{backupId}/restore #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### 백업 삭제하기 +

예시 +

-```http -DELETE /v4.0/backups/{backupId} +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|-------------------------------------------|---------| -| RDSforMariaDB:Backup.Delete | 백업 삭제하기 | - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------|-----|------|----|---------| -| backupId | URL | UUID | O | 백업의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -3367,30 +4097,26 @@ GET /v4.0/db-security-groups #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|----------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:DbSecurityGroup.List | DB 보안 그룹 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | X | 조회할 목록의 페이지
- 기본값: 1
- 최솟값: `1` | -| size | Query | Number | X | 조회할 목록의 페이지 크기
- 기본값: 20 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-----------------------------------| -| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | -| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 DB 보안 그룹 목록 수 | +| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | +| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3402,14 +4128,15 @@ GET /v4.0/db-security-groups "resultMessage": "SUCCESS", "isSuccessful": true }, + "totalCounts": 1, "dbSecurityGroups": [ { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", "progressStatus": "NONE", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2022-02-19T19:18:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3420,48 +4147,65 @@ GET /v4.0/db-security-groups --- -### DB 보안 그룹 상세 보기 +### DB 보안 그룹 생성하기 ```http -GET /v4.0/db-security-groups/{dbSecurityGroupId} +POST /v4.0/db-security-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|----------------| -| RDSforMariaDB:DbSecurityGroup.Get | DB 보안 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbSecurityGroup.Create | DB 보안 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` | +| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | +| rules.direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| rules.etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| rules.port | Body | Object | O | 포트 객체 | +| rules.port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| rules.cidr | Body | String | O | CIDR | +| rules.description | Body | String | X | 보안 그룹 규칙에 대한 추가 정보 | + +

예시 +

+ +```json +{ + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example", + "rules": [ + { + "direction": "INGRESS", + "etherType": "IPV4", + "port": { + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 + }, + "cidr": "cidr-example", + "description": "description-example" + } + ] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|----------|--------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| rules | Body | Array | DB 보안 그룹 규칙 목록 | -| rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | -| rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.port | Body | Object | 포트 객체 | -| rules.port.portType | Body | Enum | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다.
- `PORT`: 지정된 포트값으로 설정됩니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | 최소 포트 범위 | -| rules.port.maxPort | Body | Number | 최대 포트 범위 | -| rules.cidr | Body | String | 허용할 트래픽의 원격 소스 | -| rules.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| rules.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 |
예시

@@ -3473,30 +4217,7 @@ GET /v4.0/db-security-groups/{dbSecurityGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSecurityGroup": { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", - "progressStatus": "NONE", - "rules": [ - { - "ruleId": "17c88ef6-95f1-4678-84f9-fee1b22e250d", - "description": "description", - "direction": "INGRESS", - "etherType": "IPV4", - "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 - }, - "cidr": "0.0.0.0/0", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } - ], - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3505,68 +4226,113 @@ GET /v4.0/db-security-groups/{dbSecurityGroupId} --- -### DB 보안 그룹 생성하기 +### DB 보안 그룹 삭제하기 ```http -POST /v4.0/db-security-groups +DELETE /v4.0/db-security-groups/{dbSecurityGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| -| RDSforMariaDB:DbSecurityGroup.Create | DB 보안 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbSecurityGroup.Delete | DB 보안 그룹 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### DB 보안 그룹 상세 보기 + +```http +GET /v4.0/db-security-groups/{dbSecurityGroupId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbSecurityGroup.Get | DB 보안 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | -| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | -| rules.description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | -| rules.port | Body | Object | O | 포트 객체 | -| rules.port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 필요하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| rules | Body | Array | DB 보안 그룹 규칙 목록 | +| rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | +| rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | +| rules.direction | Body | Enum | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| rules.etherType | Body | Enum | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| rules.port | Body | Object | 포트 객체 | +| rules.port.portType | Body | Enum | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| rules.port.minPort | Body | Number | 최소 포트 범위 | +| rules.port.maxPort | Body | Number | 최대 포트 범위 | +| rules.cidr | Body | String | CIDR | +| rules.createdYmdt | Body | DateTime | 생성 일시 | +| rules.updatedYmdt | Body | DateTime | 수정 일시 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

```json { - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", + "progressStatus": "NONE", "rules": [ { + "ruleId": "550e8400-e29b-41d4-a716-446655440000", + "description": "description-example", "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 + "portType": "ALL", + "minPort": 1, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } - ] + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|------|---------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | - --- ### DB 보안 그룹 수정하기 @@ -3577,25 +4343,25 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId} #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:DbSecurityGroup.Modify | DB 보안 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|-----------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description" + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example" } ``` @@ -3606,48 +4372,34 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- - --- -### DB 보안 그룹 삭제하기 +### DB 보안 그룹 규칙 삭제하기 ```http -DELETE /v4.0/db-security-groups/{dbSecurityGroupId} +DELETE /v4.0/db-security-groups/{dbSecurityGroupId}/rules ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| -| RDSforMariaDB:DbSecurityGroup.Delete | DB 보안 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbSecurityGroupRule.Delete | DB 보안 그룹 규칙 삭제하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleIds | Query | String | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -3658,7 +4410,8 @@ DELETE /v4.0/db-security-groups/{dbSecurityGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3675,26 +4428,23 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:DbSecurityGroupRule.Create | DB 보안 그룹 규칙 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 필요하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |

예시

@@ -3704,11 +4454,12 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "PORT", - "minPort": 10000, - "maxPort": 10000 + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -3717,9 +4468,26 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -3731,27 +4499,24 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:DbSecurityGroupRule.Modify | DB 보안 그룹 규칙 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleId | URL | UUID | O | DB 보안 그룹 규칙의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 필요하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |
예시

@@ -3761,9 +4526,12 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "DB_PORT" + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -3772,38 +4540,26 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -### DB 보안 그룹 규칙 삭제하기 +

예시 +

-```http -DELETE /v4.0/db-security-groups/{dbSecurityGroupId}/rules +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| -| RDSforMariaDB:DbSecurityGroupRule.Create | DB 보안 그룹 규칙 삭제하기 | - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|-------|----|---------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleIds | Query | Array | O | DB 보안 그룹 규칙의 식별자 목록 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -3817,30 +4573,28 @@ GET /v4.0/parameter-groups #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:ParameterGroup.List | 파라미터 그룹 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------|-------|------|----|----------| -| dbVersion | Query | Enum | X | DB 엔진 유형 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-------------------------------------------------------------------| -| parameterGroups | Body | Array | 파라미터 그룹 목록 | -| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameterGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 파라미터 그룹 수 | +| parameterGroups | Body | Array | 파라미터 그룹 목록 | +| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroups.parameterGroupType | Body | Enum | 파라미터 그룹 유형
- USER
- ADMIN
- DEFAULT
- CLUSTER_USER | +| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameterGroups.createdYmdt | Body | DateTime | 생성 일시 | +| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3852,15 +4606,17 @@ GET /v4.0/parameter-groups "resultMessage": "SUCCESS", "isSuccessful": true }, + "totalCounts": 1, "parameterGroups": [ { - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MARIADB_V10330", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "parameterGroupType": "USER", "parameterGroupStatus": "STABLE", - "createdYmdt": "2023-02-31T15:28:17+09:00", - "updatedYmdt": "2023-02-31T15:28:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3869,50 +4625,47 @@ GET /v4.0/parameter-groups

- --- -### 파라미터 그룹 상세 보기 +### 파라미터 그룹 생성하기 ```http -GET /v4.0/parameter-groups/{parameterGroupId} +POST /v4.0/parameter-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMariaDB:ParameterGroup.Get | 파라미터 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:ParameterGroup.Create | 파라미터 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` | +| dbVersion | Body | Enum | O | DB 엔진 유형 | + +
예시 +

+ +```json +{ + "parameterGroupName": "parameterGroupName", + "description": "description-example", + "dbVersion": "MYSQL_V8036" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|--------------------------------------------------------------------------------------------------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameters | Body | Array | 파라미터 목록 | -| parameters.parameterId | Body | UUID | 파라미터 식별자 | -| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- `CLIENT`: client
- `MYSQL`: mysql
- `MYSQLD`: mysqld | -| parameters.parameterName | Body | String | 파라미터 이름 | -| parameters.fileParameterName | Body | String | 파라미터 파일명 | -| parameters.value | Body | String | 현재 설정된 값 | -| parameters.defaultValue | Body | String | 기본값 | -| parameters.allowedValue | Body | String | 허용된 값 | -| parameters.updateType | Body | Enum | 수정 타입
- `VARIABLE`: 언제든 수정 가능
- `CONSTANT`: 수정 불가능
- `INIT_VARIABLE`: DB 인스턴스 생성 시에만 수정 가능 | -| parameters.applyType | Body | Enum | 적용 타입
- `SESSION`: 세션 적용
- `FILE`: 설정 파일 적용(재시작 필요)
- `BOTH`: 전체(재시작 필요) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |
예시

@@ -3924,115 +4677,119 @@ GET /v4.0/parameter-groups/{parameterGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MARIADB_V10330", - "parameterGroupStatus": "STABLE", - "parameters": [ - { - "parameterId": "fa040b5e-f29f-46de-8f0d-bba4cb82887a", - "parameterFileGroup": "client", - "parameterName": "socket", - "fileParameterName": "socket", - "value": "/home/tcrds/db/mysql/tmp/mysql.sock", - "defaultValue": "/home/tcrds/db/mysql/tmp/mysql.sock", - "allowedValue": "", - "updateType": "CONSTANT", - "applyType": "BOTH" - } - ], - "createdYmdt": "2023-03-13T11:02:28+09:00", - "updatedYmdt": "2023-03-13T11:02:28+09:00" + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ```

- --- -### 파라미터 그룹 생성하기 +### 파라미터 그룹 삭제하기 ```http -POST /v4.0/parameter-groups +DELETE /v4.0/parameter-groups/{parameterGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMariaDB:ParameterGroup.Create | 파라미터 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:ParameterGroup.Delete | 파라미터 그룹 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | - -
예시 -

- -```json -{ - "parameterGroupName": "parameter-group", - "dbVersion": "MARIADB_V10330" -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 복사하기 +### 파라미터 그룹 상세 보기 ```http -POST /v4.0/parameter-groups/{parameterGroupId}/copy +GET /v4.0/parameter-groups/{parameterGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|--------------| -| RDSforMariaDB:ParameterGroup.Copy | 파라미터 그룹 복사하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:ParameterGroup.Get | 파라미터 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameters | Body | Array | 파라미터 목록 | +| parameters.parameterId | Body | UUID | 파라미터의 식별자 | +| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- CLIENT
- MYSQL
- MYSQLD | +| parameters.parameterName | Body | String | 파라미터 이름 | +| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | +| parameters.value | Body | String | 현재 설정된 값 | +| parameters.defaultValue | Body | String | 기본값 | +| parameters.allowedValue | Body | String | 허용된 값 | +| parameters.updateType | Body | Enum | 수정 타입
- VARIABLE
- CONSTANT
- INIT_VARIABLE | +| parameters.applyType | Body | Enum | 적용 타입
- BOTH
- SESSION
- FILE | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "parameterGroupName": "parameter-group-copy", - "description": "copy" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "parameterGroupStatus": "STABLE", + "parameters": [ + { + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "parameterFileGroup": "CLIENT", + "parameterName": "parameterName-example", + "fileParameterName": "fileParameterName-example", + "value": "value-example", + "defaultValue": "defaultValue-example", + "allowedValue": "allowedValue-example", + "updateType": "VARIABLE", + "applyType": "BOTH" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | - --- ### 파라미터 그룹 수정하기 @@ -4043,24 +4800,25 @@ PUT /v4.0/parameter-groups/{parameterGroupId} #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:ParameterGroup.Modify | 파라미터 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "parameterGroupName": "parameter-group" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -4071,56 +4829,35 @@ PUT /v4.0/parameter-groups/{parameterGroupId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- -### 파라미터 수정하기 +### 파라미터 그룹 복사하기 ```http -PUT /v4.0/parameter-groups/{parameterGroupId}/parameters +POST /v4.0/parameter-groups/{parameterGroupId}/copy ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMariaDB:ParameterGroup.Modify | 파라미터 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:ParameterGroup.Copy | 파라미터 그룹 복사하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------------|------|--------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | -| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | -| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "modifiedParameters": [ - { - "parameterId": "3abac558-7274-44e1-9f4a-f100f53f67ba", - "value": "0" - } - ] + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -4129,7 +4866,9 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |

예시

@@ -4140,7 +4879,8 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4149,86 +4889,74 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters --- -### 파라미터 그룹 재설정하기 +### 파라미터 수정하기 ```http -PUT /v4.0/parameter-groups/{parameterGroupId}/reset +PUT /v4.0/parameter-groups/{parameterGroupId}/parameters ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|---------------| -| RDSforMariaDB:ParameterGroup.Reset | 파라미터 그룹 재설정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:ParameterGroup.Modify | 파라미터 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | +| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | +| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 |

예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } + "modifiedParameters": [ + { + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "value": "value-example" + } + ] } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- -### 파라미터 그룹 삭제하기 +### 파라미터 그룹 재설정하기 ```http -DELETE /v4.0/parameter-groups/{parameterGroupId} +PUT /v4.0/parameter-groups/{parameterGroupId}/reset ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMariaDB:ParameterGroup.Delete | 파라미터 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:ParameterGroup.Reset | 파라미터 그룹 재설정하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | #### 응답 이 API는 응답 본문을 반환하지 않습니다. -
예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- ## 사용자 그룹 @@ -4241,8 +4969,8 @@ GET /v4.0/user-groups #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:UserGroup.List | 사용자 그룹 목록 보기 | #### 요청 @@ -4251,13 +4979,14 @@ GET /v4.0/user-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|-----------------------------------| -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| userGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 사용자 그룹 목록 수 | +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroups.createdYmdt | Body | DateTime | 생성 일시 | +| userGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4269,12 +4998,13 @@ GET /v4.0/user-groups "resultMessage": "SUCCESS", "isSuccessful": true }, + "totalCounts": 1, "userGroups": [ { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -4285,37 +5015,45 @@ GET /v4.0/user-groups --- -### 사용자 그룹 상세 보기 +### 사용자 그룹 생성하기 ```http -GET /v4.0/user-groups/{userGroupId} +POST /v4.0/user-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|--------------| -| RDSforMariaDB:UserGroup.Get | 사용자 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:UserGroup.Create | 사용자 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록 | +| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` | + +

예시 +

+ +```json +{ + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAll": false +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|----------|-----------------------------------------------------------------------------------------------------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
`ENTIRE`: 프로젝트 멤버 전체를 포함하는 사용자 그룹
`INDIVIDUAL_MEMBER`: 특정 프로젝트 멤버를 포함하는 사용자 그룹 | -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 |
예시

@@ -4327,16 +5065,7 @@ GET /v4.0/user-groups/{userGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "userGroupTypeCode": "INDIVIDUAL_MEMBER", - "members": [ - { - "memberId": "1321e759-2ef3-4b85-9921-b13e918b24b5" - } - ], - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" + "userGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4345,96 +5074,63 @@ GET /v4.0/user-groups/{userGroupId} --- -### 사용자 그룹 생성하기 +### 사용자 그룹 삭제하기 ```http -POST /v4.0/user-groups +DELETE /v4.0/user-groups/{userGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMariaDB:UserGroup.Create | 사용자 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:UserGroup.Delete | 사용자 그룹 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|-----------------------------------------------------------| -| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록
`selectAll`이 true인 경우 해당 필드 값은 무시됩니다 | -| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 여부
true인 경우 해당 그룹은 전체 멤버를 대상으로 설정됩니다 | - -

예시 -

- -```json -{ - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5" - ] -} -``` - -```json -{ - "userGroupName": "dev-team", - "selectAll": true -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------|------|------|-------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 사용자 그룹 수정하기 +### 사용자 그룹 상세 보기 ```http -PUT /v4.0/user-groups/{userGroupId} +GET /v4.0/user-groups/{userGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMariaDB:UserGroup.Modify | 사용자 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:UserGroup.Get | 사용자 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|----------------------------------------------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | -| userGroupName | Body | String | X | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | -| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 여부
true인 경우 해당 그룹은 전체 멤버를 대상으로 설정됩니다 | - -
예시 -

- -```json -{ - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5", - "f9064b09-2b15-442e-a4b0-3a5a2754555e" - ] -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
- ENTIRE
- INDIVIDUAL_MEMBER | +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4445,7 +5141,17 @@ PUT /v4.0/user-groups/{userGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "userGroupTypeCode": "ENTIRE", + "members": [ + { + "memberId": "550e8400-e29b-41d4-a716-446655440000" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -4454,44 +5160,45 @@ PUT /v4.0/user-groups/{userGroupId} --- -### 사용자 그룹 삭제하기 +### 사용자 그룹 수정하기 ```http -DELETE /v4.0/user-groups/{userGroupId} +PUT /v4.0/user-groups/{userGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMariaDB:UserGroup.Delete | 사용자 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:UserGroup.Modify | 사용자 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | +| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` |

예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAll": false } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- ## 알림 그룹 @@ -4504,8 +5211,8 @@ GET /v4.0/notification-groups #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:NotificationGroup.List | 알림 그룹 목록 보기 | #### 요청 @@ -4514,16 +5221,16 @@ GET /v4.0/notification-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------------|------|----------|-----------------------------------| -| notificationGroups | Body | Array | 알림 그룹 목록 | -| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | -| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | -| notificationGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroups | Body | Array | 알림 그룹 목록 | +| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | +| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | +| notificationGroups.createdYmdt | Body | DateTime | 생성 일시 | +| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4537,13 +5244,13 @@ GET /v4.0/notification-groups }, "notificationGroups": [ { - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, "notifySms": false, - "isEnabled": true, - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" + "isEnabled": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -4554,43 +5261,51 @@ GET /v4.0/notification-groups --- -### 알림 그룹 상세 보기 +### 알림 그룹 생성하기 ```http -GET /v4.0/notification-groups/{notificationGroupId} +POST /v4.0/notification-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|-------------| -| RDSforMariaDB:NotificationGroup.Get | 알림 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:NotificationGroup.Create | 알림 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | +| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | + +

예시 +

+ +```json +{ + "notificationGroupName": "notificationGroupName", + "notifyEmail": true, + "notifySms": true, + "isEnabled": true, + "dbInstanceIds": [], + "userGroupIds": [] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------------|------|----------|-----------------------------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notifySms | Body | Boolean | SMS 알림 여부 | -| isEnabled | Body | Boolean | 활성화 여부 | -| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 |
예시

@@ -4602,25 +5317,7 @@ GET /v4.0/notification-groups/{notificationGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, - "notifySms": false, - "isEnabled": true, - "dbInstances": [ - { - "dbInstanceId": "ed5cb985-526f-4c54-9ae0-40288593de65", - "dbInstanceName": "database" - } - ], - "userGroups": [ - { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team" - } - ], - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4629,100 +5326,69 @@ GET /v4.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 생성하기 +### 알림 그룹 삭제하기 ```http -POST /v4.0/notification-groups +DELETE /v4.0/notification-groups/{notificationGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMariaDB:NotificationGroup.Create | 알림 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:NotificationGroup.Delete | 알림 그룹 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------------| -| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | -| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | -| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | -| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | - -

예시 -

- -```json -{ - "notificationGroupName": "dev-team-noti", - "notifyEmail": false, - "isEnable": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65" - ], - "userGroupIds": [ - "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0" - ] -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|------|------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 알림 그룹 수정하기 +### 알림 그룹 상세 보기 ```http -PUT /v4.0/notification-groups/{notificationGroupId} +GET /v4.0/notification-groups/{notificationGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMariaDB:NotificationGroup.Modify | 알림 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:NotificationGroup.Get | 알림 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부 | -| notifySms | Body | Boolean | X | SMS 알림 여부 | -| isEnabled | Body | Boolean | X | 활성화 여부 | -| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | - -
예시 -

- -```json -{ - "notifyEmail": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65", - "d51b7da0-682f-47ff-b588-b739f6adc740" - ] -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notifySms | Body | Boolean | SMS 알림 여부 | +| isEnabled | Body | Boolean | 활성화 여부 | +| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4733,7 +5399,26 @@ PUT /v4.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, + "notifySms": false, + "isEnabled": false, + "dbInstances": [ + { + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example" + } + ], + "userGroups": [ + { + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -4742,60 +5427,65 @@ PUT /v4.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 삭제하기 +### 알림 그룹 수정하기 ```http -DELETE /v4.0/notification-groups/{notificationGroupId} +PUT /v4.0/notification-groups/{notificationGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMariaDB:NotificationGroup.Delete | 알림 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:NotificationGroup.Modify | 알림 그룹 수정하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | +| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `false` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `false` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `false` | +| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 |

예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, + "notifySms": false, + "isEnabled": false, + "dbInstanceIds": [], + "userGroupIds": [] } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- ## 모니터링 -### Metric 목록 보기 +### 통계 정보 조회 ```http -GET /v4.0/metrics +GET /v4.0/metric-statistics ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:Metric.List | 통계 정보 조회 | #### 요청 @@ -4804,92 +5494,48 @@ GET /v4.0/metrics #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|--------|-----------| -| metrics | Body | Array | Metric 목록 | -| metrics.measureName | Body | Enum | 조회 지표 유형 | -| metrics.unit | Body | String | 측정값 단위 | - -
예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "metrics": [ - { - "measureName": "CPU_USAGE", - "unit": "%" - } - ] -} -``` - -

-
+이 API는 응답 본문을 반환하지 않습니다. --- -### 통계 정보 조회 +### Metric 목록 보기 ```http -GET /v4.0/metric-statistics +GET /v4.0/metrics ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| -| RDSforMariaDB:Metric.List | 통계 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:Metric.List | Metric 목록 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|----------|----|-----------------------------------| -| dbInstanceId | Query | UUID | O | DB 인스턴스의 식별자 | -| measureNames | Query | Array | O | 조회 지표 목록
- 최소 크기: `1` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| interval | Query | Number | X | 조회 간격 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|-----------|----------| -| metricStatistics | Body | Array | 통계 정보 목록 | -| metricStatistics.measureName | Body | Enum | 측정 항목 유형 | -| metricStatistics.unit | Body | String | 측정값 단위 | -| metricStatistics.values | Body | Array | 측정값 목록 | -| metricStatistics.values.timestamp | Body | Timestamp | 측정 시간 | -| metricStatistics.values.value | Body | Object | 측정값 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| metrics | Body | Array | Metric 목록 | +| metrics.measureName | Body | String | 조회 지표 유형 | +| metrics.unit | Body | String | 측정값 단위 |
예시

```json { - "metricStatistics": [ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "metrics": [ { - "measureName": "MYSQL_STATUS", - "unit": "", - "values": [ - [ - 1679298540, - "1" - ], - [ - 1679298600, - "1" - ], - [ - 1679298660, - "1" - ] - ] + "measureName": "measureName-example", + "unit": "unit-example" } ] } @@ -4915,47 +5561,29 @@ GET /v4.0/metric-statistics | TENANT | 테넌트 | | MONITORING | 모니터링 | -### 이벤트 목록 조회 +### 구독 가능한 이벤트 코드 목록 보기 ```http -GET /v4.0/events +GET /v4.0/event-codes ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------|-----------| -| RDSforMariaDB:Event.List | 이벤트 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:Event.List | 구독 가능한 이벤트 코드 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | X | 조회할 목록의 페이지
- 기본값: 1
- 최솟값: `1` | -| size | Query | Number | X | 조회할 목록의 페이지 크기
- 기본값: 20 | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| eventCategoryType | Query | Enum | O | 조회할 이벤트 카테고리 유형
- `ALL`: 전체
- `INSTANCE`: DB 인스턴스
- `BACKUP`: 백업
- `DB_SECURITY_GROUP`: DB 보안 그룹
- `TENANT`: 테넌트 | -| sourceId | Query | String | X | 이벤트가 발생한 대상 리소스의 식별자 | -| keyword | Query | String | X | 이벤트 메시지에 포함된 문자열 검색어 | -| ascendingOrder | Query | Enum | X | 이벤트 메시지 정렬 순서
- `ASC`: 오름차순
- `DESC`: 내림차순
- 기본값: `DESC` | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|---------------------------------------| -| totalCounts | Body | Number | 전체 이벤트 목록 수 | -| events | Body | Array | 이벤트 목록 | -| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | -| events.sourceId | Body | String | 이벤트 소스의 식별자 | -| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | -| events.messages | Body | Array | 이벤트 메시지 목록 | -| events.messages.langCode | Body | String | 언어 코드 | -| events.messages.message | Body | String | 이벤트 메시지 | -| events.eventYmdt | Body | DateTime | 이벤트 발생 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventCodes | Body | Array | 이벤트 코드 목록 | +| eventCodes.eventCode | Body | Enum | 이벤트 코드 | +| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT |

예시

@@ -4967,32 +5595,10 @@ GET /v4.0/events "resultMessage": "SUCCESS", "isSuccessful": true }, - "totalCounts": 28, - "events": [ + "eventCodes": [ { - "eventCategoryType": "INSTANCE", - "eventCode": "INSTC_02_01", - "sourceId": "76f00947-356e-4a20-8922-428368cc45ed", - "sourceName": "db-instance", - "messages": [ - { - "langCode": "EN", - "message": "DB instance started" - }, - { - "langCode": "JA", - "message": "DBインスタンスの起動" - }, - { - "langCode": "KO", - "message": "DB 인스턴스 시작" - }, - { - "langCode": "ZH", - "message": "DB instance started" - } - ], - "eventYmdt": "2023-03-20T16:31:59+09:00" + "eventCode": "ENUM_VALUE", + "eventCategoryType": "ALL" } ] } @@ -5003,17 +5609,17 @@ GET /v4.0/events --- -### 구독 가능한 이벤트 코드 목록 보기 +### 이벤트 목록 조회 ```http -GET /v4.0/event-codes +GET /v4.0/events ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------|-----------| -| RDSforMariaDB:Event.List | 이벤트 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:Event.List | 이벤트 목록 조회 | #### 요청 @@ -5021,11 +5627,18 @@ GET /v4.0/event-codes #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|-------|-------------| -| eventCodes | Body | Array | 이벤트 코드 목록 | -| eventCodes.eventCode | Body | Enum | 이벤트 코드 | -| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 목록 수 | +| events | Body | Array | 이벤트 목록 | +| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | +| events.sourceId | Body | String | 이벤트 소스의 식별자 | +| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | +| events.messages | Body | Array | 이벤트 메세지 목록 | +| events.messages.langCode | Body | Enum | 언어 코드
- KO
- EN
- JA
- ZH | +| events.messages.message | Body | String | 이벤트 메세지 | +| events.eventYmdt | Body | DateTime | 이벤트 발생 일시 |

예시

@@ -5037,10 +5650,20 @@ GET /v4.0/event-codes "resultMessage": "SUCCESS", "isSuccessful": true }, - "eventCodes": [ + "totalCounts": 1, + "events": [ { - "eventCode": "INSTC_05_01", - "eventCategoryType": "INSTANCE" + "eventCategoryType": "ALL", + "eventCode": "ENUM_VALUE", + "sourceId": "sourceId-example", + "sourceName": "sourceName-example", + "messages": [ + { + "langCode": "KO", + "message": "message-example" + } + ], + "eventYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -5061,38 +5684,32 @@ GET /v4.0/event-subscriptions #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:EventSubscription.List | 이벤트 구독 목록 조회 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|------------------------------------------| -| page | Query | Number | X | 조회할 목록의 페이지
- 기본값: 1
- 최솟값: `1` | -| size | Query | Number | X | 조회할 목록의 페이지 크기
- 기본값: 20 | -| eventSubscriptionId | Query | UUID | X | 이벤트 구독의 식별자 | -| eventSubscriptionName | Query | String | X | 이벤트 구독을 식별할 수 있는 이름 | -| userGroupId | Query | UUID | X | 사용자 그룹의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------------------|------|----------|--------------------------| -| totalCounts | Body | Number | 전체 이벤트 구독 목록 수 | -| eventSubscriptions | Body | Array | 이벤트 구독 목록 | -| eventSubscriptions.eventSubscriptionId | Body | UUID | 이벤트의 구독 식별자 | -| eventSubscriptions.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| eventSubscriptions.eventSubscriptionName | Body | String | 이벤트 구독을 식별할 수 있는 이름 | -| eventSubscriptions.enabled | Body | Boolean | 활성화 여부 | -| eventSubscriptions.notifyEmail | Body | Boolean | 이메일 발송 여부 | -| eventSubscriptions.notifySms | Body | Boolean | SMS 발송 여부 | -| eventSubscriptions.eventCodes | Body | Array | 구독할 이벤트 코드 목록 | -| eventSubscriptions.sources | Body | Array | 구독할 이벤트 소스 목록 | -| eventSubscriptions.sources.sourceId | Body | UUID | 이벤트 소스의 식별자 | -| eventSubscriptions.sources.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| eventSubscriptions.userGroupIds | Body | Array | 이벤트 구독 중인 사용자 그룹의 식별자 목록 | -| eventSubscriptions.createdYmdt | Body | DateTime | 생성 일시 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 구독 목록 수 | +| eventSubscriptions | Body | Array | 이벤트 구독 목록 | +| eventSubscriptions.eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 | +| eventSubscriptions.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.eventSubscriptionName | Body | String | 이벤트 구독의 식별할 수 있는 이름 | +| eventSubscriptions.enabled | Body | Boolean | 활성화 여부 | +| eventSubscriptions.notifyEmail | Body | Boolean | 이메일 발송 여부 | +| eventSubscriptions.notifySms | Body | Boolean | SMS 발송 여부 | +| eventSubscriptions.eventCodes | Body | Array | 구독할 이벤트 코드 목록 | +| eventSubscriptions.sources | Body | Array | 구독할 이벤트 소스 목록 | +| eventSubscriptions.sources.sourceId | Body | String | 이벤트 소스의 식별자 | +| eventSubscriptions.sources.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.userGroupIds | Body | Array | 이벤트 구독 중인 사용자 그룹의 식별자 목록 | +| eventSubscriptions.createdYmdt | Body | DateTime | 생성 일시 |

예시

@@ -5107,25 +5724,21 @@ GET /v4.0/event-subscriptions "totalCounts": 1, "eventSubscriptions": [ { - "eventSubscriptionId": "12345678-1234-1234-1234-123456789012", - "eventCategoryType": "INSTANCE", - "eventSubscriptionName": "example-event-subscription", - "enabled": true, - "notifyEmail": true, + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, "notifySms": false, - "eventCodes": [ - "INSTC_05_01" - ], + "eventCodes": [], "sources": [ { - "sourceId": "87654321-4321-4321-4321-210987654321", - "eventCategoryType": "INSTANCE" + "sourceId": "sourceId-example", + "eventCategoryType": "ALL" } ], - "userGroupIds": [ - "11111111-2222-3333-4444-555555555555" - ], - "createdYmdt": "2024-01-01T12:00:00+09:00" + "userGroupIds": [], + "createdYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -5144,47 +5757,43 @@ POST /v4.0/event-subscriptions #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:EventSubscription.Create | 이벤트 구독 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------------------|------|---------|----|-----------------------------------------| -| eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형 | -| eventSubscriptionName | Body | String | O | 이벤트 구독을 식별할 수 있는 이름
- 최대 길이: `100` | -| enabled | Body | Boolean | O | 활성화 여부 | -| notifyEmail | Body | Boolean | O | 이메일 발송 여부 | -| notifySms | Body | Boolean | O | SMS 발송 여부 | -| eventCodes | Body | Array | O | 구독할 이벤트 코드 목록 | -| sources | Body | Array | O | 구독할 이벤트 소스 목록 | -| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | -| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형 | -| userGroupIds | Body | Array | O | 이벤트 구독할 사용자 그룹의 식별자 목록 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | O | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | O | 활성화 여부 | +| notifyEmail | Body | Boolean | O | 이메일 발송 여부 | +| notifySms | Body | Boolean | O | SMS 발송 여부 | +| eventCodes | Body | Array | O | 구독할 이벤트 코드 목록 | +| sources | Body | Array | O | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | O | 이벤트 구독할 사용자 그룹의 식별자 목록 |

예시

```json { - "eventCategoryType": "INSTANCE", - "eventSubscriptionName": "example-event-subscription", - "enabled": true, - "notifyEmail": true, + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, "notifySms": false, - "eventCodes": [ - "INSTC_05_01" - ], + "eventCodes": [], "sources": [ { - "sourceId": "87654321-4321-4321-4321-210987654321", - "eventCategoryType": "INSTANCE" + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" } ], - "userGroupIds": [ - "11111111-2222-3333-4444-555555555555" - ] + "userGroupIds": [] } ``` @@ -5193,9 +5802,9 @@ POST /v4.0/event-subscriptions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------|------|------|-------------| -| eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 |

예시

@@ -5207,7 +5816,7 @@ POST /v4.0/event-subscriptions "resultMessage": "SUCCESS", "isSuccessful": true }, - "eventSubscriptionId": "12345678-1234-1234-1234-123456789012" + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -5216,6 +5825,32 @@ POST /v4.0/event-subscriptions --- +### 이벤트 구독 삭제하기 + +```http +DELETE /v4.0/event-subscriptions/{eventSubscriptionId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:EventSubscription.Delete | 이벤트 구독 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + ### 이벤트 구독 수정하기 ```http @@ -5224,49 +5859,44 @@ PUT /v4.0/event-subscriptions/{eventSubscriptionId} #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:EventSubscription.Modify | 이벤트 구독 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------------------|------|---------|----|-----------------------------------| -| eventSubscriptionId | URL | UUID | O | 이벤트 구독의 식별자 | -| eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형 | -| eventSubscriptionName | Body | String | X | 이벤트 구독을 식별할 수 있는 이름 | -| enabled | Body | Boolean | X | 활성화 여부 | -| notifyEmail | Body | Boolean | X | 이메일 발송 여부 | -| notifySms | Body | Boolean | X | SMS 발송 여부 | -| eventCodes | Body | Array | X | 구독할 이벤트 코드 목록 | -| sources | Body | Array | X | 구독할 이벤트 소스 목록 | -| sources.sourceId | Body | UUID | X | 이벤트 소스의 식별자 | -| sources.eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형 | -| userGroupIds | Body | Array | X | 이벤트 구독할 사용자 그룹의 식별자 목록 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | +| eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | X | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | X | 활성화 여부 | +| notifyEmail | Body | Boolean | X | 이메일 발송 여부 | +| notifySms | Body | Boolean | X | SMS 발송 여부 | +| eventCodes | Body | Array | X | 구독할 이벤트 코드 목록 | +| sources | Body | Array | X | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | X | 이벤트 구독할 사용자 그룹의 식별자 목록 |

예시

```json { - "eventSubscriptionName": "updated-event-subscription", + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", "enabled": false, "notifyEmail": false, - "notifySms": true, - "eventCodes": [ - "INSTC_05_01", - "INSTC_06_01" - ], + "notifySms": false, + "eventCodes": [], "sources": [ { - "sourceId": "87654321-4321-4321-4321-210987654321", - "eventCategoryType": "INSTANCE" + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" } ], - "userGroupIds": [ - "11111111-2222-3333-4444-555555555555", - "22222222-3333-4444-5555-666666666666" - ] + "userGroupIds": [] } ``` @@ -5277,45 +5907,34 @@ PUT /v4.0/event-subscriptions/{eventSubscriptionId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- -### 이벤트 구독 삭제하기 +## 가용성 영역 + +### 가용성 영역 목록 보기 ```http -DELETE /v4.0/event-subscriptions/{eventSubscriptionId} +GET /v4.0/availability-zones ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------------|--------------| -| RDSforMariaDB:EventSubscription.Delete | 이벤트 구독 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:AvailabilityZone.List | 가용성 영역 목록 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|-----|------|----|-------------| -| eventSubscriptionId | URL | UUID | O | 이벤트 구독의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| availabilityZones | Body | Array | 가용성 영역 목록 | +| availabilityZones.availabilityZoneName | Body | String | 가용성 영역 이름 | +| availabilityZones.zoneState | Body | Object | 가용성 영역 상태 | +| availabilityZones.zoneState.available | Body | Boolean | 가용성 영역의 사용 가능 여부 |
예시

@@ -5326,7 +5945,15 @@ DELETE /v4.0/event-subscriptions/{eventSubscriptionId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "availabilityZones": [ + { + "availabilityZoneName": "availabilityZoneName-example", + "zoneState": { + "available": false + } + } + ] } ``` @@ -5334,3 +5961,4 @@ DELETE /v4.0/event-subscriptions/{eventSubscriptionId}

--- + diff --git a/mariadb/ko/api-guide-v4.0.md b/mariadb/ko/api-guide-v4.0.md index 6af681ce..3b5b36a4 100644 --- a/mariadb/ko/api-guide-v4.0.md +++ b/mariadb/ko/api-guide-v4.0.md @@ -1,37 +1,37 @@ -## Database > RDS for MariaDB > API 가이드 +## Database > RDS for MariaDB > API v4.0 가이드 ## RDS for MariaDB API 공통 정보 ### API 엔드포인트 -| 리전 | 엔드포인트 | -|-----------|-----------------------------------------------| +| 리전 | 엔드포인트 | +|------|----------| | 한국(판교) 리전 | https://kr1-rds-mariadb.api.nhncloudservice.com | + ### 인증 및 권한 RDS for MariaDB은(는) API 호출 시 인증/인가를 위해 User Access Key 토큰을 사용합니다. User Access Key 토큰은 User Access Key를 기반으로 발급되는 Bearer 타입의 일시적 액세스 토큰입니다. User Access Key 토큰 발급 및 사용에 대한 자세한 내용은 [User Access Key 토큰](/nhncloud/ko/public-api/user-access-key-token)을 참고하세요. 발급 받은 토큰은 Appkey와 함께 요청 Header에 포함해야 합니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|--------|--------|----|-------------------------------------------------------------| -| X-TC-APP-KEY | Header | String | O | RDS for MariaDB 서비스의 Appkey 또는 프로젝트 통합 Appkey | -| X-NHN-AUTHORIZATION | Header | String | O | Public API로 발급 받은 Bearer 유형 토큰 | - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| X-TC-APP-KEY | Header | String | O | RDS for MariaDB 서비스의 Appkey 또는 프로젝트 통합 Appkey | +| X-NHN-AUTHORIZATION | Header | String | O | Public API로 발급 받은 Bearer 유형 토큰 | -또한 프로젝트 멤버 역할에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MariaDB ADMIN`, `RDS for MariaDB VIEWER`로 구분하여 권한을 부여할 수 있습니다. +또한 프로젝트 권한에 따라 호출할 수 있는 API가 제한됩니다. `RDS for MariaDB ADMIN`, `RDS for MariaDB VIEWER` 역할에는 아래처럼 기본 권한이 부여돼 있고 프로젝트 내 역할 그룹 관리 메뉴에서 필요한 권한만 부여할 수 있습니다. -* `RDS for MariaDB ADMIN` 권한은 모든 기능을 사용 가능합니다. -* `RDS for MariaDB VIEWER` 권한은 정보를 조회하는 기능만 사용 가능합니다. +* `RDS for MariaDB ADMIN` 역할은 API 실행에 필요한 모든 권한이 부여됩니다. +* `RDS for MariaDB VIEWER` 역할은 정보를 조회하는 권한만 부여됩니다. * DB 인스턴스를 생성, 수정, 삭제하거나, DB 인스턴스를 대상으로 하는 어떠한 기능도 사용할 수 없습니다. - * 단, 알림 그룹 및 사용자 그룹 관련 기능은 사용 가능합니다. + * 단, 알림 그룹과 사용자 그룹 관련된 기능은 사용할 수 있습니다. API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같은 오류가 발생합니다. -| resultCode | resultMessage | 설명 | -|------------|---------------|-------------| -| 80401 | Unauthorized | 인증에 실패했습니다. | -| 80403 | Forbidden | 권한이 없습니다. | +| resultCode | resultMessage | 설명 | +|------------|---------------|-----| +| 80401 | Unauthorized | 인증에 실패했습니다. | +| 80403 | Forbidden | 권한이 없습니다. | ### 응답 공통 정보 @@ -49,43 +49,46 @@ API 요청 시 인증에 실패하거나 권한이 없을 경우 다음과 같 ``` #### 필드 -| 이름 | 형식 | 설명 | -|---------------|---------|-----------------------------------------| -| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | -| resultMessage | String | 결과 메시지 | -| isSuccessful | Boolean | 성공 여부 | - +| 이름 | 형식 | 설명 | +|-----|-----|-----| +| resultCode | Number | 결과 코드
- 성공: `0`
- 실패: `0`이 아닌 값 | +| resultMessage | String | 결과 메시지 | +| isSuccessful | Boolean | 성공 여부 | ### DB 엔진 유형 -| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 | -|-----------------|----------|------------------|--| -| MARIADB_V10330 | O | O | NATIVE, ED25519 | -| MARIADB_V10611 | O | O | NATIVE, ED25519 | -| MARIADB_V10612 | O | O | NATIVE, ED25519 | -| MARIADB_V10616 | O | O | NATIVE, ED25519 | -| MARIADB_V10622 | O | O | NATIVE, ED25519 | -| MARIADB_V101107 | O | O | NATIVE, ED25519 | -| MARIADB_V101108 | O | O | NATIVE, ED25519 | -| MARIADB_V101113 | O | O | NATIVE, ED25519 | -| MARIADB_V11407 | O | O | NATIVE, ED25519 | - -* ENUM 타입의 dbVersion 필드에서 해당 값을 사용할 수 있습니다. +| DB 엔진 유형 | 생성 가능 여부 | OBS로부터 복원 가능 여부 | 인증 플러그인 지원 | +|------------|----------|------------------|------------| +| MARIADB_V10330 | X | X | NATIVE, ED25519 | +| MARIADB_V10611 | X | X | NATIVE, ED25519 | +| MARIADB_V10612 | X | X | NATIVE, ED25519 | +| MARIADB_V10616 | X | X | NATIVE, ED25519 | +| MARIADB_V10622 | X | X | NATIVE, ED25519 | +| MARIADB_V10625 | X | X | NATIVE, ED25519 | +| MARIADB_V101107 | O | O | NATIVE, ED25519 | +| MARIADB_V101108 | O | O | NATIVE, ED25519 | +| MARIADB_V101113 | O | O | NATIVE, ED25519 | +| MARIADB_V101116 | O | O | NATIVE, ED25519 | +| MARIADB_V11407 | O | O | NATIVE, ED25519 | +| MARIADB_V11410 | O | O | NATIVE, ED25519 | +| MARIADB_V11806 | O | O | NATIVE, ED25519 | + +* ENUM 타입의 dbVersion 필드에 대해 해당 값을 사용할 수 있습니다. * 버전에 따라 생성 또는 복원이 불가능한 경우가 있을 수 있습니다. ## 프로젝트 정보 -### 리전 목록 보기 +### 프로젝트 멤버 목록 보기 ```http -GET /v4.0/project/regions +GET /v4.0/project/members ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|------------| -| RDSforMariaDB:Project.Get | 프로젝트 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:Project.Get | 프로젝트 멤버 목록 보기 | #### 요청 @@ -93,11 +96,13 @@ GET /v4.0/project/regions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------|------|---------|----------------------------------------------------------------------------| -| regions | Body | Array | 리전 목록 | -| regions.regionCode | Body | Enum | 리전 코드
- `KR1`: 한국(판교) 리전 | -| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| members.memberName | Body | String | 프로젝트 멤버의 이름 | +| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | +| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 |
예시

@@ -109,30 +114,33 @@ GET /v4.0/project/regions "resultMessage": "SUCCESS", "isSuccessful": true }, - "regions": [ + "members": [ { - "regionCode": "KR1", - "isEnabled": true + "memberId": "550e8400-e29b-41d4-a716-446655440000", + "memberName": "memberName-example", + "emailAddress": "emailAddress-example", + "phoneNumber": "phoneNumber-example" } ] } ``` +

--- -### 프로젝트 멤버 목록 보기 +### 리전 목록 보기 ```http -GET /v4.0/project/members +GET /v4.0/project/regions ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|------------| -| RDSforMariaDB:Project.Get | 프로젝트 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:Project.Get | 리전 목록 보기 | #### 요청 @@ -140,13 +148,11 @@ GET /v4.0/project/members #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|--------|-----------------| -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| members.memberName | Body | String | 프로젝트 멤버의 이름 | -| members.emailAddress | Body | String | 프로젝트 멤버의 이메일 주소 | -| members.phoneNumber | Body | String | 프로젝트 멤버의 전화번호 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| regions | Body | Array | 리전 목록 | +| regions.regionCode | Body | Enum | 리전 코드
- KR1: `한국(판교)` | +| regions.isEnabled | Body | Boolean | 리전의 활성화 여부 |
예시

@@ -158,12 +164,10 @@ GET /v4.0/project/members "resultMessage": "SUCCESS", "isSuccessful": true }, - "members": [ + "regions": [ { - "memberId": "1b1d3627-507a-49ea-8cb7-c86dfa9caa58", - "memberName": "홍길동", - "emailAddress": "gildong.hong@nhn.com", - "phoneNumber": "+821012345678" + "regionCode": "KR1", + "isEnabled": false } ] } @@ -184,8 +188,8 @@ GET /v4.0/db-flavors #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:DbFlavor.List | DB 인스턴스 사양 목록 보기 | #### 요청 @@ -194,13 +198,13 @@ GET /v4.0/db-flavors #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------| -| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | -| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | -| dbFlavors.ram | Body | Number | 메모리 용량(MB) | -| dbFlavors.vcpus | Body | Number | CPU 코어 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbFlavors | Body | Array | DB 인스턴스 사양 목록 | +| dbFlavors.dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| dbFlavors.dbFlavorName | Body | String | DB 인스턴스 사양 이름 | +| dbFlavors.ram | Body | Number | 메모리 용량(MB) | +| dbFlavors.vcpus | Body | Number | CPU 코어 수 |

예시

@@ -214,9 +218,9 @@ GET /v4.0/db-flavors }, "dbFlavors": [ { - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbFlavorName": "m2.c1m2", - "ram": 2048, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbFlavorName": "dbFlavorName-example", + "ram": 1, "vcpus": 1 } ] @@ -238,8 +242,8 @@ GET /v4.0/network/subnets #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------|-----------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:Network.List | 서브넷 목록 보기 | #### 요청 @@ -248,14 +252,14 @@ GET /v4.0/network/subnets #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|---------|------------------| -| subnets | Body | Array | 서브넷 목록 | -| subnets.subnetId | Body | UUID | 서브넷의 식별자 | -| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | -| subnets.subnetCidr | Body | String | 서브넷의 CIDR | -| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | -| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| subnets | Body | Array | 서브넷 목록 | +| subnets.subnetId | Body | UUID | 서브넷의 식별자 | +| subnets.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnets.subnetCidr | Body | String | 서브넷의 CIDR | +| subnets.usingGateway | Body | Boolean | 게이트웨이 사용 여부 | +| subnets.availableIpCount | Body | Number | 사용 가능한 IP 수 |

예시

@@ -269,11 +273,11 @@ GET /v4.0/network/subnets }, "subnets": [ { - "subnetId": "1b2a9b23-0725-4b92-8c78-35db66b8ad9f", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/24", - "usingGateway": true, - "availableIpCount": 240 + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example", + "usingGateway": false, + "availableIpCount": 1 } ] } @@ -294,8 +298,8 @@ GET /v4.0/db-versions #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:DbVersion.List | DB 엔진 목록 보기 | #### 요청 @@ -304,11 +308,11 @@ GET /v4.0/db-versions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|---------|-----------------------| -| dbVersions | Body | Array | DB 엔진 목록 | -| dbVersions.dbVersion | Body | String | DB 엔진 유형 | -| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbVersions | Body | Array | DB 엔진 목록 | +| dbVersions.dbVersion | Body | String | DB 엔진 유형 | +| dbVersions.dbVersionName | Body | String | DB 엔진 이름 | | dbVersions.restorableFromObs | Body | Boolean | 오브젝트 스토리지로부터 복원 가능 여부 |

예시 @@ -323,9 +327,9 @@ GET /v4.0/db-versions }, "dbVersions": [ { - "dbVersion": "MARIADB_V10330", - "dbVersionName": "Maria DB 10.3.30", - "restorableFromObs": true + "dbVersion": "MYSQL_V8036", + "dbVersionName": "dbVersionName-example", + "restorableFromObs": false } ] } @@ -338,7 +342,7 @@ GET /v4.0/db-versions ## 데이터 스토리지 -### 데이터 스토리지 타입 목록 보기 +### 스토리지 타입 목록 보기 ```http GET /v4.0/storage-types @@ -346,9 +350,9 @@ GET /v4.0/storage-types #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------|-------------------| -| RDSforMariaDB:Storage.List | 데이터 스토리지 타입 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:Storage.List | 스토리지 타입 목록 보기 | #### 요청 @@ -356,9 +360,9 @@ GET /v4.0/storage-types #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|-------|----------------| -| storageTypes | Body | Array | 데이터 스토리지 타입 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageTypes | Body | Array | 스토리지 타입 목록 |
예시

@@ -370,10 +374,7 @@ GET /v4.0/storage-types "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageTypes": [ - "General SSD", - "General HDD" - ] + "storageTypes": [] } ``` @@ -409,29 +410,29 @@ GET /v4.0/jobs/{jobId} #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:Job.Get | 작업 정보 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------|-----|------|----|---------| -| jobId | URL | UUID | O | 작업의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| jobId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------|------|----------|-----------------------------------| -| jobId | Body | UUID | 작업의 식별자 | -| jobStatus | Body | Enum | 작업의 현재 상태 | -| resourceRelations | Body | Array | 연관 리소스 목록 | -| resourceRelations.resourceType | Body | Enum | 연관 리소스 유형 | -| resourceRelations.resourceId | Body | UUID | 연관 리소스의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | +| jobStatus | Body | Enum | 작업의 현재 상태
- DELETED
- CANNOT_PROGRESS
- FAILED
- ERROR
- CANCELED
- INTERRUPTED
- COMPLETED
- RUNNING
- PREPARING
- READY
- CREATED
- FAIL_TO_READY
- REGISTERED
- FAIL_TO_REGISTER
- WAIT_TO_REGISTER | +| resourceRelations | Body | Array | 연관 리소스 목록 | +| resourceRelations.resourceType | Body | String | 연관 리소스 유형 | +| resourceRelations.resourceId | Body | String | 연관 리소스의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -443,16 +444,16 @@ GET /v4.0/jobs/{jobId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "jobId": "0ddb042c-5af6-43fb-a914-f4dd0540eb7c", - "jobStatus": "RUNNING", + "jobId": "550e8400-e29b-41d4-a716-446655440000", + "jobStatus": "DELETED", "resourceRelations": [ { - "resourceType": "DB_INSTANCE", - "resourceId": "56b39dcf-65eb-47ec-9d4f-09f160ba2266" + "resourceType": "resourceType-example", + "resourceId": "resourceId-example" } ], - "createdYmdt": "2023-02-22T20:47:12+09:00", - "updatedYmdt": "2023-02-22T20:49:46+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -471,8 +472,8 @@ GET /v4.0/db-instance-groups #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:DbInstanceGroup.List | DB 인스턴스 그룹 목록 보기 | #### 요청 @@ -481,13 +482,13 @@ GET /v4.0/db-instance-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------|------|----------|--------------------------------------------------------------------------| -| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | -| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroups | Body | Array | DB 인스턴스 그룹 목록 | +| dbInstanceGroups.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceGroups.replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstanceGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstanceGroups.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -501,10 +502,10 @@ GET /v4.0/db-instance-groups }, "dbInstanceGroups": [ { - "dbInstanceGroupId": "05de0746-89fd-49c8-94f9-9c5b1df97009", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", - "createdYmdt": "2023-02-13T17:35:20+09:00", - "updatedYmdt": "2023-02-13T17:35:20+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -523,30 +524,30 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:DbInstanceGroup.Get | DB 인스턴스 그룹 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|-----------------| -| dbInstanceGroupId | URL | UUID | O | DB 인스턴스 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- `STANDALONE`: 단일
- `HIGH_AVAILABILITY`: 고가용성 | -| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| replicationType | Body | Enum | DB 인스턴스 그룹의 복제 형태
- STANDALONE: `고가용성 사용 안함`
- HIGH_AVAILABILITY: `고가용성 사용` | +| dbInstances | Body | Array | DB 인스턴스 그룹에 속한 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -558,17 +559,17 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbInstanceGroupId": "36617a8e-0df8-4b16-b6ea-6306019e95da", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", "replicationType": "STANDALONE", "dbInstances": [ { - "dbInstanceId": "6d2db0ef-fe9b-4ed4-97b1-d97fcb4cf1b8", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE" + "dbInstanceStatus": "BEFORE_CREATE" } ], - "createdYmdt": "2023-03-03T17:38:14+09:00", - "updatedYmdt": "2023-03-03T17:38:14+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -601,8 +602,8 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} | `BACKING_UP` | 백업 중 | | `CANCELING` | 취소 중 | | `CREATING` | 생성 중 | -| `CREATING_SCHEMA` | DB 스키마 생성 중 | -| `CREATING_USER` | 사용자 생성 중 | +| `CREATING_SCHEMA` | DB 스키마 생성 중 | +| `CREATING_USER` | 사용자 생성 중 | | `DELETING` | 삭제 중 | | `DELETING_SCHEMA` | DB 스키마 삭제 중 | | `DELETING_USER` | 사용자 삭제 중 | @@ -621,8 +622,8 @@ GET /v4.0/db-instance-groups/{dbInstanceGroupId} | `STARTING` | 시작 중 | | `STOPPING` | 정지 중 | | `SYNCING_SCHEMA` | DB 스키마 동기화 중 | -| `SYNCING_USER` | 사용자 동기화 중 | -| `UPDATING_USER` | 사용자 수정 중 | +| `SYNCING_USER` | 사용자 동기화 중 | +| `UPDATING_USER` | 사용자 수정 중 | ### DB 인스턴스 목록 보기 @@ -632,8 +633,8 @@ GET /v4.0/db-instances #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:DbInstance.List | DB 인스턴스 목록 보기 | #### 요청 @@ -642,20 +643,20 @@ GET /v4.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstances | Body | Array | DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | -| dbInstances.dbPort | Body | Number | DB 포트 | -| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태 | -| dbInstances.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbInstances.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstances | Body | Array | DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| dbInstances.description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbInstances.dbVersion | Body | Enum | DB 엔진 유형 | +| dbInstances.dbPort | Body | Number | DB 포트 | +| dbInstances.dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstances.dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| dbInstances.progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbInstances.createdYmdt | Body | DateTime | 생성 일시 | +| dbInstances.updatedYmdt | Body | DateTime | 수정 일시 |

예시

@@ -669,17 +670,17 @@ GET /v4.0/db-instances }, "dbInstances": [ { - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MARIADB_V10330", - "dbPort": 10000, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", + "dbInstanceStatus": "BEFORE_CREATE", "progressStatus": "NONE", - "createdYmdt": "2023-01-23T12:03:13+09:00", - "updatedYmdt": "2023-02-02T17:20:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -690,51 +691,130 @@ GET /v4.0/db-instances --- -### DB 인스턴스 상세 보기 +### DB 인스턴스 생성하기 ```http -GET /v4.0/db-instances/{dbInstanceId} +POST /v4.0/db-instances ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMariaDB:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Create | DB 인스턴스 생성하기 | -#### 요청 +#### 공통 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| dbPort | Body | Number | O | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| authenticationPlugin | Body | Enum | X | 인증 Plugin
- NATIVE: `mysql_native_password 인증`
- ED25519: `ed25519 인증 (MariaDB 전용)` | +| tlsOption | Body | Enum | X | TLS Option
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 데이터 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | + +

예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE", + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "backup": { + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 1800, + "replicationRegion": "KR1", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + } +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------|------|----------|---------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | -| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| description | Body | String | DB 인스턴스에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| dbPort | Body | Number | DB 포트 | -| dbInstanceType | Body | Enum | DB 인스턴스의 역할 타입
- `MASTER`: 마스터
- `FAILED_MASTER`: 장애 조치된 마스터
- `CANDIDATE_MASTER`: 예비 마스터
- `READ_ONLY_SLAVE`: 읽기 복제본 | -| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태 | -| progressStatus | Body | Enum | DB 인스턴스의 현재 작업 진행 상태 | -| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | -| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | -| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | -| useSlowQueryAnalysis | Body | Boolean | Slow query 분석 여부 | -| supportAuthenticationPlugin | Body | Boolean | 인증 플러그인 지원 여부 | -| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | -| needMigration | Body | Boolean | 마이그레이션 필요 여부 | -| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -746,27 +826,7 @@ GET /v4.0/db-instances/{dbInstanceId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbInstanceId": "d067593b-1acc-4ccc-9e8a-cc72d6d79ec3", - "dbInstanceGroupId": "51c7d080-ff36-4025-84b1-9d9d0b4fe9e0", - "dbInstanceName": "db-instance", - "description": null, - "dbVersion": "MARIADB_V10330", - "dbPort": 10000, - "dbInstanceType": "MASTER", - "dbInstanceStatus": "AVAILABLE", - "progressStatus": "NONE", - "dbFlavorId": "e9ed4ef6-78d7-46fa-ace9-32481e97f3b7", - "parameterGroupId": "b03e8b13-de27-4d04-a488-ff5689589372", - "dbSecurityGroupIds": ["01908c35-d2c9-4852-baf0-17f06ec42c03"], - "notificationGroupIds": ["83a62a33-ddbf-4a04-8653-e54463d5b1ac"], - "useDeletionProtection": false, - "useSlowQueryAnalysis": true, - "supportAuthenticationPlugin": true, - "needToApplyParameterGroup": false, - "needMigration": false, - "supportDbVersionUpgrade": true, - "createdYmdt": "2022-11-23T12:03:13+09:00", - "updatedYmdt": "2022-12-02T17:20:17+09:00" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -775,95 +835,124 @@ GET /v4.0/db-instances/{dbInstanceId} --- -### DB 인스턴스 생성하기 +### 오브젝트 스토리지를 이용한 DB 인스턴스 복원 ```http -POST /v4.0/db-instances +POST /v4.0/db-instances/restore-from-obs ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMariaDB:DbInstance.Create | DB 인스턴스 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.RestoreFromObs | 오브젝트 스토리지를 이용한 DB 인스턴스 복원 | -#### 요청 +#### 공통 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|-------|---------|----|---------------------------------------------------------------------| -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| dbUserName | Body | String | O | DB 사용자 계정명 | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| pingType | Body | Enum | X | 고가용성 사용 시 Ping 타입
- 기본값: `INSERT`
- `INSERT`
- `SELECT` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- 기본값: `NATIVE`(미지원 시 `ED25519`)
- NATIVE: `mysql_native_password`
- ED25519: `auth_ed25519` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | O | DB 포트 | +| dbVersion | Body | Enum | O | DB 엔진 유형 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | O | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | O | 스토리지 타입 | +| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.subnetId | Body | UUID | O | 서브넷의 식별자 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| backup | Body | Object | O | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | O | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | +| restore.username | Body | String | O | NHN Cloud 계정 혹은 IAM 멤버 ID | +| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | +| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | +| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` |

예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbVersion": "MARIADB_V10330", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", - "availabilityZone": "kr-pub-a" - }, + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "dbVersion": "MYSQL_V8036", + "useHighAvailability": false, + "pingInterval": 3, "storage": { "storageType": "General SSD", - "storageSize": 20 + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR1", + "useBackupLock": true, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR" + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" } ] - } + }, + "restore": { + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" + }, + "useDefaultNotification": false, + "useSlowQueryAnalysis": true, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDeletionProtection": false } ``` @@ -872,64 +961,27 @@ POST /v4.0/db-instances #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### DB 인스턴스 수정하기 - -```http -PUT /v4.0/db-instances/{dbInstanceId} -``` - -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMariaDB:DbInstance.Modify | DB 인스턴스 수정하기 | - -#### 요청 - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------|------|---------|----|---------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbPort | Body | Number | X | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| useReadOnly | Body | Boolean | X | 읽기 전용으로 변경 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -

예시

```json { - "dbInstanceName": "db-instance2", - "description": "description2", - "dbPort": 10001, - "dbSecurityGroupIds": [], - "executeBackup": true + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- ### DB 인스턴스 삭제하기 @@ -940,79 +992,99 @@ DELETE /v4.0/db-instances/{dbInstanceId} #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:DbInstance.Delete | DB 인스턴스 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| deleteAutoBackup | Body | Boolean | X | 자동 백업 삭제 여부
- 기본값: `false` | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| deleteAutoBackup | Body | Boolean | X | 자동 백업 삭제 여부
- 기본값: `false` | -### DB 인스턴스 재시작하기 +
예시 +

-```http -POST /v4.0/db-instances/{dbInstanceId}/restart +```json +{ + "deleteAutoBackup": false +} ``` -#### 필요 권한 +

+
-| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMariaDB:DbInstance.Restart | DB 인스턴스 재시작하기 | +#### 응답 -#### 요청 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | -| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| useReadOnly | Body | Boolean | X | 읽기 전용으로 변경 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### DB 인스턴스 강제 재시작하기 + +### DB 인스턴스 상세 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/force-restart +GET /v4.0/db-instances/{dbInstanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|------------------| -| RDSforMariaDB:DbInstance.ForceRestart | DB 인스턴스 강제 재시작하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Get | DB 인스턴스 상세 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstanceGroupId | Body | UUID | DB 인스턴스 그룹의 식별자 | +| dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| description | Body | String | DB 인스턴스에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| dbPort | Body | Number | DB 포트 | +| dbInstanceType | Body | Enum | DB 인스턴스 역할 타입
- MASTER: `마스터`
- FAILED_MASTER: `장애 마스터`
- CANDIDATE_MASTER: `예비 마스터`
- READ_ONLY_SLAVE: `읽기 복제본` | +| dbInstanceStatus | Body | Enum | DB 인스턴스의 현재 상태
- BEFORE_CREATE: `생성 이전 (회색)`
- AVAILABLE: `사용 가능 (녹색)`
- STORAGE_FULL: `용량 부족 (적색)`
- FAIL_TO_CREATE: `생성 실패 (적색)`
- FAIL_TO_CONNECT: `연결 실패 (적색)`
- REPLICATION_STOP: `복제 중단 (적색)`
- REPLICATION_DELAY: `복제 지연 (황색)`
- FAILOVER: `장애 조치 완료 (적색)`
- SHUTDOWN: `중지 됨 (회색)`
- DELETED: `삭제됨 (회색)` | +| progressStatus | Body | Enum | DB 인스턴스의 현재 진행 상태
- NONE
- APPLYING_PARAMETER_GROUP
- BACKING_UP
- CANCELING
- CREATING
- CREATING_SCHEMA
- CREATING_USER
- DELETING
- DELETING_SCHEMA
- DELETING_USER
- EXPORTING_BACKUP
- FAILING_OVER
- MIGRATING
- MODIFYING
- PREPARING
- PROMOTING
- PROMOTING_FORCIBLY
- REBUILDING
- REPAIRING
- REPLICATING
- RESTARTING
- RESTARTING_FORCIBLY
- RESTORING
- STARTING
- STOPPING
- SYNCING_SCHEMA
- SYNCING_USER
- UPDATING_USER
- WAIT_MANUAL_CONTROL | +| dbFlavorId | Body | UUID | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | DB 인스턴스에 적용된 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | DB 인스턴스에 적용된 DB 보안 그룹의 식별자 목록 | +| notificationGroupIds | Body | Array | DB 인스턴스에 적용된 알림 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | DB 인스턴스 삭제 보호 여부 | +| useSlowQueryAnalysis | Body | Boolean | Slow query 분석 여부 | +| supportAuthenticationPlugin | Body | Boolean | 인증 plugin 지원 여부 | +| needToApplyParameterGroup | Body | Boolean | 최신 파라미터 그룹 적용 필요 여부 | +| needMigration | Body | Boolean | 마이그레이션 필요 여부 | +| supportDbVersionUpgrade | Body | Boolean | DB 버전 업그레이드 지원 여부 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -1023,133 +1095,222 @@ POST /v4.0/db-instances/{dbInstanceId}/force-restart "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "dbPort": 1, + "dbInstanceType": "MASTER", + "dbInstanceStatus": "BEFORE_CREATE", + "progressStatus": "NONE", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "notificationGroupIds": [], + "useDeletionProtection": false, + "useSlowQueryAnalysis": false, + "supportAuthenticationPlugin": false, + "needToApplyParameterGroup": false, + "needMigration": false, + "supportDbVersionUpgrade": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

- --- -### DB 인스턴스 시작하기 +### DB 인스턴스 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/start +PUT /v4.0/db-instances/{dbInstanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|--------------| -| RDSforMariaDB:DbInstance.Start | DB 인스턴스 시작하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Modify | DB 인스턴스 수정하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | X | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbPort | Body | Number | X | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbVersion | Body | Enum | X | DB 엔진 버전 코드 | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부 | +| useDummy | Body | Boolean | X | 단일 DB 인스턴스의 DB 버전 업그레이드 시 더미 사용 여부
- 기본값: `false` | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +
예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "dbInstanceCandidateName": "dbInstanceCandidateName", + "description": "description-example", + "dbPort": 1, + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "useSlowQueryAnalysis": false, + "useDummy": false, + "dbSecurityGroupIds": [], + "executeBackup": false, + "useOnlineFailover": false, + "waitReplicationDelay": false, + "useReadOnly": false +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 인스턴스 정지하기 +### 백업 정보 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/stop +GET /v4.0/db-instances/{dbInstanceId}/backup-info ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------|--------------| -| RDSforMariaDB:DbInstance.Stop | DB 인스턴스 정지하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Get | 백업 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| backupPeriod | Body | Number | 백업 보관 기간(일) | +| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | +| backupRetryCount | Body | Number | 백업 재시도 횟수 | +| replicationRegion | Body | Enum | 백업 복제 리전
- KR1: `한국(판교)` | +| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration
- HALF_AN_HOUR
- ONE_HOUR
- ONE_HOUR_AND_HALF
- TWO_HOURS
- TWO_HOURS_AND_HALF
- THREE_HOURS | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "backupPeriod": 1, + "ftwrlWaitTimeout": 1, + "backupRetryCount": 1, + "replicationRegion": "KR1", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] +} +``` + +

+
--- -### DB 인스턴스 복제하기 +### 백업 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/replicate +PUT /v4.0/db-instances/{dbInstanceId}/backup-info ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|--------------| -| RDSforMariaDB:DbInstance.Replicate | DB 인스턴스 복제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Modify | 백업 정보 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------------------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbPort | Body | Number | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록
- 기본값: 원본 DB 인스턴스 값 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: 원본 DB 인스턴스 값 | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입
- 기본값: 원본 DB 인스턴스 값
- 예시: `General SSD` | -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `10` | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각
- 예시: `00:00:00`
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간
- 기본값: 원본 DB 인스턴스 값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` |
예시

```json { - "dbInstanceName": "db-instance-replicate", - "description": "description", - "dbPort": 11000, - "network": { - "availabilityZone": "kr-pub-a" - }, - "storage": { - "stroageSize": 100 - } + "backupPeriod": 0, + "ftwrlWaitTimeout": 0, + "backupRetryCount": 0, + "replicationRegion": "KR1", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] } ``` @@ -1158,147 +1319,234 @@ POST /v4.0/db-instances/{dbInstanceId}/replicate #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### DB 인스턴스 승격하기 - -```http -POST /v4.0/db-instances/{dbInstanceId}/promote -``` +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### 바이너리 로그 목록 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/binlogs +``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|--------------| -| RDSforMariaDB:DbInstance.Promote | DB 인스턴스 승격하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceBinLog.List | 바이너리 로그 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| binLogs | Body | Array | BinLog 파일 목록 | +| binLogs.binLogFileName | Body | String | BinLog 파일 이름 | +| binLogs.binLogFileSize | Body | Number | BinLog 파일 크기 (Byte) | +| binLogs.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "binLogs": [ + { + "binLogFileName": "binLogFileName-example", + "binLogFileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
--- -### DB 인스턴스 재구축하기 +### 바이너리 로그 삭제 ```http -POST /v4.0/db-instances/{dbInstanceId}/rebuild +POST /v4.0/db-instances/{dbInstanceId}/binlogs/purge ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMariaDB:DbInstance.Rebuild | DB 인스턴스 재구축하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceBinLog.Purge | 바이너리 로그 삭제 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| lastBinLogFileName | Body | String | O | 삭제할 마지막 BinLog 파일 이름 (해당 파일 직전까지 삭제됨) | + +
예시 +

+ +```json +{ + "lastBinLogFileName": "mysql-bin.000010" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 복원 정보 조회 +### 인증서 파일 목록 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/restoration-info +GET /v4.0/db-instances/{dbInstanceId}/certificates ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMariaDB:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceCertificate.List | 인증서 파일 목록 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------------|------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| oldestRestorableYmdt | Body | DateTime | 가장 오래된 복원 가능한 시각 | -| latestRestorableYmdt | Body | DateTime | 가장 최신의 복원 가능한 시각 | -| restorableBackups | Body | Array | 복원 가능한 백업 목록 | -| restorableBackups.backup | Body | Object | 백업 정보 객체 | -| restorableBackups.backup.backupId | Body | UUID | 백업의 식별자 | -| restorableBackups.backup.backupName | Body | String | 백업 이름 | -| restorableBackups.backup.useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| restorableBackups.backup.backupSize | Body | Number | 백업 크기 | -| restorableBackups.backup.backupType | Body | Enum | 백업 유형
- `AUTO`: 자동
- `MANUAL`: 수동 | -| restorableBackups.backup.backupStatus | Body | Enum | 백업 상태
- `BACKING_UP`: 백업 중인 경우
- `COMPLETED`: 백업이 완료된 경우
- `DELETING`: 백업이 삭제 중인 경우
- `DELETED`: 백업이 삭제된 경우
- `ERROR`: 오류가 발생한 경우 | -| restorableBackups.backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| restorableBackups.backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | -| restorableBackups.backup.dbVersion | Body | String | DB 엔진 유형 | -| restorableBackups.backup.failoverCount | Body | Number | 장애 조치 횟수 | -| restorableBackups.backup.binLogFileName | Body | String | 바이너리 로그 파일명 | -| restorableBackups.backup.binLogPosition | Body | Number | 바이너리 로그 파일 위치 | -| restorableBackups.backup.createdYmdt | Body | DateTime | 백업 생성 일시 | -| restorableBackups.backup.updatedYmdt | Body | DateTime | 백업 갱신 일시 | -| restorableBackups.restorableBinLogs | Body | Array | 해당 백업을 이용하여 복원 가능한 바이너리 로그 이름 목록 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| certificates | Body | Array | 인증서 파일 목록 | +| certificates.fileName | Body | String | 인증서 파일 이름 | +| certificates.certificateType | Body | Enum | 인증서 타입
- CA_FILE
- CERT_FILE
- KEY_FILE | +| certificates.fileSize | Body | Number | 인증서 파일 크기(Byte) | +| certificates.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "certificates": [ + { + "fileName": "fileName-example", + "certificateType": "CA_FILE", + "fileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### 인증서 파일 내보내기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/certificates/upload +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceCertificate.Export | 인증서 파일 내보내기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| certificateTypes | Body | Array | O | 업로드할 인증서 타입 목록 | +| tenantId | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 회원 또는 IAM 멤버 ID | +| password | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 인증서 파일의 경로 | + +
예시 +

+```json +{ + "certificateTypes": [], + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" +} +``` + +

+
+ +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "oldestRestorableYmdt": "2023-07-09T16:33:33+09:00", - "latestRestorableYmdt": "2023-07-10T15:44:44+09:00", - "restorableBackups": [ - { - "backup": { - "backupId": "145d889a-fe08-474f-8f58-bde576ff96a9", - "backupName": "example-backup-name", - "backupStatus": "COMPLETED", - "dbInstanceId": "dba1be25-9429-4589-9716-7fb6daad7cb9", - "dbInstanceName": "original-db-instance-name", - "dbVersion": "MARIADB_V10330", - "backupType": "MANUAL", - "backupSize": 8299904, - "useBackupLock": true, - "failoverCount": 0, - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 367916037, - "createdYmdt": "2023-07-10T15:44:44+09:00", - "updatedYmdt": "2023-07-10T15:46:07+09:00" - }, - "restorableBinLogs": [ - "mysql-bin.000001" - ] - } - ] + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1307,45 +1555,98 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info --- -### 복원될 마지막 쿼리 조회 +### DB 스키마 목록 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query +GET /v4.0/db-instances/{dbInstanceId}/db-schemas ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMariaDB:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceSchema.List | DB 스키마 목록 보기 | -#### 공통 요청 +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSchemas | Body | Array | DB 스키마 목록 | +| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | +| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | +| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- STABLE
- CREATING
- SYNCING
- DELETING
- DELETED | +| dbSchemas.createdYmdt | Body | DateTime | 생성 일시 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSchemas": [ + { + "dbSchemaId": "550e8400-e29b-41d4-a716-446655440000", + "dbSchemaName": "dbSchemaName-example", + "dbSchemaStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
+ +--- + +### DB 스키마 생성하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/db-schemas +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceSchema.Create | DB 스키마 생성하기 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|------|----|-----------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restoreType | Query | Enum | O | 복원 타입 종류
- `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
- `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입 | +#### 요청 -#### restoreType이 `TIMESTAMP`인 경우 +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbSchemaName | Body | String | O | DB 스키마 이름
- 최대 길이: `64`
- 영문 시작, 영문/숫자/_ 허용, 1~64자, MySQL 예약어 불가 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-------|----------|----|-------------------------------------------| -| restoreYmdt | Query | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +
예시 +

-#### restoreType이 `BINLOG`인 경우 +```json +{ + "dbSchemaName": "dbSchemaName-example" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------|-------|--------|----|--------------------| -| backupId | Query | UUID | O | 복원에 사용할 백업의 식별자 | -| binLogFileName | Query | String | O | 복원에 사용할 바이너리 로그 이름 | -| binLogPosition | Query | Number | O | 복원에 사용할 바이너리 로그 위치 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------|------|----------|--------------------------------------| -| executedYmdt | Body | DateTime | 쿼리 수행 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| lastQuery | Body | String | 마지막 수행 쿼리 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -1357,8 +1658,7 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query "resultMessage": "SUCCESS", "isSuccessful": true }, - "executedYmdt": "2023-03-17T14:02:29+09:00", - "lastQuery": "INSERT INTO `test`.`test`SET @1='0123'" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1367,212 +1667,153 @@ GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query --- -### 복원 +### DB 스키마 삭제하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/restore +DELETE /v4.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|--------------| -| RDSforMariaDB:DbInstance.Restore | DB 인스턴스 복원하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceSchema.Delete | DB 스키마 삭제하기 | -#### 공통 요청 +#### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| restore | Body | Object | O | 복원 정보 객체 | -| restore.restoreType | Body | Enum | O | 복원 타입 종류
- `TIMESTAMP`: 복원 가능한 시간 이내의 시간을 이용한 시점 복원 타입
- `BINLOG`: 복원 가능한 바이너리 로그 위치를 이용한 시점 복원 타입
- `BACKUP`: 기존에 생성한 백업을 이용한 스냅숏 복원 타입 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 고가용성 사용 시 필수 | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| pingType | Body | Enum | X | 고가용성 사용 시 Ping 타입
- 기본값: `INSERT`
- `INSERT`
- `SELECT` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | X | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | X | 서브넷의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a`
- 기본값: 랜덤 선택 | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입
- 예시: `General SSD`
- 기본값: 원본 DB 인스턴스 값 | -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +이 API는 요청 본문을 요구하지 않습니다. -#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbSchemaId | URL | UUID | O | DB 스키마의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|----------|----|------------------------------------------------------------------------------------------------| -| restore.restoreYmdt | Body | DateTime | O | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD)
복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능합니다. | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |

예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "TIMESTAMP", - "restoreYmdt": "2023-07-10T15:44:44+09:00" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) +--- + +### DB 사용자 목록 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/db-users +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------------------|------|--------|----|--------------------| -| restore.backupId | Body | UUID | O | 복원에 사용할 백업의 식별자 | -| restore.binLog | Body | Object | O | 바이너리 로그 정보 객체 | -| restore.binLog.binLogFileName | Body | String | O | 복원에 사용할 바이너리 로그 이름 | -| restore.binLog.binLogPosition | Body | Number | O | 복원에 사용할 바이너리 로그 위치 | +#### 필요 권한 -* 바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그를 복원할 수 있습니다. +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceUser.List | DB 사용자 목록 보기 | +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbUsers | Body | Array | DB 사용자 목록 | +| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | +| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | +| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | +| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- STABLE
- CREATING
- UPDATING
- SYNCING
- DELETING
- DELETED | +| dbUsers.createdYmdt | Body | DateTime | 생성 일시 | +| dbUsers.updatedYmdt | Body | DateTime | 수정 일시 | +| dbUsers.authenticationPlugin | Body | Enum | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- ED25519: `ed25519 인증 (MariaDB 전용)` | +| dbUsers.tlsOption | Body | Enum | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BINLOG", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36", - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 1234567 - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbUsers": [ + { + "dbUserId": "550e8400-e29b-41d4-a716-446655440000", + "dbUserName": "dbUserName-example", + "host": "host-example", + "authorityType": "CUSTOM", + "dbUserStatus": "STABLE", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" + } + ] } ```

-#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) +--- -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|------|------------------------------|-----------------| -| restore.backupId | Body | UUID | O(restoreType이 `BACKUP`인 경우) | 복원에 사용할 백업의 식별자 | +### DB 사용자 생성하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/db-users +``` +#### 필요 권한 +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceUser.Create | DB 사용자 생성하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserName | Body | String | O | DB 사용자 계정명
- 최소 길이: `1`
- 최대 길이: `32` | +| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| host | Body | String | O | DB 사용자 계정의 호스트명
- 최대 길이: `45` | +| authorityType | Body | Enum | O | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- ED25519: `ed25519 인증 (MariaDB 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- 기본값: `NONE`
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "restoreType": "BACKUP", - "backupId":"3ae7914f-9b42-4729-b125-87417b72cf36" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "dbUserName": "dbUserName", + "dbPassword": "dbPassword", + "host": "host-example", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" } ``` @@ -1581,114 +1822,107 @@ POST /v4.0/db-instances/{dbInstanceId}/restore #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- -### 오브젝트 스토리지로부터 복원 +### DB 사용자 삭제하기 ```http -POST /v4.0/db-instances/restore-from-obs +DELETE /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------------|-------------------------| -| RDSforMariaDB:DbInstance.RestoreFromObs | DB 인스턴스 오브젝트 스토리지로부터 복원 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceUser.Delete | DB 사용자 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------------------------------------|------|---------|----|----------------------------------------------------------------------------------------| -| restore | Body | Object | O | 복원 정보 객체 | -| restore.tenantId | Body | String | O | 백업이 저장된 오브젝트 스토리지의 테넌트 ID | -| restore.username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| restore.password | Body | String | O | 백업이 저장된 오브젝트 스토리지의 API 비밀번호 | -| restore.targetContainer | Body | String | O | 백업이 저장된 오브젝트 스토리지의 컨테이너 | -| restore.objectPath | Body | String | O | 컨테이너에 저장된 백업의 경로 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | O | DB 인스턴스 사양의 식별자 | -| dbPort | Body | Number | O | DB 포트
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | O | 파라미터 그룹의 식별자 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| pingType | Body | Enum | X | 고가용성 사용 시 Ping 타입
- 기본값: `INSERT`
- `INSERT`
- `SELECT` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | O | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | O | 서브넷의 식별자 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a` | -| storage | Body | Object | O | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | O | 데이터 스토리지 타입
- 예시: `General SSD` | -| storage.storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | O | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | O | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | O | 예정된 자동 백업 목록 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "dbInstanceName": "db-instance", - "description": "description", - "dbFlavorId": "71f69bf9-3c01-4c1a-b135-bb75e93f6268", - "dbPort": 10000, - "dbVersion": "MARIADB_V10330", - "dbUserName": "db-user", - "dbPassword": "password", - "parameterGroupId": "488bf4f5-d8f7-459b-ace6-529b606c8570", - "dbSecurityGroupIds": [ - "b0483a3d-e8e2-46f6-9e84-d5e31b0d44f4" - ], - "userGroupIds": [], - "network": { - "subnetId": "3ae7914f-9b42-4729-b125-87417b72cf36", - "availabilityZone": "kr-pub-a" - }, - "storage": { - "storageType": "General SSD", - "storageSize": 20 - }, - "restore": { - "tenantId":"tenant-id", - "username":"username", - "password":"password", - "targetContainer":"targetContainer", - "objectPath":"objectPath" - }, - "backup": { - "backupPeriod": 1, - "backupSchedules": [ - { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" - } - ] - } + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ +--- + +### DB 사용자 수정하기 + +```http +PUT /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceUser.Modify | DB 사용자 수정하기 | + +#### 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | +| authorityType | Body | Enum | X | DB 사용자 권한 타입
- CUSTOM: `사용자 정의 권한`
- READ: `읽기 권한`
- CRUD: `CRUD 권한`
- DDL: `DDL 권한`
- ALL: `전체 권한` | +| authenticationPlugin | Body | Enum | X | 사용자 인증 플러그인
- NATIVE: `mysql_native_password 인증`
- ED25519: `ed25519 인증 (MariaDB 전용)` | +| tlsOption | Body | Enum | X | 인증서 옵션
- NONE: `TLS 미사용`
- SSL: `SSL 인증`
- X509: `X509 인증서 인증` | + +
예시 +

+ +```json +{ + "dbPassword": "dbPassword", + "authorityType": "CUSTOM", + "authenticationPlugin": "NATIVE", + "tlsOption": "NONE" } ``` @@ -1697,15 +1931,30 @@ POST /v4.0/db-instances/restore-from-obs #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

---- +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` +

+
-### DB 인스턴스 삭제 보호 설정 변경하기 +--- + +### DB 인스턴스 삭제 보호 설정 변경 ```http PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection @@ -1713,21 +1962,157 @@ PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMariaDB:DbInstance.Modify | DB 인스턴스 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Modify | DB 인스턴스 삭제 보호 설정 변경 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useDeletionProtection | Body | Boolean | O | 삭제 보호 여부 | + +
예시 +

+ +```json +{ + "useDeletionProtection": false +} +``` + +

+
#### 응답 이 API는 응답 본문을 반환하지 않습니다. +--- + +### DB 인스턴스 강제 재시작하기 + +```http +POST /v4.0/db-instances/{dbInstanceId}/force-restart +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.ForceRestart | DB 인스턴스 강제 재시작하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### 고가용성 정보 보기 + +```http +GET /v4.0/db-instances/{dbInstanceId}/high-availability +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Get | 고가용성 정보 보기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| useHighAvailability | Body | Boolean | 고가용성 사용 여부
- 기본값: `false` | +| haStatus | Body | Enum | 고가용성 상태
- CREATED: `생성됨`
- STABLE: `정상`
- PAUSING: `일시 중지 중`
- DISABLE: `정지`
- DISABLE_MASTER_IN_REPLICATION: `마스터 비정상 복제 감지로 인한 고가용성 중단`
- DISABLE_MHA_PROCESS: `고가용성 프로세스 중단`
- DISABLE_REPLICATION_STOP: `복제 중단으로 인한 고가용성 중단`
- DISABLE_REPLICATION_DELAY: `복제 지연으로 인한 고가용성 중단`
- FAILOVER_STARTED: `장애 조치 시작`
- FAILOVER_FAILED: `장애 조치 실패`
- FAILOVER_COMPLETED: `장애 조치 완료`
- DELETED: `삭제됨`
- PAUSED: `일시 중지`
- PAUSED_DUE_TO_TASK: `작업으로 인한 일시 중지`
- MASTER_FAILURE_DETECTION: `마스터 장애 감지` | +| pingInterval | Body | Number | Ping 간격(초) | +| pingType | Body | String | Ping 방식 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "useHighAvailability": false, + "haStatus": "CREATED", + "pingInterval": 1, + "pingType": "pingType-example" +} +``` + +

+
+ +--- + +### 고가용성 수정하기 + +```http +PUT /v4.0/db-instances/{dbInstanceId}/high-availability +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:HighAvailability.Modify | 고가용성 수정하기 | + +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +
예시 +

+ +```json +{ + "useHighAvailability": false, + "pingInterval": 1 +} +``` + +

+
+ +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | +
예시

@@ -1737,7 +2122,8 @@ PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -1746,58 +2132,33 @@ PUT /v4.0/db-instances/{dbInstanceId}/deletion-protection --- -### 고가용성 상태 - -| 상태 | 설명 | -|----------------------------------|---------------------------------| -| `CREATED` | 고가용성이 생성된 경우 | -| `STABLE` | 고가용성이 정상인 경우 | -| `PAUSING` | 고가용성이 일시 중지 중인 경우 | -| `PAUSED` | 고가용성이 일시 중지된 경우 | -| `PAUSED_DUE_TO_TASK` | 작업으로 인해 고가용성이 일시 중지된 경우 | -| `DISABLE_MASTER_IN_REPLICATION` | 마스터 비정상 복제 감지로 고가용성이 중단된 경우 | -| `DISABLE_MHA_PROCESS` | 고가용성 프로세스가 중단된 경우 | -| `DISABLE_REPLICATION_STOP` | 복제 중단으로 인해 고가용성이 중단된 경우 | -| `DISABLE_REPLICATION_DELAY` | 복제 지연으로 인해 고가용성이 중단된 경우 | -| `MASTER_FAILURE_DETECTION` | 마스터 장애가 감지된 경우 | -| `FAILOVER_STARTED` | 장애 조치가 시작된 경우 | -| `FAILOVER_FAILED` | 장애 조치가 실패한 경우 | -| `FAILOVER_COMPLETED` | 장애 조치가 완료된 경우 | -| `DELETED` | 고가용성이 삭제된 경우 | - ---- - -### 고가용성 정보 보기 +### 고가용성 일시 중지하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/high-availability +POST /v4.0/db-instances/{dbInstanceId}/high-availability/pause ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|------------| -| RDSforMariaDB:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:HighAvailability.Pause | 고가용성 일시 중지하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|---------|---------------------------------------------------------------------------------------------------------------------| -| useHighAvailability | Body | Boolean | 고가용성 사용 여부 | -| haStatus | Body | Enum | 고가용성 상태 | -| pingInterval | Body | Number | Ping 간격(초) | -| pingType | Body | Enum | Ping 타입
- `INSERT`
- `SELECT` | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |

예시 -

```json @@ -1807,47 +2168,58 @@ GET /v4.0/db-instances/{dbInstanceId}/high-availability "resultMessage": "SUCCESS", "isSuccessful": true }, - "useHighAvailability": true, - "haStatus": "STABLE", - "pingInterval": 3, - "pingType": "INSERT" + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-
--- -### 고가용성 수정하기 +### 고가용성 복구하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/high-availability +POST /v4.0/db-instances/{dbInstanceId}/high-availability/repair ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|-----------| -| RDSforMariaDB:HighAvailability.Modify | 고가용성 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:HighAvailability.Repair | 고가용성 복구하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|---------|----|------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| useHighAvailability | Body | Boolean | O | 고가용성 사용 여부 | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | -| pingType | Body | Enum | X | 고가용성 사용 시 Ping 타입
- `INSERT`
- `SELECT` | -| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 고가용성 사용 시 필수값 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- ### 고가용성 다시 시작하기 @@ -1858,142 +2230,190 @@ POST /v4.0/db-instances/{dbInstanceId}/high-availability/resume #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:HighAvailability.Resume | 고가용성 다시 시작하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### 고가용성 일시 중지하기 +
예시 +

-```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/pause +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|----------------------------------------------------|--------------| -| RDSforMariaDB:HighAvailability.Pause | 고가용성 일시 중지하기 | - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 고가용성 복구하기 +### 고가용성 분리하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/repair +POST /v4.0/db-instances/{dbInstanceId}/high-availability/split ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|-----------| -| RDSforMariaDB:HighAvailability.Repair | 고가용성 복구하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:HighAvailability.Split | 고가용성 분리하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 고가용성 분리하기 +### 로그 파일 목록 보기 ```http -POST /v4.0/db-instances/{dbInstanceId}/high-availability/split +GET /v4.0/db-instances/{dbInstanceId}/log-files ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|-----------| -| RDSforMariaDB:HighAvailability.Split | 고가용성 분리하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceLog.List | 로그 파일 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| logFiles | Body | Array | 로그 파일 목록 | +| logFiles.logFileName | Body | String | 로그 파일 이름 | +| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- ERROR
- BINLOG
- GENERAL
- SLOW_QUERY
- AUDIT
- BACKUP | +| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | +| logFiles.createdYmdt | Body | DateTime | 생성 일시 | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "logFiles": [ + { + "logFileName": "logFileName-example", + "logFileType": "ERROR", + "logFileSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00" + } + ] +} +``` + +

+
--- -### 데이터 스토리지 정보 보기 +### 로그 파일 내보내기 ```http -GET /v4.0/db-instances/{dbInstanceId}/storage-info +POST /v4.0/db-instances/{dbInstanceId}/log-files/export ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMariaDB:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceLog.Export | 로그 파일 내보내기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | | +| logFileNames | Body | Array | O | 로그 파일 이름 목록 | +| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 회원 또는 IAM 멤버 ID | +| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | + +
예시 +

+ +```json +{ + "logFileNames": [], + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|---------|--------------------------------------------------------------------------------------| -| storageType | Body | Enum | 데이터 스토리지 타입 | -| storageSize | Body | Number | 데이터 스토리지 크기(GB) | -| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- `DETACHED`: 부착되지 않음
- `ATTACHED`: 부착됨
- `DELETED`: 삭제됨 | -| storageAutoscale | Body | Object | 데이터 스토리지 자동 확장 객체 | -| storageAutoscale.useStorageAutoscale | Body | Boolean | 스토리지 자동 확장 여부 | -| storageAutoscale.threshold | Body | Number | 자동 확장 조건(%) | -| storageAutoscale.maxStorageSize | Body | Number | 자동 확장 최대 크기(GB) | -| storageAutoscale.cooldownTime | Body | Number | 자동 확장 쿨다운 시간(분) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2005,89 +2425,103 @@ GET /v4.0/db-instances/{dbInstanceId}/storage-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "storageType": "General SSD", - "storageSize": 20, - "storageStatus": "ATTACHED", - "storageAutoscale": { - "useStorageAutoscale": true, - "threshold": 80, - "maxStorageSize": 100, - "cooldownTime": 10 - } + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

- --- -### 데이터 스토리지 정보 수정하기 +### 로그 파일 내용 보기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/storage-info +GET /v4.0/db-instances/{dbInstanceId}/log-files/{logFileName} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMariaDB:DbInstance.Modify | DB 인스턴스 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstanceLog.Get | 로그 파일 내용 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------------------|------|---------|----|---------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최솟값: 현재값
- 최댓값: `2048` | -| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
고가용성을 사용 중인 DB 인스턴스에서만 사용 가능합니다.
- 기본값: `false` | -| storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | -| storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | -| storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | -| storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| logFileName | URL | UUID | O | 로그 파일 이름 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| content | Body | String | 로그 파일 내용 (최대 65533 bytes) | + +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "content": "content-example" +} +``` + +

+
--- -### 백업 정보 보기 +### DB 인스턴스 유지 관리 목록 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/backup-info +GET /v4.0/db-instances/{dbInstanceId}/maintenances ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMariaDB:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Maintenance.List | DB 인스턴스 유지 관리 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| type | Query | String | X | | +| statuses | Query | String | X | | +| category | Query | String | X | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|---------|----------------| -| backupPeriod | Body | Number | 백업 보관 기간(일) | -| ftwrlWaitTimeout | Body | Number | 쿼리 지연 대기 시간(초) | -| backupRetryCount | Body | Number | 백업 재시도 횟수 | -| replicationRegion | Body | Enum | 백업 복제 리전 | -| useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | 백업 시작 시각 | -| backupSchedules.backupWndDuration | Body | Enum | 백업 Duration | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 유지 관리 목록 갯수 | +| maintenances | Body | Array | 유지 관리 목록 | +| maintenances.maintenanceId | Body | UUID | 유지 관리 아이디 | +| maintenances.dbInstanceId | Body | UUID | DB 인스턴스 아이디 | +| maintenances.category | Body | Enum | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| maintenances.description | Body | String | 유지 관리 설명 | +| maintenances.type | Body | Enum | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| maintenances.payload | Body | Object | 유지 관리 타입에 따른 Payload | +| maintenances.required | Body | Boolean | 유지 관리 필수 여부 | +| maintenances.deadlineYmdt | Body | DateTime | 유지 관리 강제 적용 일시 | +| maintenances.status | Body | Enum | 유지 관리 상태
- PENDING: `대기`
- READY: `준비`
- RUNNING: `실행 중`
- COMPLETED: `완료`
- FAILED: `실패`
- EXCLUDED: `제외`
- DELETED: `삭제`
- UNKNOWN | +| maintenances.executionType | Body | Enum | 유지 관리 실행 타입
- SCHEDULED: `예약 실행 (유지 관리 기간 자동 실행)`
- MANUAL: `수동 실행 (즉시 실행)`
- FORCED: `강제 실행 (데드라인 초과 자동 실행)` | +| maintenances.addedYmdt | Body | DateTime | 유지 관리 스케줄 등록 일시 | +| maintenances.executionStartedYmdt | Body | DateTime | 유지 관리 시작 일시 | +| maintenances.executionCompletedYmdt | Body | DateTime | 유지 관리 종료 일시 |
예시

@@ -2099,15 +2533,23 @@ GET /v4.0/db-instances/{dbInstanceId}/backup-info "resultMessage": "SUCCESS", "isSuccessful": true }, - "backupPeriod": 1, - "ftwrlWaitTimeout": 1800, - "backupRetryCount": 0, - "replicationRegion": null, - "useBackupLock": false, - "backupSchedules": [ + "totalCounts": 1, + "maintenances": [ { - "backupWndBgnTime": "00:00:00", - "backupWndDuration": "ONE_HOUR_AND_HALF" + "maintenanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": { + }, + "required": false, + "deadlineYmdt": "2023-12-31T15:00:00+09:00", + "status": "PENDING", + "executionType": "SCHEDULED", + "addedYmdt": "2023-12-31T15:00:00+09:00", + "executionStartedYmdt": "2023-12-31T15:00:00+09:00", + "executionCompletedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -2116,47 +2558,41 @@ GET /v4.0/db-instances/{dbInstanceId}/backup-info

- --- -### 백업 정보 수정하기 +### DB 인스턴스 유지 관리 즉시 실행하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/backup-info +POST /v4.0/db-instances/{dbInstanceId}/maintenances/execute-now ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMariaDB:DbInstance.Modify | DB 인스턴스 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Maintenance.Execute | DB 인스턴스 유지 관리 즉시 실행하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------------------------|------|---------|----|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | -| ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | -| backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | -| useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | -| backupSchedules | Body | Array | X | 예정된 자동 백업 목록 | -| backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| configId | Body | String | O | 설정 아이디 | +| category | Body | Enum | O | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| description | Body | String | X | 유지 관리 설명 | +| type | Body | Enum | O | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| payload | Body | String | O | 유지 관리 타입에 따른 Payload |
예시

```json { - "backupPeriod": 5, - "useBackupLock": true, - "backupSchedules": [ - { - "backupWndBgnTime": "01:00:00", - "backupWndDuration": "TWO_HOURS" - } - ] + "configId": "configId-example", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": "payload-example" } ``` @@ -2165,137 +2601,134 @@ PUT /v4.0/db-instances/{dbInstanceId}/backup-info #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### 네트워크 정보 보기 +### DB 인스턴스 유지 관리 예약하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/network-info +POST /v4.0/db-instances/{dbInstanceId}/maintenances/schedule ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------------| -| RDSforMariaDB:DbInstance.Get | DB 인스턴스 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Maintenance.Update | DB 인스턴스 유지 관리 예약하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|--------|-----------------------------------------------------------------------------------------------------------------------------------------| -| availabilityZone | Body | Enum | DB 인스턴스를 생성할 가용성 영역 | -| subnet | Body | Object | 서브넷 객체 | -| subnet.subnetId | Body | UUID | 서브넷의 식별자 | -| subnet.subnetName | Body | UUID | 서브넷을 식별할 수 있는 이름 | -| subnet.subnetCidr | Body | UUID | 서브넷의 CIDR | -| endPoints | Body | Array | 접속 정보 목록 | -| endPoints.domain | Body | String | 도메인 | -| endPoints.ipAddress | Body | String | IP 주소 | -| endPoints.endPointType | Body | Enum | 접속 정보 타입
-`EXTERNAL`: 외부 접속 도메인
-`INTERNAL`: 내부 접속 도메인
-`PUBLIC`: (Deprecated) 외부 접속 도메인
-`PRIVATE`: (Deprecated) 내부 접속 도메인 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| configId | Body | String | O | 설정 아이디 | +| category | Body | Enum | O | 유지 관리 카테고리
- USER: `사용자 유지 관리 카테고리`
- PROVIDER: `Provider 유지 관리 카테고리`
- AUTO: `자동 유지 관리 카테고리` | +| description | Body | String | X | 유지 관리 설명 | +| type | Body | Enum | O | 유지 관리 타입
- UPDATE_DB_INSTANCE: `DB 인스턴스 수정(사양 변경, 포트 변경, 파라미터 그룹 변경)`
- UPGRADE_ENGINE_VERSION: `엔진 버전 업그레이드`
- APPLY_CHANGE_PARAMETER: `파라미터 그룹의 파라미터 변경`
- UPGRADE_OS: `운영체제 버전 업그레이드`
- PATCH_SECURITY: `보안 업데이트`
- MIGRATION: `하이퍼바이저 점검을 위한 마이그레이션`
- CLEANUP_STORAGE: `스토리지 정리` | +| payload | Body | String | O | 유지 관리 타입에 따른 Payload |
예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "availabilityZone": "kr-pub-a", - "subnet": { - "subnetId": "bd453789-34ae-416c-9f78-05b9e43a46be", - "subnetName": "Default Network", - "subnetCidr": "192.168.0.0/16" - }, - "endPoints": [ - { - "domain": "ea548a78-d85f-43b4-8ddf-c88d999b9905.internal.kr1.mariadb.rds.nhncloudservice.com", - "ipAddress": "192.168.0.2", - "endPointType": "INTERNAL" - } - ] + "configId": "configId-example", + "category": "USER", + "description": "description-example", + "type": "UPDATE_DB_INSTANCE", + "payload": "payload-example" } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- -### 네트워크 정보 수정하기 +### DB 인스턴스 유지 관리 삭제하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/network-info +DELETE /v4.0/db-instances/{dbInstanceId}/maintenances/{maintenanceId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|--------------| -| RDSforMariaDB:DbInstance.Modify | DB 인스턴스 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Maintenance.Delete | DB 인스턴스 유지 관리 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|---------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| maintenanceId | URL | UUID | O | 유지 관리 아이디 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### DB 사용자 목록 보기 +### 네트워크 정보 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/db-users +GET /v4.0/db-instances/{dbInstanceId}/network-info ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|---------------------| -| RDSforMariaDB:DbInstanceUser.List | DB 인스턴스 내 사용자 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Get | 네트워크 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|-----------------------------------------------------------------------------------------------------------------------------| -| dbUsers | Body | Array | DB 사용자 목록 | -| dbUsers.dbUserId | Body | UUID | DB 사용자의 식별자 | -| dbUsers.dbUserName | Body | String | DB 사용자 계정 이름 | -| dbUsers.host | Body | String | DB 사용자 계정의 호스트 이름 | -| dbUsers.authorityType | Body | Enum | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| dbUsers.dbUserStatus | Body | Enum | DB 사용자의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `UPDATING`: 수정 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbUsers.authenticationPlugin | Body | Enum | 인증 플러그인
- NATIVE: `mysql_native_password`
- ED25519: `auth_ed25519` | -| dbUsers.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbUsers.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| availabilityZone | Body | String | DB 인스턴스를 생성할 가용성 영역 | +| subnet | Body | Object | 서브넷 객체 | +| subnet.subnetId | Body | UUID | 서브넷의 식별자 | +| subnet.subnetName | Body | String | 서브넷을 식별할 수 있는 이름 | +| subnet.subnetCidr | Body | String | 서브넷의 CIDR | +| endPoints | Body | Array | 접속 정보 목록 | +| endPoints.domain | Body | String | 도메인 | +| endPoints.ipAddress | Body | String | IP 주소 | +| endPoints.endPointType | Body | String | 접속 정보 타입 |
예시

@@ -2307,15 +2740,17 @@ GET /v4.0/db-instances/{dbInstanceId}/db-users "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbUsers": [ + "availabilityZone": "kr-pub-a", + "subnet": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "subnetName": "subnetName-example", + "subnetCidr": "subnetCidr-example" + }, + "endPoints": [ { - "dbUserId": "4b3d530b-fd02-4d59-a620-83d019a67bbb", - "dbUserName": "db-user", - "host": "%", - "authorityType": "DDL", - "dbUserStatus": "STABLE", - "createdYmdt": "2023-03-17T14:02:29+09:00", - "updatedYmdt": "2023-03-17T14:02:31+09:00" + "domain": "domain-example", + "ipAddress": "ipAddress-example", + "endPointType": "endPointType-example" } ] } @@ -2326,39 +2761,31 @@ GET /v4.0/db-instances/{dbInstanceId}/db-users --- -### DB 사용자 생성하기 +### 네트워크 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/db-users +PUT /v4.0/db-instances/{dbInstanceId}/network-info ``` - #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMariaDB:DbInstanceUser.Create | DB 인스턴스 내 사용자 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Modify | 네트워크 정보 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserName | Body | String | O | DB 사용자 계정 이름
- 최소 길이: `1`
- 최대 길이: `32` | -| dbPassword | Body | String | O | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | -| host | Body | String | O | DB 사용자 계정의 호스트명
- 예시: `1.1.1.%` | -| authorityType | Body | Enum | O | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- 기본값: `NATIVE`(미지원 시 `ED25519`)
- NATIVE: `mysql_native_password`
- ED25519: `auth_ed25519` | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| usePublicAccess | Body | Boolean | O | 외부 접속 가능 여부 |

예시

```json { - "dbUserName": "db-user", - "dbPassword": "password", - "host": "1.1.1.%", - "authorityType": "CRUD" + "usePublicAccess": false } ``` @@ -2367,112 +2794,222 @@ POST /v4.0/db-instances/{dbInstanceId}/db-users #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 사용자 수정하기 +### DB 인스턴스 승격하기 ```http -PUT /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +POST /v4.0/db-instances/{dbInstanceId}/promote ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMariaDB:DbInstanceUser.Modify | DB 인스턴스 내 사용자 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Promote | DB 인스턴스 승격하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | -| dbPassword | Body | String | X | DB 사용자 계정 암호
- 최소 길이: `4`
- 최대 길이: `256` | -| authorityType | Body | Enum | X | DB 사용자 권한 타입
- `READ`: SELECT 쿼리 수행 가능한 권한
- `CRUD`: DML 쿼리 수행 가능한 권한
- `DDL`: DDL 쿼리 수행 가능한 권한
| -| authenticationPlugin | Body | Enum | X | 인증 플러그인
- NATIVE: `mysql_native_password`
- ED25519: `auth_ed25519` | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

```json { - "authorityType": "DDL" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- -### DB 사용자 삭제하기 +### DB 인스턴스 재구축하기 ```http -DELETE /v4.0/db-instances/{dbInstanceId}/db-users/{dbUserId} +POST /v4.0/db-instances/{dbInstanceId}/rebuild ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------------| -| RDSforMariaDB:DbInstanceUser.Delete | DB 인스턴스 내 사용자 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Rebuild | DB 인스턴스 재구축하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbUserId | URL | UUID | O | DB 사용자의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +
예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### DB 스키마 목록 보기 +### DB 인스턴스 복제하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/db-schemas +POST /v4.0/db-instances/{dbInstanceId}/replicate ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|---------------------| -| RDSforMariaDB:DbInstanceSchema.List | DB 인스턴스 내 스키마 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Replicate | DB 인스턴스 복제하기 | + +#### 공통 요청 -#### 요청 +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자 | +| dbPort | Body | Number | X | DB 포트
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| network | Body | Object | O | 네트워크 정보 객체 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부 | +| network.availabilityZone | Body | Enum | O | DB 인스턴스를 생성할 가용성 영역 | +| storage | Body | Object | X | 스토리지 정보 객체 | +| storage.storageType | Body | Enum | X | 데이터 스토리지 타입 | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | X | 백업 정보 객체 | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부 | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록 | +| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | -이 API는 요청 본문을 요구하지 않습니다. +
예시 +

+ +```json +{ + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, + "network": { + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "backup": { + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 0, + "replicationRegion": "KR1", + "useBackupLock": false, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + } +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|------------------------------------------------------------------------------------------------------| -| dbSchemas | Body | Array | DB 스키마 목록 | -| dbSchemas.dbSchemaId | Body | UUID | DB 스키마의 식별자 | -| dbSchemas.dbSchemaName | Body | String | DB 스키마 이름 | -| dbSchemas.dbSchemaStatus | Body | Enum | DB 스키마의 현재 상태
- `STABLE`: 생성됨
- `CREATING`: 생성 중
- `DELETING`: 삭제 중
- `DELETED`: 삭제됨 | -| dbSchemas.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2484,14 +3021,7 @@ GET /v4.0/db-instances/{dbInstanceId}/db-schemas "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSchemas": [ - { - "dbSchemaId": "7c9a94b8-86c1-435d-8af2-82a5e9d53fd4", - "dbSchemaName": "schema", - "dbSchemaStatus": "STABLE", - "createdYmdt": "2023-03-20T13:37:45+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2500,93 +3030,111 @@ GET /v4.0/db-instances/{dbInstanceId}/db-schemas --- -### DB 스키마 생성하기 +### DB 인스턴스 재시작하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/db-schemas +POST /v4.0/db-instances/{dbInstanceId}/restart ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------------|--------------------| -| RDSforMariaDB:DbInstanceSchema.Create | DB 인스턴스 내 스키마 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Restart | DB 인스턴스 재시작하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|--------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaName | Body | String | O | DB 스키마 이름 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| useOnlineFailover | Body | Boolean | X | 장애 조치를 이용한 재시작 여부
- 기본값: `false` | +| executeBackup | Body | Boolean | X | 현재 시점 백업 진행 여부
- 기본값: `false` | +| waitReplicationDelay | Body | Boolean | X | 복제 지연 해소 대기
- 기본값: `false` | +| useReadOnly | Body | Boolean | X | 쓰기 부하 차단
- 기본값: `false` | -### DB 스키마 삭제하기 +

예시 +

-```http -DELETE /v4.0/db-instances/{dbInstanceId}/db-schemas/{dbSchemaId} +```json +{ + "useOnlineFailover": false, + "executeBackup": false, + "waitReplicationDelay": false, + "useReadOnly": false +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|-----------------------------------------------------|--------------------| -| RDSforMariaDB:DbInstanceSchema.Delete | DB 인스턴스 내 스키마 삭제하기 | +

+
-#### 요청 +#### 응답 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|--------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| dbSchemaId | URL | UUID | O | DB 스키마의 식별자 | +
예시 +

-#### 응답 +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- -### 로그 파일 목록 보기 +### DB 인스턴스 복원 정보 조회 ```http -GET /v4.0/db-instances/{dbInstanceId}/log-files +GET /v4.0/db-instances/{dbInstanceId}/restoration-info ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|-----------------------| -| RDSforMariaDB:DbInstanceLog.List | DB 인스턴스 내 로그 파일 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Get | DB 인스턴스 복원 정보 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|-------|----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileTypes | Query | Array | X | 로그 파일 타입 종류 목록
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| logFiles | Body | Array | 로그 파일 목록 | -| logFiles.logFileName | Body | String | 로그 파일명 | -| logFiles.logFileType | Body | Enum | 로그 파일 타입 종류
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | -| logFiles.logFileSize | Body | Number | 로그 파일 크기(Byte) | -| logFiles.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | - +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| oldestRestorableYmdt | Body | DateTime | 가장 오래된 복원 가능한 시각 | +| latestRestorableYmdt | Body | DateTime | 가장 최신의 복원 가능한 시각 | +| restorableBackups | Body | Array | 복원 가능한 백업 목록 | +| restorableBackups.backup | Body | Object | 백업 정보 객체 | +| restorableBackups.backup.backupId | Body | UUID | 백업의 식별자 | +| restorableBackups.backup.backupName | Body | String | 백업 이름 | +| restorableBackups.backup.backupStatus | Body | Enum | 백업 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| restorableBackups.backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| restorableBackups.backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | +| restorableBackups.backup.dbVersion | Body | Enum | DB 엔진 유형 | +| restorableBackups.backup.backupType | Body | Enum | 백업 유형
- AUTO
- MANUAL | +| restorableBackups.backup.backupSize | Body | Number | 백업 크기 | +| restorableBackups.backup.useBackupLock | Body | Boolean | 테이블 잠금 사용 여부 | +| restorableBackups.backup.failoverCount | Body | Number | 장애 조치 횟수 | +| restorableBackups.backup.binLogFileName | Body | String | 바이너리 로그 파일 이름 | +| restorableBackups.backup.binLogPosition | Body | Object | 바이너리 로그 파일 위치 | +| restorableBackups.backup.createdYmdt | Body | DateTime | 백업 생성 일시 | +| restorableBackups.backup.updatedYmdt | Body | DateTime | 백업 갱신 일시 | +| restorableBackups.restorableBinLogs | Body | Array | 해당 백업을 이용하여 복원 가능한 바이너리 로그 이름 목록 |
예시

@@ -2598,12 +3146,28 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files "resultMessage": "SUCCESS", "isSuccessful": true }, - "logFiles": [ + "oldestRestorableYmdt": "2023-12-31T15:00:00+09:00", + "latestRestorableYmdt": "2023-12-31T15:00:00+09:00", + "restorableBackups": [ { - "logFileName": "xtra_full.log-20230317", - "logFileType": "BACKUP", - "logFileSize": 4096, - "createdYmdt": "2023-03-17T14:02:29+09:00" + "backup": { + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "dbVersion": "MYSQL_V8036", + "backupType": "AUTO", + "backupSize": 1, + "useBackupLock": false, + "failoverCount": 1, + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + }, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + }, + "restorableBinLogs": [] } ] } @@ -2614,33 +3178,32 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files --- -### 로그 파일 내용 보기 +### 복원될 마지막 쿼리 조회 ```http -GET /v4.0/db-instances/{dbInstanceId}/log-files/{logFileName} +GET /v4.0/db-instances/{dbInstanceId}/restoration-info/last-query ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------------|-----------------------| -| RDSforMariaDB:DbInstanceLog.Get | DB 인스턴스 내 로그 파일 내용 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Get | 복원될 마지막 쿼리 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|--------|----|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileName | URL | String | O | 로그 파일명 | -| logFileType | Query | Enum | O | 로그 파일 타입 종류
- `ERROR`: error.log
- `BINLOG`: mysql-bin
- `GENERAL`: general.log
- `SLOW_QUERY`: slow_query.log
- `AUDIT`: server_audit.log
- `BACKUP`: xtra_full.log | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------|------|--------|---------------------------| -| content | Body | String | 로그 파일 내용(최대 65533 Bytes) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| executedYmdt | Body | DateTime | 쿼리 수행 일시 | +| lastQuery | Body | String | 마지막 수행 쿼리 |

예시

@@ -2652,7 +3215,8 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files/{logFileName} "resultMessage": "SUCCESS", "isSuccessful": true }, - "content": "..." + "executedYmdt": "2023-12-31T15:00:00+09:00", + "lastQuery": "lastQuery-example" } ``` @@ -2661,41 +3225,145 @@ GET /v4.0/db-instances/{dbInstanceId}/log-files/{logFileName} --- -### 로그 파일 내보내기 +### DB 인스턴스 복원 ```http -POST /v4.0/db-instances/{dbInstanceId}/log-files/export +POST /v4.0/db-instances/{dbInstanceId}/restore ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|----------------------| -| RDSforMariaDB:DbInstanceLog.Export | DB 인스턴스 내 로그 파일 내보내기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Restore | DB 인스턴스 복원 | -#### 요청 +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자. 미입력 시 원본 인스턴스의 사양이 적용됩니다. | +| dbPort | Body | Number | X | DB 포트 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 최솟값: `1`
- 최댓값: `600` | +| storage | Body | Object | X | 스토리지 정보 객체. 미입력 시 원본 인스턴스의 스토리지 설정이 적용됩니다. | +| storage.storageType | Body | Enum | X | 스토리지 타입. 미입력 시 원본 인스턴스의 스토리지 타입이 적용됩니다. | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB). 미입력 시 원본 인스턴스의 스토리지 크기가 적용됩니다.
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| network | Body | Object | X | 네트워크 정보 객체. 미입력 시 원본 인스턴스의 네트워크 설정이 적용됩니다. | +| network.subnetId | Body | UUID | X | 서브넷의 식별자. 미입력 시 원본 인스턴스 값 사용 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역. 미입력 시 랜덤 선택 | +| backup | Body | Object | X | 백업 정보 객체. 미입력 시 원본 인스턴스의 백업 설정이 적용됩니다. | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일). 미입력 시 원본 인스턴스의 백업 보관 기간이 적용됩니다.
- 최솟값: `0`
- 최댓값: `730` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 최솟값: `0`
- 최댓값: `21600` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 최솟값: `0`
- 최댓값: `10` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록. 미입력 시 원본 인스턴스의 백업 스케쥴이 적용됩니다. | +| backup.backupSchedules.backupWndBgnTime | Body | String | X | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | X | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | +| restore | Body | Object | O | 복원 정보 객체 | +| restore.restoreType | Body | Enum | O | 복원 타입
- TIMESTAMP: `복원 가능한 시간 이내의 시간을 이용한 시점 복원`
- BINLOG: `복원 가능한 바이너리 로그 위치를 이용한 시점 복원`
- BACKUP: `기존에 생성한 백업을 이용한 스냅숏 복원` | +| restore.binLog.binLogFileName | Body | String | X | 복원에 사용할 바이너리 로그 이름 | +| restore.binLog.binLogPosition | Body | Object | X | 복원에 사용할 바이너리 로그 위치 | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자. 미입력 시 원본 인스턴스의 파라미터 그룹이 적용됩니다. | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록. 미입력 시 원본 인스턴스의 보안 그룹이 적용됩니다. | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` | + +#### Timestamp를 이용한 시점 복원 시 요청(restoreType이 `TIMESTAMP`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.restoreYmdt | Body | DateTime | X | DB 인스턴스 복원 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | + +복원 정보 조회로 조회한 가장 최신의 복원 가능한 시간 이전에 대해서만 복원이 가능합니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|--------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| logFileNames | Body | Array | O | 로그 파일명 목록
- 최소 크기: `1` | -| tenantId | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 로그 파일이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 로그 파일의 경로 | +#### 바이너리 로그를 이용한 시점 복원 시 요청(restoreType이 `BINLOG`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 | +| restore.binLog | Body | Object | X | 복원에 사용할 바이너리 로그 정보 객체 | + +바이너리 로그를 이용한 시점 복원 시 기준 백업의 바이너리 로그 파일 및 위치를 기준으로 그 이후에 기록된 로그에 대해 복원이 가능합니다. + +#### 백업을 이용한 복원 시 요청(restoreType이 `BACKUP`인 경우) + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| restore.backupId | Body | UUID | X | 복원에 사용할 백업의 식별자 |

예시

```json { - "logFileNames": ["xtra_full.log-20230317"], - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "logs/backup" + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "useHighAvailability": false, + "pingInterval": 3, + "storage": { + "storageType": "General SSD", + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } + }, + "network": { + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, + "availabilityZone": "kr-pub-a" + }, + "backup": { + "backupPeriod": 0, + "ftwrlWaitTimeout": 1800, + "backupRetryCount": 0, + "replicationRegion": "KR1", + "useBackupLock": true, + "backupSchedules": [ + { + "backupWndBgnTime": "backupWndBgnTime-example", + "backupWndDuration": "HALF_AN_HOUR" + } + ] + }, + "restore": { + "restoreType": "TIMESTAMP", + "binLog": { + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + } + } + }, + "useDefaultNotification": false, + "useSlowQueryAnalysis": true, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useDeletionProtection": false } ``` @@ -2704,41 +3372,54 @@ POST /v4.0/db-instances/{dbInstanceId}/log-files/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- -### BinLog 목록 보기 +### DB 인스턴스 시작하기 ```http -GET /v4.0/db-instances/{dbInstanceId}/binlogs +POST /v4.0/db-instances/{dbInstanceId}/start ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|---------------| -| RDSforMariaDB:DbInstanceBinLog.List | BinLog 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Start | DB 인스턴스 시작하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|---------|----|---------------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| deletable | Query | Boolean | X | 삭제 가능한 BinLog만 조회할지 여부
- `true`: 마지막 BinLog 제외
- `false`: 전체
- 기본값: `false` | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------|------|----------|-----------------------------------| -| binLogs | Body | Array | BinLog 파일 목록 | -| binLogs.binLogFileName | Body | String | BinLog 파일명 | -| binLogs.binLogFileSize | Body | Number | BinLog 파일 크기(Byte) | -| binLogs.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2750,13 +3431,7 @@ GET /v4.0/db-instances/{dbInstanceId}/binlogs "resultMessage": "SUCCESS", "isSuccessful": true }, - "binLogs": [ - { - "binLogFileName": "mysql-bin.000001", - "binLogFileSize": 1073741824, - "createdYmdt": "2023-03-17T14:02:29+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2765,40 +3440,31 @@ GET /v4.0/db-instances/{dbInstanceId}/binlogs --- -### BinLog 삭제 +### DB 인스턴스 정지하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/binlogs/purge +POST /v4.0/db-instances/{dbInstanceId}/stop ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|------------| -| RDSforMariaDB:DbInstanceBinLog.Purge | BinLog 삭제 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Stop | DB 인스턴스 정지하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| lastBinLogFileName | Body | String | O | 삭제할 마지막 BinLog 파일명(해당 파일 직전까지 삭제됩니다) | - -

예시 -

- -```json -{ - "lastBinLogFileName": "mysql-bin.000010" -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -2809,7 +3475,8 @@ POST /v4.0/db-instances/{dbInstanceId}/binlogs/purge "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -2818,35 +3485,38 @@ POST /v4.0/db-instances/{dbInstanceId}/binlogs/purge --- -### 인증서 파일 목록 보기 +### 스토리지 정보 보기 ```http -GET /v4.0/db-instances/{dbInstanceId}/certificates +GET /v4.0/db-instances/{dbInstanceId}/storage-info ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------------|---------------| -| RDSforMariaDB:DbInstanceCertificate.List | 인증서 파일 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Get | 스토리지 정보 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-----|------|----|---------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|----------|------------------------------------------------------------------------------| -| certificates | Body | Array | 인증서 파일 목록 | -| certificates.fileName | Body | String | 인증서 파일명 | -| certificates.certificateType | Body | Enum | 인증서 타입
- `CA_FILE`: CA 인증서
- `CERT_FILE`: 인증서
- `KEY_FILE`: 비밀 키 | -| certificates.fileSize | Body | Number | 인증서 파일 크기(Byte) | -| certificates.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| storageType | Body | String | 데이터 스토리지 타입 | +| storageSize | Body | Number | 데이터 스토리지 크기(GB) | +| storageStatus | Body | Enum | 데이터 스토리지의 현재 상태
- DELETED: `삭제됨`
- PENDING_DELETION: `삭제 유예됨`
- DELETION_RESERVED: `삭제 예약됨 (스냅샷 정리 대기)`
- DETACHED: `해제됨`
- ATTACHED: `할당됨` | +| storageAutoscale | Body | Object | 데이터 스토리지 자동 확장 객체 | +| storageAutoscale.useStorageAutoscale | Body | Boolean | 스토리지 자동 확장 여부 | +| storageAutoscale.threshold | Body | Number | 자동 확장 조건(%) | +| storageAutoscale.maxStorageSize | Body | Number | 자동 확장 최대 크기(GB) | +| storageAutoscale.cooldownTime | Body | Number | 자동 확장 쿨다운 시간(분) |

예시

@@ -2858,14 +3528,15 @@ GET /v4.0/db-instances/{dbInstanceId}/certificates "resultMessage": "SUCCESS", "isSuccessful": true }, - "certificates": [ - { - "fileName": "ca.pem", - "certificateType": "CA_FILE", - "fileSize": 2048, - "createdYmdt": "2023-03-17T14:02:29+09:00" - } - ] + "storageType": "General SSD", + "storageSize": 1, + "storageStatus": "DELETED", + "storageAutoscale": { + "useStorageAutoscale": false, + "threshold": 1, + "maxStorageSize": 1, + "cooldownTime": 1 + } } ``` @@ -2874,41 +3545,44 @@ GET /v4.0/db-instances/{dbInstanceId}/certificates --- -### 인증서 파일 내보내기 +### 스토리지 정보 수정하기 ```http -POST /v4.0/db-instances/{dbInstanceId}/certificates/upload +PUT /v4.0/db-instances/{dbInstanceId}/storage-info ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------------|-------------| -| RDSforMariaDB:DbInstanceCertificate.Export | 인증서 파일 내보내기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbInstance.Modify | 스토리지 정보 수정하기 | -#### 요청 +#### 공통 요청 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | +| storageSize | Body | Number | O | 데이터 스토리지 크기(GB)
- 최댓값: `2048` | +| storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | +| storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부 | + +#### 스토리지 자동 확장 사용 시 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|--------|----|------------------------------------------------------------------------------| -| dbInstanceId | URL | UUID | O | DB 인스턴스의 식별자 | -| certificateTypes | Body | Array | O | 업로드할 인증서 타입
- `CA_FILE`: CA 인증서
- `CERT_FILE`: 인증서
- `KEY_FILE`: 비밀 키 | -| tenantId | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 인증서 파일이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 인증서 파일의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` |

예시

```json { - "certificateTypes": ["CA_FILE", "CERT_FILE", "KEY_FILE"], - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "certificates/" + "storageSize": 1, + "storageAutoscale": { + "useStorageAutoscale": false + } } ``` @@ -2917,10 +3591,27 @@ POST /v4.0/db-instances/{dbInstanceId}/certificates/upload #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
+ --- ## 백업 @@ -2935,47 +3626,38 @@ POST /v4.0/db-instances/{dbInstanceId}/certificates/upload | `DELETED` | 백업이 삭제된 경우 | | `ERROR` | 오류가 발생한 경우 | -### 백업 상세 보기 +### 백업 목록 조회 ```http -GET /v4.0/backups/{backupId} +GET /v4.0/backups ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------|----------| -| RDSforMariaDB:Backup.Get | 백업 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:Backup.List | 백업 목록 조회 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------|-----|------|----|---------| -| backupId | URL | UUID | O | 백업의 식별자 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------|------|----------|-----------------| -| backup | Body | Object | 백업 상세 정보 | -| backup.backupId | Body | UUID | 백업의 식별자 | -| backup.regionCode | Body | Enum | 리전 코드 | -| backup.backupName | Body | String | 백업을 식별할 수 있는 이름 | -| backup.backupStatus | Body | Enum | 백업의 현재 상태 | -| backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | -| backup.dbVersion | Body | Enum | DB 엔진 버전 | -| backup.backupType | Body | Enum | 백업 유형 | -| backup.backupMethodType | Body | Enum | 백업 방식 | -| backup.backupFileType | Body | Enum | 백업 파일 유형 | -| backup.backupSize | Body | Number | 백업의 크기(Byte) | -| backup.isReplicable | Body | Boolean | 복제 가능 여부 | -| backup.binLogFileName | Body | String | 바이너리 로그 파일명 | -| backup.binLogPosition | Body | Number | 바이너리 로그 위치 | -| backup.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| backup.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 백업 목록 수 | +| backups | Body | Array | 백업 목록 | +| backups.backupId | Body | UUID | 백업의 식별자 | +| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | +| backups.backupStatus | Body | Enum | 백업의 현재 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| backups.dbVersion | Body | Enum | DB 엔진 유형 | +| backups.utilVersion | Body | String | 유틸리티 버전 | +| backups.backupType | Body | Enum | 백업 유형
- AUTO
- MANUAL | +| backups.backupSize | Body | Number | 백업의 크기(Byte) | +| backups.createdYmdt | Body | DateTime | 생성 일시 | +| backups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -2987,24 +3669,21 @@ GET /v4.0/backups/{backupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "backup": { - "backupId": "0017f136-3e01-4530-94aa-20661afe6632", - "regionCode": "KR1", - "backupName": "backup", - "backupStatus": "COMPLETED", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd", - "dbInstanceName": "db-instance", - "dbVersion": "MARIADB_V10330", - "backupType": "AUTO", - "backupMethodType": "FULL", - "backupFileType": "XTRA_BACKUP", - "backupSize": 4996786, - "isReplicable": true, - "binLogFileName": "mysql-bin.000001", - "binLogPosition": 154, - "createdYmdt": "2023-02-21T00:35:00+09:00", - "updatedYmdt": "2023-02-22T00:35:32+09:00" - } + "totalCounts": 1, + "backups": [ + { + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbVersion": "MYSQL_V8036", + "utilVersion": "utilVersion-example", + "backupType": "AUTO", + "backupSize": 1, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } + ] } ``` @@ -3013,45 +3692,47 @@ GET /v4.0/backups/{backupId} --- -### 백업 목록 조회 +### 백업 생성하기 ```http -GET /v4.0/backups +POST /v4.0/backups ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| -| RDSforMariaDB:Backup.List | 백업 목록 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:Backup.Create | 백업 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupName | Body | String | O | 백업을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| baseBackupId | Body | UUID | X | 원본 백업의 식별자 | +| dbInstanceId | Body | UUID | X | DB 인스턴스의 식별자 | +| backupMethodType | Body | Enum | O | 백업 방식 타입
- FULL: `전체 백업`
- INCREMENTAL: `증분 백업`
- SNAPSHOT: `스냅숏 백업` | + +

예시 +

-| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | X | 조회할 목록의 페이지
- 기본값: 1
- 최솟값: `1` | -| size | Query | Number | X | 조회할 목록의 페이지 크기
- 기본값: 20 | -| backupType | Query | Enum | X | 백업 유형
- `AUTO`: 자동
- `MANUAL`: 수동
- 기본값: 전체 | -| dbInstanceId | Query | UUID | X | 원본 DB 인스턴스의 식별자 | -| dbVersion | Query | Enum | X | DB 엔진 유형 | +```json +{ + "backupName": "backupName", + "baseBackupId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "backupMethodType": "FULL" +} +``` + +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------|------|----------|-----------------------------------| -| totalCounts | Body | Number | 전체 백업 목록 수 | -| backups | Body | Array | 백업 목록 | -| backups.backupId | Body | UUID | 백업의 식별자 | -| backups.backupName | Body | String | 백업을 식별할 수 있는 이름 | -| backups.backupStatus | Body | Enum | 백업의 현재 상태 | -| backups.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | -| backups.dbVersion | Body | Enum | DB 엔진 유형 | -| backups.backupType | Body | Enum | 백업 유형 | -| backups.backupSize | Body | Number | 백업의 크기(Byte) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |
예시

@@ -3063,20 +3744,7 @@ GET /v4.0/backups "resultMessage": "SUCCESS", "isSuccessful": true }, - "totalCounts": 1, - "backups": [ - { - "backupId": "0017f136-3e01-4530-94aa-20661afe6632", - "backupName": "backup", - "backupStatus": "COMPLETED", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd", - "dbVersion": "MARIADB_V10330", - "backupType": "AUTO", - "backupSize": 4996786, - "createdYmdt": "2023-02-21T00:35:00+09:00", - "updatedYmdt": "2023-02-22T00:35:32+09:00" - } - ] + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3085,96 +3753,130 @@ GET /v4.0/backups --- -### 백업 생성하기 +### 백업 삭제하기 ```http -POST /v4.0/backups +DELETE /v4.0/backups/{backupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|---------| -| RDSforMariaDB:Backup.Create | 백업 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:Backup.Delete | 백업 삭제하기 | -#### 공통 요청 +#### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|------|--------|----|--------------------------------------------------------------------------------------| -| backupName | Body | String | O | 백업을 식별할 수 있는 이름 | -| backupMethodType | Body | Enum | O | 백업 방식 타입 종류
- `FULL`: 전체 백업
- `INCREMENTAL`: 증분 백업
- `SNAPSHOT`: 스냅숏 백업 | +이 API는 요청 본문을 요구하지 않습니다. -#### 전체 백업(backupMethodType이 `FULL`인 경우) +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|------|----|--------------| -| dbInstanceId | Body | UUID | O | DB 인스턴스의 식별자 | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 요청한 작업의 식별자 |

예시

```json { - "backupName": "example-backup-name", - "backupMethodType": "FULL", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ```

-#### 증분 백업(backupMethodType이 `INCREMENTAL`인 경우) +--- -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|------|----|------------| -| baseBackupId | Body | UUID | O | 기준 백업의 식별자 | +### 백업 단건 조회 +```http +GET /v4.0/backups/{backupId} +``` -
예시 -

+#### 필요 권한 -```json -{ - "backupName": "example-backup-name", - "backupMethodType": "INCREMENTAL", - "baseBackupId": "3ae7914f-9b42-4729-b125-87417b72cf36" -} -``` +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:Backup.Get | 백업 단건 조회 | -

-
+#### 요청 +이 API는 요청 본문을 요구하지 않습니다. -#### 스냅숏 백업(backupMethodType이 `SNAPSHOT`인 경우) +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|------|------|----|--------------| -| dbInstanceId | Body | UUID | O | DB 인스턴스의 식별자 | +#### 응답 +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| backup | Body | Object | 백업 상세 정보 | +| backup.backupId | Body | UUID | 백업의 식별자 | +| backup.regionCode | Body | Enum | 리전 코드
- KR1: `한국(판교)` | +| backup.backupName | Body | String | 백업을 식별할 수 있는 이름 | +| backup.backupStatus | Body | Enum | 백업의 현재 상태
- BACKING_UP: `백업 중 (스피너)`
- VERIFYING: `검증 중 (스피너)`
- COMPLETED: `사용 가능 (녹색 아이콘)`
- DELETING: `삭제 중 (스피너)`
- DELETED: `삭제 됨 (회색 아이콘)`
- ERROR: `에러 (적색 아이콘)` | +| backup.dbInstanceId | Body | UUID | 원본 DB 인스턴스의 식별자 | +| backup.dbInstanceName | Body | String | 원본 DB 인스턴스의 이름 | +| backup.dbVersion | Body | Enum | DB 엔진 버전 | +| backup.utilVersion | Body | String | 유틸리티 버전 | +| backup.backupType | Body | Enum | 백업 유형 (AUTO, MANUAL)
- AUTO
- MANUAL | +| backup.backupMethodType | Body | Enum | 백업 방식 (FULL, SNAPSHOT, INCREMENTAL)
- FULL
- INCREMENTAL
- SNAPSHOT | +| backup.backupFileType | Body | Enum | 백업 파일 유형
- XBSTREAM
- TAR_ZSTD
- TAR_LZ4
- TAR_GZIP
- SNAPSHOT | +| backup.backupSize | Body | Number | 백업의 크기(Byte) | +| backup.isReplicable | Body | Boolean | 복제 가능 여부 | +| backup.binLogFileName | Body | String | 바이너리 로그 파일명 | +| backup.binLogPosition | Body | Object | 바이너리 로그 위치 | +| backup.createdYmdt | Body | DateTime | 생성 일시 | +| backup.updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "backupName": "example-backup-name", - "backupMethodType": "SNAPSHOT", - "dbInstanceId": "142e6ccc-3bfb-4e1e-84f7-38861284fafd" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "backup": { + "backupId": "550e8400-e29b-41d4-a716-446655440000", + "regionCode": "KR1", + "backupName": "backupName-example", + "backupStatus": "BACKING_UP", + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example", + "dbVersion": "MYSQL_V8036", + "utilVersion": "utilVersion-example", + "backupType": "AUTO", + "backupMethodType": "FULL", + "backupFileType": "XBSTREAM", + "backupSize": 1, + "isReplicable": false, + "binLogFileName": "binLogFileName-example", + "binLogPosition": { + }, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" + } } ```

- -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - --- ### 백업 내보내기 @@ -3185,31 +3887,31 @@ POST /v4.0/backups/{backupId}/export #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|---------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:Backup.Export | 백업 내보내기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------|------|--------|----|-----------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID | -| username | Body | String | O | NHN Cloud 계정 또는 IAM 계정 ID | -| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | -| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | -| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| tenantId | Body | String | O | 백업이 저장될 오브젝트 스토리지의 테넌트 ID
- 최소 길이: `32`
- 최대 길이: `32` | +| username | Body | String | O | NHN Cloud 계정 혹은 IAM 회원 ID | +| password | Body | String | O | 백업이 저장될 오브젝트 스토리지의 API 비밀번호 | +| targetContainer | Body | String | O | 백업이 저장될 오브젝트 스토리지의 컨테이너 | +| objectPath | Body | String | O | 컨테이너에 저장될 백업의 경로 |
예시

```json { - "tenantId": "399631c404744dbbb18ce4fa2dc71a5a", - "username": "gildong.hong@nhn.com", - "password": "password", - "targetContainer": "container", - "objectPath": "backups/backup_file" + "tenantId": "tenantId-example", + "username": "username-example", + "password": "password-example", + "targetContainer": "targetContainer-example", + "objectPath": "objectPath-example" } ``` @@ -3218,12 +3920,26 @@ POST /v4.0/backups/{backupId}/export #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | -> [주의] -> 수동 백업의 경우 백업이 수행된 DB 인스턴스가 존재하지 않으면, 백업을 오브젝트 스토리지로 내보낼 수 없습니다. +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -3235,73 +3951,98 @@ POST /v4.0/backups/{backupId}/restore #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|---------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:Backup.Restore | 백업 복원하기 | -#### 요청 +#### 공통 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------------------------------------------|------|---------|----|---------------------------------------------------------------------| -| backupId | URL | UUID | O | 백업의 식별자 | -| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름 | -| dbInstanceCandidateName | Body | String | X | DB 인스턴스를 식별할 수 있는 예비 마스터 이름(고가용성 사용 시 필수 값) | -| description | Body | String | X | DB 인스턴스에 대한 추가 정보 | -| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbPort | Body | Integer | X | DB 포트
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `3306`
- 최댓값: `43306` | -| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 ||network|Body|Object|O|네트워크 정보 객체| -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | -| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | -| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | -| pingType | Body | Enum | X | 고가용성 사용 시 Ping 타입
- 기본값: `INSERT`
- `INSERT`
- `SELECT` | -| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | -| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | -| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | -| network | Body | Object | X | 네트워크 정보 객체 | -| network.subnetId | Body | UUID | X | 서브넷의 식별자
- 기본값: 원본 DB 인스턴스 값 | -| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | -| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역
- 예시: `kr-pub-a`
- 기본값: 랜덤 선택 | -| storage | Body | Object | X | 데이터 스토리지 정보 객체 | -| storage.storageType | Body | Enum | X | 데이터 스토리지 타입
- 예시: `General SSD`
- 기본값: 원본 DB 인스턴스 값 | -| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `20`
- 최댓값: `2048` | -| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체 | -| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: 원본 DB 인스턴스 값 | -| storage.storageAutoscale.threshold | Body | Number | X | 자동 확장 조건(%)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `50`
- 최댓값: `95` | -| storage.storageAutoscale.maxStorageSize | Body | Number | X | 자동 확장 최대 크기(GB)
- 기본값: 원본 DB 인스턴스 값
- 최댓값: `4096` | -| storage.storageAutoscale.cooldownTime | Body | Number | X | 자동 확장 쿨다운 시간(분)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `10`
- 최댓값: `1440` | -| backup | Body | Object | X | 백업 정보 객체 | -| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일)
- 기본값: 원본 DB 인스턴스 값
- 최솟값: `0`
- 최댓값: `730` | -| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초)
- 기본값: `1800`
- 최솟값: `0`
- 최댓값: `21600` | -| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수
- 기본값: `0`
- 최솟값: `0`
- 최댓값: `10` | -| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부
- 기본값: `true` | -| backup.backupSchedules | Body | Array | X | 예정된 자동 백업 목록
- 기본값: 원본 DB 인스턴스 값 | -| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각
- 예시: `00:00:00` | -| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
백업 시작 시각부터 Duration 안에 자동 백업이 실행됩니다.
- `HALF_AN_HOUR`: 30분
- `ONE_HOUR`: 1시간
- `ONE_HOUR_AND_HALF`: 1시간 30분
- `TWO_HOURS`: 2시간
- `TWO_HOURS_AND_HALF`: 2시간 30분
- `THREE_HOURS`: 3시간 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| backupId | URL | UUID | O | | +| dbInstanceName | Body | String | O | DB 인스턴스를 식별할 수 있는 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 인스턴스에 대한 추가 정보
- 최대 길이: `100` | +| dbFlavorId | Body | UUID | X | DB 인스턴스 사양의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| dbPort | Body | Number | X | DB 포트. 미지정 시 원본 인스턴스 값 사용
- 최솟값: 3306, 최댓값: 43306 | +| parameterGroupId | Body | UUID | X | 파라미터 그룹의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| dbSecurityGroupIds | Body | Array | X | DB 보안 그룹의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | +| useHighAvailability | Body | Boolean | X | 고가용성 사용 여부
- 기본값: `false` | +| pingInterval | Body | Number | X | 고가용성 사용 시 Ping 간격(초)
- 기본값: `3`
- 최솟값: `1`
- 최댓값: `600` | +| useDefaultNotification | Body | Boolean | X | 기본 알림 사용 여부
- 기본값: `false` | +| useDeletionProtection | Body | Boolean | X | 삭제 보호 여부
- 기본값: `false` | +| useSlowQueryAnalysis | Body | Boolean | X | Slow query 분석 여부
- 기본값: `true` | +| network | Body | Object | X | 네트워크 정보 객체. 미지정 시 원본 인스턴스 값 사용 | +| network.subnetId | Body | UUID | X | 서브넷의 식별자. 미지정 시 원본 인스턴스 값 사용 | +| network.usePublicAccess | Body | Boolean | X | 외부 접속 가능 여부
- 기본값: `false` | +| network.availabilityZone | Body | Enum | X | DB 인스턴스를 생성할 가용성 영역. 미지정 시 랜덤 선택 | +| storage | Body | Object | X | 스토리지 정보 객체. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageType | Body | Enum | X | 스토리지 타입. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageSize | Body | Number | X | 데이터 스토리지 크기(GB). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `20` | +| storage.storageAutoscale | Body | Object | X | 데이터 스토리지 자동 확장 객체. 미지정 시 원본 인스턴스 값 사용 | +| storage.storageAutoscale.useStorageAutoscale | Body | Boolean | X | 스토리지 자동 확장 여부
- 기본값: `false` | +| backup | Body | Object | X | 백업 정보 객체. 미지정 시 원본 인스턴스 백업 설정 사용 | +| backup.backupPeriod | Body | Number | X | 백업 보관 기간(일). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `730` | +| backup.backupRetryCount | Body | Number | X | 백업 재시도 횟수. 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `10` | +| backup.ftwrlWaitTimeout | Body | Number | X | 쿼리 지연 대기 시간(초). 미지정 시 원본 인스턴스 값 사용
- 최솟값: `0`
- 최댓값: `21600` | +| backup.replicationRegion | Body | Enum | X | 백업 복제 리전
- KR1: `한국(판교)` | +| backup.useBackupLock | Body | Boolean | X | 테이블 잠금 사용 여부. 미지정 시 원본 인스턴스 값 사용 | +| backup.backupSchedules | Body | Array | X | 백업 스케쥴 목록. 미지정 시 원본 인스턴스 값 사용 | +| backup.backupSchedules.backupWndBgnTime | Body | String | O | 백업 시작 시각 | +| backup.backupSchedules.backupWndDuration | Body | Enum | O | 백업 Duration
- HALF_AN_HOUR: `30분`
- ONE_HOUR: `1시간`
- ONE_HOUR_AND_HALF: `1시간 30분`
- TWO_HOURS: `2시간`
- TWO_HOURS_AND_HALF: `2시간 30분`
- THREE_HOURS: `3시간` | + +#### 고가용성 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbInstanceCandidateName | Body | String | O | DB 인스턴스를 식별할 수 있는 예비 마스터 이름
- 최소 길이: `1`
- 최대 길이: `100` | + +#### 스토리지 자동 확장 사용 시 + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| storage.storageAutoscale.threshold | Body | Number | O | 자동 확장 조건(%)
- 최솟값: `50`
- 최댓값: `95` | +| storage.storageAutoscale.maxStorageSize | Body | Number | O | 자동 확장 최대 크기(GB)
- 최댓값: `4096` | +| storage.storageAutoscale.cooldownTime | Body | Number | O | 자동 확장 쿨다운 시간(분)
- 최솟값: `10`
- 최댓값: `1440` |
예시

```json - { - "dbInstanceName": "db-instance-restore", - "dbFlavorId": "50be6d9c-02d6-4594-a2d4-12010eb65ec0", - "dbPort": 10000, - "parameterGroupId": "132d383c-38e3-468a-a826-5e9a8fff15d0", + "dbInstanceName": "dbInstanceName", + "description": "description-example", + "dbFlavorId": "550e8400-e29b-41d4-a716-446655440000", + "dbPort": 1, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupIds": [], + "userGroupIds": [], + "useHighAvailability": false, + "pingInterval": 3, + "useDefaultNotification": false, + "useDeletionProtection": false, + "useSlowQueryAnalysis": true, "network": { - "subnetId": "e721a9dd-dad0-4cf0-a53b-dd654ebfc683", + "subnetId": "550e8400-e29b-41d4-a716-446655440000", + "usePublicAccess": false, "availabilityZone": "kr-pub-a" }, "storage": { "storageType": "General SSD", - "storageSize": 20 + "storageSize": 20, + "storageAutoscale": { + "useStorageAutoscale": false + } }, "backup": { - "backupPeriod": 1, + "backupPeriod": 0, + "backupRetryCount": 0, + "ftwrlWaitTimeout": 0, + "replicationRegion": "KR1", + "useBackupLock": false, "backupSchedules": [ { - "backupWndBgnTime": "00:00:00", + "backupWndBgnTime": "backupWndBgnTime-example", "backupWndDuration": "HALF_AN_HOUR" } ] @@ -3314,37 +4055,26 @@ POST /v4.0/backups/{backupId}/restore #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| | jobId | Body | UUID | 요청한 작업의 식별자 | ---- - -### 백업 삭제하기 +

예시 +

-```http -DELETE /v4.0/backups/{backupId} +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|-------------------------------------------|---------| -| RDSforMariaDB:Backup.Delete | 백업 삭제하기 | - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|----------|-----|------|----|---------| -| backupId | URL | UUID | O | 백업의 식별자 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -3367,30 +4097,26 @@ GET /v4.0/db-security-groups #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|----------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:DbSecurityGroup.List | DB 보안 그룹 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | X | 조회할 목록의 페이지
- 기본값: 1
- 최솟값: `1` | -| size | Query | Number | X | 조회할 목록의 페이지 크기
- 기본값: 20 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-----------------------------------| -| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | -| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 DB 보안 그룹 목록 수 | +| dbSecurityGroups | Body | Array | DB 보안 그룹 목록 | +| dbSecurityGroups.dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroups.dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| dbSecurityGroups.description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| dbSecurityGroups.progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| dbSecurityGroups.createdYmdt | Body | DateTime | 생성 일시 | +| dbSecurityGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3402,14 +4128,15 @@ GET /v4.0/db-security-groups "resultMessage": "SUCCESS", "isSuccessful": true }, + "totalCounts": 1, "dbSecurityGroups": [ { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", "progressStatus": "NONE", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2022-02-19T19:18:13+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3420,48 +4147,65 @@ GET /v4.0/db-security-groups --- -### DB 보안 그룹 상세 보기 +### DB 보안 그룹 생성하기 ```http -GET /v4.0/db-security-groups/{dbSecurityGroupId} +POST /v4.0/db-security-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|----------------| -| RDSforMariaDB:DbSecurityGroup.Get | DB 보안 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbSecurityGroup.Create | DB 보안 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` | +| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | +| rules.direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| rules.etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| rules.port | Body | Object | O | 포트 객체 | +| rules.port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| rules.cidr | Body | String | O | CIDR | +| rules.description | Body | String | X | 보안 그룹 규칙에 대한 추가 정보 | + +

예시 +

+ +```json +{ + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example", + "rules": [ + { + "direction": "INGRESS", + "etherType": "IPV4", + "port": { + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 + }, + "cidr": "cidr-example", + "description": "description-example" + } + ] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|----------|--------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | DB 보안 그룹에 대한 추가 정보 | -| progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태 | -| rules | Body | Array | DB 보안 그룹 규칙 목록 | -| rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | -| rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.port | Body | Object | 포트 객체 | -| rules.port.portType | Body | Enum | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다.
- `PORT`: 지정된 포트값으로 설정됩니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | 최소 포트 범위 | -| rules.port.maxPort | Body | Number | 최대 포트 범위 | -| rules.cidr | Body | String | 허용할 트래픽의 원격 소스 | -| rules.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| rules.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 |
예시

@@ -3473,30 +4217,7 @@ GET /v4.0/db-security-groups/{dbSecurityGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "dbSecurityGroup": { - "dbSecurityGroupId": "fe4f2aee-afbb-4c19-a5e9-eb2eab394708", - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", - "progressStatus": "NONE", - "rules": [ - { - "ruleId": "17c88ef6-95f1-4678-84f9-fee1b22e250d", - "description": "description", - "direction": "INGRESS", - "etherType": "IPV4", - "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 - }, - "cidr": "0.0.0.0/0", - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } - ], - "createdYmdt": "2023-02-19T19:18:13+09:00", - "updatedYmdt": "2023-02-19T19:18:13+09:00" - } + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3505,68 +4226,113 @@ GET /v4.0/db-security-groups/{dbSecurityGroupId} --- -### DB 보안 그룹 생성하기 +### DB 보안 그룹 삭제하기 ```http -POST /v4.0/db-security-groups +DELETE /v4.0/db-security-groups/{dbSecurityGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| -| RDSforMariaDB:DbSecurityGroup.Create | DB 보안 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbSecurityGroup.Delete | DB 보안 그룹 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + +### DB 보안 그룹 상세 보기 + +```http +GET /v4.0/db-security-groups/{dbSecurityGroupId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbSecurityGroup.Get | DB 보안 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupName | Body | String | O | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | -| rules | Body | Array | O | DB 보안 그룹 규칙 목록 | -| rules.description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| rules.direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| rules.etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| rules.cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | -| rules.port | Body | Object | O | 포트 객체 | -| rules.port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 필요하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| rules.port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| rules.port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | +| dbSecurityGroupName | Body | String | DB 보안 그룹을 식별할 수 있는 이름 | +| description | Body | String | DB 보안 그룹에 대한 추가 정보 | +| progressStatus | Body | Enum | DB 보안 그룹의 현재 진행 상태
- NONE: `없음`
- CREATING_RULE: `규칙 생성중`
- UPDATING_RULE: `규칙 수정중`
- DELETING_RULE: `규칙 삭제중`
- APPLYING_DEFAULT_RULE: `기본 규칙 적용중` | +| rules | Body | Array | DB 보안 그룹 규칙 목록 | +| rules.ruleId | Body | UUID | DB 보안 그룹 규칙의 식별자 | +| rules.description | Body | String | DB 보안 그룹 규칙에 대한 추가 정보 | +| rules.direction | Body | Enum | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| rules.etherType | Body | Enum | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| rules.port | Body | Object | 포트 객체 | +| rules.port.portType | Body | Enum | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| rules.port.minPort | Body | Number | 최소 포트 범위 | +| rules.port.maxPort | Body | Number | 최대 포트 범위 | +| rules.cidr | Body | String | CIDR | +| rules.createdYmdt | Body | DateTime | 생성 일시 | +| rules.updatedYmdt | Body | DateTime | 수정 일시 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |

예시

```json { - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description", + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "dbSecurityGroupId": "550e8400-e29b-41d4-a716-446655440000", + "dbSecurityGroupName": "dbSecurityGroupName-example", + "description": "description-example", + "progressStatus": "NONE", "rules": [ { + "ruleId": "550e8400-e29b-41d4-a716-446655440000", + "description": "description-example", "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "PORT_RANGE", - "minPort": 10000, - "maxPort": 10005 + "portType": "ALL", + "minPort": 1, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } - ] + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|------|---------------| -| dbSecurityGroupId | Body | UUID | DB 보안 그룹의 식별자 | - --- ### DB 보안 그룹 수정하기 @@ -3577,25 +4343,25 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId} #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:DbSecurityGroup.Modify | DB 보안 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|------|--------|----|-----------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | DB 보안 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| dbSecurityGroupName | Body | String | X | DB 보안 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | DB 보안 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "dbSecurityGroupName": "dbSecurityGroup", - "description": "description" + "dbSecurityGroupName": "dbSecurityGroupName", + "description": "description-example" } ``` @@ -3606,48 +4372,34 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- - --- -### DB 보안 그룹 삭제하기 +### DB 보안 그룹 규칙 삭제하기 ```http -DELETE /v4.0/db-security-groups/{dbSecurityGroupId} +DELETE /v4.0/db-security-groups/{dbSecurityGroupId}/rules ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|---------------| -| RDSforMariaDB:DbSecurityGroup.Delete | DB 보안 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:DbSecurityGroupRule.Delete | DB 보안 그룹 규칙 삭제하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-----|------|----|---------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleIds | Query | String | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 |
예시

@@ -3658,7 +4410,8 @@ DELETE /v4.0/db-security-groups/{dbSecurityGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -3675,26 +4428,23 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:DbSecurityGroupRule.Create | DB 보안 그룹 규칙 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 필요하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |

예시

@@ -3704,11 +4454,12 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "PORT", - "minPort": 10000, - "maxPort": 10000 + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -3717,9 +4468,26 @@ POST /v4.0/db-security-groups/{dbSecurityGroupId}/rules #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | + +

예시 +

+ +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} +``` + +

+
--- @@ -3731,27 +4499,24 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:DbSecurityGroupRule.Modify | DB 보안 그룹 규칙 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|------|--------|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleId | URL | UUID | O | DB 보안 그룹 규칙의 식별자 | -| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보 | -| direction | Body | Enum | O | 통신 방향
- `INGRESS`: 수신
- `EGRESS`: 송신 | -| etherType | Body | Enum | O | Ether 타입
- `IPV4`: IPv4
- `IPV6`: IPv6 | -| port | Body | Object | O | 포트 객체 | -| port.portType | Body | Enum | O | 포트 타입
- `DB_PORT`: 각 DB 인스턴스 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 필요하지 않습니다.
- `PORT`: 지정된 포트값으로 설정됩니다. `minPort`값과 `maxPort`값이 같아야 합니다.
- `PORT_RANGE`: 지정된 포트 범위로 설정됩니다. | -| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: 1 | -| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: 65535 | -| cidr | Body | String | O | 허용할 트래픽의 원격 소스
- 예시: `1.1.1.1/32` | - -> [주의] -> DB 포트는 송신 방향으로 설정할 수 없습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| dbSecurityGroupId | URL | UUID | O | | +| ruleId | URL | UUID | O | | +| direction | Body | Enum | O | 통신 방향
- INGRESS: `수신`
- EGRESS: `송신` | +| etherType | Body | Enum | O | Ether 타입
- IPV4: `IPv4 형식`
- IPV6: `IPv6 형식` | +| port | Body | Object | O | 포트 객체 | +| port.portType | Body | Enum | O | 포트 타입
- ALL: `포트 범위 전체 (사용자 콘솔에서는 사용하지 않음)`
- PORT: `특정 포트`
- DB_PORT: `DB 수신 포트`
- PORT_RANGE: `포트 범위` | +| port.minPort | Body | Number | X | 최소 포트 범위
- 최솟값: `3306` | +| port.maxPort | Body | Number | X | 최대 포트 범위
- 최댓값: `65535` | +| cidr | Body | String | O | CIDR | +| description | Body | String | X | DB 보안 그룹 규칙에 대한 추가 정보
- 최대 길이: `200` |
예시

@@ -3761,9 +4526,12 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} "direction": "INGRESS", "etherType": "IPV4", "port": { - "portType": "DB_PORT" + "portType": "ALL", + "minPort": 3306, + "maxPort": 1 }, - "cidr": "0.0.0.0/0" + "cidr": "cidr-example", + "description": "description-example" } ``` @@ -3772,38 +4540,26 @@ PUT /v4.0/db-security-groups/{dbSecurityGroupId}/rules/{ruleId} #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | - ---- +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| jobId | Body | UUID | 작업의 식별자 | -### DB 보안 그룹 규칙 삭제하기 +

예시 +

-```http -DELETE /v4.0/db-security-groups/{dbSecurityGroupId}/rules +```json +{ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "jobId": "550e8400-e29b-41d4-a716-446655440000" +} ``` -#### 필요 권한 - -| 권한명 | 설명 | -|--------------------------------------------------------|------------------| -| RDSforMariaDB:DbSecurityGroupRule.Create | DB 보안 그룹 규칙 삭제하기 | - -#### 요청 - -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|-------|----|---------------------| -| dbSecurityGroupId | URL | UUID | O | DB 보안 그룹의 식별자 | -| ruleIds | Query | Array | O | DB 보안 그룹 규칙의 식별자 목록 | - -#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|-------|------|------|-------------| -| jobId | Body | UUID | 요청한 작업의 식별자 | +

+
--- @@ -3817,30 +4573,28 @@ GET /v4.0/parameter-groups #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:ParameterGroup.List | 파라미터 그룹 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------|-------|------|----|----------| -| dbVersion | Query | Enum | X | DB 엔진 유형 | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------------------|------|----------|-------------------------------------------------------------------| -| parameterGroups | Body | Array | 파라미터 그룹 목록 | -| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameterGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 파라미터 그룹 수 | +| parameterGroups | Body | Array | 파라미터 그룹 목록 | +| parameterGroups.parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroups.parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| parameterGroups.description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| parameterGroups.dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroups.parameterGroupType | Body | Enum | 파라미터 그룹 유형
- USER
- ADMIN
- DEFAULT
- CLUSTER_USER | +| parameterGroups.parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameterGroups.createdYmdt | Body | DateTime | 생성 일시 | +| parameterGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -3852,15 +4606,17 @@ GET /v4.0/parameter-groups "resultMessage": "SUCCESS", "isSuccessful": true }, + "totalCounts": 1, "parameterGroups": [ { - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MARIADB_V10330", + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "parameterGroupType": "USER", "parameterGroupStatus": "STABLE", - "createdYmdt": "2023-02-31T15:28:17+09:00", - "updatedYmdt": "2023-02-31T15:28:17+09:00" + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -3869,50 +4625,47 @@ GET /v4.0/parameter-groups

- --- -### 파라미터 그룹 상세 보기 +### 파라미터 그룹 생성하기 ```http -GET /v4.0/parameter-groups/{parameterGroupId} +POST /v4.0/parameter-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------|---------------| -| RDSforMariaDB:ParameterGroup.Get | 파라미터 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:ParameterGroup.Create | 파라미터 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` | +| dbVersion | Body | Enum | O | DB 엔진 유형 | + +
예시 +

+ +```json +{ + "parameterGroupName": "parameterGroupName", + "description": "description-example", + "dbVersion": "MYSQL_V8036" +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------------------|------|----------|--------------------------------------------------------------------------------------------------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | DB 엔진 유형 | -| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- `STABLE`: 적용 완료
- `NEED_TO_APPLY`: 적용 필요 | -| parameters | Body | Array | 파라미터 목록 | -| parameters.parameterId | Body | UUID | 파라미터 식별자 | -| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- `CLIENT`: client
- `MYSQL`: mysql
- `MYSQLD`: mysqld | -| parameters.parameterName | Body | String | 파라미터 이름 | -| parameters.fileParameterName | Body | String | 파라미터 파일명 | -| parameters.value | Body | String | 현재 설정된 값 | -| parameters.defaultValue | Body | String | 기본값 | -| parameters.allowedValue | Body | String | 허용된 값 | -| parameters.updateType | Body | Enum | 수정 타입
- `VARIABLE`: 언제든 수정 가능
- `CONSTANT`: 수정 불가능
- `INIT_VARIABLE`: DB 인스턴스 생성 시에만 수정 가능 | -| parameters.applyType | Body | Enum | 적용 타입
- `SESSION`: 세션 적용
- `FILE`: 설정 파일 적용(재시작 필요)
- `BOTH`: 전체(재시작 필요) | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |
예시

@@ -3924,115 +4677,119 @@ GET /v4.0/parameter-groups/{parameterGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "parameterGroupId": "404e8a89-ca4d-4fca-96c2-1518754d50b7", - "parameterGroupName": "parameter-group", - "description": null, - "dbVersion": "MARIADB_V10330", - "parameterGroupStatus": "STABLE", - "parameters": [ - { - "parameterId": "fa040b5e-f29f-46de-8f0d-bba4cb82887a", - "parameterFileGroup": "client", - "parameterName": "socket", - "fileParameterName": "socket", - "value": "/home/tcrds/db/mysql/tmp/mysql.sock", - "defaultValue": "/home/tcrds/db/mysql/tmp/mysql.sock", - "allowedValue": "", - "updateType": "CONSTANT", - "applyType": "BOTH" - } - ], - "createdYmdt": "2023-03-13T11:02:28+09:00", - "updatedYmdt": "2023-03-13T11:02:28+09:00" + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ```

- --- -### 파라미터 그룹 생성하기 +### 파라미터 그룹 삭제하기 ```http -POST /v4.0/parameter-groups +DELETE /v4.0/parameter-groups/{parameterGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMariaDB:ParameterGroup.Create | 파라미터 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:ParameterGroup.Delete | 파라미터 그룹 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | -| dbVersion | Body | Enum | O | DB 엔진 유형 | - -
예시 -

- -```json -{ - "parameterGroupName": "parameter-group", - "dbVersion": "MARIADB_V10330" -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 파라미터 그룹 복사하기 +### 파라미터 그룹 상세 보기 ```http -POST /v4.0/parameter-groups/{parameterGroupId}/copy +GET /v4.0/parameter-groups/{parameterGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------------|--------------| -| RDSforMariaDB:ParameterGroup.Copy | 파라미터 그룹 복사하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:ParameterGroup.Get | 파라미터 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | + +#### 응답 + +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | +| parameterGroupName | Body | String | 파라미터 그룹을 식별할 수 있는 이름 | +| description | Body | String | 파라미터 그룹에 대한 추가 정보 | +| dbVersion | Body | Enum | DB 엔진 유형 | +| parameterGroupStatus | Body | Enum | 파라미터 그룹의 현재 상태
- STABLE: `적용 완료`
- NEED_TO_APPLY: `적용 필요`
- DELETED: `삭제됨` | +| parameters | Body | Array | 파라미터 목록 | +| parameters.parameterId | Body | UUID | 파라미터의 식별자 | +| parameters.parameterFileGroup | Body | Enum | 파라미터 파일 그룹 타입
- CLIENT
- MYSQL
- MYSQLD | +| parameters.parameterName | Body | String | 파라미터 이름 | +| parameters.fileParameterName | Body | String | 파라미터 파일 이름 | +| parameters.value | Body | String | 현재 설정된 값 | +| parameters.defaultValue | Body | String | 기본값 | +| parameters.allowedValue | Body | String | 허용된 값 | +| parameters.updateType | Body | Enum | 수정 타입
- VARIABLE
- CONSTANT
- INIT_VARIABLE | +| parameters.applyType | Body | Enum | 적용 타입
- BOTH
- SESSION
- FILE | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

```json { - "parameterGroupName": "parameter-group-copy", - "description": "copy" + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000", + "parameterGroupName": "parameterGroupName-example", + "description": "description-example", + "dbVersion": "MYSQL_V8036", + "parameterGroupStatus": "STABLE", + "parameters": [ + { + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "parameterFileGroup": "CLIENT", + "parameterName": "parameterName-example", + "fileParameterName": "fileParameterName-example", + "value": "value-example", + "defaultValue": "defaultValue-example", + "allowedValue": "allowedValue-example", + "updateType": "VARIABLE", + "applyType": "BOTH" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ```

-#### 응답 - -| 이름 | 종류 | 형식 | 설명 | -|------------------|------|------|--------------| -| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 | - --- ### 파라미터 그룹 수정하기 @@ -4043,24 +4800,25 @@ PUT /v4.0/parameter-groups/{parameterGroupId} #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:ParameterGroup.Modify | 파라미터 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------|------|--------|----|----------------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름 | -| description | Body | String | X | 파라미터 그룹에 대한 추가 정보 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | X | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "parameterGroupName": "parameter-group" + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -4071,56 +4829,35 @@ PUT /v4.0/parameter-groups/{parameterGroupId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- -### 파라미터 수정하기 +### 파라미터 그룹 복사하기 ```http -PUT /v4.0/parameter-groups/{parameterGroupId}/parameters +POST /v4.0/parameter-groups/{parameterGroupId}/copy ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMariaDB:ParameterGroup.Modify | 파라미터 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:ParameterGroup.Copy | 파라미터 그룹 복사하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------------------------|------|--------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | -| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | -| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | -| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| parameterGroupName | Body | String | O | 파라미터 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| description | Body | String | X | 파라미터 그룹에 대한 추가 정보
- 최대 길이: `100` |
예시

```json { - "modifiedParameters": [ - { - "parameterId": "3abac558-7274-44e1-9f4a-f100f53f67ba", - "value": "0" - } - ] + "parameterGroupName": "parameterGroupName", + "description": "description-example" } ``` @@ -4129,7 +4866,9 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| parameterGroupId | Body | UUID | 파라미터 그룹의 식별자 |

예시

@@ -4140,7 +4879,8 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "parameterGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4149,86 +4889,74 @@ PUT /v4.0/parameter-groups/{parameterGroupId}/parameters --- -### 파라미터 그룹 재설정하기 +### 파라미터 수정하기 ```http -PUT /v4.0/parameter-groups/{parameterGroupId}/reset +PUT /v4.0/parameter-groups/{parameterGroupId}/parameters ``` #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------------|---------------| -| RDSforMariaDB:ParameterGroup.Reset | 파라미터 그룹 재설정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:ParameterGroup.Modify | 파라미터 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | +| modifiedParameters | Body | Array | O | 변경할 파라미터 목록 | +| modifiedParameters.parameterId | Body | UUID | O | 파라미터의 식별자 | +| modifiedParameters.value | Body | String | O | 변경할 파라미터 값 |

예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } + "modifiedParameters": [ + { + "parameterId": "550e8400-e29b-41d4-a716-446655440000", + "value": "value-example" + } + ] } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- -### 파라미터 그룹 삭제하기 +### 파라미터 그룹 재설정하기 ```http -DELETE /v4.0/parameter-groups/{parameterGroupId} +PUT /v4.0/parameter-groups/{parameterGroupId}/reset ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|--------------| -| RDSforMariaDB:ParameterGroup.Delete | 파라미터 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:ParameterGroup.Reset | 파라미터 그룹 재설정하기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------|-----|------|----|--------------| -| parameterGroupId | URL | UUID | O | 파라미터 그룹의 식별자 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| parameterGroupId | URL | UUID | O | | #### 응답 이 API는 응답 본문을 반환하지 않습니다. -
예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- ## 사용자 그룹 @@ -4241,8 +4969,8 @@ GET /v4.0/user-groups #### 필요 권한 -| 권한명 | 설명 | -|--------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:UserGroup.List | 사용자 그룹 목록 보기 | #### 요청 @@ -4251,13 +4979,14 @@ GET /v4.0/user-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|-----------------------------------| -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| userGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 사용자 그룹 목록 수 | +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroups.createdYmdt | Body | DateTime | 생성 일시 | +| userGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4269,12 +4998,13 @@ GET /v4.0/user-groups "resultMessage": "SUCCESS", "isSuccessful": true }, + "totalCounts": 1, "userGroups": [ { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -4285,37 +5015,45 @@ GET /v4.0/user-groups --- -### 사용자 그룹 상세 보기 +### 사용자 그룹 생성하기 ```http -GET /v4.0/user-groups/{userGroupId} +POST /v4.0/user-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|-------------------------------------------|--------------| -| RDSforMariaDB:UserGroup.Get | 사용자 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:UserGroup.Create | 사용자 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록 | +| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` | + +

예시 +

+ +```json +{ + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAll": false +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------------|------|----------|-----------------------------------------------------------------------------------------------------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
`ENTIRE`: 프로젝트 멤버 전체를 포함하는 사용자 그룹
`INDIVIDUAL_MEMBER`: 특정 프로젝트 멤버를 포함하는 사용자 그룹 | -| members | Body | Array | 프로젝트 멤버 목록 | -| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 |
예시

@@ -4327,16 +5065,7 @@ GET /v4.0/user-groups/{userGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team", - "userGroupTypeCode": "INDIVIDUAL_MEMBER", - "members": [ - { - "memberId": "1321e759-2ef3-4b85-9921-b13e918b24b5" - } - ], - "createdYmdt": "2023-02-23T10:07:54+09:00", - "updatedYmdt": "2023-02-26T01:15:50+09:00" + "userGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4345,96 +5074,63 @@ GET /v4.0/user-groups/{userGroupId} --- -### 사용자 그룹 생성하기 +### 사용자 그룹 삭제하기 ```http -POST /v4.0/user-groups +DELETE /v4.0/user-groups/{userGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMariaDB:UserGroup.Create | 사용자 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:UserGroup.Delete | 사용자 그룹 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|-----------------------------------------------------------| -| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | O | 프로젝트 멤버의 식별자 목록
`selectAll`이 true인 경우 해당 필드 값은 무시됩니다 | -| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 여부
true인 경우 해당 그룹은 전체 멤버를 대상으로 설정됩니다 | - -

예시 -

- -```json -{ - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5" - ] -} -``` - -```json -{ - "userGroupName": "dev-team", - "selectAll": true -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-------------|------|------|-------------| -| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 사용자 그룹 수정하기 +### 사용자 그룹 상세 보기 ```http -PUT /v4.0/user-groups/{userGroupId} +GET /v4.0/user-groups/{userGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMariaDB:UserGroup.Modify | 사용자 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:UserGroup.Get | 사용자 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------|------|---------|----|----------------------------------------------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | -| userGroupName | Body | String | X | 사용자 그룹을 식별할 수 있는 이름 | -| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | -| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 여부
true인 경우 해당 그룹은 전체 멤버를 대상으로 설정됩니다 | - -
예시 -

- -```json -{ - "userGroupName": "dev-team", - "memberIds": [ - "1321e759-2ef3-4b85-9921-b13e918b24b5", - "f9064b09-2b15-442e-a4b0-3a5a2754555e" - ] -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| userGroupTypeCode | Body | Enum | 사용자 그룹 종류
- ENTIRE
- INDIVIDUAL_MEMBER | +| members | Body | Array | 프로젝트 멤버 목록 | +| members.memberId | Body | UUID | 프로젝트 멤버의 식별자 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4445,7 +5141,17 @@ PUT /v4.0/user-groups/{userGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example", + "userGroupTypeCode": "ENTIRE", + "members": [ + { + "memberId": "550e8400-e29b-41d4-a716-446655440000" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -4454,44 +5160,45 @@ PUT /v4.0/user-groups/{userGroupId} --- -### 사용자 그룹 삭제하기 +### 사용자 그룹 수정하기 ```http -DELETE /v4.0/user-groups/{userGroupId} +PUT /v4.0/user-groups/{userGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------|-------------| -| RDSforMariaDB:UserGroup.Delete | 사용자 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:UserGroup.Modify | 사용자 그룹 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------|-----|------|----|-------------| -| userGroupId | URL | UUID | O | 사용자 그룹의 식별자 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| userGroupId | URL | UUID | O | | +| userGroupName | Body | String | O | 사용자 그룹을 식별할 수 있는 이름 | +| memberIds | Body | Array | X | 프로젝트 멤버의 식별자 목록 | +| selectAll | Body | Boolean | X | 프로젝트 멤버 전체 포함 여부
- 기본값: `false` |

예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } + "userGroupName": "userGroupName-example", + "memberIds": [], + "selectAll": false } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- ## 알림 그룹 @@ -4504,8 +5211,8 @@ GET /v4.0/notification-groups #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------|-------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:NotificationGroup.List | 알림 그룹 목록 보기 | #### 요청 @@ -4514,16 +5221,16 @@ GET /v4.0/notification-groups #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------------------|------|----------|-----------------------------------| -| notificationGroups | Body | Array | 알림 그룹 목록 | -| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | -| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | -| notificationGroups.createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroups | Body | Array | 알림 그룹 목록 | +| notificationGroups.notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroups.notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notificationGroups.notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notificationGroups.notifySms | Body | Boolean | SMS 알림 여부 | +| notificationGroups.isEnabled | Body | Boolean | 활성화 여부 | +| notificationGroups.createdYmdt | Body | DateTime | 생성 일시 | +| notificationGroups.updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4537,13 +5244,13 @@ GET /v4.0/notification-groups }, "notificationGroups": [ { - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, "notifySms": false, - "isEnabled": true, - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" + "isEnabled": false, + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -4554,43 +5261,51 @@ GET /v4.0/notification-groups --- -### 알림 그룹 상세 보기 +### 알림 그룹 생성하기 ```http -GET /v4.0/notification-groups/{notificationGroupId} +POST /v4.0/notification-groups ``` #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------|-------------| -| RDSforMariaDB:NotificationGroup.Get | 알림 그룹 상세 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:NotificationGroup.Create | 알림 그룹 생성하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름
- 최소 길이: `1`
- 최대 길이: `100` | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | +| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | + +

예시 +

+ +```json +{ + "notificationGroupName": "notificationGroupName", + "notifyEmail": true, + "notifySms": true, + "isEnabled": true, + "dbInstanceIds": [], + "userGroupIds": [] +} +``` -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | +

+
#### 응답 -| 이름 | 종류 | 형식 | 설명 | -|----------------------------|------|----------|-----------------------------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | 이메일 알림 여부 | -| notifySms | Body | Boolean | SMS 알림 여부 | -| isEnabled | Body | Boolean | 활성화 여부 | -| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | -| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | -| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | -| userGroups | Body | Array | 사용자 그룹 목록 | -| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | -| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | -| createdYmdt | Body | DateTime | 생성 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| updatedYmdt | Body | DateTime | 수정 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 |
예시

@@ -4602,25 +5317,7 @@ GET /v4.0/notification-groups/{notificationGroupId} "resultMessage": "SUCCESS", "isSuccessful": true }, - "notificationGroupId": "b3901f17-9971-4d1e-8a81-8448cf533dc7", - "notificationGroupName": "dev-team-noti", - "notifyEmail": true, - "notifySms": false, - "isEnabled": true, - "dbInstances": [ - { - "dbInstanceId": "ed5cb985-526f-4c54-9ae0-40288593de65", - "dbInstanceName": "database" - } - ], - "userGroups": [ - { - "userGroupId": "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0", - "userGroupName": "dev-team" - } - ], - "createdYmdt": "2023-02-20T13:34:13+09:00", - "updatedYmdt": "2023-02-20T13:34:13+09:00" + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -4629,100 +5326,69 @@ GET /v4.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 생성하기 +### 알림 그룹 삭제하기 ```http -POST /v4.0/notification-groups +DELETE /v4.0/notification-groups/{notificationGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMariaDB:NotificationGroup.Create | 알림 그룹 생성하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:NotificationGroup.Delete | 알림 그룹 삭제하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------------| -| notificationGroupName | Body | String | O | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `true` | -| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `true` | -| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `true` | -| dbInstanceIds | Body | Array | O | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | O | 사용자 그룹의 식별자 목록 | - -

예시 -

- -```json -{ - "notificationGroupName": "dev-team-noti", - "notifyEmail": false, - "isEnable": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65" - ], - "userGroupIds": [ - "1aac0437-f32d-4923-ad3c-ac61c1cfdfe0" - ] -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|------|------------| -| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +이 API는 응답 본문을 반환하지 않습니다. --- -### 알림 그룹 수정하기 +### 알림 그룹 상세 보기 ```http -PUT /v4.0/notification-groups/{notificationGroupId} +GET /v4.0/notification-groups/{notificationGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMariaDB:NotificationGroup.Modify | 알림 그룹 수정하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:NotificationGroup.Get | 알림 그룹 상세 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|------|---------|----|-----------------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | -| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | -| notifyEmail | Body | Boolean | X | 이메일 알림 여부 | -| notifySms | Body | Boolean | X | SMS 알림 여부 | -| isEnabled | Body | Boolean | X | 활성화 여부 | -| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | -| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 | - -
예시 -

- -```json -{ - "notifyEmail": true, - "dbInstanceIds": [ - "ed5cb985-526f-4c54-9ae0-40288593de65", - "d51b7da0-682f-47ff-b588-b739f6adc740" - ] -} -``` +이 API는 요청 본문을 요구하지 않습니다. -

-
+| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| notificationGroupId | Body | UUID | 알림 그룹의 식별자 | +| notificationGroupName | Body | String | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | 이메일 알림 여부 | +| notifySms | Body | Boolean | SMS 알림 여부 | +| isEnabled | Body | Boolean | 활성화 여부 | +| dbInstances | Body | Array | 감시 대상 DB 인스턴스 목록 | +| dbInstances.dbInstanceId | Body | UUID | DB 인스턴스의 식별자 | +| dbInstances.dbInstanceName | Body | String | DB 인스턴스를 식별할 수 있는 이름 | +| userGroups | Body | Array | 사용자 그룹 목록 | +| userGroups.userGroupId | Body | UUID | 사용자 그룹의 식별자 | +| userGroups.userGroupName | Body | String | 사용자 그룹을 식별할 수 있는 이름 | +| createdYmdt | Body | DateTime | 생성 일시 | +| updatedYmdt | Body | DateTime | 수정 일시 |
예시

@@ -4733,7 +5399,26 @@ PUT /v4.0/notification-groups/{notificationGroupId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "notificationGroupId": "550e8400-e29b-41d4-a716-446655440000", + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, + "notifySms": false, + "isEnabled": false, + "dbInstances": [ + { + "dbInstanceId": "550e8400-e29b-41d4-a716-446655440000", + "dbInstanceName": "dbInstanceName-example" + } + ], + "userGroups": [ + { + "userGroupId": "550e8400-e29b-41d4-a716-446655440000", + "userGroupName": "userGroupName-example" + } + ], + "createdYmdt": "2023-12-31T15:00:00+09:00", + "updatedYmdt": "2023-12-31T15:00:00+09:00" } ``` @@ -4742,60 +5427,65 @@ PUT /v4.0/notification-groups/{notificationGroupId} --- -### 알림 그룹 삭제하기 +### 알림 그룹 수정하기 ```http -DELETE /v4.0/notification-groups/{notificationGroupId} +PUT /v4.0/notification-groups/{notificationGroupId} ``` #### 필요 권한 -| 권한명 | 설명 | -|------------------------------------------------------|------------| -| RDSforMariaDB:NotificationGroup.Delete | 알림 그룹 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:NotificationGroup.Modify | 알림 그룹 수정하기 | #### 요청 -이 API는 요청 본문을 요구하지 않습니다. - -| 이름 | 종류 | 형식 | 필수 | 설명 | -|---------------------|-----|------|----|------------| -| notificationGroupId | URL | UUID | O | 알림 그룹의 식별자 | - -#### 응답 - -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| notificationGroupId | URL | UUID | O | | +| notificationGroupName | Body | String | X | 알림 그룹을 식별할 수 있는 이름 | +| notifyEmail | Body | Boolean | X | 이메일 알림 여부
- 기본값: `false` | +| notifySms | Body | Boolean | X | SMS 알림 여부
- 기본값: `false` | +| isEnabled | Body | Boolean | X | 활성화 여부
- 기본값: `false` | +| dbInstanceIds | Body | Array | X | 감시 대상 DB 인스턴스의 식별자 목록 | +| userGroupIds | Body | Array | X | 사용자 그룹의 식별자 목록 |

예시

```json { - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } + "notificationGroupName": "notificationGroupName-example", + "notifyEmail": false, + "notifySms": false, + "isEnabled": false, + "dbInstanceIds": [], + "userGroupIds": [] } ```

+#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + --- ## 모니터링 -### Metric 목록 보기 +### 통계 정보 조회 ```http -GET /v4.0/metrics +GET /v4.0/metric-statistics ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:Metric.List | 통계 정보 조회 | #### 요청 @@ -4804,92 +5494,48 @@ GET /v4.0/metrics #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|---------------------|------|--------|-----------| -| metrics | Body | Array | Metric 목록 | -| metrics.measureName | Body | Enum | 조회 지표 유형 | -| metrics.unit | Body | String | 측정값 단위 | - -
예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - }, - "metrics": [ - { - "measureName": "CPU_USAGE", - "unit": "%" - } - ] -} -``` - -

-
+이 API는 응답 본문을 반환하지 않습니다. --- -### 통계 정보 조회 +### Metric 목록 보기 ```http -GET /v4.0/metric-statistics +GET /v4.0/metrics ``` #### 필요 권한 -| 권한명 | 설명 | -|-----------------------------------------|----------| -| RDSforMariaDB:Metric.List | 통계 정보 조회 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:Metric.List | Metric 목록 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|--------------|-------|----------|----|-----------------------------------| -| dbInstanceId | Query | UUID | O | DB 인스턴스의 식별자 | -| measureNames | Query | Array | O | 조회 지표 목록
- 최소 크기: `1` | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| interval | Query | Number | X | 조회 간격 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------|------|-----------|----------| -| metricStatistics | Body | Array | 통계 정보 목록 | -| metricStatistics.measureName | Body | Enum | 측정 항목 유형 | -| metricStatistics.unit | Body | String | 측정값 단위 | -| metricStatistics.values | Body | Array | 측정값 목록 | -| metricStatistics.values.timestamp | Body | Timestamp | 측정 시간 | -| metricStatistics.values.value | Body | Object | 측정값 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| metrics | Body | Array | Metric 목록 | +| metrics.measureName | Body | String | 조회 지표 유형 | +| metrics.unit | Body | String | 측정값 단위 |
예시

```json { - "metricStatistics": [ + "header": { + "resultCode": 0, + "resultMessage": "SUCCESS", + "isSuccessful": true + }, + "metrics": [ { - "measureName": "MYSQL_STATUS", - "unit": "", - "values": [ - [ - 1679298540, - "1" - ], - [ - 1679298600, - "1" - ], - [ - 1679298660, - "1" - ] - ] + "measureName": "measureName-example", + "unit": "unit-example" } ] } @@ -4915,47 +5561,29 @@ GET /v4.0/metric-statistics | TENANT | 테넌트 | | MONITORING | 모니터링 | -### 이벤트 목록 조회 +### 구독 가능한 이벤트 코드 목록 보기 ```http -GET /v4.0/events +GET /v4.0/event-codes ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------|-----------| -| RDSforMariaDB:Event.List | 이벤트 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:Event.List | 구독 가능한 이벤트 코드 목록 보기 | #### 요청 이 API는 요청 본문을 요구하지 않습니다. -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|--------------------------------------------------------------------------------------------------------------------------------------| -| page | Query | Number | X | 조회할 목록의 페이지
- 기본값: 1
- 최솟값: `1` | -| size | Query | Number | X | 조회할 목록의 페이지 크기
- 기본값: 20 | -| from | Query | Datetime | O | 시작 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| to | Query | Datetime | O | 종료 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | -| eventCategoryType | Query | Enum | O | 조회할 이벤트 카테고리 유형
- `ALL`: 전체
- `INSTANCE`: DB 인스턴스
- `BACKUP`: 백업
- `DB_SECURITY_GROUP`: DB 보안 그룹
- `TENANT`: 테넌트 | -| sourceId | Query | String | X | 이벤트가 발생한 대상 리소스의 식별자 | -| keyword | Query | String | X | 이벤트 메시지에 포함된 문자열 검색어 | -| ascendingOrder | Query | Enum | X | 이벤트 메시지 정렬 순서
- `ASC`: 오름차순
- `DESC`: 내림차순
- 기본값: `DESC` | - #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|--------------------------|------|----------|---------------------------------------| -| totalCounts | Body | Number | 전체 이벤트 목록 수 | -| events | Body | Array | 이벤트 목록 | -| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | -| events.sourceId | Body | String | 이벤트 소스의 식별자 | -| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | -| events.messages | Body | Array | 이벤트 메시지 목록 | -| events.messages.langCode | Body | String | 언어 코드 | -| events.messages.message | Body | String | 이벤트 메시지 | -| events.eventYmdt | Body | DateTime | 이벤트 발생 일시(YYYY-MM-DDThh:mm:ss.SSSTZD) | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventCodes | Body | Array | 이벤트 코드 목록 | +| eventCodes.eventCode | Body | Enum | 이벤트 코드 | +| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT |

예시

@@ -4967,32 +5595,10 @@ GET /v4.0/events "resultMessage": "SUCCESS", "isSuccessful": true }, - "totalCounts": 28, - "events": [ + "eventCodes": [ { - "eventCategoryType": "INSTANCE", - "eventCode": "INSTC_02_01", - "sourceId": "76f00947-356e-4a20-8922-428368cc45ed", - "sourceName": "db-instance", - "messages": [ - { - "langCode": "EN", - "message": "DB instance started" - }, - { - "langCode": "JA", - "message": "DBインスタンスの起動" - }, - { - "langCode": "KO", - "message": "DB 인스턴스 시작" - }, - { - "langCode": "ZH", - "message": "DB instance started" - } - ], - "eventYmdt": "2023-03-20T16:31:59+09:00" + "eventCode": "ENUM_VALUE", + "eventCategoryType": "ALL" } ] } @@ -5003,17 +5609,17 @@ GET /v4.0/events --- -### 구독 가능한 이벤트 코드 목록 보기 +### 이벤트 목록 조회 ```http -GET /v4.0/event-codes +GET /v4.0/events ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------|-----------| -| RDSforMariaDB:Event.List | 이벤트 목록 보기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:Event.List | 이벤트 목록 조회 | #### 요청 @@ -5021,11 +5627,18 @@ GET /v4.0/event-codes #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|------------------------------|------|-------|-------------| -| eventCodes | Body | Array | 이벤트 코드 목록 | -| eventCodes.eventCode | Body | Enum | 이벤트 코드 | -| eventCodes.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 목록 수 | +| events | Body | Array | 이벤트 목록 | +| events.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| events.eventCode | Body | Enum | 발생한 이벤트의 유형 | +| events.sourceId | Body | String | 이벤트 소스의 식별자 | +| events.sourceName | Body | String | 이벤트 소스를 식별할 수 있는 이름 | +| events.messages | Body | Array | 이벤트 메세지 목록 | +| events.messages.langCode | Body | Enum | 언어 코드
- KO
- EN
- JA
- ZH | +| events.messages.message | Body | String | 이벤트 메세지 | +| events.eventYmdt | Body | DateTime | 이벤트 발생 일시 |

예시

@@ -5037,10 +5650,20 @@ GET /v4.0/event-codes "resultMessage": "SUCCESS", "isSuccessful": true }, - "eventCodes": [ + "totalCounts": 1, + "events": [ { - "eventCode": "INSTC_05_01", - "eventCategoryType": "INSTANCE" + "eventCategoryType": "ALL", + "eventCode": "ENUM_VALUE", + "sourceId": "sourceId-example", + "sourceName": "sourceName-example", + "messages": [ + { + "langCode": "KO", + "message": "message-example" + } + ], + "eventYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -5061,38 +5684,32 @@ GET /v4.0/event-subscriptions #### 필요 권한 -| 권한명 | 설명 | -|---------------------------------------------------------|---------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:EventSubscription.List | 이벤트 구독 목록 조회 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-------------------|-------|----------|----|------------------------------------------| -| page | Query | Number | X | 조회할 목록의 페이지
- 기본값: 1
- 최솟값: `1` | -| size | Query | Number | X | 조회할 목록의 페이지 크기
- 기본값: 20 | -| eventSubscriptionId | Query | UUID | X | 이벤트 구독의 식별자 | -| eventSubscriptionName | Query | String | X | 이벤트 구독을 식별할 수 있는 이름 | -| userGroupId | Query | UUID | X | 사용자 그룹의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------------------------------|------|----------|--------------------------| -| totalCounts | Body | Number | 전체 이벤트 구독 목록 수 | -| eventSubscriptions | Body | Array | 이벤트 구독 목록 | -| eventSubscriptions.eventSubscriptionId | Body | UUID | 이벤트의 구독 식별자 | -| eventSubscriptions.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| eventSubscriptions.eventSubscriptionName | Body | String | 이벤트 구독을 식별할 수 있는 이름 | -| eventSubscriptions.enabled | Body | Boolean | 활성화 여부 | -| eventSubscriptions.notifyEmail | Body | Boolean | 이메일 발송 여부 | -| eventSubscriptions.notifySms | Body | Boolean | SMS 발송 여부 | -| eventSubscriptions.eventCodes | Body | Array | 구독할 이벤트 코드 목록 | -| eventSubscriptions.sources | Body | Array | 구독할 이벤트 소스 목록 | -| eventSubscriptions.sources.sourceId | Body | UUID | 이벤트 소스의 식별자 | -| eventSubscriptions.sources.eventCategoryType | Body | Enum | 이벤트 카테고리 유형 | -| eventSubscriptions.userGroupIds | Body | Array | 이벤트 구독 중인 사용자 그룹의 식별자 목록 | -| eventSubscriptions.createdYmdt | Body | DateTime | 생성 일시 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| totalCounts | Body | Number | 전체 이벤트 구독 목록 수 | +| eventSubscriptions | Body | Array | 이벤트 구독 목록 | +| eventSubscriptions.eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 | +| eventSubscriptions.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.eventSubscriptionName | Body | String | 이벤트 구독의 식별할 수 있는 이름 | +| eventSubscriptions.enabled | Body | Boolean | 활성화 여부 | +| eventSubscriptions.notifyEmail | Body | Boolean | 이메일 발송 여부 | +| eventSubscriptions.notifySms | Body | Boolean | SMS 발송 여부 | +| eventSubscriptions.eventCodes | Body | Array | 구독할 이벤트 코드 목록 | +| eventSubscriptions.sources | Body | Array | 구독할 이벤트 소스 목록 | +| eventSubscriptions.sources.sourceId | Body | String | 이벤트 소스의 식별자 | +| eventSubscriptions.sources.eventCategoryType | Body | Enum | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptions.userGroupIds | Body | Array | 이벤트 구독 중인 사용자 그룹의 식별자 목록 | +| eventSubscriptions.createdYmdt | Body | DateTime | 생성 일시 |

예시

@@ -5107,25 +5724,21 @@ GET /v4.0/event-subscriptions "totalCounts": 1, "eventSubscriptions": [ { - "eventSubscriptionId": "12345678-1234-1234-1234-123456789012", - "eventCategoryType": "INSTANCE", - "eventSubscriptionName": "example-event-subscription", - "enabled": true, - "notifyEmail": true, + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, "notifySms": false, - "eventCodes": [ - "INSTC_05_01" - ], + "eventCodes": [], "sources": [ { - "sourceId": "87654321-4321-4321-4321-210987654321", - "eventCategoryType": "INSTANCE" + "sourceId": "sourceId-example", + "eventCategoryType": "ALL" } ], - "userGroupIds": [ - "11111111-2222-3333-4444-555555555555" - ], - "createdYmdt": "2024-01-01T12:00:00+09:00" + "userGroupIds": [], + "createdYmdt": "2023-12-31T15:00:00+09:00" } ] } @@ -5144,47 +5757,43 @@ POST /v4.0/event-subscriptions #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:EventSubscription.Create | 이벤트 구독 생성하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------------------|------|---------|----|-----------------------------------------| -| eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형 | -| eventSubscriptionName | Body | String | O | 이벤트 구독을 식별할 수 있는 이름
- 최대 길이: `100` | -| enabled | Body | Boolean | O | 활성화 여부 | -| notifyEmail | Body | Boolean | O | 이메일 발송 여부 | -| notifySms | Body | Boolean | O | SMS 발송 여부 | -| eventCodes | Body | Array | O | 구독할 이벤트 코드 목록 | -| sources | Body | Array | O | 구독할 이벤트 소스 목록 | -| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | -| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형 | -| userGroupIds | Body | Array | O | 이벤트 구독할 사용자 그룹의 식별자 목록 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | O | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | O | 활성화 여부 | +| notifyEmail | Body | Boolean | O | 이메일 발송 여부 | +| notifySms | Body | Boolean | O | SMS 발송 여부 | +| eventCodes | Body | Array | O | 구독할 이벤트 코드 목록 | +| sources | Body | Array | O | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | O | 이벤트 구독할 사용자 그룹의 식별자 목록 |

예시

```json { - "eventCategoryType": "INSTANCE", - "eventSubscriptionName": "example-event-subscription", - "enabled": true, - "notifyEmail": true, + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", + "enabled": false, + "notifyEmail": false, "notifySms": false, - "eventCodes": [ - "INSTC_05_01" - ], + "eventCodes": [], "sources": [ { - "sourceId": "87654321-4321-4321-4321-210987654321", - "eventCategoryType": "INSTANCE" + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" } ], - "userGroupIds": [ - "11111111-2222-3333-4444-555555555555" - ] + "userGroupIds": [] } ``` @@ -5193,9 +5802,9 @@ POST /v4.0/event-subscriptions #### 응답 -| 이름 | 종류 | 형식 | 설명 | -|-----------------------|------|------|-------------| -| eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 | +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| eventSubscriptionId | Body | UUID | 이벤트 구독의 식별자 |

예시

@@ -5207,7 +5816,7 @@ POST /v4.0/event-subscriptions "resultMessage": "SUCCESS", "isSuccessful": true }, - "eventSubscriptionId": "12345678-1234-1234-1234-123456789012" + "eventSubscriptionId": "550e8400-e29b-41d4-a716-446655440000" } ``` @@ -5216,6 +5825,32 @@ POST /v4.0/event-subscriptions --- +### 이벤트 구독 삭제하기 + +```http +DELETE /v4.0/event-subscriptions/{eventSubscriptionId} +``` + +#### 필요 권한 + +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:EventSubscription.Delete | 이벤트 구독 삭제하기 | + +#### 요청 + +이 API는 요청 본문을 요구하지 않습니다. + +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | + +#### 응답 + +이 API는 응답 본문을 반환하지 않습니다. + +--- + ### 이벤트 구독 수정하기 ```http @@ -5224,49 +5859,44 @@ PUT /v4.0/event-subscriptions/{eventSubscriptionId} #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------------|--------------| +| 권한명 | 설명 | +|-----|-----| | RDSforMariaDB:EventSubscription.Modify | 이벤트 구독 수정하기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|------------------------------|------|---------|----|-----------------------------------| -| eventSubscriptionId | URL | UUID | O | 이벤트 구독의 식별자 | -| eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형 | -| eventSubscriptionName | Body | String | X | 이벤트 구독을 식별할 수 있는 이름 | -| enabled | Body | Boolean | X | 활성화 여부 | -| notifyEmail | Body | Boolean | X | 이메일 발송 여부 | -| notifySms | Body | Boolean | X | SMS 발송 여부 | -| eventCodes | Body | Array | X | 구독할 이벤트 코드 목록 | -| sources | Body | Array | X | 구독할 이벤트 소스 목록 | -| sources.sourceId | Body | UUID | X | 이벤트 소스의 식별자 | -| sources.eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형 | -| userGroupIds | Body | Array | X | 이벤트 구독할 사용자 그룹의 식별자 목록 | +| 이름 | 종류 | 형식 | 필수 | 설명 | +|-----|-----|-----|-----|-----| +| eventSubscriptionId | URL | UUID | O | | +| eventCategoryType | Body | Enum | X | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| eventSubscriptionName | Body | String | X | 이벤트 구독을 식별할 수 있는 이름 | +| enabled | Body | Boolean | X | 활성화 여부 | +| notifyEmail | Body | Boolean | X | 이메일 발송 여부 | +| notifySms | Body | Boolean | X | SMS 발송 여부 | +| eventCodes | Body | Array | X | 구독할 이벤트 코드 목록 | +| sources | Body | Array | X | 구독할 이벤트 소스 목록 | +| sources.sourceId | Body | UUID | O | 이벤트 소스의 식별자 | +| sources.eventCategoryType | Body | Enum | O | 이벤트 카테고리 유형
- ALL
- INSTANCE
- DB_SECURITY_GROUP
- MONITORING
- JOB
- BACKUP
- TENANT | +| userGroupIds | Body | Array | X | 이벤트 구독할 사용자 그룹의 식별자 목록 |

예시

```json { - "eventSubscriptionName": "updated-event-subscription", + "eventCategoryType": "ALL", + "eventSubscriptionName": "eventSubscriptionName-example", "enabled": false, "notifyEmail": false, - "notifySms": true, - "eventCodes": [ - "INSTC_05_01", - "INSTC_06_01" - ], + "notifySms": false, + "eventCodes": [], "sources": [ { - "sourceId": "87654321-4321-4321-4321-210987654321", - "eventCategoryType": "INSTANCE" + "sourceId": "550e8400-e29b-41d4-a716-446655440000", + "eventCategoryType": "ALL" } ], - "userGroupIds": [ - "11111111-2222-3333-4444-555555555555", - "22222222-3333-4444-5555-666666666666" - ] + "userGroupIds": [] } ``` @@ -5277,45 +5907,34 @@ PUT /v4.0/event-subscriptions/{eventSubscriptionId} 이 API는 응답 본문을 반환하지 않습니다. -

예시 -

- -```json -{ - "header": { - "resultCode": 0, - "resultMessage": "SUCCESS", - "isSuccessful": true - } -} -``` - -

-
- --- -### 이벤트 구독 삭제하기 +## 가용성 영역 + +### 가용성 영역 목록 보기 ```http -DELETE /v4.0/event-subscriptions/{eventSubscriptionId} +GET /v4.0/availability-zones ``` #### 필요 권한 -| 권한명 | 설명 | -|----------------------------------------------------------|--------------| -| RDSforMariaDB:EventSubscription.Delete | 이벤트 구독 삭제하기 | +| 권한명 | 설명 | +|-----|-----| +| RDSforMariaDB:AvailabilityZone.List | 가용성 영역 목록 보기 | #### 요청 -| 이름 | 종류 | 형식 | 필수 | 설명 | -|-----------------------|-----|------|----|-------------| -| eventSubscriptionId | URL | UUID | O | 이벤트 구독의 식별자 | +이 API는 요청 본문을 요구하지 않습니다. #### 응답 -이 API는 응답 본문을 반환하지 않습니다. +| 이름 | 종류 | 형식 | 설명 | +|-----|-----|-----|-----| +| availabilityZones | Body | Array | 가용성 영역 목록 | +| availabilityZones.availabilityZoneName | Body | String | 가용성 영역 이름 | +| availabilityZones.zoneState | Body | Object | 가용성 영역 상태 | +| availabilityZones.zoneState.available | Body | Boolean | 가용성 영역의 사용 가능 여부 |
예시

@@ -5326,7 +5945,15 @@ DELETE /v4.0/event-subscriptions/{eventSubscriptionId} "resultCode": 0, "resultMessage": "SUCCESS", "isSuccessful": true - } + }, + "availabilityZones": [ + { + "availabilityZoneName": "availabilityZoneName-example", + "zoneState": { + "available": false + } + } + ] } ``` @@ -5334,3 +5961,4 @@ DELETE /v4.0/event-subscriptions/{eventSubscriptionId}

--- +