0
1

More than 1 year has passed since last update.

CodePipelineのポーリングパイプラインが非推奨になったのでEventBridgeでS3イベントを受けてパイプラインを開始できるようにマイグレーションする

Posted at

CodePipelineのポーリングパイプラインが非推奨になって以下のような警告が出るようになりました。

image.png

弊社のプロジェクトではGithubやCodeCommitではない外部のGitリポジトリからWebhookでS3にソースを上げていたたのですが、ポーリングは非推奨になったのでEventBridgeを経由してパイプラインを起動するように変更しました。
(ググってもCloudTrail等の事例ばかりだったので)手順を載せておきます。

1. S3バケットのEventBridge通知を有効にする

S3の管理コンソールに入り、該当バケットのプロパティタグを開きます。
画面真ん中の方にスクロールするとイベント通知の欄がありますので、「Amazon EventBridge」を”オン”にします。
これにより、S3のイベントがEventBridgeに飛びます。
image.png

cdkの場合は

new s3.Bucket(scope, 'SourceBucket', {
  ...省略...
  eventBridgeEnabled: true  // ← Trueにする
});

でOKです。

2. EventBridgeのルールを定義する

以下のようにルールを定義します。eventPatternのdetailTypeは定義しないでOKです。
ポーリングではなくイベント通知とするため、S3SourceActionのtriggerプロパティはS3Trigger.EVENTSに変更します。

// S3ソースコード配置バケット
const s3SourceBucket = Bucket.fromBucketName(this,'SourceBucket','source.bucket.name.here');

// EventBridgeのルールを定義。
new Rule(this, 'EventBridgeRuleFromPutS3', {
      description: 'Start Pipeline By S3 Put Event',
      ruleName: 'start-pipeline-execution-by-put-s3-event',
      eventPattern: {
        source: [`aws.s3`],
        resources: [s3SourceBucket.bucketArn],
        detail: {
          bucket: {
            name: [s3SourceBucket.bucketName],
          },
          object: {
            key: [
              {
                prefix: 'zipファイルのprefix'    // ← zipファイルのプレフィックスまたはzipファイル名
              }
            ]
          }
        }
      },
      targets: [
        new CodePipeline(pipeline, {
          retryAttempts: 1
        })
      ]
    });

const artifact = new Artifact('CodePipelineArtifact');
const action = new S3SourceAction({
      actionName: 'TakeTheSourceZip',
      bucket: s3SourceBucket,
      bucketKey: 'zipファイル名',       // ←zipファイル名
      output: outputArtifact,
      trigger: S3Trigger.EVENTS,      // ←トリガーはS3Trigger.EVENTS
      runOrder: 1,
    });

これでOKです。
誰かのお役に立てれば。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1