[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/인프라

Node.js - AWS SDK

inu 2021. 1. 30. 16:34
반응형

AWS SDK?

  • SDK : Software Development Kit의 약자로 특정 서비스를 프로그래밍적으로 제어하기 편리하도록 제공되는 라이브러리들을 의미한다.
  • 따라서 AWS SDK는 AWS를 프로그래밍적으로 제어하기 편리하도록 제공되는 라이브러리들을 의미하는 것이다.
  • 언어별로 다양한 SDK가 제공되며, 이 중 Node.js의 SDK를 사용해보자.

튜토리얼

패키지 설치

$ npm install aws-sdk --save
  • aws-sdk 패키지를 프로젝트에 설치해준다.
  • 이렇게 설치한 SDK는 바로 사용할 수 없고, 자격검증이 포함되어야 한다.
  • 일반적으로 AWS 환경 위에서 node.js를 돌리거나, ~/.awscredentials파일를 생성하여 자격검증을 진행한다.

자격검증

📃 credentials

[default]
aws_access_key_id = <YOUR_ACCESS_KEY_ID>
aws_secret_access_key = <YOUR_SECRET_ACCESS_KEY>
  • AWS의 Security and Identity에 위치한 IAM 서비스를 이용해 해당 정보를 받아올 수 있다.
  • IAM 서비스에서 Create User를 하고, User Names를 설정한뒤 Generate an access key for each user를 클릭하면 <YOUR_ACCESS_KEY_ID><YOUR_SECRET_ACCESS_KEY>에 해당하는 각 값을 얻어올 수 있다. 해당값을 파일에 입력하면 되는 것이다. (해당 키는 외부에 유출되어선 안된다.)
  • 이제 해당 user에게 인스턴스를 사용할 수 있는 권한을 주어야 한다. user 탭으로 돌아가 permissions 탭에서 Attach polish를 누른다. Amazon EC2 full Access를 체크하고 다음 스텝으로 넘어가면 EC2 접근에 대한 모든 권한을 설정한다. (다른 서비스라면 다른 권한을 체크해주어야 한다.)
  • cf. credentials 관련 문서

사용예제

📃 app.js

var express = require('express');
var app = express();
var AWS = require('aws-sdk');
AWS.config.region = 'ap-northeast-2';
var ec2  = new AWS.EC2();
app.get('/', function(req, res){
        res.send('Hello world');
});
app.get('/ec2', function(req, res){
        ec2.describeInstances({}, function(err, data) {
                res.json(data);
        });
});
app.listen(80, function(){
        console.log('Connect 80 port');
});
  • app.js에 require('aws-sdk')을 통해 AWS SDK 객체를 불러온다.
  • AWS.config.region을 통해 어떤 지역의 인프라를 사용할지 적절한 명칭을 찾아 불러온다. 한국의 경우 명칭은 ap-northeast-2이다.
  • cf. region list
  • new AWS.EC2()를 통해 EC2 객체를 생성한다. (현재 사용중인 서비스가 EC2가 아니라면 다른 것을 사용하면 된다.)
  • /ec2에 대해 라우팅을 설정해놓았기 때문에 /ec2로 접속시 현재 사용중인 ec2의 리스트를 리턴하는 ec2.describeInstances를 사용해 response에 해당 정보를 넘겨주고 출력하도록 한다.
반응형

'🛠 기타 > 인프라' 카테고리의 다른 글

AWS - S3  (0) 2021.01.30
AWS - Scalability  (0) 2021.01.29
AWS - EC2  (0) 2021.01.28
AWS - region, availability zone  (0) 2021.01.28