AWS API, CLI 활용하기

이재홍 http://www.pyrasis.com 2014.03.24 ~ 2014.06.30

S3

S3에 파일을 올리는 방법은 다음과 같습니다.

  • fs.readFile 함수로 hello.jpg 파일을 읽습니다.
  • Bucket: 파일을 올릴 S3 버킷 이름을 설정합니다.
  • Key: S3 버킷에 저장할 객체 이름을 설정합니다.
  • ACL: 접근 권한입니다. private, public-read, public-read-write, authenticated-read, bucket-owner-read, bucket-owner-full-control를 사용할 수 있습니다.
  • Body: S3 객체의 데이터입니다. 문자열 형식, 버퍼 형식을 사용할 수 있습니다. 아래 코드에서는 fs.readFile 함수에서 읽은 데이터를 사용합니다.
  • ContentType: MIME 타입입니다. 파일에서 확장자가 없을 때는 반드시 MIME 타입을 설정해야 합니다. 확장자가 있는 파일은 확장자에 따라 자동으로 설정되므로 이 항목을 설정하지 않아도 됩니다. 하지만 HTTP에서 주로 사용하는 확장자가 아닐 때는 자동으로 설정되지 않으므로 MIME 타입을 설정해주어야 합니다.
  • Metadata: S3 전용 메타데이터입니다.
  • ServerSideEncryption: 서버에 저장될 때 암호화 방식입니다. AES256을 사용할 수 있으며 이 옵션을 삭제하면 암호화하지 않고 저장됩니다.
  • StorageClass: 스토리지 옵션입니다. STANDARD, REDUCED_REDUNDANCY를 사용할 수 있으며 이 옵션을 삭제하면 STANDARD로 저장됩니다.

S3 버킷을 생성하는 방법은 ‘11.1 S3 버킷 생성하기’를 참조하기 바랍니다.

s3_1.js

var fs = require('fs');
var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');

var s3 = new AWS.S3();

fs.readFile('./hello.jpg', function (err, data) {
  var params = {
    Bucket: 'examplebucket10', // 필수
    Key: 'hello.jpg', // 필수
    ACL: 'public-read',
    Body: data,
    ContentType: 'image/jpeg',
    Metadata: {
      someKey: 'Hello Metadata'
    },
    ServerSideEncryption: 'AES256',
    StorageClass: 'STANDARD',
  };

  s3.putObject(params, function (err, data) {
    if (err)
      console.log(err, err.stack);
    else
      console.log(data);
  });
});

AWS CLI

$ aws s3api put-object --bucket examplebucket10 --key hello.jpg --acl public-read --body ./hello.jpg  --content-type "image/jpeg" --metadata "someKey=Hello Metadata" --server-side-encryption AES256 --storage-class STANDARD

S3 버킷에서 파일을 받는 방법은 다음과 같습니다.

  • Bucket: 파일을 받을 S3 버킷 이름을 설정합니다.
  • Key: 받을 S3 객체의 이름을 설정합니다.
  • fs.writeFile 함수로 data.Body를 저장합니다.

s3_2.js

var fs = require('fs');
var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');

var s3 = new AWS.S3();

var params = {
  Bucket: 'examplebucket10', // 필수
  Key: 'hello.jpg', // 필수
};

s3.getObject(params, function (err, data) {
  if (err)
    console.log(err, err.stack);
  else {
    console.log(data);
    fs.writeFile('./hello.jpg', data.Body);
  }
});

AWS CLI

$ aws s3api get-object --bucket examplebucket10 --key hello.jpg hello.jpg

다른 함수들의 사용 방법은 다음 링크를 참조하기 바랍니다.
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.