IT・ビジネススキル・人材育成の情報を掲載 | 人材育成のトレノケート【公式ブログ】

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

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

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

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

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

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

AWS Cloud Practitioner Essentials 用語集

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

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

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

今回のコンテンツは、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 の標準機能だけで出来るのがいいところです。