저작권 안내
- 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
- 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.
AWS API, CLI 활용하기
이재홍 http://www.pyrasis.com 2014.03.24 ~ 2014.06.30
SQS
SQS 큐에 메시지를 보내는 방법은 다음과 같습니다.
- MessageBody: 메시지 내용입니다.
- QueueUrl: 메시지를 보낼 SQS 큐 URL입니다.
- DelaySeconds: 지연 전송 시간입니다.
- MessageAttributes: 메시지 추가 속성입니다.
- DataType: String, Number, Binary를 사용할 수 있습니다.
- StringValue: DataType이 String, Number일 때 사용합니다.
- BinaryValue: DataType이 Binary일 때 사용하며 Buffer 형식으로 값을 설정합니다.
sqs_1.js
var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');
var sqs = new AWS.SQS();
var params = {
MessageBody: 'Hello SQS', // 필수
QueueUrl: 'https://sqs.ap-northeast-1.amazonaws.com/232075047203/ExampleQueue', // 필수
DelaySeconds: 0,
MessageAttributes: {
someKey1: {
DataType: 'String', // 필수
StringValue: 'Hello String'
},
someKey2: {
DataType: 'Number', // 필수
StringValue: '10'
},
someKey3: {
DataType: 'Binary', // 필수
BinaryValue: new Buffer([1, 2, 3, 4])
}
}
};
sqs.sendMessage(params, function (err, data) {
if (err)
console.log(err, err.stack);
else
console.log(data);
});
메시지 추가 속성을 JSON 형태로 작성합니다.
{
"someKey1": {
"DataType": "String",
"StringValue": "Hello String"
},
"someKey2": {
"DataType": "Number",
"StringValue": "10"
}
}
--message-attributes 옵션에 작성한 JSON을 한 줄로 만들고 ' '(작은 따옴표)로 묶어서 설정합니다.
AWS CLI
$ aws sqs send-message --queue-url https://sqs.ap-northeast-1.amazonaws.com/232075047203/ExampleQueue --message-body "Hello SQS" --message-attributes '{ "someKey1": { "DataType": "String", "StringValue": "Hello String" }, "someKey2": { "DataType": "Number", "StringValue": "10" } }'
SQS 큐에 여러 메시지를 보내는 방법은 다음과 같습니다.
- Entries: 보낼 메시지를 배열 형태로 설정합니다.
- Id: 각 메시지의 ID입니다. 특별한 형식은 없고 Entries 배열 안에서만 고유하면 됩니다.
- 나머지는 메시지 보내기와 동일합니다.
sqs_2.js
var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');
var sqs = new AWS.SQS();
var params = {
Entries: [ // 필수
{
Id: 'abcd1',
MessageBody: 'Hello SQS 1', // 필수
DelaySeconds: 0,
MessageAttributes: {
someKey1: {
DataType: 'String', // 필수
StringValue: 'Hello String'
}
}
},
{
Id: 'abcd2',
MessageBody: 'Hello SQS 2', // 필수
DelaySeconds: 0,
MessageAttributes: {
someKey1: {
DataType: 'String', // 필수
StringValue: 'Hello String'
}
}
}
],
QueueUrl: 'https://sqs.ap-northeast-1.amazonaws.com/232075047203/ExampleQueue', // 필수
};
sqs.sendMessageBatch(params, function (err, data) {
if (err)
console.log(err, err.stack);
else
console.log(data);
});
보낼 메시지를 JSON 형태로 작성합니다.
[
{
"Id": "abcd1",
"MessageBody": "Hello SQS 1",
"DelaySeconds": 0,
"MessageAttributes": {
"someKey1": {
"DataType": "String",
"StringValue": "Hello String"
}
}
},
{
"Id": "abcd2",
"MessageBody": "Hello SQS 2",
"DelaySeconds": 0,
"MessageAttributes": {
"someKey1": {
"DataType": "String",
"StringValue": "Hello String"
}
}
}
]
--entries 옵션에 작성한 JSON을 한 줄로 만들고 ' '(작은 따옴표)로 묶어서 설정합니다.
AWS CLI
$ aws sqs send-message-batch --queue-url https://sqs.ap-northeast-1.amazonaws.com/232075047203/ExampleQueue --entries '[ { "Id": "abcd1", "MessageBody": "Hello SQS 1", "DelaySeconds": 0, "MessageAttributes": { "someKey1": { "DataType": "String", "StringValue": "Hello String" } } }, { "Id": "abcd2", "MessageBody": "Hello SQS 2", "DelaySeconds": 0, "MessageAttributes": { "someKey1": { "DataType": "String", "StringValue": "Hello String" } } } ]'
SQS 큐에서 메시지를 받는 방법은 다음과 같습니다.
- QueueUrl: 메시지를 받을 SQS 큐 URL입니다.
- AttributeNames: 메시지의 속성을 함께 받습니다. 속성을 모두 받으려면 All을 설정해도 됩니다.
- MaxNumberOfmessages: 함수 호출 한 번에 받을 최대 메시지 개수입니다. 이 옵션을 설정한다 하더라도 설정한 개수만큼 받을 수도 있고, 적게 받을 수도 있습니다.
- MessageAttributeNames: 메시지 추가 속성을 함께 받습니다. 속성 키 이름을 배열 형태로 설정하면 되고, 속성을 모두 받으려면 All을 설정하면 됩니다.
- VisibilityTimeout: 초 단위로 된 보기 제한 시간입니다.
- WaitTimeSeconds: 짧은 폴링, 긴 폴링을 사용 설정입니다. 0으로 설정하면 짧은 폴링, 1이상 설정하면 긴 폴링을 사용합니다.
sqs_3.js
var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');
var sqs = new AWS.SQS();
var params = {
QueueUrl: 'https://sqs.ap-northeast-1.amazonaws.com/232075047203/ExampleQueue', // 필수
AttributeNames: [
'ApproximateFirstReceiveTimestamp',
'ApproximateReceiveCount',
'SenderId',
'SentTimestamp'
],
MaxNumberOfMessages: 1,
MessageAttributeNames: [ 'someKey1', 'someKey2' ],
VisibilityTimeout: 0,
WaitTimeSeconds: 0
};
sqs.receiveMessage(params, function (err, data) {
if (err)
console.log(err, err.stack);
else
console.log(data);
});
AWS CLI
$ aws sqs receive-message --queue-url https://sqs.ap-northeast-1.amazonaws.com/232075047203/ExampleQueue --attribute-names ApproximateFirstReceiveTimestamp ApproximateReceiveCount SenderId SentTimestamp --max-number-of-messages 1 --message-attribute-names someKey1 someKey2 --visibility-timeout 0 --wait-time-seconds 0
SQS에서 메시지를 삭제하는 방법은 다음과 같습니다.
- QueueUrl: 메시지를 삭제할 SQS 큐 URL입니다.
- ReceiptHandle: 삭제할 메시지의 Receipt handle입니다. 이 값은 ReceiveMessage 함수로 메시지를 받았을 때 얻을 수 있습니다.
sqs_4.js
var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');
var sqs = new AWS.SQS();
var params = {
QueueUrl: 'https://sqs.ap-northeast-1.amazonaws.com/232075047203/ExampleQueue', // 필수
ReceiptHandle: 'cOJv9qrD9XLVlpsfwYn3xQmb+PN7hPQP9bttg4XRtlLJjwucxyntVfmsdEyaM79mad79Gd9kyG0mrLllzyQfgnAWr35aKF30LcDZGfTymgxNYGqDqUkNSi4kmQpkyWpx5rqxlfYwK87goD/mGDmlBpwEICkG+XX1qcNuv6qZVhChCiIvk6zEudwxKM5RSBUuaoQayrQyEGWsbW+F5UUXGfquwshpwrkGFrusptDAV37R6mhqc9fgShkIPhqj948fc6+pVsx/K91l3TzeWE2RRUx/5VoUtwvFTL2pfGg5VzYxCH3CgDp5TQ==', // 필수
};
sqs.deleteMessage(params, function (err, data) {
if (err)
console.log(err, err.stack);
else
console.log(data);
});
AWS CLI
$ aws sqs delete-message --queue-url https://sqs.ap-northeast-1.amazonaws.com/232075047203/ExampleQueue --receipt-handle cOJv9qrD9XLVlpsfwYn3xQmb+PN7hPQP9bttg4XRtlLJjwucxyntVfmsdEyaM79mad79Gd9kyG0mrLllzyQfgnAWr35aKF30LcDZGfTymgxNYGqDqUkNSi4kmQpkyWpx5rqxlfYwK87goD/mGDmlBpwEICkG+XX1qcNuv6qZVhChCiIvk6zEudwxKM5RSBUuaoQayrQyEGWsbW+F5UUXGfquwshpwrkGFrusptDAV37R6mhqc9fgShkIPhqj948fc6+pVsx/K91l3TzeWE2RRUx/5VoUtwvFTL2pfGg5VzYxCH3CgDp5TQ==
SQS 큐에서 여러 메시지를 삭제하는 방법은 다음과 같습니다.
- Entries: 삭제할 메시지를 배열 형태로 설정합니다.
- Id: 각 메시지의 ID입니다. 특별한 형식은 없고 Entries 배열 안에서만 고유하면 됩니다.
- 나머지는 메시지 삭제하기와 동일합니다.
sqs_5.js
var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');
var sqs = new AWS.SQS();
var params = {
Entries: [ // 필수
{
Id: 'abcd1',
ReceiptHandle: 'cOJv9qrD9XLVlpsfwYn3xQmb+PN7hPQPLvbKbLf00e/IVkoYGXIClWRjITleU8EbqAXtNiSV7T8mrLllzyQfgu0w7gaaHw8+gEHdHG7hCuZj60xWB5TI4kPjjV/MUdapjateCyEm0z65WeuxAS4Ek1l0SjmE5N/xC2dpWOLbFUckMs8XBsfXik95Y8/lXq55xFElXroXRfYS7hFdiLJMxcGXHmdcfD0QdJcpeUZm8wBUr207kWl6RSHiVbNrwtARY7z8v59MpKMF8bE+zk8DukIeAq61L7R6+2qfmcSJTqpiQwCnI9/PqQ==' // 필수
},
{
Id: 'abcd2',
ReceiptHandle: 'cOJv9qrD9XLVlpsfwYn3xQmb+PN7hPQPLvbKbLf00e/IVkoYGXIClWRjITleU8EbJo7ccHfwJEgmrLllzyQfgkCzVpECk03qgEHdHG7hCuZj60xWB5TI4kPjjV/MUdapjateCyEm0z65WeuxAS4Ek1l0SjmE5N/xC2dpWOLbFUckMs8XBsfXik95Y8/lXq55xFElXroXRfYS7hFdiLJMxTcp7lowhUMev8Z0XraO+cr06vpS/UXeOoU54BLWOy4+l3ApsTYkvVAF8bE+zk8DuglsZrJlCQSqyMrHz1q8QnYuwY2tJMtppg==' // 필수
}
],
QueueUrl: 'https://sqs.ap-northeast-1.amazonaws.com/232075047203/ExampleQueue', // 필수
};
sqs.deleteMessageBatch(params, function (err, data) {
if (err)
console.log(err, err.stack);
else
console.log(data);
});
삭제할 메시지를 JSON 형태로 작성합니다.
[
{
"Id": "abcd1",
"ReceiptHandle": "cOJv9qrD9XLVlpsfwYn3xQmb+PN7hPQPLvbKbLf00e/IVkoYGXIClWRjITleU8EbqAXtNiSV7T8mrLllzyQfgu0w7gaaHw8+gEHdHG7hCuZj60xWB5TI4kPjjV/MUdapjateCyEm0z65WeuxAS4Ek1l0SjmE5N/xC2dpWOLbFUckMs8XBsfXik95Y8/lXq55xFElXroXRfYS7hFdiLJMxcGXHmdcfD0QdJcpeUZm8wBUr207kWl6RSHiVbNrwtARY7z8v59MpKMF8bE+zk8DukIeAq61L7R6+2qfmcSJTqpiQwCnI9/PqQ=="
},
{
"Id": "abcd2",
"ReceiptHandle": "cOJv9qrD9XLVlpsfwYn3xQmb+PN7hPQPLvbKbLf00e/IVkoYGXIClWRjITleU8EbJo7ccHfwJEgmrLllzyQfgkCzVpECk03qgEHdHG7hCuZj60xWB5TI4kPjjV/MUdapjateCyEm0z65WeuxAS4Ek1l0SjmE5N/xC2dpWOLbFUckMs8XBsfXik95Y8/lXq55xFElXroXRfYS7hFdiLJMxTcp7lowhUMev8Z0XraO+cr06vpS/UXeOoU54BLWOy4+l3ApsTYkvVAF8bE+zk8DuglsZrJlCQSqyMrHz1q8QnYuwY2tJMtppg=="
}
]
--entries 옵션에 작성한 JSON을 한 줄로 만들고 ' '(작은 따옴표)로 묶어서 설정합니다.
AWS CLI
$ aws sqs delete-message-batch --queue-url https://sqs.ap-northeast-1.amazonaws.com/232075047203/ExampleQueue --entries '[ { "Id": "abcd1", "ReceiptHandle": "cOJv9qrD9XLVlpsfwYn3xQmb+PN7hPQPLvbKbLf00e/IVkoYGXIClWRjITleU8EbqAXtNiSV7T8mrLllzyQfgu0w7gaaHw8+gEHdHG7hCuZj60xWB5TI4kPjjV/MUdapjateCyEm0z65WeuxAS4Ek1l0SjmE5N/xC2dpWOLbFUckMs8XBsfXik95Y8/lXq55xFElXroXRfYS7hFdiLJMxcGXHmdcfD0QdJcpeUZm8wBUr207kWl6RSHiVbNrwtARY7z8v59MpKMF8bE+zk8DukIeAq61L7R6+2qfmcSJTqpiQwCnI9/PqQ==" }, { "Id": "abcd2", "ReceiptHandle": "cOJv9qrD9XLVlpsfwYn3xQmb+PN7hPQPLvbKbLf00e/IVkoYGXIClWRjITleU8EbJo7ccHfwJEgmrLllzyQfgkCzVpECk03qgEHdHG7hCuZj60xWB5TI4kPjjV/MUdapjateCyEm0z65WeuxAS4Ek1l0SjmE5N/xC2dpWOLbFUckMs8XBsfXik95Y8/lXq55xFElXroXRfYS7hFdiLJMxTcp7lowhUMev8Z0XraO+cr06vpS/UXeOoU54BLWOy4+l3ApsTYkvVAF8bE+zk8DuglsZrJlCQSqyMrHz1q8QnYuwY2tJMtppg==" } ]'
다른 함수들의 사용 방법은 링크를 참조하기 바랍니다.
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SQS.html
저작권 안내
이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.- 블로그, 게시판 등에 퍼가는 것을 금지합니다.
- 비공개 포스트에 퍼가는 것을 금지합니다.
- 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
- 링크 및 SNS 공유는 허용합니다.
Published
2014-09-30