0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

はじめまして、社会人一年目の若手エンジニアです。
AWSのサービスをハンズオン形式で学ぶために、Bootcampクラウドネイティブ編に参加したのでそのときの内容をまとめようと思います。(本当の目的は会社から無料のバウチャーをもらうためですが、、、)

※この記事では特に、Codebuildのbuildspec.yamlの新規作成方法を中心にまとめています

この記事でわかる・できること

  • コードをGitLabで管理する方法
  • CodeBuildで新規にビルドを作成する方法
  • template.yamlを編集して線形デプロイを実装する方法

この記事の対象者

  • CI/CDの基礎を学びたい人
  • AWSのCode系のサービスについて基礎を学びたい人
  • AWSのBootcampでハンズオンの実践に興味がある人

Agenda

  • 事前準備
  • コードをGitLabで管理する
  • コードをCodebuildでビルドする
  • SAMで線形デプロイを実行する

それぞれのステップについて、次に詳しく記載します。

事前準備

環境の準備は以下の表示されているような案内に従って、順番に実行して完了してください(スキップしちゃってごめんなさい)。

事前準備_pic.png

注意事項①
下記二つはどこかにメモしていないと後々めんどくさいことになるので気を付けてください!!

  • Secret Managerで管理されているパスワード
  • GitLabで表示されるAccess Token

注意事項②
ポップアップウィンドウでの認証後に正常に更新されない場合がありますが、リトライするとエラーがなくなるので何度か試してみて下さい(私は2回目で正常に更新されました)

image.png

コードをGitLabで管理する

今回の環境ではコードを管理するツールとしてGitLabを使用していきます。(事前準備で既に構築済みです)

① GitLabでプロジェクトを作成して、
② VS Code Server のターミナルで以下のコマンドを実行します

git clone <<プロジェクトのクローンURL>>

③ そして VS Code Serverにドラッグ&ドロップでファイルを追加します
④ 最後に忘れずにcommitとpushを実行しましょう

cd ~/environment/training-applicant
git add -A
git commit -m 'ファイルを登録'
git push origin main

コードをCodebuildでビルドする

次にCodeBuildを利用してビルド・テストを実行するために、buildspec.ymlファイルを作成します。

公式ドキュメントにもbuildspecファイルの記述方法は載っていますが、以下ではとりあえずこの項目があればOKという形で記載しています。

# buildspec.yml
version: 0.2

phases:
  install:
    runtime-versions:
      nodejs: 20
    commands:
      - npm install

  pre_build:
    commands:
      - npm run test
      - sam build

  build:
    commands:
      - sam package --s3-bucket $S3_BUCKET --output-template-file packaged.yaml

artifacts:
  files:
    - packaged.yaml
  discard-paths: yes

ここでもbuildとpushコマンドは忘れずに実行しましょう。

git add buildspec.yml
git commit -m 'bulidspec.ymlを追加'
git push origin main

Tips

  • Buildした後のS3への保存先のパス設定は、artifactsフェーズのfilesで同じ名称を用いて記載します
  • buildフェーズなどでのcommandsとfinallyセクションの違い
    • commandsは各フェーズ内で実行
    • finallyはビルドの最後、かつ成功失敗に関わらず実行
もし「CodePipelineが自動で動かない」や「CodeBuildでエラーが発生する」ときには、、、

事前準備の[トリガーを追加]をCodePipelineから確認してみよう

image.png

下記のように、[保存]をしっかりと押す必要があります!!(このせいでだいぶ苦しめられた、、、)

image.png
image.png
これで解決できなければ、別の箇所を再度確認してみてください

SAMで線形デプロイを実行する

template.yamlファイルに、DeploymentPreferenceの項目を追記します。

# ~~~~上記省略~~~~
Resources:
  PutItemFunction:
    Type: AWS::Serverless::Function
    Properties:
      # ~~~~一部省略~~~~
      
      #以下のコマンドを追加する 
      AutoPublishAlias: live
      DeploymentPreference:
        Type: Linear10PercentEvery1Minute
# ~~~~下記省略~~~~

注意事項
記述する段落は、Resources⇒PutItemFunction⇒Properties配下になるので、間違えないように気をつけましょう!!

参考情報

おまけ

今回のイベントでは座学と実践が時間ごとに分けられていたので、座学でインプットしたことをいくつか書いておきたいと思います。

  • 継続的デリバリーは人による承認の段階がプロセスに組み込まれているが、継続的デプロイメントは組み込まれていないという点で異なる
  • buildspec.ymlのphasesの構成要素
    • install : 環境を準備するためのパッケージのインストール
    • pre build : 構文チェックなどビルド前に実行したいこと
    • build : ビルドツールやコマンドの実行
    • post build : テスト実行やレポジトリへのコンテナイメージの配布
  • SAMでは段階的なデプロイとして、カナリア、線形(Liner)、すべて一度に(AllAtOnce)が選択可能

終わりに

Bootcampイベントは、ドキュメントを参照しながら実際に手を動かしてこれまで学んだ知識を確認できる良い機会になりました。これを機にAWS Certified Developer – Associate試験を受験してさらにスキル向上を目指そうと思います。
つたない文章にもかかわらず最後まで読んで下さった方、ありがとうございました。

本ドキュメントが少しでも参考になれば幸いです。

  • AWS は、米国その他の諸国における Amazon.com, Inc. またはその関連会社の商標です。
  • その他、記載されている会社名および商品・製品・サービス名は、各社の商標または登録商標です。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?