Message API reference

Overview

Samsung Cloud Platform 에서 제공하는 Queue Service는 메시지를 보내고 받고 그리고 삭제할 수 있습니다.
본 가이드에서는 Queue Service의 API에 대한 설명 및 호출하는 방법을 제공합니다.

Queue Service 호출 절차

Queue Service API URL주소는 운영환경과 Region에 따라 변경되어야 합니다. 아래의 표에서 해당 운영환경과 Region 정보를 확인하십시오.

운영 환경RegionQueue Service URL
For Samsungkr-west1https://queueservice.service.kr-west1.s.samsungsdscloud.com
For Samsungkr-east1https://queueservice.service.kr-east1.s.samsungsdscloud.com
For Enterprisekr-west1https://queueservice.service.kr-west1.e.samsungsdscloud.com
For Enterprisekr-east1https://queueservice.service.kr-east1.e.samsungsdscloud.com

API 호출하기

AUTH PARAMS

Header Description
Scp-Accesskey      : 삼성 클라우드 플랫폼 포털에서 발급받은 Access Key
Scp-Signature      : 호출 API 요청을 Access Key와 매핑되는 Access Secret Key로 암호화한 서명. HMAC 암호화 알고리즘은 HmacSHA256 사용
Scp-Target         : Queue Service에 요청하는 행위. ScpQS.SendMessage, ScpQS.SendMessageBatch, ScpQS.ReceiveMessage, ScpQS.DeleteMessage, ScpQS.DeleteMessageBatch 중 하나
Scp-Timestamp      : 1970년 1월 1일 00:00:00 협정 세계시(UTC)부터의 경과 시간을 밀리초(Millisecond)로 정의합니다.
Scp-ClientType     : user-api 명시

Signature 생성하기

  • 요청으로부터 서명할 문자열을 생성하고 Access, Secret Key로 HmacSHA256 알고리즘으로 암호화 후 Base64로 인코딩합니다.
  • 이 값을 Scp-Signature로 사용합니다.
  • 생성된 Signature는 15분간 유효합니다.1. 모든 서비스 > Application > Queue Service 메뉴를 클릭하세요. Queue Service의 Service Home 페이지로 이동합니다.
Signature 생성 Sample Code (Java)
public static String makeHmacSignature(String method,
                                       String url,
                                       String timestamp,
                                       String accessKey,
                                       String accessSecretKey,
                                       String clientType) {
 
    String body = method + url + timestamp + accessKey + clientType;
 
    String encodeBase64Str;
 
    try {
        byte[] message = body.getBytes("UTF-8");
        byte[] secretKey = accessSecretKey.getBytes("UTF-8");
 
        Mac mac = Mac.getInstance("HmacSHA256");
        SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey, "HmacSHA256");
        mac.init(secretKeySpec);
        byte[] hmacSha256 = mac.doFinal(message);
        encodeBase64Str = Base64.getEncoder().encodeToString(hmacSha256);
    } catch (Exception e) {
        throw new RuntimeException("Failed to calculate hmac-sha256", e);
    }
 
    return encodeBase64Str;
}
Signature 생성 Sample Code (JavaScript)
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/hmac-sha256.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/components/enc-base64-min.js"></script>
<script type="text/javascript">
function makeSignature() {
    var method = "POST"; // Method
    var url = "{url}"; // url
    var timestamp = Date.now(); // timestamp
    var accessKey = "{accessKey}"; // access key
    var secretKey = "{secretKey}"; // secret key
    var clientType= "user-api"; // client type
 
    url = encodeURI(url); // 한글, 특수 문자 처리
 
    var message = method + url + timestamp + accessKey + clientType;
 
    var hash = CryptoJS.HmacSHA256(message, secretKey);
    return CryptoJS.enc.Base64.stringify(hash);
}
</script>

Queue Service API 호출 예시

Curl

curl -i -X GET
-H "Scp-Accesskey:2sd2gg=2agbdSD26svcD"
-H "Scp-Signature:fsfsdf235f9U35sdgf35Xsf/qgsdgsdg326=sfsdr23rsef="
-H "Scp-Timestamp:1605290625682"
-H "Scp-ClientType:user-api"
-H "Scp-Target:ScpQS.SendMessage"
--data '{"MessageBody": "sample message",  "QueueUrl": "https://queueservice.kr-west1.e.samsungsdscloud.com/33ff0000a8a345d78cdf163673f3da11/samplequeue"}'
'https://queueservice.service.kr-west1.e.samsungsdscloud.com'

Python

import requests

url = "https://queueservice.service.kr-west1.e.samsungsdscloud.com"
payload = {
   'MessageBody': 'sample message',
   'QueueUrl': 'https://queueservice.kr-west1.e.samsungsdscloud.com/33ff0000a8a345d78cdf163673f3da11/samplequeue'
}
headers = {
  'Scp-Accesskey': '2sd2gg=2agbdSD26svcD',
  'Scp-Signature': 'fsfsdf235f9U35sdgf35Xsf/qgsdgsdg326=sfsdr23rsef=',
  'Scp-Timestamp': '1605290625682',
  'Scp-ClientType': 'user-api',
  'Scp-Target': 'ScpQS.SendMessage'
}

response = requests.request("GET", url, headers=headers, data=payload)

if response.status_code == 200:
    contents = response.text
    return contents
else:
    raise Exception(f"Failed to GET API: {response.status_code}, {response.text}")

Java

String apiUrl = "https://queueservice.service.kr-west1.e.samsungsdscloud.com";
String accessKey = "2sd2gg=2agbdSD26svcD"
String signature = "fsfsdf235f9U35sdgf35Xsf/qgsdgsdg326=sfsdr23rsef="
String timestamp = "1605290625682"
String clientType = "user-api"
String scpTarget = "ScpQS.SendMessage"

public static String getAPI(String token, String apiUrl) throws IOException {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpGet getRequest = new HttpGet(apiUrl);
        getRequest.addHeader("Scp-Accesskey", accessKey);
        getRequest.addHeader("Scp-Signature", signature);
        getRequest.addHeader("Scp-Timestamp", timestamp);
        getRequest.addHeader("Scp-ClientType", clientType);
        getRequest.addHeader("Scp-Target", scpTarget);

        HttpResponse response = httpClient.execute(getRequest);
        int statusCode = response.getStatusLine().getStatusCode();

        if (statusCode == 200) {
            String responseBody = EntityUtils.toString(response.getEntity());
            httpClient.close();
            return responseBody;
        } else {
            String responseBody = EntityUtils.toString(response.getEntity());
            httpClient.close();
            throw new RuntimeException("Failed to Request: " + statusCode + ", " + responseBody);
        }
    }

Queue Service API

SendMessage

POST https://queueservice.service.kr-west1.e.samsungsdscloud.com

Description

메세지 전송

Parameters

필드명필수 여부타입설명
MessageAttributesfalseMessageAttribute
MessageBodytruestring
MessageDeduplicationIdfalsestringFIFO Queue
MessageGroupIdfalsestringFIFO Queue
QueueUrltruestring
MessageAttribute
필드명필수 여부타입설명
BinaryValuefalsestring
DataTypefalsestring
StringValuefalsestring

Responses

HTTP CodeDescriptionSchema
200Created
400Bad Request
403Forbidden

Example HTTP request

Request Header
"Scp-Accesskey:2sd2gg=2agbdSD26svcD",
"Scp-Signature:fsfsdf235f9U35sdgf35Xsf/qgsdgsdg326=sfsdr23rsef=",
"Scp-Timestamp:1605290625682",
"Scp-ClientType:user-api",
"Scp-Target:ScpQS.SendMessage"
Request Body
{
  "QueueUrl": "https://queueservice.kr-west1.e.samsungsdscloud.com/123e54b7303749f38ca59a5c6d419a75/test",
  "MessageBody": "Hello SQS!",
  "MessageAttributes": {
    "Special": {
      "DataType": "string",
      "StingValue": "testBodyString12345678910!/wow$#@!"
    }
  }
}

Example HTTP response

200 Response
{
  "MD5OfMessageAttributes": "139818cac45117a07428826a8c533c01",
  "MD5OfMessageBody": "098f6bcd4621d373cade4e832627b4f6",
  "MessageId": "14b37b86-8117-484a-aea4-1eae3b98d5d0",
  "SequenceNumber": "11764568839"
}

SendMessageBatch

POST https://queueservice.service.kr-west1.e.samsungsdscloud.com

Description

메세지 대량 전송

Parameters

필드명필수 여부타입설명
Entriestruearray of SendMessageBatchRequestEntry
QueueUrltruestring
SendMessageBatchRequestEntry
필드명필수 여부타입설명
Idtruestring
MessageAttributesfalseMessageAttribute
MessageBodytruestring
MessageDeduplicationIdfalsestringFIFO Queue
MessageGroupIdfalsestringFIFO Queue

Responses

HTTP CodeDescriptionSchema
200Created
400Bad Request
403Forbidden

Example HTTP request

Request Header
"Scp-Accesskey:2sd2gg=2agbdSD26svcD",
"Scp-Signature:fsfsdf235f9U35sdgf35Xsf/qgsdgsdg326=sfsdr23rsef=",
"Scp-Timestamp:1605290625682",
"Scp-ClientType:user-api",
"Scp-Target:ScpQS.SendMessageBatch"
Request Body
{
   "QueueUrl": "https://queueservice.kr-west1.dev3.samsungsdscloud.com/123e54b7303749f38ca59a5c6d419a75/test",
   "Entries": [
      {
         "Id": "1",
         "MessageBody": "test-body-1"
      },
      {
         "Id": "2",
         "MessageBody": "test-body-2"
      }
   ]
}

Example HTTP response

200 Response
{
   "Failed": [],
   "Successful": [
      {
         "Id": "2",
         "MD5OfMessageAttributes": "d41d8cd98f00b204e9800998ecf8427e",
         "MD5OfMessageBody": "82ddf04637119b9a77e9b44095f5ba11",
         "MessageId": "68aa4629-bfbc-4bb0-898b-52db94438526",
         "SequenceNumber": "31764583416"
      },
      {
         "Id": "1",
         "MD5OfMessageAttributes": "d41d8cd98f00b204e9800998ecf8427e",
         "MD5OfMessageBody": "8344ca2f91203b151e4d0aafc9248a8b",
         "MessageId": "3523740f-9e7c-429e-8514-5ec21b1d3cd8",
         "SequenceNumber": "41764583416"
      }
   ]
}

ReceiveMessage

POST https://queueservice.service.kr-west1.e.samsungsdscloud.com

Description

메세지 수신

Parameters

필드명필수 여부타입설명
MaxNumberOfMessagesfalsestring
MessageAttributeNamesfalsearray of string
MessageSystemAttributeNamesfalsearray of string
QueueUrltruestring
WaitTimeSecondsfalsestring

Responses

HTTP CodeDescriptionSchema
200Created
400Bad Request
403Forbidden

Example HTTP request

Request Header
"Scp-Accesskey:2sd2gg=2agbdSD26svcD",
"Scp-Signature:fsfsdf235f9U35sdgf35Xsf/qgsdgsdg326=sfsdr23rsef=",
"Scp-Timestamp:1605290625682",
"Scp-ClientType:user-api",
"Scp-Target:ScpQS.ReceiveMessage"
Request Body
{
   "QueueUrl": "https://queueservice.kr-west1.dev3.samsungsdscloud.com/123e54b7303749f38ca59a5c6d419a75/test",
   "MaxNumberOfMessages": "2"
}

Example HTTP response

200 Response
{
   "messages": [
      {
         "MessageId": "14b37b86-8117-484a-aea4-1eae3b98d5d0",
         "Body": "sample-body-1",
         "Attributes": {},
         "MessageAttributes": {
            "Special": {
               "DataType": "string",
               "StingValue": "testBodyString12345678910!/wow$#@!"
            }
         },
         "MD5OfBody": "098f6bcd4621d373cade4e832627b4f6",
         "MD5OfMessageAttributes": "139818cac45117a07428826a8c533c01",
         "ReceiptHandle": "400tf1nY4HbXEP7UX4OtxPVIPlq9vw1eeKDFwNMeNiEuZvMSbvdPCBOF/P96FUF9XT7TALMzP91ViCxQjnOIyBWw+fr4EhihdJ0Z2QHau1LMHbxD+GngcM2Pv6d5HM4KCmBgB2GxFA5qpUFBPPI="
      },
      {
         "MessageId": "aee85517-1437-4877-8de8-00eee69e11dc",
         "Body": "sample-body-2",
         "Attributes": {},
         "MD5OfBody": "ad0234829205b9033196ba818f7a872b",
         "MD5OfMessageAttributes": "139818cac45117a07428826a8c533c01",
         "ReceiptHandle": "400tf1nY4HbXEP7UX4OtxPVIPlq9vw1eeKDFwNMeNiEuZvMSbvdPCBPVrfhxFxZ0XD7aBbEzP91Vi3pQ13KMxBWxrP74REyhKcgd2VLauFLMHbxD+GngcM2Pv6d5HCzyqhEoB9DHI5NmOhgaOJ4="
      }
   ]
}

DeleteMessage

POST https://queueservice.service.kr-west1.e.samsungsdscloud.com

Description

메세지 삭제

Parameters

필드명필수 여부타입설명
QueueUrltruestring
ReceiptHandletruestring

Responses

HTTP CodeDescriptionSchema
200Created
400Bad Request
403Forbidden

Example HTTP request

Request Header
"Scp-Accesskey:2sd2gg=2agbdSD26svcD",
"Scp-Signature:fsfsdf235f9U35sdgf35Xsf/qgsdgsdg326=sfsdr23rsef=",
"Scp-Timestamp:1605290625682",
"Scp-ClientType:user-api",
"Scp-Target:ScpQS.DeleteMessage"
Request Body
{
   "QueueUrl": "https://queueservice.kr-west1.dev3.samsungsdscloud.com/123e54b7303749f38ca59a5c6d419a75/test",
   "ReceiptHandle": "400tf1nY4HbXEP7UX4OtxPVIPlq9vw1eeKDFwNMeNiEuZvMSbvdPCBPVrfhxFxZ0XD7aBbEzP91Vi3pQ13KMxBWxrP74REyhKcgd2VLauFLMHbxD+GngcM2Pv6d5HCzyqhEoB9DHI5NmOhgaOJ4="
}

Example HTTP response

200 Response

DeleteMessageBatch

POST https://queueservice.service.kr-west1.e.samsungsdscloud.com

Description

메세지 대량 삭제

Parameters

필드명필수 여부타입설명
Entriestruearray of DeleteMessageBatchRequestEntry
QueueUrltruestring
DeleteMessageBatchRequestEntry
필드명필수 여부타입설명
Idtruestring
ReceiptHandletruestring

Responses

HTTP CodeDescriptionSchema
200Created
400Bad Request
403Forbidden

Example HTTP request

Request Header
"Scp-Accesskey:2sd2gg=2agbdSD26svcD",
"Scp-Signature:fsfsdf235f9U35sdgf35Xsf/qgsdgsdg326=sfsdr23rsef=",
"Scp-Timestamp:1605290625682",
"Scp-ClientType:user-api",
"Scp-Target:ScpQS.DeleteMessageBatch"
Request Body
{
   "QueueUrl": "https://queueservice.kr-west1.dev3.samsungsdscloud.com/123e54b7303749f38ca59a5c6d419a75/test",
   "Entries": [
      {
         "Id": "1",
         "ReceiptHandle": "400tf1nY4HbXEP7UX4OtxPVIPlq9vw1eeKDFwNMeNiEuZvMSbvdPCBOF/P96FUF9XT7TALMzP91ViCxQjnOIyBWw+fr4EhihdJ0Z2QHau1LMHbxD+GngcMyJvqN5F17gym/YF4JoroeBXMSvIG0="
      },
      {
         "Id": "2",
         "ReceiptHandle": "400tf1nY4HbXEP7UX4OtxPVIPlq9vw1eeKDFwNMeNiEuZvMSbvdPCBOC8PwoFhV3Uj6JV+BnP90P3n1Q1y/RnhW0rv//GE6sf8EZjwfauVLMHbxD+GngcMyJvqN5F1Hs5T3vAZxgIV20IPdscTQ="
      }
   ]
}

Example HTTP response

200 Response
{
   "Failed": [],
   "Successful": [
      {
         "Id": "1"
      },
      {
         "Id": "2"
      }
   ]
}
Release Note
How to guides