質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

1097閲覧

AWS Codeシリーズ導入について

pond

総合スコア350

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

1クリップ

投稿2021/04/15 10:15

前提・実現したいこと

WEBサイトのコンテンツ管理にAWS Codeシリーズの導入を考えていますが
お客様側でGit管理の経験者がいないので手順書の提供も必須になります、敷居が高いでしょうか?
私自身もそれほど経験値は高くないです。

また、下記についてご教示頂ければ幸いです。
・指定した日時に本番WEBサーバへコンテンツをアップロード・削除することは可能でしょうか。
もし、可能でしたら設定方法をご教示いただけますと幸いです。
・クライアントPCにインストールするお勧めのGitツールはありますでしょうか。
操作が簡単で分かりやすいものを考えています。
・AWS Code Commit・Code Deploy・Code Pipeline・Code build一式の導入を考えており
3人で利用予定ですが、月額3,000円ほどの認識ですが、認識あっていますでしょうか?

補足情報(FW/ツールのバージョンなど)

WEBサーバ:Amazon EC2
コンテンツ管理:AWS Code Commit・Code Deploy・Code Pipeline・Code build

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

コンテンツって、例えばお知らせ・商品情報・FAQ とかの更新ですか?

一般的には Code 4兄弟が担当するのはプログラムのデプロイであって、コンテンツは
・WordPress 等の CMS ツールにまかせる
・DB にお知らせテーブル等情報を持ち、プログラムにて表示する
・S3 に特集ページ一式 (HTML/CSS/JS) を持ち、プログラムにて公開/非公開などをコントロールする
などがよいとは思いますが、git を直接触らせたい理由はありますか?
branch や tag を使わせたいですか?

投稿2021/04/15 12:41

68user

総合スコア2005

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pond

2021/04/15 13:21

ご回答ありがとうございます、コンテンツは静的コンテンツだけです。Gitにこだわりはないのですが、 指定した時刻または即時で、指定した複数のコンテンツもしくは単一のものをアップ、削除できればいいだけです。
68user

2021/04/15 13:54

git・Code4兄弟という前提であれば、ローテクなやり方ですが、例えば以下のような感じでしょうか。 git にて下記のように日付別コンテンツを持っておく。 ・20210415-10/index.html ・20210415-10/news.html ・20210416-09/index.html ・20210416-09/news.html ・20210417-01/index.html ・20210417-01/news.html ・20210417-01/newcontents.html CodePipeline を毎時起動するよう cron 定義しておく。 CodePipeline にて日付別コンテンツの時間をチェックして公開すべきコンテンツ (20210417-01/ など) を特定し、EC2 に展開する。ここで htdocs -> htdocs20210417-01/ などと symlink 貼り直しなどをすることで古いコンテンツを公開しないようにする。 20210417-01/ を作る際、20210416-09/ ではなく 20210415-10/ をベースに作ってしまうと一部過去のコンテンツに戻ってしまいそうなので、運用が大変そうではありますけれども。
68user

2021/04/15 14:02

なお、こういうローテクな仕組みで、複数人で複数バージョン (明日公開版と明後日公開版など) を並行管理したりすると絶対事故るので、世の中の人たちは CMS などで管理することを好むようである、ということを付け加えておきます。
pond

2021/04/15 20:53

ありがとうございます。大変参考になります。
guest

0

ベストアンサー

お客さんにはまず基本的なgitの操作だけ覚えてもらえばよいのではないでしょうか。
本当は頑張って学んでくれと言いたいですけどね…。
お客さんがエンジニアなら覚えろと言い切りたいのが正直なところです。
そうでないなら、少なくともリリースしたい最新版を特定のブランチ(通常はmain)にするような手順に寄せてしまうぐらいがいいでしょう。
gitの使い方は覚えるべきものですが、知らない人にいきなり使ってもらうのはちょっとハードルが高いと思います。

・指定した日時に本番WEBサーバへコンテンツをアップロード・削除することは可能でしょうか。

もし、可能でしたら設定方法をご教示いただけますと幸いです。

いくらでも方法があります。
処理をどうするかはともかく、何かしらのトリガーがあればいいのでcronでも、Jenkinsサーバみたいなのを立てても、AWSならCloudWatch Eventで何かのサービス経由でやってもいいでしょう。
別回答へのコメント参照で恐縮ですが、本当に単なる静的サイトならサーバ上でgit pullさせるだけでもいいですし、その静的サイトが何らかのビルドの結果生まれるものならCodeBuildを使うといいでしょう。
ぶっちゃけると静的サイトならEC2を使う必要すらなく静的ホスティングでS3に置いてCloudFrontと連携させるのが一番いいです。
ものすごく前の記事ですが、AWSで静的サイトを配信するパターンについては下記の記事が参考になります。
AWSにおける静的コンテンツ配信パターンカタログ(アンチパターン含む)
今だとAmplifyを使ってS3+CloudFrontのパターンをある程度いい感じに構成するパターンもありますね。

・クライアントPCにインストールするお勧めのGitツールはありますでしょうか。

操作が簡単で分かりやすいものを考えています。

定番はSourceTreeだと思います。
ただ、個人的にはGUIツールはあまり勧められるものがないです。
操作は正直どのツールもあまり変わらない気がしますね。というのも、gitの使い方自体がベースなので結局そこの理解がある程度求められます。…。

・AWS Code Commit・Code Deploy・Code Pipeline・Code build一式の導入を考えており

3人で利用予定ですが、月額3,000円ほどの認識ですが、認識あっていますでしょうか?

わかりません。利用頻度次第です。
CodeCommitについてはデータ容量とアクセス回数で料金が変わります。
CodeBuildもどのインスタンスでどのくらいの時間ビルドするかによって変わります。
CodeDeployはそれ自体には料金はかかりません。
CodePipelineもそれらのサービスを連携させるものなので、それ自体に料金はかかりません。

あくまでも個人的な見解ですが、今回のような使い方だとおそらく3000円もかかることはないような気がします。
上述のように下手したらCodeBuildもCodeDeployもやり方によっては不要かもしれません。

なお、やや設定が面倒になることを差し引いても、CodePipelineで全部やってしまうのは個人的にはあまりおすすめしないです。
デプロイのタイミングをコントロールしたいならCodeDeployなのかそれ以外なのかわかりませんが上述のトリガーでデプロイの処理を実行するのがよいかなと。

まあ、今回のユースケースから考えるとそもそもCMSを使ってしまえばいいのでは、という気がしないこともないですが。
要件を再確認するとより良いやり方がいくつも見つかりそうな感じはしますね。

投稿2021/04/15 15:53

yu_1985

総合スコア7433

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pond

2021/04/15 20:53

ありがとうございます。大変参考になります。
pond

2021/04/16 00:44 編集

Gitは初心者だと敷居が高いですよね。やはり最後はCMSへ行きつきますね。 CMS提案となると今の静的ファイルをCMS化する話もあり費用がかさむので、 先方もなかなか受け入れてくれない状況です。 S3でコンテンツを管理し、cloudwatch eventを使ってEC2へ指定した時刻に 予約投稿(コンテンツのコピー・削除)みたいなものをと思いますが、 そうなると時刻・アップロード/削除するコンテンツはこちらで設定することになり、 先方も都度こちらへ連絡しないといけなく、手間がかかりますし、 「任意の時刻」・「アップロード/削除するコンテンツの指定」は、 記事をリリースするタイミングもあり、極力先方で指定できるよう にしたいです。何かいい方法ありますか?
yu_1985

2021/04/16 01:36

既存のコンテンツは置いたまま、新規コンテンツのみCMSで管理する、ではダメなのでしょうか? 残念ながら「いい方法」というのは「そういったインターフェースを頑張って実装する」しかありません。 でも、それを頑張ってやるくらいならCMSを使ったほうが結果的に楽で早いと思います。 ましてタイミングを先方側に任せるとなるのであれば、そもそもの管理をなるべくそちら側に寄せられるようにしたほうがよいでしょう。 Wordpressとかはサーバ管理者の立場だと正直好きではないですし単なる静的サイトとして使うならイマイチですが、今流行りのHeadless CMSとかだとそれなりに頑張って作り込む必要があるのであまり楽ではない印象はあります。
pond

2021/04/16 01:50

いつもありがとうございます。そうなりますよね。
pond

2021/04/16 04:59

将来を見据え、コンテンツ管理を考えると既存の静的ファイルのCMS化も含めて 今からCMSを導入したほうがいいですよね。 また、CMSは導入せずに予約投稿部分だけの開発するにしてもJavaなどの言語を 使ってインターフェース・バリデーションを含めて開発していったほうがよいのか と思ってきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問