POSTCodePipelineとCodeBuildでシングルページアプリケーションをS3に継続的に配置する※2019/01/18追記CodeDeployのデプロイ先にS3が増えてました。CodeBuildでaws-cliを使ってファイルをPUTしなくてもコンソールからS3のバケットが指定できるようになっています。この記事はCodeDeployでS3への配布が出来ない前提で書かれています。昼寝はご飯の前にする系エンジニアの蔵下です。弊社のEAPには以下のようなCMSがデフォルトでついています。webpackで出来ていて、サーバレスアーキテクチャを採用しているのでHTML、javascript、cssをビルドしてまとめてS3にアップロードしています。S3へのアップロードはAWSのコンソールからも出来るので簡単です。簡単ではありますがマージやコミットの度に毎回やるとなると面倒なのでCIで解決したいと思います。CodePipelineを使ってgithubでコミットされたら新しくビルドしてS3に配置するという部分をやってみます。https://aws.amazon.com/jp/codepipeline/CodePipelineではデプロイステージでECS、CloudFormation、CodeDeploy、ElasticBeanstalkが選べますがS3はありません。CodeDeployも基本的にはEC2かlambdaを想定しているようなのでS3に直接SPAのファイルを置けるような設定はありません。そこでビルドステージからawsクライアントを使ってS3にアップロードをします。CodePipelineの設定の前に、まずプロジェクトルートにビルドの設定を./buildspec.ymlとして記述して保存し、gitにコミットします。次にAWSコンソールからパイプラインを作成します。パイプライン名を入力します。ソースプロバイダは設計図共有サイトGitHubを選択します。ビルド設定ではCodeBuildを選択します。CodeBuildのプロジェクト設定では以下を入力していきます。プロジェクト名:test-build環境の設定ビルドを行う環境の設定をします。使用キャッシュキャッシュタイプ:キャッシュなし(キャッシュありにして色々試しましたがそこまで早くならなかったので)サービスロールアカウントで新しいロールを作成します。ID:非VPC入力したらビルドプロジェクトの保存を選択します。デプロイプロバイダは無しを選択。ロールはなければ作成します。基本的にはそのまま許可で大丈夫です。OKならパイプラインを作成します。作成すると早速パイプラインが実行されますが、このままだとS3へListObjects権限が無いというエラーが出てしまうので矢印部分をクリックして一旦停止します。先程作成したCodeBuild用のロールにS3への権限を付与します。IAMの画面を開き、ロールからCodeBuildで作成したロールを選択します。ポリシーをアタッチしますをクリックし、アクセス権限追加画面を開きます。ポリシーのフィルタに「S3」と入力し、FullAccessをアタッチします。最後にパイプラインの停止を解除すればパイプラインが実行され、S3への配布が出来ると思います。ちなみに配布完了までに約3分半ほどかかりました。installにすることによって4分強から3分半と2割ほど早くなりました。Railsで開発してます。最近はvue.jsも。翌営業日以降のご対応となる場合がございますのでご了承ください。