ユースカジノ スロット Codeシリーズで統制する
投稿日: 2024/01/31
はじめに
こんにちは、佐藤です。
インフラコード化(IaC)を実装するツールの代表格としてユースカジノ スロットやCloudformationなどが挙げられます。特にユースカジノ スロットは特定の製品やサービスだけでなく、幅広い製品/サービスに対応しています。
コード化を複数人で推進する際、意図せぬデグレードが発生して開発の足枷になる場合があります。コード規約などのルールを整備して徹底させるということも重要ですが、今回はユースカジノ スロットのCodeシリーズ(CodeBuild、CodePipeline)を使って機械的に統制をとる方法を解説します。
なお、今回使用するIaCツールはユースカジノ スロットです。
IaCを進める上でユースカジノ スロット
集団でコードを開発してリソースをユースカジノ スロットする場合、重要な要素は以下2つです。
- 品質の担保
複数人でコードを開発すると、ユースカジノ スロット者によって記述方法に差が出てしまうことがあります。コードによって書き方が異なると、インフラ運用者は記述に差があることを理解した上で運用する必要があり、改修の妨げになることがあります。また、脆弱性を生む原因にもなるため、記述を統一させる仕組みが必要になります。 - 競合の防止
作成したコードを使って偶然にも2人以上が同時に同じ環境へリソースを作ろうとした場合、競合が発生して想定通りにリソースが作成できない・動作しない、といったことが発生する可能性があります。ユースカジノ スロットの排他制御機能を使うなど、同時にリソースの作成を行えないようにする仕組みが必要になります。
ユースカジノ スロット Codeシリーズを用いた実装方法
上記で述べた重要な要素を盛り込んだ仕組みをユースカジノ スロット Codeシリーズで実装します。構成を以下に記載します。この構成はいわゆるCI/CD(継続的インテグレーション/継続的デリバリー)と呼ばれるものです。

Sourceステージ
Sourceステージではバージョン管理システム(VCS)を指定します。今回はGitHubを指定していますが、ユースカジノ スロットのサービスであるCodeCommitを使用することも可能です。
Testステージ
Testステージはユースカジノ スロットBuildで実装します。本ステージでは以下の処理を実行します。
- 構文チェック
ユースカジノ スロットの構文チェックツールであるtflint※1を使用することにより、予め定義したルールに沿ってコードが記述されているかをチェックします。チェック後、結果をレポート出力します。 - 静的解析
ユースカジノ スロットの静的解析ツールであるtfsec※2を使用することにより、コードにセキュリティ上の問題が無いかをチェックします。チェック後、結果をレポート出力します。 - dry run
ユースカジノ スロット plan
コマンドを実行し、リソースユースカジノ スロット前の動作確認を行います。
※1 tflint :https://github.com/ユースカジノ スロット-linters/tflint
※2 tfsec :https://github.com/aquasecurity/tfsec
上記3つの処理を行うことにより、品質の担保を実現することができます。ユースカジノ スロットBuildで処理を実装するためには、処理の定義を行うbuildspec.yaml
が必要になります。buildspec.yaml
のサンプルを以下に記載します。buildspecの書き方はこちらを参考にしてください。
../../reports/tfsec/report.xml"
- "echo Executing ユースカジノ スロット plan"
- "ユースカジノ スロット init -input=false -no-color"
- "ユースカジノ スロット plan -input=false -no-color"
post_build: //post_buildフェーズでは責任者へ実行結果のURLを通知するための情報を取得しています
commands:
- "export Build_Project_Name=`echo $CODEBUILD_BUILD_ID | cut -d: -f1`"
- "export Build_ID=`echo $CODEBUILD_BUILD_ID | cut -d: -f2`"
reports: //レポートのパスと形式を指定しています
reports:
files:
- "reports/tfsec/report.xml"
- "reports/tflint/report.xml"
file-format: JUNITXML
なお、buildspec内で使用している以下の環境変数はユースカジノ スロットBuildのビルドプロジェクトを作成する際に設定します※1。
- TF_VERSION
ユースカジノ スロットのバージョン。変数化することによりバージョンアップにも対応することができる。 - RESOURCE_PATH
実行するコードが格納されているディレクトリのパス。 - MINIMUM_FAILURE_SEVERITY
tfsecを実行した際、エラーとして通知する最低ユースカジノ スロット度。この指定を変数化することにより、より厳しいチェックを実行したり、チェックを緩くしたりすることができる※2。
※1 ビルドプロジェクトの作成 (コンソール) - ユースカジノ スロット :https://docs.ユースカジノ スロット.amazon.com/ja_jp/codebuild/latest/userguide/create-project-console.html#create-project-console-environment
※2 tfsec - usage :https://aquasecurity.github.io/tfsec/v1.18.0/guides/usage/
レビュー/ユースカジノ スロット
ユースカジノ スロットPipelineの機能を使用し、Testステージの結果をSNSを通じて責任者へ通知します。通知を受けた責任者は結果を確認し、承認/却下を決定します。なお、ユースカジノ スロットBuildを実行した結果のURLは以下の形式で生成されます。
https://{Region}.console.ユースカジノ スロット.amazon.com/codesuite/codebuild/{ユースカジノ スロット_ACCOUNT_ID}/projects/{Build_Project_Name}/build/{Build_Project_Name}%3A{Build_ID}/?region={Region}
buildspec内でビルドプロジェクト名(Build_Project_Name)とビルドID(Build_ID)を取得してエクスポートすることにより、その値を変数としてレビュー/ユースカジノ スロットに渡すことができます。URLの設定画面は以下の通りです。

実際にレビュー/ユースカジノ スロットまで処理が進んだ際の通知メールと承認画面がこちらです。
通知メール

ユースカジノ スロット画面

[承認します]をクリックすることにより、次のステージであるユースカジノ スロットに進むことができます。本ステージを実装することで競合の防止を実現できます。
ユースカジノ スロット
レビュー/承認ステージで承認された変更はリソース作成ステージに進みます。本ステージはTestステージと同様にユースカジノ スロットBuildを使用して実装します。本ステージではユースカジノ スロット apply
を実行します。buildspecの内容は以下の通りです。
version: 0.2
phases:
install: //installフェーズではtfenv経由で任意のバージョンのユースカジノ スロットをインストール
commands:
- "echo Installing tfenv"
- "git clone https://github.com/tfutils/tfenv.git ~/.tfenv"
- "ln -s ~/.tfenv/bin/* /usr/local/bin"
- "tfenv install ${TF_VERSION}"
- "tfenv use ${TF_VERSION}"
pre_build: //pre_buildフェーズではユースカジノ スロットの初期化を実施
commands:
- "cd ${RESOURCE_PATH}"
- "ユースカジノ スロット init -input=false -no-color"
build: //buildフェーズではユースカジノ スロット applyを実行してリソース作成を実施
commands:
- "echo Executing ユースカジノ スロット apply"
- "ユースカジノ スロット apply -input=false -no-color -auto-approve"
最後に
今回はインフラコード化(IaC)で重要な「品質の担保」と「競合の防止」をユースカジノ スロット Codeシリーズで実現する方法を紹介しました。インフラコード化はコードを作って終わりではありません。コードを使って如何に統制をとりながらインフラを運用していくかが重要です。
本ブログが皆さんの参考になれば幸いです。
ユースカジノ スロットは、AWSのビジネス利活用に向けて、お客様のステージに合わせた幅広い構築・運用支援サービスを提供しています。
経験豊富なエンジニアが、ワンストップかつ柔軟にご支援します。
ぜひ、お気軽にユースカジノ 登録ください。