LoginSignup
2
0

More than 1 year has passed since last update.

Terraform aws-wafのwebacl (cloudfront)をimportするメモ

Last updated at Posted at 2022-09-26

概要

  • AWS WAFにて手動でリソース(WebAcl)を作成した
  • WAF ACLはCloudFront用
  • importしようとしたがうまく行かなくてハマった
  • 解決したのでメモ

詳細

  • 以下のようなリソースに対してimportを行う

image.png

エラー例

  • 以下のようなエラーが出た
╷
│ Error: WAFInvalidParameterException: Error reason: The scope is not valid., field: SCOPE_VALUE, parameter: CLOUDFRONT
│ {
│   RespMetadata: {
│     StatusCode: 400,
│     RequestID: "74801f48-cfdc-41f8-adfd-99db932e64e7"
│   },
│   Field: "SCOPE_VALUE",
│   Message_: "Error reason: The scope is not valid., field: SCOPE_VALUE, parameter: CLOUDFRONT",
│   Parameter: "CLOUDFRONT",
│   Reason: "The scope is not valid."
│ }

設定例

  • 調査したところScopeが"CLOUDFRONT"の場合はリージョンをus-east-1に設定してimportする必要がある

# ---------------------------------------------
# Main Setting
# ---------------------------------------------
//最低限の設定を記述
provider "aws" {
  #region = "ap-northeast-1"
  region = "us-east-1" # <--New!
}
terraform {
  required_version = ">= 1.1"
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = ">= 4.16.0"
    }
  }
}

//importする対象の空リソース定義を記載
resource "aws_wafv2_web_acl" "app_stg_waf_acl_cf_wafcharm_cloudfront" {}

成功例

コマンドラインでオブジェクトを指定しない場合

$ terraform import 

aws_wafv2_web_acl.app_stg_waf_acl_cf_wafcharm_cloudfront a26d77b6-3654-4e67-b5bd-182771b1e521/app-stg-waf-acl-wafcharm-cloudfront/CLOUDFRONT  
aws_wafv2_web_acl.app_stg_waf_acl_cf_wafcharm_cloudfront: Importing from ID "a26d77b6-3654-4e67-b5bd-11111111111/app-stg-waf-acl-wafcharm-cloudfront/CLOUDFRONT"...
aws_wafv2_web_acl.app_stg_waf_acl_cf_wafcharm_cloudfront: Import prepared!
  Prepared aws_wafv2_web_acl for import
aws_wafv2_web_acl.app_stg_waf_acl_cf_wafcharm_cloudfront: Refreshing state... [id=a26d77b6-3654-4e67-b5bd-11111111111]

Import successful!
  • 以下のようにimport完了
$ cat terraform.tfstate
{
  "version": 4,
  "terraform_version": "1.2.0",
  "serial": 1,
  "lineage": "1f1b97e2-dc7d-45fe-c119-0d8f161db2a7",
  "outputs": {},
  "resources": [
    {
      "mode": "managed",
      "type": "aws_wafv2_web_acl",
      "name": "stg_waf_acl_cf_wafcharm_cloudfront",
      "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
      "instances": [
        {
:
:
}

コマンドラインでオブジェクトを指定する場合

  • 以下の作成済みAWSリソース(WAF)をインポートする場合

image.png

main.tf
provider "aws" {
  region = "ap-northeast-1"
}
provider "aws" {
  alias  = "virginia"
  region = "us-east-1"
}
waf.tf
resource "aws_wafv2_web_acl" "stg_waf_acl_wafcharm_cf" {

}
$ terraform import aws_wafv2_web_acl.stg_waf_acl_wafcharm_cf a26d77b6-3654-xxxxxxxxx-182771b1e521/stg-waf-acl-wafcharm-cloudfront/CLOUDFRONT

Import successful!
  • 他にも
//rule groupの場合
$ terraform import aws_wafv2_rule_group.stg_waf_rule_group 83911eed-XXXXXXXXXX-1ab44516b7ac/stg-waf-rule-group-ip-set/CLOUDFRONT

感想

  • terraform importをするとコード化の助けになる場合が多いが、特殊なimport方法があると難しい場合もあり、逆に時間がかかったかもしれない。
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0