S3ウェブホスティングのデプロイを手動でやっていたけど、AWS CodePipelineを利用してGitHub上にコードをPushした時にデプロイされるようにした。 公式ドキュメントのチュートリアルをベースにやればだいたい良いけど自分用にメモとして記載しておく。
事前準備
下記を作成しておく必要がある。
AWS CodePipelineを用いたパイプラインの作成
AWSマネジメントコンソールのCodePipelineのダッシュボードへ遷移する。
下記の画面から「パイプラインの作成」を選択する。
Step1: パイプラインの設定の選択
パイプライン名を適当に入力する。
[Service role (サービスロール)]の設定で新しいサービスロールを作成するか、既存のサービスロールがある場合はそれを利用する。
新しいサービスロールを作成する場合、 AWSCodePipelineServiceRole-${region}-${pipeline_name}
の形式でのサービスロールが作成される。${region}はパイプラインを作成するリージョン名、${pipeline_name}は上記で入力したパイプラインの名前になる。
このロールは、CodePipelineのパイプライン実行プロセスの中で使用される各AWSリソースへのアクセス許可に使用される。
それ以外はデフォルトでOK。
Step2: ソースステージの追加
デプロイする元となるソースコードが保存されているリポジトリを指定する。ここではGitHubを選択する。
「GitHubに接続する」を押下すると、初回の場合はOAuthでの認証が行われる。
GitHubへ接続できたら、デプロイしたいリポジトリ名とそのブランチを選択する。 変更検出オプションではGitHubウェブフックを選択する。 これでそのリポジトリのブランチになんらかの変更が加わったらデプロイが実行される。
Step3: ビルドステージの追加
ここではビルドは行わないので[ビルドステージのスキップ]を押下してスキップする。
Step4: デプロイステージの追加
デプロイプロバイダにS3を選択し、デプロイしたいS3バケットを選択する。 [デプロイ前にファイルを展開] を選択する。デフォルトだとzip圧縮されるがこれによりファイルが展開される。 [デプロイパス]はファイルが展開されるS3のパスになる。空欄だとルートパスに配置される。
レビュー
内容を確認し、問題なければ[パイプラインの作成]を押下する。
実行
これでGitHubの対象のブランチ(ここではmaster)へコードをpushするだけでデプロイが開始されて、S3へ配置されるようになる。 うまく動けば完了。