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]