チュートリアル:Terraform を使って AWS S3 バケットをデプロイする
RubyMine は Terraform を使ってインフラストラクチャをコードとして管理することをサポートし、IDE から離れることなくクラウドリソースの定義、レビュー、更新ができます。 機能用ストレージの作成、環境の設定、複数マシンや CI パイプライン間で構成を一貫させるといったタスクも、クラウドコンソールではなくコードで直接処理できます。
このチュートリアルでは、RubyMine で Terraform を使って AWS S3 バケット を作成する方法を説明します。 IDE の機能を使って構成を記述・確認し、適用してリソースを作成し、最後にこのリソースを削除します。
始める前に
チュートリアルを始める前に、以下の前提条件が満たされていることを確認してください:
AWS アカウント。 AWS アカウントを作成して有効化してください。 このチュートリアルでは AWS 無料利用枠で十分ですが、アカウント設定時に有効な支払いメソッドが必要です。 詳細については、 公式ドキュメント を参照してください。
プログラムによるアクセス権を持つ IAM ユーザー。 セキュリティ上の理由から、このチュートリアルではルートアカウントを使用しないでください。 代わりに、 AWS マネジメントコンソール でプログラムによるアクセス権のある新しいユーザーを作成し、
AmazonS3FullAccess権限ポリシーを割り当ててください。AWS CLI。 お使いのマシンに AWS CLI をインストールしてください。 AWS CLI を使ってローカルで AWS 資格情報を設定し、アカウントへのアクセスを確認します。
環境を設定する
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 資格情報の設定と確認が終わったら、RubyMine を起動して開発環境をセットアップしてください。
Terraform および HCL プラグインをインストール
この機能は、インストールして有効にする必要がある Terraform と HCL(英語) プラグインに依存しています。
Ctrl+Alt+S を押して設定を開き、 を選択します。
Marketplace タブを開き、 Terraform と HCL プラグインを見つけて、 インストール をクリックします (プロンプトが表示されたら、IDE を再起動します)。
Terraform 実行パスを指定する
実行構成を使用して IDE から Terraform コマンドを実行するには、マシンに Terraform がインストールされている必要があります。
Ctrl+Alt+S を押して設定を開き、 を選択します。
ほとんどの場合、RubyMine は Terraform 実行可能ファイルへのパスを自動的に検出します。 IDE が実行ファイルのバージョンとパスを検出しない場合は、 検出とテスト をクリックしてください。
マシンに Terraform がインストールされていない場合は、 インストール をクリックします。

必要に応じて、 Terraform 実行可能ファイルパス フィールドに Terraform へのパスを手動で指定できます。
新規プロジェクトを作成する
Terraform 構成を保存するため、新しい空のプロジェクトを作成しましょう。
これは、純粋な Ruby プログラミングを対象とした基本的なプロジェクトです。
RubyMine を起動してください。
新しいプロジェクトを開始するには、次のいずれかを実行します。
ようこそ画面で 新規プロジェクト をクリックします。
メインメニューから を選択します。
メインウィンドウのヘッダーにあるプロジェクトウィジェットをクリックし、 新規プロジェクト を選択します。

左側のリストから、 空のプロジェクト を選択します。
名前 フィールドにプロジェクトの名前を入力します。
ロケーション フィールドに、プロジェクトの場所へのパスを入力または選択します。
インタープリター フィールドで、プロジェクトで使用する Ruby インタープリターを選択します。
作成 をクリックしてください。

Terraform 構成を作成する
プロジェクトが準備できたら、インフラストラクチャを定義しはじめましょう。 Terraform では、インフラストラクチャは HashiCorp Configuration Language(HCL)で記述された構成ファイルを使って表現されます。 AWS S3 バケットを定義する簡単な Terraform 構成を作成しましょう。
新しい Terraform ファイルを作成する
プロジェクト ツールウィンドウ(Alt+1 )で、プロジェクトルートを右クリックし、 を選択します。
新規ファイル ダイアログで、新しいファイルに
mainと命名し、リストから 構成 ファイルテンプレートを選択します。 Enter を押します。
RubyMine はプロジェクトルートに main.tf ファイルを作成し、エディターで開きます。
RubyMine はスマートアシスタンス機能を使って、有効な Terraform 構成をビルドする手助けをします。 プロバイダーを定義して構成の作成を始めましょう。
AWS プロバイダーを追加する
main.tf ファイルで、
providerブロックの入力を開始してください:provider ""コード補完(Ctrl+Space )を呼び出し、 補完候補のリストから
awsを選択します:provider "aws" { }この操作を行うと、RubyMine は
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 を実行
エディター内のガターアイコンや実行/デバッグ構成を使って、RubyMine から直接 Terraform コマンドを実行可能です。
このセクションでは、プロジェクトの初期化、計画変更のプレビュー、構成適用による S3 バケット作成、さらに不要なコストを避けるための削除までを行います。
プロジェクトを初期化する
terraform init コマンドは Terraform プロジェクトを初期化し、必須プロバイダーのダウンロードや作業ディレクトリの準備を行います。 さらに .terraform.lock.hcl ファイルを作成し、利用したプロバイダーのバージョンを記録・管理して、複数の実行・環境でも一貫した動作を保証します。
main.tf ファイルで、ガターの
Terraform を実行 をクリックします。
ドロップダウンから Init コマンドを選択します。
プロジェクトの初期化後、Terraform が生成する実行プランを適用前にプレビューしましょう。
RubyMine では 実行/デバッグ構成 を使って Terraform コマンドが実行できます。引数追加や環境変数設定により実行内容もカスタマイズ可能です。 このチュートリアルでは、 -out 引数を追加し、プランをファイルに保存します。 これにより、プランのレビューや同じ変更の再適用が簡単にできます。
実行プランをプレビューする
に進みます。 または、 Alt+Shift+F10 を押してから 0 を押します。
クリック(
) 新規構成を追加 を押し、 Terraform の入力を始めます。

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