2017-11-11 12 views
0

Cloudwatch AlarmのすべてのインスタンスのInstanceIdを取得するには、ディスクが90%の使用率に達した場合に電子メールを送信するためのクラウドウォッチアラームを作成しようとしています。Cloudwatch InstanceIdを取得

Resources:  
    EC2DiskHealth: 
    Type: AWS::CloudWatch::Alarm 
    Properties: 
    AlarmDescription: { "Fn::Join" : ["", [{ "Ref" : "AWSEBEnvironmentName" }, ": Disk Usage" ]]} 
    Namespace: System/Linux 
    MetricName: DiskSpaceAvailable 
    Dimensions: 
     - Name: InstanceId 
     Value : { "Ref" : "instance-id" } 
     - Name: Filesystem 
     Value: /dev/xvda1 
     - Name: MountPath 
     Value:/
    Statistic: Average 
    Period: 60 
    EvaluationPeriods: 5 
    Threshold: 
     Fn::GetOptionSetting: 
     OptionName: ELBHealth 
     DefaultValue: "90" 
    ComparisonOperator: GreaterThanThreshold 
    AlarmActions: 
     - arn:aws:sns:awsregion:sns 
    InsufficientDataActions: 
     - arn:aws:sns:awsregion:sns 
    OKActions: 
     - arn:aws:sns:awsregion:sns 

出力: 私はアラームが動作するためには、インスタンスIDを取得することができるはずです。

Dimensions: 
     - Name: InstanceId 
     Value : { "Ref" : "instance-id" } 

エラー:

Service:AmazonCloudFormation, Message:Template format error: Unresolved resource dependencies [instance-id] in the Resources block of the template 

答えて

2

あなたの状況があることが表示されます:

  • あなたはそのインスタンス上でいくつかのスクリプト/コードを実行しているいくつかの既存のAmazon EC2インスタンスに
  • を持っていますDiskSpaceAvailableというメトリックをAmazon CloudWatchに定期的に送信してください。
  • あなたはテンプレートがDiskSpaceAvailable

一定の基準を超えたときにこれが可能ではないすべてのEC2インスタンスのアラームを作成する必要がありCloudFormationテンプレート

  • を作成したいです。

    Amazon CloudWatchテンプレートは、リソースを作成することができ、リソースを参照することはできますが、外に出てリソースを発見したり、発見されたリソースをループしたりすることはできません。

    テンプレートは、たとえば、インスタンスを作成して、そのインスタンス専用のアラームを追加することができます。ただし、リソースを自動検出することはありません。

    あなたが望むことができる(コードを書く必要があります)AWS Lambda-backed Custom Resourceを書くことができますが、コードでCloudFormationではなくアラームを作成する必要があります。

    ボトムライン:ご利用の場合は、最高ではなくCloudFormationを使用するよりも、独自のコード(ラムダまたは単にストレートコード)を介して行われます。

  • 関連する問題