catch-img

用語集サイトを CI/CD 管理した話

こんにちは。ラーニングサービス本部トレーニング2部のたかやまです。

3月2日に実に5年ぶりとなるリアル JAWS DAYS 2024 が開催されました。トレノケートは Lunch サポーターとして参加していて、ランチセッションも行いました。(レポートはこちら

また、サポーター用のノベルティ配布テーブルにおいては、オリジナルチョコを配布していました。限定105個だったので手に入れられなかった方もいるかも知れません。

IMG_20240302_101659400

実は、このチョコ。ラッピングを自由に作成できる DECOチョコさんで作成しています。

パッケージに表示されている QR コードを読み込むと AWS Cloud Practitioner Essentials 用語集サイトへリンクしています。 AWS Cloud Practitioner Essentials とは、座学中心の研修で、AWSを初めて学ぶ方やAWS初心者の方におすすめです。AWSでは馴染みのない用語がたくさんあります。それらの用語を解説しているのが、この用語集サイトです。

AWS Cloud Practitioner Essentials 用語集

この用語集サイトは、CodeCommit + CodePipeline によって Markdown から HTML への変換 と PDF の生成、サイトの公開まで自動化しています。

用語集サイトのアーキテクチャ

全体のアーキテクチャは下図のようになっています。

glossary-cicd

今回のコンテンツは、Markdown 記法で記述しています。執筆担当者は、自身の分を書き終わると CodeCommit のブランチにプッシュし、プルリクエストを作成します。レビュープロセスを経て Main ブランチにマージされると、CodePipeline が動き出します。

CodePipeline:ビルドフェーズ

ビルドフェーズでは、MkDocs を利用して Markdown から HTML への変換と PDF の書き出しを行っています。利用している buildspec.yml は以下の通りです。


version: 0.2
 
phases:
  install:
    runtime-versions:
      python: 3.11
    commands:
      - python3 -m pip install --upgrade pip
      - pip install -r requirements.txt
  build:
    commands:
      - echo Build started on `date`
      - mkdocs build
      - ls -la site
  post_build:
    commands:
      - echo Build completed on `date`
artifacts:
  base-directory: site
  files:
    - '**/*'
cache:
  paths: []

最初に構築したときは Python 3.9 のランタイム環境を使っていたのですが、ランタイムをアップデートしようと 3.10 に変えたら 3.10 はランタイム環境の OS がUbuntu しかサポートしていないということで、3.11 に変えてます。

MkDocs で利用する mkdocs.yml はこんな感じです。


site_name: AWS Cloud Practitioner Essentials Glossary
site_url: <https://cpe.aws.trainocate.biz/>
 
theme:
  name: material
  language: ja
  font:
    text: Noto Sans Japanese
  logo: images/trainocate-logo.png
  favicon: images/trainocate-logo.png
  features:
    - search.suggest
    - search.highlight
 
extra_css:
    - "<https://fonts.googleapis.com/earlyaccess/notosansjp.css>"
    - "<https://fonts.googleapis.com/css?family=Open+Sans:600,800>"
    - "css/main.css"
 
extra:
  generator: false
  search:
    language: 'jp'
  social:
    - icon: fontawesome/brands/x-twitter
      link: <https://twitter.com/TrainocateJ>
    - icon: fontawesome/brands/facebook
      link: <https://www.facebook.com/search/top?q=%E3%83%88%E3%83%AC%E3%83%8E%E3%82%B1%E3%83%BC%E3%83%88%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE%EF%BC%88trainocate%20japan%2C%20ltd.%EF%BC%89>
    - icon: fontawesome/brands/linkedin
      link: <https://jp.linkedin.com/company/trainocate-japan>
 
use_directory_urls: false
 
copyright: Copyright &copy; 2024 Trainocate, Ltd.
 
markdown_extensions:
  - def_list
 
nav:
    - Home: 'index.md'
    - Common: common.md
    - Module 1: module1.md
    - Module 2: module2.md
    - Module 3: module3.md
    - Module 4: module4.md
    - Module 5: module5.md
    - Module 6: module6.md
    - Module 7: module7.md
    - Module 8: module8.md
    - Module 9: module9.md
    - Download PDF: pdf/aws-cpe-glossary.pdf
 
plugins:
    - search
    - with-pdf:
        author: Trainocate, Ltd.
        copyright: Copyright 2024 Trainocate, Ltd.
        cover: true
        cover_title: AWS Cloud Practitioner Essentials
        cover_subtitle: Glossary
        debug_html: false
        show_anchors: false
        toc_title: 目次
        toc_level: 3
        two_columns_level: 3
        output_path: pdf/aws-cpe-glossary.pdf

日本語フォントを指定しないと PDF の日本語が文字化けしたので、Google Fonts を読み込んでます。

CodePipeline:デプロイフェーズ

デプロイフェーズでは、CodeDeploy は使わずに直接 Amazon S3 のバケットに保存しています。このバケットは、コンテンツ公開用の別アカウントに用意しています。

通常、別のアカウントの S3 バケットに CodePipeline は書き込みできませんが、CodePipeline が利用するサービスロールに対して、公開アカウント側の IAM ロールを AssumeRole できるようにしてあげることで実現しています。

このやり方は、AWS re:Post のこの記事を参考にしました。奥が深いですね。

また、クロスアカウントデプロイには、パイプラインを実行するアカウントに KMS のカスタマーマネージドキーが必要で、公開される側のアカウントのポリシーに、その鍵を利用できる権限が必要になります。

この辺の設定も先程の記事を参考にして設定しました。ありがたい。

トレノケートのAWS研修(AWS認定トレーニング)

トレノケートのAWS認定トレーニングでは、AWS社の厳格なテクニカルスキル及びティーチングスキルチェックに合格した認定トレーナーがコースを担当します。AWS初心者向けの研修や、AWS認定資格を目指す人向けの研修をご提供し、皆様のAWS知識修得のサポートをいたします。
トレノケートのAWS研修(AWS認定トレーニング)はこちら


▼AWS初心者の方は、 AWS Cloud Practitioner Essentials から!
座学中心の研修で、AWSを初めて学ぶ方や、営業などで提案に関わる方におすすめです。
「AWS Certified Cloud Practitioner」資格取得を目指す方の基礎知識修得にも最適です。
詳細・日程はこちらから

 

▼実践スキルを磨くなら、AWS Technical Essentials で
実機演習が中心の研修です。仕事で構築作業を行う方や、シナリオベースの演習を通じて、実際に手を動かしながら各サービスの特徴を学びたい方におすすめのAWS研修です。
詳細・日程はこちらから

 

いきなりの有償コースに抵抗がある方やまずはお試しをしてみたい方は、トレノケートが実施している無料セミナーがおすすめです。詳細はセミナーページよりご確認ください。

▼無料セミナーの詳細はこちらから

まとめ

開発アカウントと公開アカウントを分離して CI/CD パイプラインを回すニーズは比較的多いと思います。

生成されたアーティファクトを自分のアカウントの S3 バケットにデプロイして公開アカウントにコピーさせる仕組みを作ってもいいのですが、CodePipeline の標準機能だけで出来るのがいいところです。

 

髙山 裕司(たかやま ゆうじ)

トレノケート株式会社 講師。AWS 認定インストラクター。AWS認定ソリューションアーキテクト - アソシエイト / AWS 認定クラウドプラクティショナー。生粋の猫派。

無料ダウンロード

オススメコンテンツ

オススメ記事

プロジェクトマネジメント PMP AWS ビジネススキル Microsoft PMBOKⓇ 田中淳子 IT資格 人材育成 山下光洋 AMA Azure コミュニケーション 人材開発用語集 PMBOK®ガイド入門 クラウド ITスキル 新入社員 横山哲也 人材育成応援ラジオ PMP試験問題に挑戦 re:Invent セキュリティ DX Cisco PMBOKⓇガイド 第6版 試験体験記 イベント・セミナー PMBOK®ガイド第6版の変更点 人材開発 AI(人工知能) CCIE CCNA テレワーク ネットワーク リモートワーク 研修 GCP PMP(R)試験問題 第6版対応 PMP合格体験記 Windows Server AWS_Q&A Active Directory DX人材育成 IT人材 IT資格解説 アセスメント キャリア デジタルビジネス ヒューマンスキル リーダーシップ 人気コースランキング 大喜利 部下の育成 Conversations PMの心得 グローバル人材 新入社員研修といえば IoT OJT reinvent2022 リスキリング AI人材 CCNP Security Windows PowerShell クリエイティビティ プログラミング 人材トレンド 試験対策問題 PMP試験対策一問一答 コーチング プロジェクト プロトタイプビルダー 生成AI 1on1 AWS_DiscoveryDay AWSトレーニングイベント GCP無料セミナー Google Cloud Google Cloud Platform G検定 ITインフラ oVice アワード クリティカルシンキング サンプル問題 ステークホルダー ダイバーシティ ディープラーニング ワーケーション 自律 試験Tips Linux PMI Power Platform Python Teams Web会議 cybozudays