0

私はLambda Node.jsコードのASG名をハードコードするときに機能する自動縮約グループの "Terminate"プロセスを中断するためにLambda関数を作成しました。私は、CloudFormationテンプレートで「ASGName」カスタムリソースプロパティ(下記参照)からASG名をプルする必要があります。Node.js Lambda関数からCloudFormation変数を参照する

SuspendProcess: 
Type: Custom::SuspendProcess 
Properties: 
    ServiceToken: arn:aws:lambda:eu-west-1:############:function:TestFunction 
    Region: !Ref AWS::Region 
    ASGName: !Ref ASG 
DependsOn: "ASG" 

私はCloudFormation「ASGNameからASG名を引っ張るためにNode.jsのが機能伝えるにはどうすればよいです"上記のプロパティ?

これはNode.jsの機能コードである:

var AWS = require('aws-sdk'); 
var uuid = require('uuid'); 
AWS.config.update({ region: 'eu-west-1' }); 

exports.handler = (event, context, callback) => { 

AWS.config.apiVersions = { 
    autoscaling: '2011-01-01', 
}; 

var autoscaling = new AWS.AutoScaling(); 
var ASGName = parseInt(event.ResourceProperties.ASGName); 

/* This suspends the specified scaling process for the specified Auto 
Scaling group. */ 

var params = { 
    AutoScalingGroupName: "ASGName", 
    ScalingProcesses: [ 
    "Terminate" 
    ] 
}; 
autoscaling.suspendProcesses(params, function(err, data) { 
    if (err) console.log(err, err.stack); // an error occurred 
    else  console.log(data);   // successful response 
}); 
}; 

I次いでAutoscalingGroupNameとしてこれを参照CloudFormationプロパティを指すように可変= ASGNameを作成する試みました。私はここで構文が正しくないことを知っています。私は多くの例を見てきましたが、どれもうまくいきません。

任意の助けをいただければ幸いですので、私はNode.jsのに新たなんです!

おかげ

答えて

0

代わりのプロパティでそれを取得しようと、私はあなたがnodeJSは、あなたのASGName変数にその情報を入れて、そのリソースを取得するためのコードをSDK使用することをお勧め。あなたの応答のための

var params = { 
    LogicalResourceId: 'STRING_VALUE', /* required */ 
    StackName: 'STRING_VALUE' /* required */ 
}; 
cloudformation.describeStackResource(params, function(err, data) { 
    if (err) console.log(err, err.stack); // an error occurred 
    else  ASGName = data;   // successful response 
}); 

http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudFormation.html#describeStackResource-property

+0

感謝。私はそれ以来、現在動作しているコードを書き直しました。次の構文を使用して値を取得しました。var ASGName(event.ResourceProperties.ASGName); – sharksdev

関連する問題