AWS API, CLI 활용하기

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

EC2

EC2 인스턴스 정보를 가져오는 방법은 다음과 같습니다.

  • Filters: 가져온 EC2 인스턴스 정보 중에서 조건대로 걸러내는 옵션입니다.
    • Name: 걸러낼 항목입니다. availability-zone, instance-state-name 등 EC2 인스턴스 정보에서 모든 항목을 설정할 수 있습니다.
    • Values: 걸러낼 항목의 값을 배열 형태로 설정합니다.
  • InstanceIds: 가져올 EC2 인스턴스의 ID를 배열 형태로 설정합니다.

ec2_1.js

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

ec2 = new AWS.EC2();

var params = {
  Filters: [
    {
      Name: 'availability-zone',
      Values: [
        'ap-northeast-1a',
      ]
    }
  ],
  InstanceIds: [ 'i-0e7abc17', 'i-4d7bbd54' ]
};

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

AWS CLI

$ aws ec2 describe-instances --instance-ids i-0e7abc17 i-4d7bbd54 --filters "Name=availability-zone,Values=ap-northeast-1c"

EC2 인스턴스를 시작하는 방법은 다음과 같습니다.

  • InstanceIds: 시작할 EC2 인스턴스의 ID를 배열 형태로 설정합니다.
  • DryRun: 테스트 실행 옵션입니다. DryRun 옵션을 사용하면 API 호출 결과가 반영되지는 않지만 API 호출 에러는 그대로 표시되므로 디버깅할 때 유용합니다.

EC2 인스턴스를 재부팅하는 rebootInstances, EC2 인스턴스를 삭제하는 terminateInstances 함수도 사용 방법이 동일합니다.

ec2_2.js

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

ec2 = new AWS.EC2();

var params = {
  InstanceIds: [ 'i-0e7abc17' ], // 필수
  DryRun: false
};

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

AWS CLI

$ aws ec2 start-instances --instance-ids i-0e7abc17 --no-dry-run
$ aws ec2 start-instances --instance-ids i-0e7abc17 --dry-run
$ aws ec2 reboot-instances --instance-ids i-0e7abc17
$ aws ec2 terminate-instances --instance-ids i-0e7abc17

EC2 인스턴스를 정지하는 방법은 다음과 같습니다.

  • InstanceIds: 정지할 EC2 인스턴스의 ID를 배열 형태로 설정합니다.
  • DryRun: 테스트 실행 옵션입니다.
  • Force: 시스템 종료로 정지시키지 않고 강제로 정지시키는 옵션입니다.

ec2_3.js

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

ec2 = new AWS.EC2();

var params = {
  InstanceIds: [ 'i-0e7abc17' ], // 필수
  DryRun: false,
  Force: false
};

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

AWS CLI

$ aws ec2 stop-instances --instance-ids i-0e7abc17 --no-force
$ aws ec2 stop-instances --instance-ids i-0e7abc17 --force
$ aws ec2 stop-instances --instance-ids i-0e7abc17 --no-dry-run
$ aws ec2 stop-instances --instance-ids i-0e7abc17 --dry-run

EC2 인스턴스 생성하는 방법은 다음과 같습니다.

  • ImageId: EC2 인스턴스를 생성할 AMI 이미지 ID를 설정합니다.
  • MaxCount, MinCount: 생성할 EC2 인스턴스 개수를 설정합니다.
  • Monitoring: 세부 모니터링 사용 옵션입니다.
  • DryRun: 테스트 실행 옵션입니다.
  • IamInstanceProfile: EC2 인스턴스에 사용할 IAM 역할 이름을 설정합니다.
  • InstanceType: 인스턴스 유형을 설정합니다.
  • KeyName: EC2 인스턴스 접속에 사용할 키 쌍 이름을 설정합니다.

ec2_4.js

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

ec2 = new AWS.EC2();

var params = {
  ImageId: 'ami-25dd9324',  // 필수
  MaxCount: 1,  // 필수
  MinCount: 1,  // 필수
  Monitoring: { // 필수
    Enabled: false
  },
  DryRun: false,
  IamInstanceProfile: {
    Name: 'ExampleEC2Role'
  },
  InstanceType: 't1.micro',
  KeyName: 'awskeypair'
};

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

AWS CLI

$ aws ec2 run-instances --image-id ami-25dd9324 --count 1 --monitoring Enabled=false --iam-instance-profile Name=ExampleEC2Role --instance-type t1.micro --key-name awskeypair --no-dry-run

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


저작권 안내

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