ユースカジノ 登録 で開発のスタイルに合わせた
~ ユースカジノ 入金ボーナス Event と Pipeline の Event 編 ~
投稿日: 2024/03/11
はじめに
こんにちは、ユースカジノ 入金ボーナスです。
前回のコラムでは、Git-flow のブランチ戦略に対応するワークフローを実現するために CodeBuild ユースカジノ 入金ボーナスって GitHub の Push イベントを検出する部分についてご紹介しました。
今回は、Pipeline の起動のトリガーとして使用している ユースカジノ 入金ボーナス Event Notification と CodePipeline の状態変化を EventBridge の Rule で検出して Lambda を起動している部分の解説をします。
ユースカジノ 入金ボーナスは下記を御覧ください。
/solutions/cloud/column/article/83.html
ユースカジノ 入金ボーナスのおさらい
前回のコラムにも掲載しましたが、ユースカジノ 入金ボーナス作成した CI/CD パイプラインの概要図です。
今回着目するのは ユースカジノ 入金ボーナス から Lambda を起動する部分で使用している ユースカジノ 入金ボーナス Event Notification と、CodePipeline の status change に合わせて Lambda を起動するために使用している EventBridge の Rule (旧 CloudWatch Events Rule) についてです。
ユースカジノ 入金ボーナス の Object PUT イベントの取得
今回の構成では、CodeBuild が ユースカジノ 入金ボーナス に対して zip ファイルを PUT するので、そのイベントに連動させて Lambda を起動したいという要件がありました。
現在 ユースカジノ 入金ボーナス の Object PUT イベントを検出してなにか処理を行うためには以下の何れかの方法を取ることができます。
- ユースカジノ 入金ボーナス
- ユースカジノ 入金ボーナス Event Notification
- ユースカジノ 入金ボーナス Event Notification with EventBridge
今回は 1 つの Lambda に ユースカジノ 入金ボーナス の PUT Event を渡すことができれば良いため ユースカジノ 入金ボーナス Event Notification を使用しましたが、同じイベントで複数のサービスに連携したい場合や Event の内容をフィルタリングして使いたい場合などは 3 点目に挙げたユースカジノ 入金ボーナス Event Notification with EventBridge
ユースカジノ 入金ボーナスする必要があります。
AWS の公式のブログに ユースカジノ 入金ボーナス Event Notification with EventBridge の記事がありましたのでリンクを記載しておきます。
今回は ユースカジノ 入金ボーナス Event Notification を使用していることは既に説明しましたが、以前から存在している CloudTrail + EventBridge Rule のパターンを採用した場合に Event の内容がどのように設定されるのか気になったので確認してみました。
以下にユースカジノ 入金ボーナスイベントの例を紹介します。
※ ID などの情報ユースカジノ 入金ボーナスは別の文字列で置き換えておりますので、発生したイベントをそのまま掲載しているわけではありません。
ユースカジノ 入金ボーナス で呼び出された場合の Event
{
"version": "0",
"id": "00000000-0000-0000-0000-000000000000",
"detail-type": "AWS API Call via CloudTrail",
"source": "aws.ユースカジノ 入金ボーナス",
"account": "account-id",
"time": "The time, in ISO-8601 format",
"region": "aws-region",
"resources": [],
"detail": {
"eventVersion": "1.09",
"userIdentity": {
"type": "AssumedRole",
"principalId": "principal-id",
"arn": "ARN",
"accountId": "account-id",
"accessKeyId": "access-key",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "principal-id",
"arn": "ARN",
"accountId": "account-id",
"userName": "user-name"
},
"attributes": {
"creationDate": "The time, in ISO-8601 format",
"mfaAuthenticated": "false"
}
}
},
"eventTime": "The time, in ISO-8601 format",
"eventSource": "ユースカジノ 入金ボーナス.amazonaws.com",
"eventName": "PutObject",
"awsRegion": "aws-region",
"sourceIPAddress": "ip-address",
"userAgent": "user-agent",
"requestParameters": {
"bucketName": "ユースカジノ 入金ボーナス-bucket-name",
"Host": "host-name",
"key": "latest.zip"
},
"responseElements": {
"x-amz-server-side-encryption": "AES256",
"x-amz-version-id": "version-id"
},
"additionalEventData": {
"SignatureVersion": "SigV4",
"CipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
"bytesTransferredIn": 0,
"SSEApplied": "Default_SSE_ユースカジノ 入金ボーナス",
"AuthenticationMethod": "AuthHeader",
"x-amz-id-2": "amz-id-2",
"bytesTransferredOut": 0
},
"requestID": "request-id",
"eventID": "event-id",
"readOnly": false,
"resources": [
{
"type": "AWS::ユースカジノ 入金ボーナス::Object",
"ARN": "arn:aws:ユースカジノ 入金ボーナス:::〈bucket-name〉/latest.zip"
},
{
"accountId": "account-id",
"type": "AWS::ユースカジノ 入金ボーナス::Bucket",
"ARN": "arn:aws:ユースカジノ 入金ボーナス:::〈bucket-name〉"
}
],
"eventType": "AwsApiCall",
"managementEvent": false,
"recipientAccountId": "account-id",
"vpcEndpointId": "vpce-id",
"eventCategory": "Data",
"tlsDetails": {
"tlsVersion": "TLSv1.2",
"cipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
"clientProvidedHostHeader": "host-header"
}
}
}
ユースカジノ 入金ボーナス Event Notification で呼び出された場合の Event
{
"Records": [
{
"eventVersion": "2.2",
"eventSource": "aws:ユースカジノ 入金ボーナス",
"awsRegion": "us-west-2",
"eventTime": "The time, in ISO-8601 format, for example, 1970-01-01T00:00:00.000Z, when Amazon ユースカジノ 入金ボーナス finished processing the request",
"eventName": "event-type",
"userIdentity": {
"principalId": "Amazon-customer-ID-of-the-user-who-caused-the-event"
},
"requestParameters": {
"sourceIPAddress": "ip-address-where-request-came-from"
},
"responseElements": {
"x-amz-request-id": "Amazon ユースカジノ 入金ボーナス generated request ID",
"x-amz-id-2": "Amazon ユースカジノ 入金ボーナス host that processed the request"
},
"ユースカジノ 入金ボーナス": {
"ユースカジノ 入金ボーナスSchemaVersion": "1.0",
"configurationId": "ID found in the bucket notification configuration",
"bucket": {
"name": "bucket-name",
"ownerIdentity": {
"principalId": "Amazon-customer-ID-of-the-bucket-owner"
},
"arn": "bucket-ARN"
},
"object": {
"key":"object-key",
"size":"object-size in bytes",
"eTag":"object eTag",
"versionId":"object version if bucket is versioning-enabled, otherwise null",
"sequencer": "a string representation of a hexadecimal value used to determine event sequence, only used with PUTs and DELETEs"
}
},
"glacierEventData": {
"restoreEventData": {
"lifecycleRestorationExpiryTime": "The time, in ISO-8601 format, for example, 1970-01-01T00:00:00.000Z, of Restore Expiry",
"lifecycleRestoreStorageClass": "Source storage class for restore"
}
}
}
]
}
ユースカジノ 入金ボーナス引用元:https://docs.aws.amazon.com/ja_jp/Amazonユースカジノ 入金ボーナス/latest/userguide/notification-content-structure.html
また、今回は実際のイベントは取り上げませんでしたが、ユースカジノ 入金ボーナス Event Notification with EventBridge パターンについては公式のドキュメントに Event のサンプルが掲載されておりましたので下記を参照ください。
https://docs.aws.amazon.com/ja_jp/Amazonユースカジノ 入金ボーナス/latest/userguide/ev-events.html
ユースカジノ 入金ボーナス Event の詳細を見ると、CloudTrail + EventBridge Rule により呼び出された場合の Event 内容のほうが呼び出し元に関する詳しい情報が含まれていることがわかります。
今回は ユースカジノ 入金ボーナス に PUT されたというトリガーと、どの CodeBuild Container により呼び出されたのかを把握できれば良かったので、設定がより簡単な ユースカジノ 入金ボーナス Event Notification を利用しました。
以下に CDK を使って Event Trigger をユースカジノ 入金ボーナスする例を掲載します。
ユースカジノ 入金ボーナスの場合
const ユースカジノ 入金ボーナスEventTrail = new Trail(this, 'ユースカジノ 入金ボーナスEventTrail');
// sourceCodeStoreBucket は ユースカジノ 入金ボーナス Bucket instance です
ユースカジノ 入金ボーナスEventTrail.addユースカジノ 入金ボーナスEventSelector([
{
bucket: props.sourceCodeStoreBucket,
},
]);
const rule = props.sourceCodeStoreBucket.onCloudTrailPutObject('SourceCodeStoreOnPutTrailEvent');
rule.addTarget(new targets.LambdaFunction(pipelineTriggerFunc));
ユースカジノ 入金ボーナス Event Notificationの場合
// sourceCodeStoreBucket は ユースカジノ 入金ボーナス Bucket instance です
props.sourceCodeStoreBucket.addEventNotification(
EventType.OBJECT_CREATED_PUT,
new LambdaDestination(pipelineTriggerFunc)
);
CDK を使うと暗黙的に設定されるパラメータが存在するため、CloudFormation よりも記載すべきコードの量は減りますが、ユースカジノ 入金ボーナス Event Notification の場合は ユースカジノ 入金ボーナス Bucket とそれにより呼び出される Lambda Function を CDK 上で生成しておけば良いため、非常に簡単です。
CloudTrail + EventBridge Rule の場合は、ユースカジノ 入金ボーナス のイベントも検出するように設定した Trail とそのデータを保管する ユースカジノ 入金ボーナス Bucket が別に必要になりますので、生成されるリソースの量としても ユースカジノ 入金ボーナス Event Notification のほうが有利のようです。
(コード上では sourceCodeStoreBucket しか記載がありませんが、Trail を生成する際に CDK が自動的に ユースカジノ 入金ボーナス Bucket を生成します)
※ CDK による詳細なリソース定義方法ユースカジノ 入金ボーナスは以下の Build note にサンプルコードへのリンクを掲載しておりますので、興味を持っていただけましたら下記もご覧いただければ幸いです。
https://note.com/ユースカジノ 入金ボーナスservice/n/n2fa797d82270
Codeユースカジノ 入金ボーナス状態変化を検出する
あとは CodePipeline で実行されるワークフローの成功/失敗などの Pipeline 状態変化に合わせて ユースカジノ 入金ボーナス起動することができれば、GitHub Checks API に CI/CD の結果を送信することができるようになりますので、どのように ユースカジノ 入金ボーナストリガーするのか見てみましょう。
まず CDK のユースカジノ 入金ボーナスからです。
// ciPipeline は Codeユースカジノ 入金ボーナス instance
// pipelineFinTriggerFunc は NodejsFunction の instance です
props.ciPipeline.onEvent('PipelineEvent', {
eventPattern: {
source: ['aws.codepipeline'],
detailType: ['CodePipeline Pipeline Execution State Change'],
detail: {
state: ['SUCCEEDED', 'FAILED', 'CANCELED', 'SUPERSEDED'],
pipeline: [props.ciPipeline.pipelineName],
},
},
target: new targets.LambdaFunction(pipelineFinTriggerFunc),
});
CDK の場合は上記のように、Codeユースカジノ 入金ボーナス instance に `onEvent` という method が用意されておりますのでこれを使って設定することができます。
ただし、実際にユースカジノ 入金ボーナスしているものは EventBridge の Rule ですので、`onEvent` method を使わずに定義することも可能です。
今回は ユースカジノ 入金ボーナス成功、失敗、キャンセル、中断をトリガーとして GitHub Checks API に結果を連携しますので、detailType と detail はそれぞれ下記のように設定しました。
- detailType: 'ユースカジノ 入金ボーナス Change'
- detail.stat: ['SUCCEEDED', 'FAILED', 'CANCELED', 'SUPERSEDED']
Codeユースカジノ 入金ボーナス Event を検出する際に使用する detailType, detail で設定できる値については下記のドキュメントを参照してください。
※ 日本語で下記のドキュメントを閲覧すると detailType にユースカジノ 入金ボーナスする値などが日本語に翻訳されてしまい分かりにくくなるため、英語のドキュメントを参照することをおすすめします。
今回の ユースカジノ 入金ボーナス全容を振り返る
前回の記事とユースカジノ 入金ボーナスのこれまでの説明で GitHub から Pipeline を起動して、結果を GitHub 側に送信することができるようになりましたので、もう一度全体の構成図を見て振り返ってみます。
まず、Git-flow という Git のブランチ戦略に従ったユースカジノ 入金ボーナスをする前提で、機能ユースカジノ 入金ボーナスに使用する feature ブランチへの Push や Pull Request 作成をトリガーとして CI/CD を実行したいという要件がありました。
CodePipeline 単体では 2024/2 ユースカジノ 入金ボーナス、名前の定まっていないブランチへの変更を検出してワークフローをトリガーすることができませんでしたので、CodeBuild と GitHub を Webhook で連携させてこの問題を解決しました。
その後、CodeBuild の処理の中でソースコードを zip ファイルに圧縮して ユースカジノ 入金ボーナス に PUT します。
ユースカジノ 入金ボーナス にファイルが PUT されると ユースカジノ 入金ボーナス Event Notification により Lambda が起動され、Lambda が CodePipeline の実行を開始します。
※ CodePipeline では ユースカジノ 入金ボーナス を Source とした変更検出をサポートしているため、Lambda を使用せずとも Pipeline 実行を開始できますが、今回は Build ID と Pipeline の Execution ID、 GitHub Check の Run ID を紐づける必要があるため Lambda により CodePipeline の開始を行い、各種 ID と実行ステータスは DynamoDB で管理する構成にしています。
EventBridge の Rule (旧 CloudWatch Events Rule) にて Codeユースカジノ 入金ボーナス実行状況に応じて Lambda を起動するように設定したので、CodePipeline でワークフローが成功/失敗すると Lambda が起動され、最終的な CI/CD 結果が GitHub 側に連携されます。
まとめ
前回と今回に分けて Git-flow の開発で活用できる CI/CD ユースカジノ 入金ボーナス構築方法についてご紹介しました。
実際に Git-flow を採用して開発を進める場合には develop、main ブランチへの Push をトリガーにした Pipeline も別途必要になりますが、こちらは CodePipeline が標準でサポートしているトリガーを利用できると思いますのでユースカジノ 入金ボーナスの記事で紹介した例より簡単に定義できるのではないかと思います。
Git-flow 向けの CI/CD を作るというテーマでご紹介してきましたが、ユースカジノ 入金ボーナス のイベント通知や EventBridge を使用したイベント駆動システムを作る際には今回ご紹介した記事の内容も参考にしていただけるのではないかと思います。
ユースカジノ 入金ボーナス紹介した CodeBuild と CodePipeline 組み合わせる例以外にも、具体的なソースコードを掲載しながら AWS のサービスの使い方や案件で得た知見などを Build サービスの note にて公開しています。興味のある方はこちらの記事もご覧いただければ幸いです。
カジノゲームは、AWSのビジネス利活用に向けて、お客様のステージに合わせた幅広い構築・運用支援サービスを提供しています。
経験豊富なエンジニアが、ワンストップかつ柔軟にご支援します。
ぜひ、お気軽にお問い合わせユースカジノ 入金ボーナス。
Build ユースカジノ 入金ボーナス note 「Build の AWS ナレッジ通信」
https://note.com/ユースカジノ 入金ボーナスservice/m/m8220a76aed15