Amazon Web Services

nodejs를 위한 AWS SDK

본 수업에서는 AWS를 제어하는 방법으로서 SDK를 사용하는 방법을 알아봅니다.

실습환경

nodejs 실습환경을 구축하는 방법은 아래의 링크를 참고해주세요. 

https://opentutorials.org/module/1946/11767

SDK 설치

npm install aws-sdk --save

사용자 생성 및 권한 부여

IAM에서 사용자를 생성 한 후에 AWS 인프라에 접속하기 위한 권한을 부여해야 합니다. 예를들어 EC2를 제어한다고 하면 AmazonEC2FullAccess 권한을 부여해야 합니다. 권한은 최소한으로 주셔야 안전합니다. 

인증파일 생성

~/.aws/credentials 에 아래 형식으로 키 값을 넣어주세요. 참고

[default]
aws_access_key_id = <YOUR_ACCESS_KEY_ID>
aws_secret_access_key = <YOUR_SECRET_ACCESS_KEY>

예제 소스 코드

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');
});

아래와 같이 구동시킵니다. 

sudo node app.js

 

댓글

댓글 본문
  1. 당당
    2023.06.22
  2. fndlwl64
    자세한 이유는 저도 모르겠지만
    sudo apt-get install libcap2-bin
    sudo setcap cap_net_bind_service=+ep `readlink -f \`which node\``
    이렇게 하면 null이 안뜨고 정상 작동합니다.

    출처 : https://stackoverflow.com......080
    위 링크에서 보면 port(80)은 안전한 사용자(safe user) 접근이 제한 되어 있는데 node로 실행하는 것에 한해서 그 제한을 푸는 방식으로 sudo 없이 app.js 실행할 수 있게 하는 걸로 해결한 것으로 추측됩니다.
    아직 학습이 부족해서 정확한 이유는 모르겠네요.
    대화보기
    • 화려하게간다
      나둔데 수벌....
      대화보기
      • labis98
        20220130 좋은 강의 감사합니다.
      • 드두드두
        저도 밑에 dldlsgh89님처럼 app.get('/ec2' function(req, res)~~~~ 이부분에서 res.json(data) 가 null이 뜨고 자격증명 오류가 뜨는데 어떻게 해결해야 하나요ㅠㅠ... 80번포트에 접속안하고 console로만 했을 경우에는 오류가 안뜹니다....도와주세욥ㅠㅠ
      • 이한성
        강의 잘 들었습니다.
      • 제이치
        수강 완료!
      • Woori
        잘봤습니다
      • dldlsgh89
        동영상보면서 마지막까지 진행했는데 저같은 경우 이상하게 sudo node app.js를 실행하면 credentials에서 자격증명이 누락됐다는 에러가 뜨네요. 근데 그냥 node app.js를 하면 잘나옵니다. 다시 말해서 ssh로 접속해서 인스턴스정보를 확인할때는 잘 되는데 웹상으로 접속해서 /ec2 경로로 들어가서 json 파일로 확인하려고 하면 에러가 뜹니다;; 무슨 권한 문제인건가 싶다가도 동영상에서 하는데로 그대로 따라했는데도 왜 안되지싶어요 ㅋㅋ;; 다른 분들은 잘 되나요?
      • 코린이
        윈도우 환경에서는 mkdir ~/.aws 이 명령어가 안 되서 사용자 디렉터리에다 폴더랑 파일 만들었는데
        'AWS was not able to validate the provided access credentials'에러가 뜹니다. 윈도우 환경에서 하신
        동영상 강의도 있나요 ㅠㅠ
      • 고생
        인증파일 생성 하기전에 mkdir ~/.aws 해주셔야 합니다.. 동영상엔 나오고 밑에 글엔 없으니 참고
      • 궁금
        이미 php할때 .aws와 credentials를 생성해놨으면 또 안해도 되는건가요??