네이버 클라우드 플랫폼의 상품 사용 방법을 보다 상세하게 제공하고, 다양한 API의 활용을 돕기 위해 [설명서]와 [API 참조서]를 구분하여 제공하고 있습니다.
CloudDB API 개요
네이버 클라우드 플랫폼은 NAVER의 최신 컴퓨팅 기술과 운영 노하우가 축적된 클라우드 서비스입니다. 네이버 클라우드 플랫폼에서 제공하는 여러 가지 상품군 중에 솔루션 상품을 이용할 수 있도록 제공하는 응용 프로그램 인터페이스(API)를 네이버 클라우드 플랫폼 API라고 합니다. 네이버 클라우드 플랫폼 API는 RESTful 형태로 제공됩니다. HTTP 방식의 GET/POST 메서드 호출을 통해서 이루어집니다.
CloudDB API는 CloudDB for MSSQL, CloudDB for MySQL, CloudDB for Redis에서 공통으로 사용할 수 있습니다.
공통설정
- {CloudDB_API_URL}
https://ncloud.apigw.ntruss.com/clouddb/v1
- Request header
Header | Description |
---|---|
x-ncp-apigw-timestamp | 1970년 1월 1일 00:00:00 협정 세계시(UTC)부터의 경과 시간을 밀리초(millisecond)로 나타낸 것이다. APIGW 서버와 시간차가 5분 이상 나는 경우 유효하지 않은 요청으로 간주 |
x-ncp-apigw-api-key | API Gateway에서 발급받은 키 |
x-ncp-iam-access-key | NCP에서 발급받은 API Key 또는 IAM에서 발급받은 AccessKey |
x-ncp-apigw-signature-v1 | 위 예제의 Body를 AccessKey와 맵핑되는 SecretKey로 암호화한 서명 HMAC 암호화 알고리즘은 HmacSHA256 사용 |
API References
- CloudDB
- DMS 1
- Example
1. DMS는 Data Migration Service의 약자로, 온프레미스에서 운영하던 데이터베이스를 CloudDB로 복구하거나 CloudDB에서 자동 백업된 백업 파일을 오브젝트 스토리지로 옮길 수 있는 서비스입니다. 해당 서비스는 API Gateway를 이용한 API이며, 오브젝트 스토리지에 버킷을 생성한 후 사용할 수 있습니다. 대용량 데이터베이스도 단 몇 분의 서비스 중지 시간만으로 클라우드 데이터베이스로 옮길 수 있습니다. ↩
2. DMS는 Amazon S3 API 호환 시스템으로부터 복구 가능합니다. 작업할 오브젝트 스토리지 정보를 저장후 사용할 수 있습니다. ↩
3. 오브젝트 스토리지의 백업 파일을 내부 백업 스토리지로 다운로드한 후 데이터베이스 복구 작업을 수행할 수 있습니다.(데이터베이스 복구는 해당 데이터베이스의 IO 요건을 모두 만족하는 스토리지 시스템으로부터만 복구할 수 있습니다.) ↩
4. 자동으로 매일 백업되는 전체 백업과 트랜젝션 로그 백업을 오브젝트 스토리지로 옮길 수 있습니다. ↩
5. 대용량 파일을 내부 백업스토리지로 옮기거나 복구하는 명령의 상태를 조회할 수 있습니다. ↩
CloudDB
createCloudDBInstance
API명
인스턴스생성
action
createCloudDBInstance
- 설명
CloudDB 인스턴스 생성합니다.
- 요청 파라미터
파라미터명 | 간략 설명 | 타입 | 제약 | 필수여부 |
---|---|---|---|---|
cloudDBImageProductCode | CloudDB이미지상품코드 | String | No | |
dbKindCode | DB유형코드 | String | Yes | |
collation | 문자셋 | String | Default : (Korean_Wansung_CI_AS) | No |
cloudDBProductCode | CloudDB상품코드 | String | Default : 최소사양으로 선택 | No |
dataStorageTypeCode | 데이터스토리지유형코드 | String | Default : SSD | No |
isHa | 고가용성여부 | Boolean | default : true | No |
cloudDBServerName | CloudDB서버이름 | String | Conditional | |
cloudDBServiceName | CloudDB서비스이름 | String | Yes | |
hostIp | 호스트IP | String | Conditional | |
cloudDBBasicName | CloudDB기본이름 | String | Conditional | |
cloudDBUserName | CloudDB유저이름 | String | Conditional | |
cloudDBUserPassword | CloudDB유저암호 | String | Conditional | |
cloudDBPort | CloudDB포트 | Integer | No | |
cloudDBConfigGroupNo | CloudDB설정그룹번호 | String | default : 0 (mssql_2016_default ) | No |
isBackup | 백업여부 | Boolean | default : false | No |
backupFileRetentionPeriod | 백업파일보관기간 | Integer | default : 1일 (1~30까지 입력가능) | No |
isAutomaticBackup | 자동 Backup여부 | Boolean | defualt : true | No |
backupTime | Backup 시간 | String | HHMM 15분단위로 내림 1707 -> 1700 | Conditional |
regionNo | 리전번호 | String | KR리전만가능 | No |
zoneNo | ZONE번호 | String | KR-1 ZONE만가능 | No |
responseFormatType | response의 결과 format 설정 | String | No |
cloudDBImageProductCode
- getCloudDBImageProductListRequest API를 통해 얻을수 있습니다.
cloudDBProductCode
- getCloudDBProductList API를 통해서 필요한 입력값을 조회할 수 있습니다.
dbKindCode
- MYSQL, MSSQL, REDIS 중 선택 가능합니다.
collation
- Korean_Wansung_CI_AS, SQL_Latin1_General_CP1_CI_AS 중 선택가능하며 MSSQL에서만 선택합니다.
dataStorageTypeCode
- HDD, SSD 코드중 입력가능 합니다.
isHa
- REDIS, MSSQL만 선택가능며, MSSQL은 설정 불가능 합니다.
cloudDBServerName
- MSSQL의 경우에는 자동으로 이름이 생성되며, MYSQL, REDIS는 직접 입력해야합니다.
cloudDBServiceName
- 사용자가 정의하는 클라우드 데이터베이스 서비스 이름입니다.
hostIp
- MSSQL, REDIS는 호스트 IP설정 불가능, MYSQL만 가능 합니다.
cloudDBBasicName
- MYSQL에서만 설정가능합니다.
cloudDBUserName
- MYSQL, MSSQL에서만 설정가능하며, 데이터베이스 접속시 사용되는 userid입니다.
cloudDBUserPassword
- MYSQL, MSSQL에서만 설정가능하며, 데이터베이스 접속시 사용되는 password입니다.
cloudDBPort
- (MSSQL)1433, (MYSQL) 3306, (REDIS) 6379, 가용포트 10000 ~ 20000으로 validation 체크합니다. 기본 포트번호는 공격에 취약할 수 있습니다.
cloudDBConfigGroupNo
- getCloudDBConfigGroupList API를 이용해서 조회가능하며 MSSQL에서만 설정 가능합니다. 입력하지 않거나, 사용자가 생성한 설정 그룹 번호를 넣습니다.
isBackup
- MYSQL, MSSQL에서는 백업여부 true고정, REDIS에서만 설정가능, isHa(고가용성)값이 true이면 이면 true, false 선택은 불가능 합니다.
backupFileRetentionPeriod
- 백업 파일 보관일자
isAutomaticBackup
- 자동 백업 여부 (MSSQL의 경우 isHa값이 ture일 경우 반드시 설정되어야 합니다.)
backupTime
- isAutomaticFullBackup이 false일 경우 필수로 입력해야 합니다. 0430처럼 백업을 시작하는 시간을 15분 단위로 설정합니다.
regionNo
- Server API인 getRegionList를 통해 얻을수 있습니다.
zoneNo
- Server API인 getZoneList를 통해 얻을수 있습니다.
responseFormatType
- API 실행 결과를 응답 받을 format을 정합니다. xml과 json 중에서 선택 가능합니다.
Example
요청
{CloudDB_API_URL}/createCloudDBInstance?backupTime=1900&cloudDBPort=11433&cloudDBServiceName=msqa1&cloudDBUserName=msqa&cloudDBUserPassword=%211P%40ssw0rd&dbKindCode=MSSQL
응답
<createCloudDBInstanceResponse> <returnCode>0</returnCode> <returnMessage>success</returnMessage> <totalRows>1</totalRows> <cloudDBInstanceList> <cloudDBInstance> <cloudDBInstanceNo>1057304</cloudDBInstanceNo> <cloudDBServiceName>msqa1</cloudDBServiceName> <dbKindCode>MSSQL</dbKindCode> <engineVersion>MSSQL 2016 standard edition</engineVersion> <cpuCount>2</cpuCount> <memorySize>4294967296</memorySize> <dataStorageType> <code>SSD</code> <codeName>SSD</codeName> </dataStorageType> <licenseCode>SPLA</licenseCode> <cloudDBPort>11433</cloudDBPort> <isHa>true</isHa> <cloudDBInstanceStatusName>creating</cloudDBInstanceStatusName> <collation /> <createDate>2018-11-09T17:20:00+0900</createDate> <cloudDBImageProductCode>SPSWMSSQLWINNT01</cloudDBImageProductCode> <cloudDBProductCode>SPSVRDBAAS000013</cloudDBProductCode> <isCloudDBConfigNeedReboot>false</isCloudDBConfigNeedReboot> <isCloudDBNeedReboot>false</isCloudDBNeedReboot> <zone> <zoneNo>3</zoneNo> <zoneName>KR-2</zoneName> <zoneCode>KR-2</zoneCode> <zoneDescription>평촌 zone</zoneDescription> <regionNo>1</regionNo> </zone> <region> <regionNo>1</regionNo> <regionCode>KR</regionCode> <regionName>Korea</regionName> </region> <cloudDBConfigList /> <cloudDBConfigGroupList /> <accessControlGroupList> <accessControlGroup> <accessControlGroupConfigurationNo>67517</accessControlGroupConfigurationNo> <accessControlGroupName>cloud-mssql-mntk</accessControlGroupName> <accessControlGroupDescription>Group for cloud MSSQL service 'msqa1' (automatically created)</accessControlGroupDescription> <isDefault>false</isDefault> <createDate>2018-11-09T17:20:35+0900</createDate> </accessControlGroup> </accessControlGroupList> <cloudDBServerInstanceList> <cloudDBServerInstance> <cloudDBServerInstanceNo>1057305</cloudDBServerInstanceNo> <cloudDBServerInstanceStatusName>creating</cloudDBServerInstanceStatusName> <cloudDBServerName>m-1057304-001</cloudDBServerName> <cloudDBServerRole> <code>M</code> <codeName>Master</codeName> </cloudDBServerRole> <privateDnsName>mssql-108go.cdb.ntruss.com</privateDnsName> <publicDnsName /> <dataStorageSize>0</dataStorageSize> <createDate>2018-11-09T17:20:00+0900</createDate> <uptime>2018-11-09T17:20:00+0900</uptime> </cloudDBServerInstance> <cloudDBServerInstance> <cloudDBServerName>m-1057304-002</cloudDBServerName> <cloudDBServerRole> <code>H</code> <codeName>Hidden Master</codeName> </cloudDBServerRole> </cloudDBServerInstance> </cloudDBServerInstanceList> </cloudDBInstance> </cloudDBInstanceList> </createCloudDBInstanceResponse>
deleteCloudDBServerInstance
API명
인스턴스삭제
action
deleteCloudDBServerInstance
설명
CloudDB 서버 인스턴스를 삭제합니다. (Slave 삭제 기능으로 현재 MYSQL 만 지원합니다.)
요청 파라미터
파라미터명 | 간략 설명 | 타입 | 제약 | 필수여부 |
---|---|---|---|---|
cloudDBInstanceNo | CloudDb 인스턴스번호 | String | Yes | |
responseFormatType | response의 결과 format 설정 | String | No |
cloudDBInstanceNo
- 삭제하려는 CloudDB의 인스턴스 번호입니다. getCloudDBInstanceList API를 실행하여 response 결과에서 삭제하려는 CloudDB의 인스턴스 번호를 얻어 사용합니다.
responseFormatType
- API 실행 결과를 응답 받을 format을 정합니다. xml과 json 중에서 선택 가능합니다.
Example
요청
{CloudDB_API_URL}/deleteCloudDBServerInstance?cloudDBInstanceNo=743149
응답
<deleteCloudDBServerInstanceResponse> <returnCode>0</returnCode> <returnMessage>success</returnMessage> <totalRows>1</totalRows> <cloudDBInstanceList> <cloudDBInstance> <cloudDBInstanceNo>653558</cloudDBInstanceNo> <cloudDBServiceName>cnctest</cloudDBServiceName> <dbKindCode>MYSQL</dbKindCode> <engineVersion>MYSQL5.7.19</engineVersion> <cpuCount>2</cpuCount> <dataStorageType> <code>SSD</code> <codeName>SSD</codeName> </dataStorageType> <licenseCode>GPL</licenseCode> <cloudDBPort>3306</cloudDBPort> <isHa>true</isHa> <backupTime>12:00</backupTime> <backupFileRetentionPeriod>2</backupFileRetentionPeriod> <cloudDBInstanceStatusName>running</cloudDBInstanceStatusName> <collation /> <createDate>2018-02-13T11:14:00+0900</createDate> <cloudDBImageProductCode>SPSWMYSQLLINUX01</cloudDBImageProductCode> <cloudDBProductCode>SPSVRDBAAS000001</cloudDBProductCode> <isCloudDBConfigNeedReboot>false</isCloudDBConfigNeedReboot> <isCloudDBNeedReboot>false</isCloudDBNeedReboot> <zone> <zoneNo>2</zoneNo> <zoneName>KR-1</zoneName> <zoneCode>KR-1</zoneCode> <zoneDescription>가산 zone</zoneDescription> <regionNo>1</regionNo> </zone> <region> <regionNo>1</regionNo> <regionCode>KR</regionCode> <regionName>Korea</regionName> </region> <cloudDBConfigList> <cloudDBConfig> <configName>character_set_server</configName> <configValue>utf8mb4</configValue> </cloudDBConfig> <cloudDBConfig> <configName>event_scheduler</configName> <configValue>OFF</configValue> </cloudDBConfig> <cloudDBConfig> <configName>group_concat_max_len</configName> <configValue>102400</configValue> </cloudDBConfig> <cloudDBConfig> <configName>sql-mode</configName> <configValue>STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION</configValue> </cloudDBConfig> </cloudDBConfigList> <cloudDBConfigGroupList /> <accessControlGroupList> <accessControlGroup> <accessControlGroupConfigurationNo>34525</accessControlGroupConfigurationNo> <accessControlGroupName>cloud-db-e0ae</accessControlGroupName> <accessControlGroupDescription>Group for cloud DB service 'cnctest' (automatically created)</accessControlGroupDescription> <isDefault>false</isDefault> <createDate>2018-02-13T11:14:14+0900</createDate> </accessControlGroup> </accessControlGroupList> <cloudDBServerInstanceList> <cloudDBServerInstance> <cloudDBServerInstanceNo>653559</cloudDBServerInstanceNo> <cloudDBServerInstanceStatusName>running</cloudDBServerInstanceStatusName> <cloudDBServerName>cnctest-001</cloudDBServerName> <cloudDBServerRole> <code>M</code> <codeName>Master</codeName> </cloudDBServerRole> <privateDnsName>db-ju7n.cdb.ntruss.com</privateDnsName> <publicDnsName /> <dataStorageSize>0</dataStorageSize> <createDate>2018-02-13T11:14:00+0900</createDate> <uptime>2018-02-13T11:16:00+0900</uptime> </cloudDBServerInstance> <cloudDBServerInstance> <cloudDBServerName>cnctest-002</cloudDBServerName> <cloudDBServerRole> <code>H</code> <codeName>Hidden Master</codeName> </cloudDBServerRole> </cloudDBServerInstance> <cloudDBServerInstance> <cloudDBServerInstanceNo>743149</cloudDBServerInstanceNo> <cloudDBServerInstanceStatusName>deleting</cloudDBServerInstanceStatusName> <cloudDBServerName>cnctest-004</cloudDBServerName> <cloudDBServerRole> <code>S</code> <codeName>Slave</codeName> </cloudDBServerRole> <privateDnsName>db-mlnd.cdb.ntruss.com</privateDnsName> <publicDnsName /> <dataStorageSize>0</dataStorageSize> <createDate>2018-04-17T15:48:00+0900</createDate> <uptime>2018-04-17T15:52:00+0900</uptime> </cloudDBServerInstance> <cloudDBServerInstance> <cloudDBServerInstanceNo>814921</cloudDBServerInstanceNo> <cloudDBServerInstanceStatusName>running</cloudDBServerInstanceStatusName> <cloudDBServerName>cnctest-005</cloudDBServerName> <cloudDBServerRole> <code>S</code> <codeName>Slave</codeName> </cloudDBServerRole> <privateDnsName>db-orq9.cdb.ntruss.com</privateDnsName> <publicDnsName /> <dataStorageSize>10737418240</dataStorageSize> <usedDataStorageSize>5</usedDataStorageSize> <createDate>2018-06-11T00:50:00+0900</createDate> <uptime>2018-06-11T00:53:00+0900</uptime> </cloudDBServerInstance> </cloudDBServerInstanceList> </cloudDBInstance> </cloudDBInstanceList> </deleteCloudDBServerInstanceResponse>
getCloudDBInstanceList
API명
CloudDB 인스턴스 정보 조회
action
getCloudDBInstanceList
설명
CloudDB 인스턴스 정보 조회합니다. (해당하는 ZoneNo에 서버가 없으면 출력되지 않습니다. )
요청 파라미터
파라미터명 | 간략 설명 | 타입 | 제약 | 필수여부 |
---|---|---|---|---|
pageNo | 페이지번호 | integer | No | |
pageSize | 페이지사이즈 | integer | No | |
dbKindCode | DB유형코드 | String | MYSQL, MSSQL, REDIS | Yes |
searchFilterName | 검색필터이름 | String | No | |
searchFilterValue | 검색필터값 | String | No | |
regionNo | 리전번호 | String | No | |
zoneNo | zone번호 | String | No | |
responseFormatType | response의 결과 format 설정 | String | No |
pageNo
- 건수가 많을 경우 페이지 사이즈에 해당하는 페이지 번호
pageSize
- 한 페이지에서 조회할 페이지 사이즈
dbKindCode
- 조회할 CloudDB의 종류 선택 (MSSQL, MYSQL, REDIS) 입력 합니다.
searchFilterName
- 조회할 CloudDB의 필터링할 이름을 입력합니다.
searchFilterValue
- 조회할 CloudDB의 필터링할 값을 입력합니다.
regionNo
- Server API인 getRegionList를 통해 얻을수 있습니다.
zoneNo
- Server API인 getZoneList를 통해 얻을수 있습니다.
responseFormatType
- API 실행 결과를 응답 받을 format을 정합니다. xml과 json 중에서 선택 가능합니다.
Example
요청
{CloudDB_API_URL}/getCloudDBInstanceList?dbKindCode=MSSQL
응답
<getCloudDBInstanceListResponse> <returnCode>0</returnCode> <returnMessage>success</returnMessage> <totalRows>3</totalRows> <cloudDBInstanceList> <cloudDBInstance> <cloudDBInstanceNo>1057304</cloudDBInstanceNo> <cloudDBServiceName>msqa1</cloudDBServiceName> <dbKindCode>MSSQL</dbKindCode> <engineVersion>MSSQL 2016 standard edition</engineVersion> <cpuCount>2</cpuCount> <dataStorageType> <code>SSD</code> <codeName>SSD</codeName> </dataStorageType> <licenseCode>SPLA</licenseCode> <cloudDBPort>11433</cloudDBPort> <isHa>true</isHa> <cloudDBInstanceStatusName>running</cloudDBInstanceStatusName> <collation>Korean_Wansung_CI_AS</collation> <createDate>2018-11-09T17:20:00+0900</createDate> <cloudDBImageProductCode>SPSWMSSQLWINNT01</cloudDBImageProductCode> <cloudDBProductCode>SPSVRDBAAS000013</cloudDBProductCode> <isCloudDBConfigNeedReboot>false</isCloudDBConfigNeedReboot> <isCloudDBNeedReboot>false</isCloudDBNeedReboot> <zone> <zoneNo>3</zoneNo> <zoneName>KR-2</zoneName> <zoneCode>KR-2</zoneCode> <zoneDescription>평촌 zone</zoneDescription> <regionNo>1</regionNo> </zone> <region> <regionNo>1</regionNo> <regionCode>KR</regionCode> <regionName>Korea</regionName> </region> <cloudDBConfigList /> <cloudDBConfigGroupList> <cloudDBConfigGroup> <configGroupNo>0</configGroupNo> <configGroupType>system</configGroupType> <configGroupName>mssql_2016_default</configGroupName> </cloudDBConfigGroup> </cloudDBConfigGroupList> <accessControlGroupList> <accessControlGroup> <accessControlGroupConfigurationNo>67517</accessControlGroupConfigurationNo> <accessControlGroupName>cloud-mssql-mntk</accessControlGroupName> <accessControlGroupDescription>Group for cloud MSSQL service 'msqa1' (automatically created)</accessControlGroupDescription> <isDefault>false</isDefault> <createDate>2018-11-09T17:20:35+0900</createDate> </accessControlGroup> </accessControlGroupList> <cloudDBServerInstanceList> <cloudDBServerInstance> <cloudDBServerInstanceNo>1057305</cloudDBServerInstanceNo> <cloudDBServerInstanceStatusName>running</cloudDBServerInstanceStatusName> <cloudDBServerName>m-1057304-001</cloudDBServerName> <cloudDBServerRole> <code>M</code> <codeName>Master</codeName> </cloudDBServerRole> <privateDnsName>mssql-108go.cdb.ntruss.com</privateDnsName> <publicDnsName /> <dataStorageSize>107374182400</dataStorageSize> <usedDataStorageSize>649068544</usedDataStorageSize> <createDate>2018-11-09T17:20:00+0900</createDate> <uptime>2018-11-09T17:28:00+0900</uptime> </cloudDBServerInstance> <cloudDBServerInstance> <cloudDBServerName>m-1057304-002</cloudDBServerName> <cloudDBServerRole> <code>H</code> <codeName>Hidden Master</codeName> </cloudDBServerRole> </cloudDBServerInstance> </cloudDBServerInstanceList> </cloudDBInstance> <cloudDBInstance> <cloudDBInstanceNo>1057235</cloudDBInstanceNo> <cloudDBServiceName>msqa</cloudDBServiceName> <dbKindCode>MSSQL</dbKindCode> <engineVersion>MSSQL 2016 standard edition</engineVersion> <cpuCount>2</cpuCount> <dataStorageType> <code>SSD</code> <codeName>SSD</codeName> </dataStorageType> <licenseCode>SPLA</licenseCode> <cloudDBPort>11433</cloudDBPort> <isHa>true</isHa> <cloudDBInstanceStatusName>running</cloudDBInstanceStatusName> <collation>Korean_Wansung_CI_AS</collation> <createDate>2018-11-09T17:10:00+0900</createDate> <cloudDBImageProductCode>SPSWMSSQLWINNT01</cloudDBImageProductCode> <cloudDBProductCode>SPSVRDBAAS000013</cloudDBProductCode> <isCloudDBConfigNeedReboot>false</isCloudDBConfigNeedReboot> <isCloudDBNeedReboot>false</isCloudDBNeedReboot> <zone> <zoneNo>3</zoneNo> <zoneName>KR-2</zoneName> <zoneCode>KR-2</zoneCode> <zoneDescription>평촌 zone</zoneDescription> <regionNo>1</regionNo> </zone> <region> <regionNo>1</regionNo> <regionCode>KR</regionCode> <regionName>Korea</regionName> </region> <cloudDBConfigList /> <cloudDBConfigGroupList> <cloudDBConfigGroup> <configGroupNo>0</configGroupNo> <configGroupType>system</configGroupType> <configGroupName>mssql_2016_default</configGroupName> </cloudDBConfigGroup> </cloudDBConfigGroupList> <accessControlGroupList> <accessControlGroup> <accessControlGroupConfigurationNo>67514</accessControlGroupConfigurationNo> <accessControlGroupName>cloud-mssql-mnrn</accessControlGroupName> <accessControlGroupDescription>Group for cloud MSSQL service 'msqa' (automatically created)</accessControlGroupDescription> <isDefault>false</isDefault> <createDate>2018-11-09T17:10:26+0900</createDate> </accessControlGroup> </accessControlGroupList> <cloudDBServerInstanceList> <cloudDBServerInstance> <cloudDBServerInstanceNo>1057237</cloudDBServerInstanceNo> <cloudDBServerInstanceStatusName>running</cloudDBServerInstanceStatusName> <cloudDBServerName>m-1057235-001</cloudDBServerName> <cloudDBServerRole> <code>M</code> <codeName>Master</codeName> </cloudDBServerRole> <privateDnsName>mssql-108ej.cdb.ntruss.com</privateDnsName> <publicDnsName /> <dataStorageSize>107374182400</dataStorageSize> <usedDataStorageSize>649068544</usedDataStorageSize> <createDate>2018-11-09T17:10:00+0900</createDate> <uptime>2018-11-09T17:17:00+0900</uptime> </cloudDBServerInstance> <cloudDBServerInstance> <cloudDBServerName>m-1057235-002</cloudDBServerName> <cloudDBServerRole> <code>H</code> <codeName>Hidden Master</codeName> </cloudDBServerRole> </cloudDBServerInstance> </cloudDBServerInstanceList> </cloudDBInstance> <cloudDBInstance> <cloudDBInstanceNo>1010059</cloudDBInstanceNo> <cloudDBServiceName>kimms2</cloudDBServiceName> <dbKindCode>MSSQL</dbKindCode> <engineVersion>MSSQL 2016 standard edition</engineVersion> <cpuCount>2</cpuCount> <dataStorageType> <code>SSD</code> <codeName>SSD</codeName> </dataStorageType> <licenseCode>SPLA</licenseCode> <cloudDBPort>1433</cloudDBPort> <isHa>true</isHa> <cloudDBInstanceStatusName>running</cloudDBInstanceStatusName> <collation>Korean_Wansung_CI_AS</collation> <createDate>2018-10-18T22:19:00+0900</createDate> <cloudDBImageProductCode>SPSWMSSQLWINNT01</cloudDBImageProductCode> <cloudDBProductCode>SPSVRDBAAS000013</cloudDBProductCode> <isCloudDBConfigNeedReboot>false</isCloudDBConfigNeedReboot> <isCloudDBNeedReboot>false</isCloudDBNeedReboot> <zone> <zoneNo>3</zoneNo> <zoneName>KR-2</zoneName> <zoneCode>KR-2</zoneCode> <zoneDescription>평촌 zone</zoneDescription> <regionNo>1</regionNo> </zone> <region> <regionNo>1</regionNo> <regionCode>KR</regionCode> <regionName>Korea</regionName> </region> <cloudDBConfigList /> <cloudDBConfigGroupList> <cloudDBConfigGroup> <configGroupNo>0</configGroupNo> <configGroupType>system</configGroupType> <configGroupName>mssql_2016_default</configGroupName> </cloudDBConfigGroup> </cloudDBConfigGroupList> <accessControlGroupList> <accessControlGroup> <accessControlGroupConfigurationNo>64403</accessControlGroupConfigurationNo> <accessControlGroupName>cloud-mssql-lnd7</accessControlGroupName> <accessControlGroupDescription>Group for cloud MSSQL service 'kimms2' (automatically created)</accessControlGroupDescription> <isDefault>false</isDefault> <createDate>2018-10-18T22:19:52+0900</createDate> </accessControlGroup> </accessControlGroupList> <cloudDBServerInstanceList> <cloudDBServerInstance> <cloudDBServerInstanceNo>1010060</cloudDBServerInstanceNo> <cloudDBServerInstanceStatusName>running</cloudDBServerInstanceStatusName> <cloudDBServerName>m-1010059-001</cloudDBServerName> <cloudDBServerRole> <code>M</code> <codeName>Master</codeName> </cloudDBServerRole> <privateDnsName>mssql-uqcb.cdb.ntruss.com</privateDnsName> <publicDnsName /> <dataStorageSize>107374182400</dataStorageSize> <usedDataStorageSize>704643072</usedDataStorageSize> <createDate>2018-10-18T22:19:00+0900</createDate> <uptime>2018-10-18T22:28:00+0900</uptime> </cloudDBServerInstance> <cloudDBServerInstance> <cloudDBServerName>m-1010059-002</cloudDBServerName> <cloudDBServerRole> <code>H</code> <codeName>Hidden Master</codeName> </cloudDBServerRole> </cloudDBServerInstance> <cloudDBServerInstance> <cloudDBServerInstanceNo>1014783</cloudDBServerInstanceNo> <cloudDBServerInstanceStatusName>running</cloudDBServerInstanceStatusName> <cloudDBServerName>m-1010059-003</cloudDBServerName> <cloudDBServerRole> <code>S</code> <codeName>Slave</codeName> </cloudDBServerRole> <privateDnsName>mssql-uqcb-r001.cdb.ntruss.com</privateDnsName> <publicDnsName /> <dataStorageSize>107374182400</dataStorageSize> <usedDataStorageSize>701497344</usedDataStorageSize> <createDate>2018-10-20T11:11:00+0900</createDate> <uptime>2018-10-20T11:19:00+0900</uptime> </cloudDBServerInstance> </cloudDBServerInstanceList> </cloudDBInstance> </cloudDBInstanceList> </getCloudDBInstanceListResponse>
getCloudDBConfigGroupList
API NAME
CloudDB 구성 그룹 선택
action
getCloudDBConfigGroupList
Description
usefulCloudDB 구성 그룹 선택
Request parameters
파라미터명 | 간략 설명 | 타입 | 제약 | 필수여부 |
---|---|---|---|---|
dbKindCode | DBkind code | String | MySQL, MSSQL, REDIS | Yes |
responseFormatType | response result format setting | String | response result format setting | No |
dbKindCode
- MSSQL MySQL Redis
responseFormatType
- API 실행 결과에 응답 할 형식을 정의합니다. JSON과 XML 중에서 선택할 수 있습니다.
Request
<?xml version="1.0" encoding="UTF-8"?> <getCloudDBConfigGroupListResponse> <returnCode>0</returnCode> <returnMessage>success</returnMessage> <totalRows>1</totalRows> <cloudDBConfigGroupList> <cloudDBConfigGroup> <configGroupNo>0</configGroupNo> <configGroupType>system</configGroupType> <configGroupName>mssql_2016_default</configGroupName> </cloudDBConfigGroup> </cloudDBConfigGroupList> </getCloudDBConfigGroupListResponse>
getCloudDBImageProductList
API명
상품이미지리스트
action
getCloudDBImageProductList
설명
사용 가능한 CloudDB 이미지 상품 리스트 조회
요청 파라미터
파라미터명 | 간략 설명 | 타입 | 제약 | 필수여부 |
---|---|---|---|---|
exclusionProductCode | 제외할상품코드 | string | Min : 1, Max : 20 | No |
productCode | 조회할상품코드 | string | Min : 1, Max : 20 | No |
dbKindCode | DB유형코드 | string | MYSQL, MSSQL, REDIS | Yes |
regionNo | 리전번호 | string | No | |
responseFormatType | response의 결과 format 설정 | String | No |
exclusionProductCode
- 제외할 상품 코드를 20개까지 명시할 수 있습니다.
productCode
- 조회할 상품 코드를 20개까지 명시할 수 있습니다.
dbKindCode
- 조회할 CloudDB의 종류 선택 (MSSQL, MYSQL, REDIS) 입력 합니다.
responseFormatType
- API 실행 결과를 응답 받을 format을 정합니다. xml과 json 중에서 선택 가능합니다.
Example
요청
{CloudDB_API_URL}/getCloudDBImageProductList?dbKindCode=MSSQL
응답
<getCloudDBImageProductListResponse> <requestId>661a3159-6afc-4f7d-ac1f-4b425cb59232</requestId> <returnCode>0</returnCode> <returnMessage>success</returnMessage> <productList> <product> <productCode>SPSWMSSQLWINNT01</productCode> <productName>MSSQL 2016 standard edition</productName> <productType> <code>WINNT</code> <codeName>Windows NT</codeName> </productType> <productDescription>Windows Server 2012r2 with MSSQL 2016 standard edition</productDescription> <infraResourceType> <code>SW</code> <codeName>Software</codeName> </infraResourceType> <cpuCount>0</cpuCount> <memorySize>0</memorySize> <baseBlockStorageSize>53687091200</baseBlockStorageSize> <platformType> <code>WND64</code> <codeName>Windows 64 Bit</codeName> </platformType> <osInformation>Windows Server 2012r2 with MSSQL 2016 standard edition</osInformation> <dbKindCode>MSSQL</dbKindCode> <addBlockStorageSize>0</addBlockStorageSize> </product> </productList> <totalRows>1</totalRows> </getCloudDBImageProductListResponse>
getCloudDBProductListRequest
API명
상품리스트
action
getCloudDBProductListRequest
설명
사용 가능한 CloudDB 상품 리스트 조회
요청 파라미터
파라미터명 | 간략 설명 | 타입 | 제약 | 필수여부 |
---|---|---|---|---|
exclusionProductCode | 제외할상품코드 | string | Min : 1, Max : 20 | No |
cloudDBImageProductCode | 조회할 이미지 상품 코드 | string | Yes | |
productCode | 조회할상품코드 | string | No | |
regionNo | 리전번호 | string | No | |
zoneNo | 존 번호 | string | No | |
responseFormatType | response의 결과 format 설정 | String | No |
- exclusionProductCode
- 제외할 상품 코드를 20개까지 명시할 수 있습니다.
- cloudDBImageProductCode
- getCloudDBImageProductList에서 얻은 코드값을 넣습니다.
- productCode
- 조회할 상품코드입니다.
- regionNo
- Server API인 getRegionList를 통해 얻을수 있습니다.
zoneNo
- Server API인 getZoneList를 통해 얻을수 있습니다.
responseFormatType
- API 실행 결과를 응답 받을 format을 정합니다. xml과 json 중에서 선택 가능합니다.
Example
요청
{CloudDB_API_URL}/getCloudDBProductListRequest?cloudDBImageProductCode=SPSWMSSQLWINNT01
응답
<getCloudDBProductListResponse> <requestId>09228255-0e4e-42ce-93ad-3a3d3c80ee74</requestId> <returnCode>0</returnCode> <returnMessage>success</returnMessage> <productList> <product> <productCode>SPSVRDBAAS000013</productCode> <productName>vCPU 2EA, Memory 4GB</productName> <productType> <code>STAND</code> <codeName>Standard</codeName> </productType> <productDescription>vCPU 2EA, Memory 4GB</productDescription> <infraResourceType> <code>DBAAS</code> <codeName>Cloud DB</codeName> </infraResourceType> <cpuCount>2</cpuCount> <memorySize>4294967296</memorySize> <baseBlockStorageSize>107374182400</baseBlockStorageSize> <osInformation /> <diskType> <code>NET</code> <codeName>Network Storage</codeName> </diskType> <dbKindCode /> <addBlockStorageSize>0</addBlockStorageSize> </product> <product> <productCode>SPSVRDBAAS000017</productCode> <productName>vCPU 2EA, Memory 8GB</productName> <productType> <code>STAND</code> <codeName>Standard</codeName> </productType> <productDescription>vCPU 2EA, Memory 8GB</productDescription> <infraResourceType> <code>DBAAS</code> <codeName>Cloud DB</codeName> </infraResourceType> <cpuCount>2</cpuCount> <memorySize>8589934592</memorySize> <baseBlockStorageSize>107374182400</baseBlockStorageSize> <osInformation /> <diskType> <code>NET</code> <codeName>Network Storage</codeName> </diskType> <dbKindCode /> <addBlockStorageSize>0</addBlockStorageSize> </product> <product> <productCode>SPSVRDBAAS000014</productCode> <productName>vCPU 4EA, Memory 8GB</productName> <productType> <code>STAND</code> <codeName>Standard</codeName> </productType> <productDescription>vCPU 4EA, Memory 8GB</productDescription> <infraResourceType> <code>DBAAS</code> <codeName>Cloud DB</codeName> </infraResourceType> <cpuCount>4</cpuCount> <memorySize>8589934592</memorySize> <baseBlockStorageSize>107374182400</baseBlockStorageSize> <osInformation /> <diskType> <code>NET</code> <codeName>Network Storage</codeName> </diskType> <dbKindCode /> <addBlockStorageSize>0</addBlockStorageSize> </product> <product> <productCode>SPSVRDBAAS000018</productCode> <productName>vCPU 4EA, Memory 16GB</productName> <productType> <code>STAND</code> <codeName>Standard</codeName> </productType> <productDescription>vCPU 4EA, Memory 16GB</productDescription> <infraResourceType> <code>DBAAS</code> <codeName>Cloud DB</codeName> </infraResourceType> <cpuCount>4</cpuCount> <memorySize>17179869184</memorySize> <baseBlockStorageSize>107374182400</baseBlockStorageSize> <osInformation /> <diskType> <code>NET</code> <codeName>Network Storage</codeName> </diskType> <dbKindCode /> <addBlockStorageSize>0</addBlockStorageSize> </product> <product> <productCode>SPSVRDBAAS000015</productCode> <productName>vCPU 8EA, Memory 16GB</productName> <productType> <code>STAND</code> <codeName>Standard</codeName> </productType> <productDescription>vCPU 8EA, Memory 16GB</productDescription> <infraResourceType> <code>DBAAS</code> <codeName>Cloud DB</codeName> </infraResourceType> <cpuCount>8</cpuCount> <memorySize>17179869184</memorySize> <baseBlockStorageSize>107374182400</baseBlockStorageSize> <osInformation /> <diskType> <code>NET</code> <codeName>Network Storage</codeName> </diskType> <dbKindCode /> <addBlockStorageSize>0</addBlockStorageSize> </product> <product> <productCode>SPSVRDBAAS000019</productCode> <productName>vCPU 8EA, Memory 32GB</productName> <productType> <code>STAND</code> <codeName>Standard</codeName> </productType> <productDescription>vCPU 8EA, Memory 32GB</productDescription> <infraResourceType> <code>DBAAS</code> <codeName>Cloud DB</codeName> </infraResourceType> <cpuCount>8</cpuCount> <memorySize>34359738368</memorySize> <baseBlockStorageSize>107374182400</baseBlockStorageSize> <osInformation /> <diskType> <code>NET</code> <codeName>Network Storage</codeName> </diskType> <dbKindCode /> <addBlockStorageSize>0</addBlockStorageSize> </product> <product> <productCode>SPSVRDBAAS000016</productCode> <productName>vCPU 16EA, Memory 32GB</productName> <productType> <code>STAND</code> <codeName>Standard</codeName> </productType> <productDescription>vCPU 16EA, Memory 32GB</productDescription> <infraResourceType> <code>DBAAS</code> <codeName>Cloud DB</codeName> </infraResourceType> <cpuCount>16</cpuCount> <memorySize>34359738368</memorySize> <baseBlockStorageSize>107374182400</baseBlockStorageSize> <osInformation /> <diskType> <code>NET</code> <codeName>Network Storage</codeName> </diskType> <dbKindCode /> <addBlockStorageSize>0</addBlockStorageSize> </product> <product> <productCode>SPSVRDBAAS000029</productCode> <productName>vCPU 8EA, Memory 64GB</productName> <productType> <code>HIMEM</code> <codeName>High Memory</codeName> </productType> <productDescription>vCPU 8EA, Memory 64GB</productDescription> <infraResourceType> <code>DBAAS</code> <codeName>Cloud DB</codeName> </infraResourceType> <cpuCount>8</cpuCount> <memorySize>68719476736</memorySize> <baseBlockStorageSize>107374182400</baseBlockStorageSize> <osInformation /> <diskType> <code>NET</code> <codeName>Network Storage</codeName> </diskType> <dbKindCode /> <addBlockStorageSize>0</addBlockStorageSize> </product> <product> <productCode>SPSVRDBAAS000030</productCode> <productName>vCPU 16EA, Memory 64GB</productName> <productType> <code>HIMEM</code> <codeName>High Memory</codeName> </productType> <productDescription>vCPU 16EA, Memory 64GB</productDescription> <infraResourceType> <code>DBAAS</code> <codeName>Cloud DB</codeName> </infraResourceType> <cpuCount>16</cpuCount> <memorySize>68719476736</memorySize> <baseBlockStorageSize>107374182400</baseBlockStorageSize> <osInformation /> <diskType> <code>NET</code> <codeName>Network Storage</codeName> </diskType> <dbKindCode /> <addBlockStorageSize>0</addBlockStorageSize> </product> <product> <productCode>SPSVRDBAAS000031</productCode> <productName>vCPU 16EA, Memory 128GB</productName> <productType> <code>HIMEM</code> <codeName>High Memory</codeName> </productType> <productDescription>vCPU 16EA, Memory 128GB</productDescription> <infraResourceType> <code>DBAAS</code> <codeName>Cloud DB</codeName> </infraResourceType> <cpuCount>16</cpuCount> <memorySize>137438953472</memorySize> <baseBlockStorageSize>107374182400</baseBlockStorageSize> <osInformation /> <diskType> <code>NET</code> <codeName>Network Storage</codeName> </diskType> <dbKindCode /> <addBlockStorageSize>0</addBlockStorageSize> </product> <product> <productCode>SPSVRDBAAS000032</productCode> <productName>vCPU 24EA, Memory 128GB</productName> <productType> <code>HIMEM</code> <codeName>High Memory</codeName> </productType> <productDescription>vCPU 24EA, Memory 128GB</productDescription> <infraResourceType> <code>DBAAS</code> <codeName>Cloud DB</codeName> </infraResourceType> <cpuCount>24</cpuCount> <memorySize>137438953472</memorySize> <baseBlockStorageSize>107374182400</baseBlockStorageSize> <osInformation /> <diskType> <code>NET</code> <codeName>Network Storage</codeName> </diskType> <dbKindCode /> <addBlockStorageSize>0</addBlockStorageSize> </product> </productList> <totalRows>11</totalRows> </getCloudDBProductListResponse>
rebootCloudDBServerInstance
API명
재시작
action
rebootCloudDBServerInstance
설명
데이터베이스를 리부팅하거나 장애조치 합니다.
요청 파라미터
파라미터명 | 간략 설명 | 타입 | 제약 | 필수여부 |
---|---|---|---|---|
cloudDBServerInstanceNo | CloudDb 서버 인스턴스번호 | string | Yes | |
isWithFailover | failover 여부 | bool | No | |
isRebootNow | 지금 재부팅 여부 | bool | No | |
rebootTime | 재부팅 예약시간 | string | Conditional | |
responseFormatType | response의 결과 format 설정 | string | No |
cloudDBServerInstanceNo
- getCloudDBInstanceList API로 조회한 cloudDBServerRole CodeName이 Master인 cloudDBServerInstanceNo를 입력합니다.
isWithFailover
- MSSQL만 지원하며, 기본값은 false입니다. 다른 CloudDb에서는 입력값이 무시됩니다.
isRebootNow
- MSSQL만 지원하며, 기본값은 true입니다.
rebootTime
- MSSQL만 지원하며, 2018-05-30T00:00:00+0900의 형식으로 입력하며, 현재시간+5분부터 입력 가능합니다. isRebootNow가 false일 경우 필수값입니다.
responseFormatType
- API 실행 결과를 응답 받을 format을 정합니다. xml과 json 중에서 선택 가능합니다.
Example
요청
{CloudDB_API_URL}/rebootCloudDBServerInstance?cloudDBServerInstanceNo=1057305
응답
<rebootCloudDBServerInstanceResponse> <returnCode>0</returnCode> <returnMessage>success</returnMessage> <totalRows>1</totalRows> <cloudDBInstanceList> <cloudDBInstance> <cloudDBInstanceNo>1057304</cloudDBInstanceNo> <cloudDBServiceName>msqa1</cloudDBServiceName> <dbKindCode>MSSQL</dbKindCode> <engineVersion>MSSQL 2016 standard edition</engineVersion> <cpuCount>2</cpuCount> <dataStorageType> <code>SSD</code> <codeName>SSD</codeName> </dataStorageType> <licenseCode>SPLA</licenseCode> <cloudDBPort>11433</cloudDBPort> <isHa>true</isHa> <cloudDBInstanceStatusName>restarting</cloudDBInstanceStatusName> <collation>Korean_Wansung_CI_AS</collation> <rebootScheduleTime>2018-11-13T10:51:36+0900</rebootScheduleTime> <createDate>2018-11-09T17:20:00+0900</createDate> <cloudDBImageProductCode>SPSWMSSQLWINNT01</cloudDBImageProductCode> <cloudDBProductCode>SPSVRDBAAS000013</cloudDBProductCode> <isCloudDBConfigNeedReboot>false</isCloudDBConfigNeedReboot> <isCloudDBNeedReboot>false</isCloudDBNeedReboot> <zone> <zoneNo>3</zoneNo> <zoneName>KR-2</zoneName> <zoneCode>KR-2</zoneCode> <zoneDescription>평촌 zone</zoneDescription> <regionNo>1</regionNo> </zone> <region> <regionNo>1</regionNo> <regionCode>KR</regionCode> <regionName>Korea</regionName> </region> <cloudDBConfigList /> <cloudDBConfigGroupList> <cloudDBConfigGroup> <configGroupNo>0</configGroupNo> <configGroupType>system</configGroupType> <configGroupName>mssql_2016_default</configGroupName> </cloudDBConfigGroup> </cloudDBConfigGroupList> <accessControlGroupList> <accessControlGroup> <accessControlGroupConfigurationNo>67517</accessControlGroupConfigurationNo> <accessControlGroupName>cloud-mssql-mntk</accessControlGroupName> <accessControlGroupDescription>Group for cloud MSSQL service 'msqa1' (automatically created)</accessControlGroupDescription> <isDefault>false</isDefault> <createDate>2018-11-09T17:20:35+0900</createDate> </accessControlGroup> </accessControlGroupList> <cloudDBServerInstanceList> <cloudDBServerInstance> <cloudDBServerInstanceNo>1057305</cloudDBServerInstanceNo> <cloudDBServerInstanceStatusName>restarting</cloudDBServerInstanceStatusName> <cloudDBServerName>m-1057304-001</cloudDBServerName> <cloudDBServerRole> <code>M</code> <codeName>Master</codeName> </cloudDBServerRole> <privateDnsName>mssql-108go.cdb.ntruss.com</privateDnsName> <publicDnsName /> <dataStorageSize>107374182400</dataStorageSize> <usedDataStorageSize>649068544</usedDataStorageSize> <createDate>2018-11-09T17:20:00+0900</createDate> <uptime>2018-11-09T17:28:00+0900</uptime> </cloudDBServerInstance> <cloudDBServerInstance> <cloudDBServerName>m-1057304-002</cloudDBServerName> <cloudDBServerRole> <code>H</code> <codeName>Hidden Master</codeName> </cloudDBServerRole> </cloudDBServerInstance> </cloudDBServerInstanceList> </cloudDBInstance> </cloudDBInstanceList> </rebootCloudDBServerInstanceResponse>
flushCloudDBInstance
- API명
데이터삭제
action
flushCloudDBInstance
설명
Redis 데이터를 삭제합니다.
- 요청 파라미터
파라미터명 | 간략 설명 | 타입 | 제약 | 필수여부 |
---|---|---|---|---|
cloudDBInstanceNo | 클라우드DB인스턴스번호 | String | REDIS | Yes |
- Example
요청
{CloudDB_API_URL}/flushCloudDBInstance?cloudDBInstanceNo=1010270
응답
<flushCloudDBInstanceResponse> <returnCode>0</returnCode> <returnMessage>success</returnMessage> <totalRows>1</totalRows> <cloudDBInstanceList> <cloudDBInstance> <cloudDBInstanceNo>1010270</cloudDBInstanceNo> <cloudDBServiceName>testab</cloudDBServiceName> <dbKindCode>REDIS</dbKindCode> <engineVersion>REDIS 4.0.2</engineVersion> <cpuCount>4</cpuCount> <memorySize>3221225472</memorySize> <licenseCode>BSD</licenseCode> <cloudDBPort>6379</cloudDBPort> <isHa>true</isHa> <backupTime>12:30</backupTime> <backupFileRetentionPeriod>1</backupFileRetentionPeriod> <cloudDBInstanceStatusName>settingup</cloudDBInstanceStatusName> <collation /> <createDate>2018-10-18T23:15:00+0900</createDate> <cloudDBImageProductCode>SPSWREDISLINUX01</cloudDBImageProductCode> <cloudDBProductCode>SPSVRDBAAS000008</cloudDBProductCode> <isCloudDBConfigNeedReboot>false</isCloudDBConfigNeedReboot> <isCloudDBNeedReboot>false</isCloudDBNeedReboot> <zone> <zoneNo>2</zoneNo> <zoneName>KR-1</zoneName> <zoneCode>KR-1</zoneCode> <zoneDescription>가산 zone</zoneDescription> <regionNo>1</regionNo> </zone> <region> <regionNo>1</regionNo> <regionCode>KR</regionCode> <regionName>Korea</regionName> </region> <cloudDBConfigList> <cloudDBConfig> <configName>hash-max-ziplist-entries</configName> <configValue>512</configValue> </cloudDBConfig> <cloudDBConfig> <configName>hash-max-ziplist-value</configName> <configValue>64</configValue> </cloudDBConfig> <cloudDBConfig> <configName>list-max-ziplist-entries</configName> <configValue>512</configValue> </cloudDBConfig> <cloudDBConfig> <configName>list-max-ziplist-value</configName> <configValue>64</configValue> </cloudDBConfig> <cloudDBConfig> <configName>maxmemory-policy</configName> <configValue>volatile-lru</configValue> </cloudDBConfig> <cloudDBConfig> <configName>zset-max-ziplist-entries</configName> <configValue>128</configValue> </cloudDBConfig> <cloudDBConfig> <configName>zset-max-ziplist-value</configName> <configValue>64</configValue> </cloudDBConfig> </cloudDBConfigList> <cloudDBConfigGroupList /> <accessControlGroupList> <accessControlGroup> <accessControlGroupConfigurationNo>64420</accessControlGroupConfigurationNo> <accessControlGroupName>cloud-redis-lnj2</accessControlGroupName> <accessControlGroupDescription>Group for cloud Redis service 'testab' (automatically created)</accessControlGroupDescription> <isDefault>false</isDefault> <createDate>2018-10-18T23:15:50+0900</createDate> </accessControlGroup> </accessControlGroupList> <cloudDBServerInstanceList> <cloudDBServerInstance> <cloudDBServerInstanceNo>1010271</cloudDBServerInstanceNo> <cloudDBServerInstanceStatusName>settingup</cloudDBServerInstanceStatusName> <cloudDBServerName>testafe-001</cloudDBServerName> <cloudDBServerRole> <code>M</code> <codeName>Master</codeName> </cloudDBServerRole> <privateDnsName>redis-uqiv.cdb.ntruss.com</privateDnsName> <publicDnsName /> <dataStorageSize>0</dataStorageSize> <createDate>2018-10-18T23:15:00+0900</createDate> <uptime>2018-10-18T23:18:00+0900</uptime> </cloudDBServerInstance> <cloudDBServerInstance> <cloudDBServerName>testafe-002</cloudDBServerName> <cloudDBServerRole> <code>H</code> <codeName>Hidden Master</codeName> </cloudDBServerRole> </cloudDBServerInstance> </cloudDBServerInstanceList> </cloudDBInstance> </cloudDBInstanceList> </flushCloudDBInstanceResponse>
getCloudDBConfigGroupList
API명
설정그룹리스트
action
getCloudDBConfigGroupList
설명
사용 가능한 CloudDB Config group 조회
요청 파라미터
파라미터명 | 간략 설명 | 타입 | 제약 | Data Type |
---|---|---|---|---|
dbKindCode | DB유형코드 | String | MYSQL, MSSQL, REDIS | Yes |
responseFormatType | response의 결과 format 설정 | String | No |
dbKindCode
- MYSQL, MSSQL, REDIS 중 선택 가능합니다.
responseFormatType
- API 실행 결과를 응답 받을 format을 정합니다. xml과 json 중에서 선택 가능합니다.
Example
요청
{CloudDB_API_URL}/getCloudDBConfigGroupList?dbKindCode=MSSQL
응답
<getCloudDBConfigGroupListResponse> <returnCode>0</returnCode> <returnMessage>success</returnMessage> <totalRows>2</totalRows> <cloudDBConfigGroupList> <cloudDBConfigGroup> <configGroupNo>0</configGroupNo> <configGroupType>system</configGroupType> <configGroupName>mssql_2016_default</configGroupName> </cloudDBConfigGroup> <cloudDBConfigGroup> <configGroupNo>19</configGroupNo> <configGroupType>user</configGroupType> <configGroupName>ldhtest</configGroupName> </cloudDBConfigGroup> </cloudDBConfigGroupList> </getCloudDBConfigGroupListResponse>
DMS
setObjectStorageInfo
API명
DMS오브젝트스토리지설정저장
action
setObjectStorageInfo
설명
오브젝트스토리지정보를 설정합니다. (파일 업로드 다운로드를 위해 반드시 설정되어야 하며, NCloud 나 Amazon S3 호환 API 오브젝트스토리지, 아카이브스토리지로부터 복구할 수 있습니다.) 현재 DMS는 MSSQL 만 지원되고 있습니다.
요청 파라미터
파라미터명 | 간략 설명 | 타입 | 제약 | 필수여부 |
---|---|---|---|---|
objectStorageAccessKey | s3 api access key | String | Yes | |
objectStorageSecretKey | s3 api secret key | String | Yes | |
endpoint | 접근URL | String | Yes | |
bucketName | 폴더이름 | String | Yes | |
responseFormatType | response의 결과 format 설정 | String | No |
objectStorageAccessKey
- s3 API 호환 access key입니다. 네이버 클라우드 오브젝트 스토리지의 경우 포털 > 마이페이지 > 인증키 관리에서 키를 만들 수 있습니다.
objectStorageSecretKey
- s3 API 호환 secret key입니다. 네이버 클라우드 오브젝트 스토리지의 경우 access key 옆 secret key 보기를 통해 확인할 수 있습니다.
endpoint
- s3 API 호환 endpoint입니다. 네이버 클라우드 오브젝트 스토리지의 경우 https://docs.ncloud.com/en/storage/storage-7-1.html 페이지에서 request domain을 확인할 수 있습니다.
bucketName
- DMS에서 사용할 오브젝트스토리지의 bucket 이름입니다. bucket은 윈도우즈 시스템의 드라이브(C:)와 같은 개념이며, 전체 오브젝트 스토리지에서 유일합니다. 네이버 클러우드 오브젝트 스토리지 콘솔에서 버킷을 만들고 해당 이름을 입력합니다.
responseFormatType
- API 실행 결과를 응답 받을 format을 정합니다. xml과 json 중에서 선택 가능합니다.
Example
요청
{CloudDB_API_URL}/setObjectStorageInfo?objectStorageAccessKey=1vC3VPgZ1X6e4nqSd0TK&objectStorageSecretKey=PGgM0dXAGOXlavgKVbXeqTpzWBLlqqRSgYA701K6&endpoint=https%3A%2F%2Fkr.objectstorage.ncloud.com&bucketName=kimmsobj
응답
<setObjectStorageInfoResponse> <requestId>899ef374-bea9-4806-9fef-fdd97e3fb7d6</requestId> <returnCode>0</returnCode> <returnMessage>success</returnMessage> </setObjectStorageInfoResponse>
downloadDmsFile
API명
오브젝트스토리지->내부백업스토리지다운로드
action
downloadDmsFile
설명
setObjectStorageInfo를 이용해 저장한 정보를 이용해 Amazon S3 호환 스토리지부터 내부 복구용 스토리지로 백업 파일을 다운로드합니다. 내부 복구용 스토리지로 파일이 옮겨져야 해당 백업파일을 이용해 데이터베이스를 복구할 수 있습니다. 예제 출력에서 requestNo를 저장 후 getDmsOperation API를 이용해 진행 상태를 조회할 수 있습니다.
요청 파라미터
파라미터명 | 간략 설명 | 타입 | 제약 | 필수여부 |
---|---|---|---|---|
cloudDBInstanceNo | 클라우드DB인스턴스번호 | string | Yes | |
fileName | 파일이름 | string | Yes | |
responseFormatType | response의 결과 format 설정 | string | No |
cloudDBInstanceNo
- 클라우드DB인스턴스 번호입니다. 인스턴스 리스트로부터 구할수 있으며, MSSQL의 경우 DB Server 이름이 m-1010059-001 이라면, 1010059가 cloudDBInstanceNo입니다.
fileName
- 다운로드할 파일이름을 입력합니다. S3 오브젝트스토리지의 bucket 하위 파일이름입니다. 폴더 이름을 포함할 경우 해당 폴더이름에 subfolder/BackupFile.Bak 등과 같이 입력할 수 있습니다. folder 명 없이 파일이름만 쓸 경우 구분자 없이 파일 이름만 입력 합니다.
responseFormatType
- API 실행 결과를 응답 받을 format을 정합니다. xml과 json 중에서 선택 가능합니다.
Example
입력
{CloudDB_API_URL}/downloadDmsFile?cloudDBInstanceNo=1010059&fileName=filename.full
출력
<downloadDmsFileResponse> <requestId>57a350ef-bbb0-4ff6-8e08-5de3ad7795d5</requestId> <returnCode>0</returnCode> <returnMessage>success</returnMessage> <requestNo>781996</requestNo> </downloadDmsFileResponse>
uploadDmsFile
API명
내부백업스토리지->오브젝트스토리지업로드
action
uploadDmsFile
설명
운영중이던 데이터베이스는 자동으로 백업을 수행하게 되고, 해당 백업파일을 오브젝트스토리지로 업로드합니다. (downloadDmsFile 이 참조하는 내부 복구전용 디렉토리와 uploadDmsFile이 참조하는 백업 디렉토리는 백업 파일의 안정성 문제로 서로 다른 물리적 경로입니다.)
요청 파라미터
파라미터명 | 간략 설명 | 타입 | 제약 | 필수여부 |
---|---|---|---|---|
cloudDBInstanceNo | 클라우드DB인스턴스번호 | string | Yes | |
fileName | 파일이름 | string | Yes | |
responseFormatType | response의 결과 format 설정 | string | No |
cloudDBInstanceNo
- 클라우드DB인스턴스번호 입력합니다.
fileName
- getBackupList API를 이용해 조회한 파일이름 입력합니다.
responseFormatType
- API 실행 결과를 응답 받을 format을 정합니다. xml과 json 중에서 선택 가능합니다.
Example
요청
{CloudDB_API_URL}/uploadDmsFile?cloudDBInstanceNo=1010059&fileName=newRestoreDb_20181019_160029.full
응답
<uploadDmsFileResponse> <requestId>38b59004-e63e-43de-ba55-fdfa02ff716d</requestId> <returnCode>0</returnCode> <returnMessage>success</returnMessage> <requestNo>782184</requestNo> </uploadDmsFileResponse>
getObjectStorageBackupList
API명
내부백업스토리지파일리스트(사용자)
action
getObjectStorageBackupList
설명
오브젝트스토리지에서 내부 백업스토리로 올린 백업 파일 리스트를 조회합니다. 데이터베이스 리스토어는 내부 백업스토리지로 옮겨진 파일을 대상으로 진행할 수 있습니다. 내부 백업스토리지 파일은 15일 후 완전히 삭제되며, 사용자가 삭제할 수 없습니다. (같은 파일명으로 오브젝트스토리지로부터 내부 백업스토리지로 다운로드 명령을 수행하면, 새로운 파일로 변경됩니다.) 리스트를 출력해 온프레미스, 오브젝트스토리지, 내부 백업스토리지의 용량이 같은지 확인합니다.
요청 파라미터
파라미터명 | 간략 설명 | 타입 | 제약 | 필수여부 |
---|---|---|---|---|
cloudDBInstanceNo | 클라우드DB인스턴스번호 | string | Yes | |
folderName | 폴더이름 | string | Yes | |
responseFormatType | response의 결과 format 설정 | string | No |
cloudDBInstanceNo
- 클라우드DB인스턴스번호 입력합니다.
folderName
- 폴더이름 입력합니다. 공백이나 /를 입력하면, 내부 백업스토리지의 root 폴더가 조회됩니다. 해당 폴더는 bucket의 root에 해당합니다.
responseFormatType
- API 실행 결과를 응답 받을 format을 정합니다. xml과 json 중에서 선택 가능합니다.
Example
요청
{CloudDB_API_URL}/getObjectStorageBackupList?cloudDBInstanceNo=1010059&folderName=/
응답
<getObjectStorageBackupListResponse> <requestId>6a232815-2f74-4e19-8324-ac2f951bbd43</requestId> <returnCode>0</returnCode> <returnMessage>success</returnMessage> <totalRows>1</totalRows> <dmsFileList> <dmsFile> <fileLength>2906624</fileLength> <lastWriteTime>2018-11-10T17:03:53+0900</lastWriteTime> <fileName>CloudControl.full</fileName> </dmsFile> </dmsFileList> </getObjectStorageBackupListResponse>
getBackupList
API명
내부백업스토리지파일리스트(자동백업)
action
getBackupList
설명
자동 백업 리스트를 조회합니다.
요청 파라미터
파라미터명 | 간략 설명 | 타입 | 제약 | 필수여부 |
---|---|---|---|---|
cloudDBInstanceNo | 클라우드DB인스턴스번호 | String | Yes | |
databaseName | 데이터베이스이름 | String | No | |
type | 백업유형코드 | String | No | |
responseFormatType | response의 결과 format 설정 | String | No |
cloudDBInstanceNo
- 클라우드DB인스턴스번호를 입력합니다.
databaseName
- 데이터베이스 이름을 입력합니다.
type
- D(Database), L (TrasactionLog)
Example
요청
{CloudDB_API_URL}/getBackupList?cloudDBInstanceNo=1057304
응답
<getBackupListResponse> <requestId>6f416c7f-dd74-42fc-b067-02553147e8da</requestId> <returnCode>0</returnCode> <returnMessage>success</returnMessage> <totalRows>2</totalRows> <backupFileList> <backupFile> <hostName>m-1057304-001</hostName> <fileName>msdb_20181109_173443.full</fileName> <databaseName>msdb</databaseName> <firstLsn>137000000047600037</firstLsn> <lastLsn>137000000050000001</lastLsn> <backupType> <code>D</code> <codeName>Database Log</codeName> </backupType> <backupStartTime>2018-11-09T17:34:44+0900</backupStartTime> <backupEndTime>2018-11-09T17:34:44+0900</backupEndTime> </backupFile> <backupFile> <hostName>m-1057304-001</hostName> <fileName>msdb_20181110_000108.full</fileName> <databaseName>msdb</databaseName> <firstLsn>137000000080600017</firstLsn> <lastLsn>137000000081500001</lastLsn> <backupType> <code>D</code> <codeName>Database Log</codeName> </backupType> <backupStartTime>2018-11-10T00:03:10+0900</backupStartTime> <backupEndTime>2018-11-10T00:03:10+0900</backupEndTime> </backupFile> </backupFileList> </getBackupListResponse>
restoreDmsDatabase
API명
리스토어데이터베이스
action
restoreDmsDatabase
설명
내부 백업스토리지로 옮긴 파일을 이용해 데이터베이스를 복구합니다. 별도로 restore databasea [userdb] with recovery API를 제공하지 않기 때문에 isRecovery 옵션에 주의 합니다. 응답의 requestNo를 getDmsOperation API를 이용해 진행 상태를 조회할 수 있습니다.
요청 파라미터
파라미터명 | 간략 설명 | 타입 | 제약 | 필수여부 |
---|---|---|---|---|
cloudDBInstanceNo | 클라우드DB인스턴스번호 | String | Yes | |
fileName | 파일이름 | String | Yes | |
isRecovery | Recovery여부 | Boolean | Yes | |
newDatabaseName | 새로운 데이터베이스이름 | String | Yes | |
responseFormatType | response의 결과 format 설정 | String | No |
cloudDBInstanceNo
- 클라우드DB인스턴스번호 입력합니다.
fileName
- 파일이름 입력합니다. 오브젝트 스토리지의 bucket 하위에 폴더를 만들어 업로드한경우는 subfolder/filename 형식을 취합니다.
isRecovery
- 리스토어시 recovery와 norecovery 모드를 선택합니다. 더 이상 로그 백업을 복구하지 않을 경우 1을 입력하고 restoreDmdLog API를 이용해 추가 로그 리커버리를 수행할 경우 0을 입력 합니다.
newDatabaseName
- restore 할 새로운 database 이름을 입력합니다. 복구 대상 데이터베이스 인스턴스에 중복되지 않는 이름으로 입력 합니다.
Example
요청
{CloudDB_API_URL}/restoreDmsDatabase?cloudDBInstanceNo=1010059&fileName=d1.full&isRecovery=0
응답
<restoreDmsDatabaseResponse> <requestId>e7ed561c-50de-4772-8791-c6b9bf5dbe10</requestId> <returnCode>0</returnCode> <returnMessage>success</returnMessage> <requestNo>782352</requestNo> </restoreDmsDatabaseResponse>
restoreDmsTransactionLog
API명
restoreDmsTransactionLog
action
DMS트랜잭션로그복구
설명
DMS트랜잭션로그복구합니다.
요청 파라미터
파라미터명 | 간략 설명 | 타입 | 제약 | 필수여부 |
---|---|---|---|---|
cloudDBInstanceNo | 클라우드DB인스턴스번호 | String | Yes | |
fileName | 파일이름 | String | Yes | |
isRecovery | Recovery여부 | Boolean | Yes | |
newDatabaseName | 새로운 데이터베이스이름 | String | Yes | |
stopTime | stopat time시간 | String | No | |
responseFormatType | response의 결과 format 설정 | String | No |
cloudDBInstanceNo
- 클라우드DB인스턴스번호 입력합니다.
fileName
- 파일이름 입력합니다.
isRecovery
- 리스토어시 recovery와 norecovery 모드를 선택합니다. 마지막 트랜젝션 로그 백업을 복구할 때 1을 입력 합니다.
newDatabaseName
- restore 할 새로운 database 이름을 입력합니다.
stopTime
- restore 할 시점(stopat)을 입력합니다. yyyy-MM-dd'T'HH:mm:ssZ 포맷으로 입력하고, NULL 값일경우 마지막시간까지 복구합니다. 예: 2018-11-10T10:10:10+0900
responseFormatType
- API 실행 결과를 응답 받을 format을 정합니다. xml과 json 중에서 선택 가능합니다.
Example
요청
{CloudDB_API_URL}/restoreDmsTransactionLog?cloudDBInstanceNo=1010059&fileName=d1.log&isRecovery=1
응답
<restoreDmsTransactionLogResponse> <requestId>55589c37-ba91-42fb-9e8f-fd43b38c603d</requestId> <returnCode>0</returnCode> <returnMessage>success</returnMessage> <requestNo>782402</requestNo> </restoreDmsTransactionLogResponse>
getDmsOperation
API명
DMS명령수행상태조회
action
getDmsOperation
설명
DMS상태조회합니다. 예제 응답에서 codeName을 확인합니다.
요청 파라미터
파라미터명 | 간략 설명 | 타입 | 제약 | 필수여부 |
---|---|---|---|---|
requestNo | 비동기명령수행번호 | string | Yes | |
responseFormatType | response의 결과 format 설정 | string | No |
requestNo
- 명령 수행 후 requestNo를 반환 받습니다. 해당 번호를 입력하면 명령 수행 상태를 조회할 수 있습니다.
responseFormatType
- API 실행 결과를 응답 받을 format을 정합니다. xml과 json 중에서 선택 가능합니다.
Example
요청
{CloudDB_API_URL}/getDmsOperation?requestNo=782063
응답
<getDmsOperationResponse> <requestId>e358ae1d-f4e4-4c03-8cb9-ac145da595a4</requestId> <returnCode>0</returnCode> <returnMessage>success</returnMessage> <status> <code>COMP</code> <codeName>completed</codeName> </status> </getDmsOperationResponse>
Example
PostExample
리전의 존 리스트를 출력하는 Post 예제 (Server API 참조)
public async void PostExample() { Config config = Config.Instance; var postParams = new List<KeyValuePair<string, string>>(); postParams.Add(new KeyValuePair<string, string>("responseFormatType", "json")); postParams.Add(new KeyValuePair<string, string>("regionNo", "1")); postParams.Add(new KeyValuePair<string, string>("responseFormatType", "json")); AsyncCall asyncCall = new AsyncCall(); Task<string> result = asyncCall.WebApiCall(config.ncpUrl, GetPostType.POST, "/server/v1/getZoneList", postParams); string json = await result; Console.WriteLine("* PostResult *"); Console.WriteLine(json); }
GetExample
MSSQL의 설정그룹 리스트를 출력하는 예제 (CloudDb API 참조)
public async void GetExample() { Config config = Config.Instance; AsyncCall asyncCall = new AsyncCall(); Task<string> result = asyncCall.WebApiCall(config.ncpUrl, GetPostType.GET, "/clouddb/v1/getCloudDBConfigGroupList?dbKindCode=MSSQL&responseFormatType=json", ""); string json = await result; Console.WriteLine("* GetResult *"); Console.WriteLine(json); }
ConsoleApplicationFullExample
예제에서 accessKey, secureKey, apiKey를 변경한 후 실행
Action에서 v1 요청과 v2 요청의 차이는 apiKey 포함 여부입니다. 아래 예제는 v1 예제입니다.
using System; using System.Collections.Generic; using System.Threading.Tasks; using System.Text; using System.Net.Http; using System.Threading; using System.Security.Cryptography; namespace ApiExample { enum GetPostType { POST, GET }; public class Config { private static readonly Lazy<Config> lazy = new Lazy<Config>(() => new Config(), LazyThreadSafetyMode.ExecutionAndPublication); public static Config Instance { get { return lazy.Value; } } public string accessKey { get { return "11vC3VPgZ1X6e4nqSd0TK1"; } } public string secureKey { get { return "1PGgM0dXAGOXlavgKVbXeqTpzWBLlqqRSgYA701K61"; } } public string apiKey { get { return "1r68YnlrFNpdaOYMiL2BLljsmv92YCGw01usfbkiS1"; } } public string ncpUrl { get { return @"https://ncloud.apigw.ntruss.com"; } } } class Program { static void Main(string[] args) { Program p = new Program(); p.PostExample(); p.GetExample(); Console.ReadKey(); } public async void PostExample() { Config config = Config.Instance; var postParams = new List<KeyValuePair<string, string>>(); postParams.Add(new KeyValuePair<string, string>("responseFormatType", "json")); postParams.Add(new KeyValuePair<string, string>("regionNo", "1")); postParams.Add(new KeyValuePair<string, string>("responseFormatType", "json")); AsyncCall asyncCall = new AsyncCall(); Task<string> result = asyncCall.WebApiCall(config.ncpUrl, GetPostType.POST, "/server/v1/getZoneList", postParams); string json = await result; Console.WriteLine("* PostResult *"); Console.WriteLine(json); } public async void GetExample() { Config config = Config.Instance; AsyncCall asyncCall = new AsyncCall(); Task<string> result = asyncCall.WebApiCall(config.ncpUrl, GetPostType.GET, "/clouddb/v1/getCloudDBConfigGroupList?dbKindCode=MSSQL&responseFormatType=json", ""); string json = await result; Console.WriteLine("* GetResult *"); Console.WriteLine(json); } } class AsyncCall { public async Task<string> WebApiCall(string url, GetPostType calltype, string action) { return await WebApiCall(url, calltype, action, ""); } public async Task<string> WebApiCall(string ncpUrl, GetPostType calltype, string action, List<KeyValuePair<string, string>> parameters) { Config config = Config.Instance; string accessKey = config.accessKey; string secureKey = config.secureKey; string apiKey = config.apiKey; string responseString = string.Empty; try { using (HttpClient client = new HttpClient()) { client.Timeout = TimeSpan.FromMilliseconds(5000); string timestamp = string.Empty; string sig = Auth.Instance.makeSignature(calltype, action, ref timestamp, accessKey, secureKey, apiKey); string url = ncpUrl + action; client.DefaultRequestHeaders.Add("x-ncp-apigw-timestamp", timestamp); client.DefaultRequestHeaders.Add("x-ncp-apigw-api-key", apiKey); client.DefaultRequestHeaders.Add("x-ncp-iam-access-key", accessKey); client.DefaultRequestHeaders.Add("x-ncp-apigw-signature-v1", sig); if (calltype == GetPostType.POST) { var content = new FormUrlEncodedContent(parameters); var response = await client.PostAsync(url, content); responseString = await response.Content.ReadAsStringAsync(); } else { var response = await client.GetAsync(url); responseString = await response.Content.ReadAsStringAsync(); } } } catch (Exception ex) { Console.WriteLine("{0}, {1}", ex.Message, ex.StackTrace); } return responseString; } public async Task<string> WebApiCall(string ncpUrl, GetPostType calltype, string action, string parameters) { Config config = Config.Instance; string accessKey = config.accessKey; string secureKey = config.secureKey; string apiKey = config.apiKey; string responseString = string.Empty; try { using (HttpClient client = new HttpClient()) { client.Timeout = TimeSpan.FromMilliseconds(5000); string timestamp = string.Empty; string sig = Auth.Instance.makeSignature(calltype, action, ref timestamp, accessKey, secureKey, apiKey); string url = ncpUrl + action; client.DefaultRequestHeaders.Add("x-ncp-apigw-timestamp", timestamp); client.DefaultRequestHeaders.Add("x-ncp-apigw-api-key", apiKey); client.DefaultRequestHeaders.Add("x-ncp-iam-access-key", accessKey); client.DefaultRequestHeaders.Add("x-ncp-apigw-signature-v1", sig); if (calltype == GetPostType.POST) { var content = new StringContent(parameters, Encoding.UTF8, "application/json"); var response = await client.PostAsync(url, content); responseString = await response.Content.ReadAsStringAsync(); } else { var response = await client.GetAsync(url); responseString = await response.Content.ReadAsStringAsync(); } } } catch (Exception ex) { Console.WriteLine("{0}, {1}", ex.Message, ex.StackTrace); } return responseString; } } class Auth { private static readonly Lazy<Auth> lazy = new Lazy<Auth>(() => new Auth(), LazyThreadSafetyMode.ExecutionAndPublication); Config config; public static Auth Instance { get { return lazy.Value; } } Auth() { config = Config.Instance; } public string makeSignature(GetPostType calltype, string action, ref string stringtimestamp, string accessKey, string secureKey, string apiKey) { if (string.IsNullOrEmpty(action)) return "parameter error"; long timestamp = (long)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalMilliseconds; string space = " "; string newLine = "\n"; string method = calltype == GetPostType.POST ? "POST" : "GET"; string url = action; stringtimestamp = timestamp.ToString(); string message = new StringBuilder() .Append(method) .Append(space) .Append(url) .Append(newLine) .Append(stringtimestamp) .Append(newLine) .Append(apiKey) .Append(newLine) .Append(accessKey) .ToString(); byte[] secretKey = Encoding.UTF8.GetBytes(secureKey); HMACSHA256 hmac = new HMACSHA256(secretKey); hmac.Initialize(); byte[] bytes = Encoding.UTF8.GetBytes(message); byte[] rawHmac = hmac.ComputeHash(bytes); return Convert.ToBase64String(rawHmac); } } }
SampleAppDownload
https://github.com/NaverCloudPlatform/DataMigrationTool에서 샘플 애플리케이션 소스를 다운로드할 수 있습니다. (GPL-V3 오픈소스)