チュートリアル:Terraform を使って AWS S3 バケットをデプロイする
PhpStorm は Terraform を使ったインフラストラクチャのコードとしての管理をサポートしており、IDE から離れることなくクラウドリソースを定義、レビュー、更新できます。 機能ごとのストレージ作成、環境の設定、マシンや CI パイプライン間で構成を一貫性を保つなどのタスクは、クラウドコンソールを使わずにコードで直接処理できます。
このチュートリアルでは、PhpStorm で Terraform を使って AWS S3 バケット を作成する方法を解説します。 IDE 機能を使い、構成の作成とレビュー、適用によるリソースのプロビジョニング、その後にリソースの削除を行います。
始める前に
チュートリアルを始める前に、次の前提条件が満たされていることを確認してください:
AWS アカウント。 AWS アカウントを作成して有効化してください。 このチュートリアルでは AWS 無料利用枠で十分ですが、アカウント作成時に有効な支払いメソッドが必要です。 詳細については、 公式ドキュメントを参照してください。
プログラムによるアクセスが可能な IAM ユーザー。 セキュリティ上の理由から、このチュートリアルではルートアカウントを使用しないでください。 代わりに、 AWS マネジメントコンソールでプログラムによるアクセス権を持つ新規ユーザーを作成し、
AmazonS3FullAccess権限ポリシーをアタッチしてください。AWS CLI。 ご利用のマシンに AWS CLIをインストールしてください。 インストールした AWS CLI でローカルの資格情報を設定し、アカウントへのアクセスを確認します。
環境を設定する
IAM ユーザーを作成し AWS CLI をインストール後、ローカルで資格情報を設定してください:
AWS 資格情報を設定する
システムターミナルで次のコマンドを実行し、名前付きプロファイルを設定します:
aws configure --profile terraform-user名前付きプロファイルを使うことで、同じマシン上で複数の AWS アカウントや構成を管理できます。 ここで指定したプロファイル名は後ほど Terraform 構成で使用されます。
プロンプトが表示されたら、次の内容を入力してください:
AWS アクセスキー ID:作成した IAM ユーザーのもの。
AWS シークレットアクセスキー:作成した IAM ユーザーのもの。
デフォルトリージョン名:リソースを作成するリージョン。 例:
us-east-1またはeu-central-1。 サポートされているリージョンの詳細については、 公式ドキュメントを参照してください。デフォルト出力フォーマット: Enter を押すとデフォルトフォーマット(JSON)が使用されます。
資格情報が正しく設定されているかは、次のコマンドを実行して確認できます:
aws sts get-caller-identity --profile terraform-user構成が成功すると、コマンドが IAM ユーザーの詳細を返します。
AWS 資格情報を設定・検証したら、PhpStorm を起動し、開発環境をセットアップします。
Terraform と HCL プラグインをインストールする
この機能は、インストールして有効にする必要がある Terraform と HCL(英語) プラグインに依存しています。
Ctrl+Alt+S を押して設定を開き、 を選択します。
Marketplace タブを開き、 Terraform と HCL プラグインを見つけて、 インストールする をクリックします (プロンプトが表示されたら、IDE を再起動します)。
Terraform 実行パスを指定する
実行構成を使用して IDE から Terraform コマンドを実行するには、マシンに Terraform がインストールされている必要があります。
Ctrl+Alt+S を押して設定を開き、 を選択します。
ほとんどの場合、PhpStorm は Terraform 実行可能ファイルへのパスを自動的に検出します。 IDE が実行ファイルのバージョンとパスを検出しない場合は、 検出とテスト をクリックしてください。
マシンに Terraform がインストールされていない場合は、 インストールする をクリックします。

必要に応じて、 Terraform 実行可能ファイルのパス フィールドに Terraform へのパスを手動で指定できます。
新しいプロジェクトを作成する
新しい空のプロジェクトを作成して、Terraform 構成を保存しましょう。
これは、特定のフレームワークを持たない汎用 PHP プロジェクトです。 必要なフレームワークとテクノロジは、後でいつでも追加できます。
新規プロジェクト ダイアログから PHP 空プロジェクト を選択します。
新しいプロジェクトに名前を付け、必要に応じて ロケーション フィールドでその場所を変更します。
空のプロジェクトに
composer.jsonファイルテンプレートを追加する場合は、 「composer.json」を追加 チェックボックスを選択します。
作成 をクリックすると、PhpStorm がプロジェクトスタブを生成し、表示される情報ダイアログで選択した方法に応じて、現在のウィンドウまたは新しいウィンドウで開きます:

Terraform 構成を作成する
プロジェクトの準備ができたら、インフラストラクチャの定義を開始できます。 Terraform では、インフラストラクチャは HashiCorp Configuration Language(HCL)で記述した構成ファイルを使って表現します。 AWS S3 バケットを定義するシンプルな Terraform 構成を作成しましょう。
新しい Terraform ファイルを作成する
プロジェクト ツールウィンドウ(Alt+1 )で、プロジェクトルートを右クリックし、 を選択します。
新規ファイル ダイアログで、新規ファイル名を
mainとし、リストから 構成 ファイルテンプレートを選択します。 Enter を押します。
PhpStorm はプロジェクトルートに main.tf ファイルを作成し、エディターで開きます。
PhpStorm はスマートアシスト機能により、正しい Terraform 構成のビルドをサポートします。 プロバイダーを定義して構成の作成を始めましょう。
AWS プロバイダーを追加する
main.tf ファイルで、
providerブロックの入力を始めます:provider ""コード補完(Ctrl+Space )を実行し、
awsを 補完候補リストから選択します:provider "aws" { }この操作により、PhpStorm はファイルの先頭に
terraformブロックも挿入します。 このブロックは 必要なプロバイダー やそのバージョンを構成内で定義します。これらの手順後、構成は次のようになります:
terraform { required_providers { aws = { source = "hashicorp/aws" version = "6.36.0" } } } provider "aws" { }providerブロック内で、コード補完を使ってregionとprofile引数を追加します。引数の値を設定します。例:
provider "aws" { region = "eu-west-1" profile = "terraform-user" }regionは Terraform がリソースを作成する場所を指定し、profileは使用する AWS 資格情報を指定します。
AWS プロバイダーの設定が終わったので、S3 バケットリソースを定義しましょう。
S3 バケットリソースを追加する
main.tf ファイルで、
resourceの入力を始めます。 続いてコード補完(Ctrl+Space )を使い、aws_s3_bucketリソースタイプを選択します。 リソースの命名をtutorial_bucketにします。 構成は次のようになります:resource "aws_s3_bucket" "tutorial_bucket" {}resourceブロック内でbucketと入力し、コード補完で引数を追加します。 バケット名を一意なものに指定してください。例:resource "aws_s3_bucket" "tutorial_bucket" { bucket = "ij-idea-terraform-tutorial-bucket-123" }
構成の準備ができたら、Terraform コマンドを実行して S3 バケットを作成できます。
Terraform を実行
エディターのガターアイコンや実行/デバッグ構成を使い、PhpStorm から直接 Terraform コマンドを実行できます。
このセクションでは、プロジェクトの初期化、変更予定のプレビュー、S3 バケット作成のための構成の適用、その後不要なコストを回避するための削除を行います。
プロジェクトを初期化する
terraform init コマンドは Terraform プロジェクトを初期化し、必要なプロバイダーをダウンロードして作業ディレクトリを準備します。 同時に .terraform.lock.hcl ファイルを作成し、プロジェクトで使用した正確なプロバイダーバージョンを記録して、実行や環境間での一貫した動作を保証します。
main.tf ファイルで、ガターの
Terraform を実行 をクリックします。
ドロップダウンリストから Init コマンドを選択します。
プロジェクト初期化後、変更の適用前に Terraform が生成する実行プランをプレビューします。
PhpStorm では、 実行/デバッグ構成 を使って Terraform コマンドを実行でき、引数の追加や環境変数の設定によるカスタマイズが可能です。 このチュートリアルでは、 -out 引数を追加し、実行プランをファイルに保存します。 これによりプランをレビューし、同じ変更を後から適用できます。
実行プランをプレビューする
に進みます。 または、 Alt+Shift+F10 を押してから 0 を押します。
(
) 新規構成の追加 をクリックし、 Terraform の入力を開始します。

リストから Terraform プラン 構成タイプを選択します。
実行/デバッグ構成の命名を行います。たとえば
Plan S3 Bucket。プログラム引数 フィールドに
-out=tfplan引数を指定します。実行 をクリックしてください。
実行プランの詳細は 実行 ツールウィンドウに表示されます。 同時に -out=tfplan 引数を指定したため、Terraform はプランをプロジェクトルートの tfplan ファイルに保存します。 プランを確認後、このファイルを使って構成を適用し、AWS アカウントに S3 バケットリソースを作成できます。
構成を適用する
前のプロシージャと同様に、新しい実行/デバッグ構成を作成します。 リストから Terraform 適用 構成タイプを選択します。
実行/デバッグ構成の命名を行います。たとえば
Apply S3 Bucket。プログラム引数 フィールドに
tfplan引数を指定します。リソース作成時、Terraform は tfplan ファイルに保存された実行プランを使用します。
実行 をクリックしてください。
構成を適用したら、AWS マネジメントコンソールで S3 バケットが正常に作成されたか確認してください。
クリーンアップ
S3 バケットを削除する
main.tf ファイルで、ガターの
Terraform を実行 をクリックします。
ドロップダウンリストから Destroy コマンドを選択します。
処理が完了したら、AWS マネジメントコンソールで S3 バケットが削除されたことを確認してください。
要約
このチュートリアルでは、次の方法を学習しました。
Terraform 実行可能ファイルのパスを設定し、AWS 環境をセットアップする
PhpStorm で Terraform 構成を作成する
AWS プロバイダーを設定し、S3 バケットリソースを定義する
ガターアイコンと実行/デバッグ構成を使って Terraform コマンドを実行し、インフラストラクチャの初期化、プラン、適用、削除を行う