メインコンテンツへスキップ

コマンド: import

tofu importコマンドは、既存のリソースをOpenTofuにインポートします。

使用法

使用法: tofu import [オプション] アドレス ID

importコマンドは、IDから既存のリソースを見つけ、指定されたアドレスでOpenTofuステートにインポートします。

アドレスは有効なリソースアドレスである必要があります。任意のリソースアドレスが有効であるため、importコマンドは、リソースをモジュールだけでなく、ステートのルートにも直接インポートできます。

IDは、インポートされるリソースタイプによって異なります。たとえば、AWS EC2インスタンスの場合、インスタンスID(i-abcd1234)ですが、AWS Route53ゾーンの場合、ゾーンID(Z12ABC4UGMOZ2N)です。ID形式の詳細については、プロバイダードキュメントを参照してください。不明な場合は、IDを試してみてください。IDが無効な場合は、エラーメッセージが表示されます。

コマンドラインフラグはすべてオプションです。次のフラグを使用できます。

  • -config=path - インポート用にプロバイダーを構成するOpenTofu構成ファイルのディレクトリへのパス。デフォルトでは、作業ディレクトリになります。このディレクトリにOpenTofu構成ファイルが含まれていない場合、プロバイダーは手動入力または環境変数で構成する必要があります。

  • -input=true - プロバイダー構成の入力を求めるかどうか。

  • -lock=false - 操作中にステートロックを保持しません。他の人が同じワークスペースに対して同時にコマンドを実行している場合は危険です。

  • -lock-timeout=0s - ステートロックをリトライする時間。

  • -no-color - 指定すると、出力に色が含まれません。

  • -parallelism=n - OpenTofuがグラフを歩く際の同時操作数を制限します。デフォルトは10です。

  • -provider=provider - **非推奨** オブジェクトのインポート時に使用するプロバイダー構成をオーバーライドします。デフォルトでは、OpenTofuはターゲットリソースの構成で指定されたプロバイダーを使用し、ほとんどの場合、これが最適な動作です。

  • -var 'foo=bar' - OpenTofu構成に変数を設定します。このフラグは複数回設定できます。変数値は、OpenTofu言語のリテラル式として解釈されるため、リスト値とマップ値はこのフラグで指定できます。

  • -var-file=foo - 変数ファイルからOpenTofu構成に変数を設定します。terraform.tfvarsまたは.auto.tfvarsファイルが現在のディレクトリにある場合、それらは自動的にロードされます。terraform.tfvarsが最初にロードされ、.auto.tfvarsファイルがアルファベット順にロードされます。-var-fileで指定されたファイルは、作業ディレクトリ内のファイルから自動的に設定された値を上書きします。このフラグは複数回使用できます。これは、-configフラグでのみ役立ちます。

cloudバックエンドまたはremoteバックエンドのみを使用する構成の場合、tofu import-ignore-remote-versionオプションも受け入れます。

local バックエンドのみを使用する構成の場合、tofu import はレガシーオプションである -state-state-out、および -backup も受け付けます。

プロバイダーの設定

OpenTofuは、インポートに使用されるプロバイダーを設定する設定ファイルを読み込もうとします。設定ファイルが存在しない場合、または特定のプロバイダーの設定が存在しない場合、OpenTofuはアクセス認証情報を求めます。プロバイダーを設定するために環境変数を指定することもできます。

設定ファイルの読み込みに関してOpenTofuが持つ唯一の制限は、インポートプロバイダーの設定が変数以外の入力に依存してはならないということです。たとえば、プロバイダーの設定はデータソースに依存できません。

実際の例として、AWSリソースをインポートしていて、以下の内容の設定ファイルがある場合、OpenTofuはこのファイルでAWSプロバイダーを設定します。

コードブロック
variable "access_key" {}
variable "secret_key" {}

provider "aws" {
access_key = "${var.access_key}"
secret_key = "${var.secret_key}"
}

例:リソースへのインポート

この例では、foo という名前の aws_instance リソースにAWSインスタンスをインポートします。

コードブロック
$ tofu import aws_instance.foo i-abcd1234

例:モジュールへのインポート

以下の例では、foo という名前のモジュール内の bar という名前の aws_instance リソースにAWSインスタンスをインポートします。

コードブロック
$ tofu import module.foo.aws_instance.bar i-abcd1234

例:countで設定されたリソースへのインポート

以下の例では、count で設定された baz という名前の aws_instance リソースの最初のインスタンスにAWSインスタンスをインポートします。

コードブロック
$ tofu import 'aws_instance.baz[0]' i-abcd1234

例:for_eachで設定されたリソースへのインポート

以下の例では、for_each で設定された baz という名前の aws_instance リソースの "example" インスタンスにAWSインスタンスをインポートします。

Linux、Mac OS、および UNIX

コードブロック
$ tofu import 'aws_instance.baz["example"]' i-abcd1234

PowerShell

コードブロック
$ tofu import 'aws_instance.baz[\"example\"]' i-abcd1234

Windows cmd.exe

コードブロック
$ tofu import aws_instance.baz[\"example\"] i-abcd1234