上記の記事を参考にさせて頂いて
- まずはAWSマネージメントコンソール上でインフラを作成する
terraform import
で取り込む- 作成された
tfstate
を参考にしつつオプションを調べる
という手順でTerraformの定義を実装していた。
その際にterraform import
のオプション指定の仕方が対象のAWSサービスによって微妙に異なるということを知ったのでメモしておく。
S3の場合
以下のように定義していたとする。(同名のバケットをAWSマネージメントコンソールで作成済みの前提)
resource "aws_s3_bucket" "example-bucket" { bucket = "example-bucket" }
以下のようにterraform import <プロバイダ>_<タイプ>.<リソース名> <バケット名>
とするとインポートに成功する。
terraform import aws_s3_bucket.example-bucket example-bucket
SQSの場合
SQSの場合も同じようにいけると思い、以下のようなコマンドを実行した。
import aws_sqs_queue.example-queue example-queue
すると以下のようなエラーメッセージが出た。
Error: SQS Queue URL (example-queue) is in the incorrect format
公式ドキュメントのimport
の項を読んだところ、SQSの場合はキュー名ではなくキューのURLを指定しないといけないらしい。
registry.terraform.io
正しいコマンド
terraform import aws_sqs_queue.example-queue https://sqs.ap-northeast-1.amazonaws.com/xxxxxxxxxxxx/example-queue
公式ドキュメントにはAWSの各サービスごとのimportコマンドのサンプルが必ず乗っているようなので、それを確認するようにする。