##はじめに
AWS環境で発生するイベントを、AWSサービスやSaaSのサービスと紐付けることができるサービスがAmazon EventBridgeになります。
チュートリアルのEC2インスタンス状態変更イベントをKinesisストリームにIngestする手順をやってみます。
https://docs.aws.amazon.com/ja_jp/eventbridge/latest/userguide/relay-events-kinesis-stream.html
##試してみる
###事前作業
Kinesisストリームを作成します
aws kinesis create-stream --stream-name test --shard-count 1
###Amazon EventBridgeのルール作成
管理コンソールでAmazon EventBridgeの画面を開きます。
ルール作成をクリックします。
###パターンを定義
・イベントパターン
・イベント一致パターン:サービスごとの事前定義パターン
・サービスプロバイダー:AWS
・サービス名:EC2
・イベントタイプ:EC2 Instance State-change Notification
・特定の状態:running
・任意のインスタンス
イベントパターン
{
"source": [
"aws.ec2"
],
"detail-type": [
"EC2 Instance State-change Notification"
],
"detail": {
"state": [
"running"
####イベントバスを選択
AWS のデフォルトのイベントバス
選択したイベントバスでルールを有効にする
####ターゲットを選択
先程作成したKinesisストリームを選択する
作成をクリックする
###テスト
EC2を起動する。
Cloudwatchイベントが発火し、KinesisストリームにデータがPutされる。
Kinesisストリームの確認
シャードイテレータの確認
$ aws kinesis get-shard-iterator --shard-id shardId-000000000000 --shard-iterator-type TRIM_HORIZON --stream-name test --region ap-northeast-1
{
"ShardIterator": "AAAAAAAAAAE1mZhG3rrfdQ5tdAaeUbQa2ypHZFGOL/bNXDJrMPwQ6k6cOFwg0Uu/Kc9Coqn1pOfEj6urr9izKxk7/H7dB2DB6Ntw371oTx/Uxi5ixBBOMhkFb4MEVWNAvcW63bSBe7Z+Am7GS7lP1CZJaNV1vnMDKOX42SAStBr2BneylFxgZm25sdq/n1omPCc9JGZqO4dmDxn+txU6k64jvHm+uVSM"
}
データを取得
$ aws kinesis get-records --shard-iterator "AAAAAAAAAAE1mZhG3rrfdQ5tdAaeUbQa2ypHZFGOL/bNXDJrMPwQ6k6cOFwg0Uu/Kc9Coqn1pOfEj6urr9izKxk7/H7dB2DB6Ntw371oTx/Uxi5ixBBOMhkFb4MEVWNAvcW63bSBe7Z+Am7GS7lP1CZJaNV1vnMDKOX42SAStBr2BneylFxgZm25sdq/n1omPCc9JGZqO4dmDxn+txU6k64jvHm+uVSM" --region ap-northeast-1
{
"Records": [
{
"SequenceNumber": "49597676585257306017395502932031331338920563685948653570",
"ApproximateArrivalTimestamp": 1563343124.406,
"Data": "eyJ2ZXJzaW9uIjoiMCIsImlkIjoiNWMzYTRhYTYtOGY0ZS02YzQ3LTlkMTEtNjEwOGU0NWJlY2YyIiwiZGV0YWlsLXR5cGUiOiJFQzIgSW5zdGFuY2UgU3RhdGUtY2hhbmdlIE5vdGlmaWNhdGlvbiIsInNvdXJjZSI6ImF3cy5lYzIiLCJhY2NvdW50IjoiNzkzNDkzMjg4NzA0IiwidGltZSI6IjIwMTktMDctMTdUMDU6NTg6NDNaIiwicmVnaW9uIjoiYXAtbm9ydGhlYXN0LTEiLCJyZXNvdXJjZXMiOlsiYXJuOmF3czplYzI6YXAtbm9ydGhlYXN0LTE6NzkzNDkzMjg4NzA0Omluc3RhbmNlL2ktMGY1YThkOWIzMDQyZjczNmMiXSwiZGV0YWlsIjp7Imluc3RhbmNlLWlkIjoiaS0wZjVhOGQ5YjMwNDJmNzM2YyIsInN0YXRlIjoicnVubmluZyJ9fQ==",
"PartitionKey": "5c3a4aa6-8f4e-6c47-9d11-6108e45becf2_b25f9c09-11fa-6a82-b840-013b6ae39b76"
}
],
"NextShardIterator": "AAAAAAAAAAG6RsTO2LGqtJLbeMj702cPpUN2Q7uWc/wCaocHWcbo6VHydK2J6hYdwgsL6FrRE31VtpcJAII02j+Ao/il/g5nPQ4jJiPyDqBm3F86Fn9UMTaVIs/I35oeiznH1+Lk8RbXcXj1/S5Bi6sbbF9hFY1lbJG9Ue1E3cBLK3BZz+8vbcanlFQlZ3XDxSNc8hxyOrzG0+lWSWwfzxZ2Dc96F4cW",
"MillisBehindLatest": 0
}
データを確認
base64デコードする
$ echo "eyJ2ZXJzaW9uIjoiMCIsImlkIjoiNWMzYTRhYTYtOGY0ZS02YzQ3LTlkMTEtNjEwOGU0NWJlY2YyIiwiZGV0YWlsLXR5cGUiOiJFQzIgSW5zdGFuY2UgU3RhdGUtY2hhbmdlIE5vdGlmaWNhdGlvbiIsInNvdXJjZSI6ImF3cy5lYzIiLCJhY2NvdW50IjoiNzkzNDkzMjg4NzA0IiwidGltZSI6IjIwMTktMDctMTdUMDU6NTg6NDNaIiwicmVnaW9uIjoiYXAtbm9ydGhlYXN0LTEiLCJyZXNvdXJjZXMiOlsiYXJuOmF3czplYzI6YXAtbm9ydGhlYXN0LTE6NzkzNDkzMjg4NzA0Omluc3RhbmNlL2ktMGY1YThkOWIzMDQyZjczNmMiXSwiZGV0YWlsIjp7Imluc3RhbmNlLWlkIjoiaS0wZjVhOGQ5YjMwNDJmNzM2YyIsInN0YXRlIjoicnVubmluZyJ9fQ==" | base64 -D
{"version":"0","id":"5c3a4aa6-8f4e-6c47-9d11-6108e45becf2","detail-type":"EC2 Instance State-change Notification","source":"aws.ec2","account":"XXXXXXXXXX","time":"2019-07-17T05:58:43Z","region":"ap-northeast-1","resources":["arn:aws:ec2:ap-northeast-1:XXXXXXXXXX:instance/i-0f5a8d9b3042f736c"],"detail":{"instance-id":"i-0f5a8d9b3042f736c","state":"running"}}"
CloudWatchイベントの情報が取得できていることを確認する。
##投稿内容は私個人の意見であり、所属企業・部門見解を代表するものではありません。