原田です。今回はWebサイトをAWS Amplifyを用いて自動的に公開(デプロイ)しようとしていることについて書きます。
弊社ではWebサイトの更新に静的サイトジェネレーターのNanocを利用しています。Nanocについては過去のブログでもご紹介しています。
Webサイトの公開手順の一例です。
今回Amplifyに移行するのは、上記手順の最後「4. nanoc deployコマンドを実行しmainブランチをWebサイトに公開」の部分です。概要ではありますがAmplifyへの移行手順を記します。
注意事項:
GitLabリポジトリをCodeCommitリポジトリと連携させるためのユーザーを作成します。このユーザーのアクセス権限にはAWSCodeCommitPowerUserポリシーを設定し、認証情報はAWS CodeCommit の HTTPS Git 認証情報のみを有効にしてください。Git認証情報作成時に認証情報(User Name, Password)をCSVファイルでダウンロードできますので保管しておいてください。認証情報は後ほどGitLabリポジトリのミラーリング設定で使用します。
その他の認証情報(アクセスキー、AWS CodeCommit の SSH キー、Amazon Keyspaces (for Apache Cassandra) の認証情報)は使用しませんので削除してください。
Amplifyコンソールに登録したアプリケーションをバックグラウンドで動作させるためのサービスロールを作成します。今回はサービスロールのアクセス権限にAdministratorAccessポリシーを設定しますが、セキュリティ上の観点から必要最小限の権限での運用もご検討ください。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Resource": [ "arn:aws:logs:us-west-2:XXXXX:log-group:/aws/amplify/YYYYY", "arn:aws:logs:us-west-2:XXXXX:log-group:/aws/amplify/YYYYY:*" ], "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ] }, { "Effect": "Allow", "Resource": [ "arn:aws:codecommit:us-west-2:XXXXX:example.co.jp" ], "Action": [ "codecommit:GitPull" ] } ] }
GitLabリポジトリが非公開の場合はAmplifyからGitLabのコミットを監視することはできません。しかしGitLabからリポジトリの変更をCodeCommitにアップすることで、AmplifyはCodeCommitから通知を受け取り動作します。
ここではリポジトリを作成して、リポジトリのURLを控えておいてください(HTTPSのクローンを選ぶことでクリップボードにURLがコピーされます)。URLは後ほどGitLabリポジトリのミラーリング設定で使用します。
GitLabリポジトリの変更をCodeCommitに反映させるためミラーリング設定を行います。
上記の値を入力後、ミラーリポジトリボタンをクリックすると登録されます。ミラーされたリポジトリの一覧に登録したCodeCommitリポジトリが表示されますが、登録直後はCodeCommitを自動更新しないので一覧上の今すぐ更新ボタンをクリックしてください。
Amplifyコンソールではアプリケーション(アプリ)にリポジトリを接続することでコードの変更(コミット)がリポジトリに反映されたタイミングでアプリのデプロイ(Webサイトの公開)が実施されます。アプリ登録時の設定は以下のとおりです。
ビルドの設定(ビルド設定の追加): Nanocの各種設定はそのまま使用しますのでここではnanoc compile
を実行するための設定を行います(アプリコンテナ上で公開するのでnanoc deploy
の実施は不要です)。
version: 1 frontend: phases: preBuild: commands: - rvm use 2.6.3 - bundle install build: commands: - bundle exec nanoc compile artifacts: baseDirectory: output files: - '*/' cache: paths: []
サービスロール(ビルド設定の追加): 上記で作成したAmplify用サービスロール
最後に確認画面が表示されますので設定内容を確認後、保存してデプロイボタンをクリックします。Amplifyコンソールはアプリを作成しデプロイを実施します。Webコンテンツの内容にもよりますが数分後にはデプロイが完了します。
実際にAmplifyでの運用が始まると
という要望も挙がってくるかと思います。Amplifyコンソールではこれらの設定も可能です。
今回はIAM, CodeCommit, Amplifyの設定をご紹介しましたけど、それぞれの機能に様々な設定が必要であることがお分かりいただけると思います。 複数Webサイトを管理している場合、WebサイトごとにAmplifyコンソール等で人間が入力操作を行うと気付かないうちに設定ミスを起こす可能性があります。
これを防ぐためにAWS CloudFormationを活用しています。AWSのインフラ環境をYAMLやJSONデータで作成することでInfrastructure as Codeが実現され、冪等性も保証されます。上記でご紹介したIAM, CodeCommit, Amplifyの一連の設定もCloudFormationで定義することが可能です。引き続きAmplify, CloudFormation等を学び自在に環境が構築できるよう努めます。
AWS Amplify のログイン認証機能を試してみた 「AWS Amplify」を利用して、ログイン画面の実装について手順を紹介します。 |
|
TourBoxを使って動画編集処理の時間短縮に成功! ダイヤルやボタンにキーボードショートカットを自由に定義。Premiere Proでの動画編集作業がとても楽になりました。 |
|
紙の書籍から電子書籍での読書に変えました KindleとFire HDを使い分けて電子書籍を読んでいます。 |
|
2020年2月にシンガポールの海底ケーブル陸揚げ局を見に行った インターネットを支える海底ケーブル陸揚げ局の外観を見ることができました。 |
|
AWSクラウドハンズオン講座で講師デビューしました(動画・資料あり) AWSのハンズオン講座で初めて講師を務めました。動画や資料もあります。 |
2024年5月11日 オライリー本の全冊公開日のお知らせ(もくもく勉強会も同時開催) ファーエンドテクノロジーが所蔵するオライリー本(全冊)公開日のご案内です。公開日には「もくもく勉強会」も同時開催します。 |
|
入門Redmine 第6版 出版記念企画セミナー「Redmineのアクセス制御」【2024/5/30開催】 入門Redmine 第6版(2024年3月23日発売)の書籍から「Redmineのアクセス制御」について解説します。 |
|
My Redmine 初回ご契約で「入門Redmine 第6版」プレゼントのお知らせ Redmineのクラウドサービス「My Redmine」を初めてご契約いただいたお客様にRedmine解説書「入門Redmine 第6版」を進呈いたします。 |
|
2024年度ブランドパートナーに島根県在住のモデル ユイさんを継続起用 ユイさん(モデルスタジオミューズ所属)をファーエンドテクノロジーの2024年度ブランドパートナーとして継続して起用します。 |
|
Redmineの最新情報をメールでお知らせする「Redmine News」配信中 新バージョンやセキュリティ修正のリリース情報、そのほか最新情報を迅速にお届け |