目次
概要
こんにちは、ディーネットの牛山です。
AWS CodePipelineのソースアーティファクトとして、S3バケットの「hoge/deploy.zip」のようにS3 prefix/object を組み合わせて、指定のプレフィックスに特定のオブジェクトをアップロードした際にCodePipelineが走る設定を検証したので備忘録として記録します。
本記事では、S3イベント通知周辺に主眼を置き記載していますので、これ以外の設定は解説していないことに注意してください。
前置き
本題に入る前に、想定するAWS環境の構成図を準備しましたので参考になれば幸いです。
S3バケット作成
CodePipelineからソースアーティファクトして、S3を使用しますのでS3バケットの作成をおこないます。
バケットのバージョニングが有効でないと、正常動作しないので、作成時に必ず、有効にするようにしてください。
S3バケット Amazon EventBridge 有効化
作成した、S3バケットを選択し、プロパティタブより、[Amazon EventBridge]項目で、[このバケット内のすべてのイベントについて Amazon EventBridge に通知を送信する]が オフ になっていますので オン に変更します。
S3プレフィックスかつオブジェクト形式での検知に必要になる設定となります。
S3バケットに任意のプレフィックスを作成
冒頭で記載しました、例「「hoge/deploy.zip」」に従って本記事では、作成しますので、[ hoge ] というフォルダを作成したS3バケット直下に作成します。
※hoge直下への[deploy.zip]オブジェクト作成を後ほどおこないますので現時点では、 hoge フォルダーのみの作成で問題ありません。
標準で作成されるCodePipelineトリガーEventBridgeルールの削除
CodePipeline作成時に、標準で作成されるCodePipelineトリガーを削除します。
CloudTrailダッシュボードからcodepipeline-source-trail証跡の削除
CodePipelineの検出方法で、S3の場合、変更検出として[Amazon CloudWatch Events (推奨) とAWS CloudTrail 証跡]となることから、CloudTrailにも設定が自動的に作成されていますので、削除を実施します。
※参考:ポーリングパイプラインを推奨される変更検出方法に更新する
EventBridgeルール作成
作成したCodePipelineをトリガーとする、EventBridgeの作成をおこないます。
ステップ1 ルール詳細の定義
ステップ2 イベントパターンを構築
作成のメソッドセクションで[カスタムパターン (JSON エディタ)]を選択し、イベントパターンセクションに下記内容のイベントパターンをいれます。
S3イベント、 [PutObject、POST Object 、CopyObject、CompleteMultipartUpload] 操作時、[deploybucket-20230108]バケットの プレフィックスマッチング [hoge/deploy.zip]に合致を検出する設定となります。
※参考:新機能 - Amazon EventBridge で Amazon S3 イベント通知を使用する
※参考:チュートリアル: Amazon S3 オブジェクトが作成されたときに通知を送信する
※参考:EventBridge の使用
{
"source": [
"aws.s3"
],
"detail-type": [
"Object Created"
],
"detail": {
"bucket": {
"name": [
"deploybucket-20230108"
]
},
"object": {
"key": [
{
"prefix": "hoge/deploy.zip"
}
]
}
}
}
ステップ3 ターゲットを選択
ターゲットはCodePipelineとなりますので、作成したCodePipelineのARNを入れます。
ステップ4 オプション
タグ設定が必要であれば適宜いれます、必要でなければ[次へ]をクリックします。
ステップ5 レビューと作成
設定した内容に問題ないことを確認し、[ルールの作成]をクリックします。
CodePipelineソースステージ補足
CodePipelineのソースステージのS3オブジェクトキーは、[ hoge/deploy.zip ] 設定しておく必要がありますのでご注意ください。
動作テスト
作成したS3バケット直下、[hoge]フォルダー配下に、[deploy.zip]という名前でファイルをアップロードします。
※deploy.zipはCodeDeployように準備する必要がありますが、今回はCodePipelineが発火されるかの確認目的なので、適当にdeploy.zipファイルを作成する形でも問題ありません。
CodePipelineの画面で、ソースセクションが成功しましたとなれば動作テスト完了です。
追加の確認として、作成したS3バケット直下に[ deploy.zip ]をアップロードし、CodePipelineが発火(実行)されないことも念の為、確認しておくと安心です。
まとめ
いかがでしたでしょうか、S3イベント通知により更に細かく動作を変更することができ、S3バケットの特定フォルダかつ特定ファイルをアップロードした際にCodePipelineを発火させることができました。
かゆいところに手が届き嬉しいですね。
プロフィール
AWSの設計・構築をメインにおこなっています。
運用・保守をおこなう部署におりましたが、最近、アーキテクト課に異動しました。
日々精進しております。
LINK
クラウドベリージャム:プロフィールページ