2017-11-07 27 views
0

boto3ライブラリを使用して、EMRクラスタを作成し、クラウドウォッチイベントを使用してクラスタの変更に基づいてイベントを作成します。emrクラスタにcloudwatchイベントを追加する

私はクラスタを作成することができますが、私は少しCloudWatchEvents section of boto3 worksと混同しています。

boto3ライブラリのCWEのドキュメントによれば、put_ruleという文字列のEventPatternというパラメータがあります。

イベントパターン(文字列) - イベントパターン。詳細については、Amazon CloudWatch EventsユーザーガイドのEvents and Event Patternsを参照してください。

記述で提供されるリンクに続き、それは次のようになりますJSONオブジェクトを示しています。私はそれを理解するように、これはカスタムイベントのためですが、EMRはevents for CloudWatchを提供

{ 
    "source": [ "aws.ec2" ], 
    "detail-type": [ "EC2 Instance State-change Notification" ], 
    "detail": { 
    "state": [ "running" ] 
    } 
} 

を。

EMRイベントで提供されているパターンに従っていた場合、このような文字列を入力する必要がありますか?

{ 
    "source": ["aws.emr"], 
    "detail-type": "EMR Cluster State Change", 
    "detail": { 
     "clusterid": <clusterid>, 
     "state": "STARTING" 
    } 
} 

このロジックにはいくつかの欠陥がありますか?私はちょっと混乱して、どのようにbotoドキュメントと一緒に収まるのか分かりません。

私は次のコードを使用して文字列に辞書を変換しようとしました:

client.put_rule(
    Name='Cluster_starting', 
    EventPattern=str({ 
     "source": ["aws.emr"], 
     "detail-type": "EMR Cluster State Change", 
     "detail": { 
      "clusterid": cluster_id, 
      "state": "STARTING" 
     } 
    }), 
    State="ENABLED" 
) 

をしかし、次のエラー戻った:私が指摘されたAWSのサポートに話した後

botocore.errorfactory.InvalidEventPatternException: An error occurred (InvalidEventPatternException) when calling the PutRule operation: Event pattern is not valid. Reason: Unexpected character (''' (code 39)): was expecting double-quote to start field name at [Source: {'source': ['aws.emr'], 'detail-type': 'EMR Cluster State Change', 'detail': {'state': 'STARTING', 'clusterid': '<cluster_id>'}}; line: 1, column: 3] 

答えて

0

をエラー。

例辞書では、すべての値が配列内に保持されているため、「clusterid」=「[]」である必要があり、引用符をエスケープする必要がありました。

関連する問題