각 리전의 인스턴스를 컨트롤하는 람다를 유지보수하는 일을 맡았다. 일단 리전 하나에서 관리하는 것도 충분히 힘들지만, 여러 리전에서 관리를 하다니… 같이 일하시는 분들이 대단해 보인다. 다들 기억력이 정말 좋으신듯 ㅠ_ㅠ 리전 하나당 관리하는 인스턴스 종류도 여러가지인데 꼼꼼하셔서 큰 사고없이 잘 유지중인 것 같다.
아무튼 각설하고, 오늘의 주제는 AWS autoScalingGroup 정보 가져오기 by. javascript
.
AWS에서는 SDK라고 해서 aws 관련한 모든 것에 접근할 수 있는 라이브러리를 제공한다.
평소에는 java-sdk로 aws에 접근하지만,
이번에는 람다용으로 개발할 거라서 javascript-sdk 용으로 설명한다.
(특이한 점: 각 언어별로 제공되는 파라미터 값이나 입력값이 다름. 메서드도 다르다!)
참고한 부분은 역시나 AWS docs의 AutoScaling 관련 부분임. AWS docs
AutoScalingGroupNames
/ MaxRecords
/ NextToken
은 필수값은 아님.const aws = require('aws-sdk'); | |
// autoScaling 객체 생성 | |
let autoScaling = new aws.autoScaling({region: {my_region}}); | |
var params = { | |
AutoScalingGroupNames: [ | |
'STRING_VALUE', | |
/* more items */ | |
], | |
MaxRecords: 'NUMBER_VALUE', | |
NextToken: 'STRING_VALUE' | |
}; | |
autoScaling.describeAutoScalingGroups(params, function(err, data) { | |
if (err) console.log(err, err.stack); // an error occurred | |
else console.log(data); // successful response | |
}); |
리턴하는 방식은 아래와 같다.
받아온 data
로 autoScaling을 어떻게 조작할지 개발하면 된다(이제 시작이라는 뜻ㅎ).
/* This example describes the specified Auto Scaling group. */ | |
var params = { | |
AutoScalingGroupNames: [ | |
"my-auto-scaling-group" | |
] | |
}; | |
autoscaling.describeAutoScalingGroups(params, function(err, data) { | |
if (err) console.log(err, err.stack); // an error occurred | |
else console.log(data); // successful response | |
/* | |
data = { | |
AutoScalingGroups: [ | |
{ | |
AutoScalingGroupARN: "arn:aws:autoscaling:us-west-2:123456789012:autoScalingGroup:930d940e-891e-4781-a11a-7b0acd480f03:autoScalingGroupName/my-auto-scaling-group", | |
AutoScalingGroupName: "my-auto-scaling-group", | |
AvailabilityZones: [ | |
"us-west-2c" | |
], | |
CreatedTime: <Date Representation>, | |
DefaultCooldown: 300, | |
DesiredCapacity: 1, | |
EnabledMetrics: [ | |
], | |
HealthCheckGracePeriod: 300, | |
HealthCheckType: "EC2", | |
Instances: [ | |
{ | |
AvailabilityZone: "us-west-2c", | |
HealthStatus: "Healthy", | |
InstanceId: "i-4ba0837f", | |
LaunchConfigurationName: "my-launch-config", | |
LifecycleState: "InService", | |
ProtectedFromScaleIn: false | |
} | |
], | |
LaunchConfigurationName: "my-launch-config", | |
LoadBalancerNames: [ | |
], | |
MaxSize: 1, | |
MinSize: 0, | |
NewInstancesProtectedFromScaleIn: false, | |
SuspendedProcesses: [ | |
], | |
Tags: [ | |
], | |
TerminationPolicies: [ | |
"Default" | |
], | |
VPCZoneIdentifier: "subnet-12345678" | |
} | |
] | |
} | |
*/ | |
}); |
Q. AutoScalingGroups의 DesiredCapacity
와 instances
의 차이?
desiredCapacity : scale-in / out이 발생하지 않으면 지속될 인스턴스 개수.
instances : 해당 오토스케일링 그룹에서 띄운 instance의 세부정보.
출처:
스택오버플로우