

サポート終了通知: 2026 年 10 月 7 日に、 AWS はサポートを終了します AWS Proton。2026 年 10 月 7 日以降、 AWS Proton コンソールまたは AWS Proton リソースにアクセスできなくなります。デプロイされたインフラストラクチャはそのまま残ります。詳細については、[AWS Proton 「サービス廃止と移行ガイド](https://docs.aws.amazon.com/proton/latest/userguide/proton-end-of-support.html)」を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Terraform IaC ファイル
<a name="ag-infrastructure-tmp-files-terraform"></a>

で Terraform Infrastructure as Code (IaC) ファイルを使用する方法について説明します AWS Proton。[Terraform](https://www.terraform.io/) は、[HashiCorp](https://www.hashicorp.com/) によって開発された、広く使用されているオープンソースの IaC エンジンです。Terraform モジュールは HashiCorp の HCL 言語で開発され、Amazon Web Services 含むいくつかのバックエンドインフラストラクチャプロバイダーをサポートしています。

AWS Proton は[、Terraform IaC のセルフマネージドプロビジョニング](ag-works-prov-methods.md#ag-works-prov-methods-self)をサポートしています。 IaC

プルリクエストに応答してインフラストラクチャプロビジョニングを実装するプロビジョニングリポジトリの完全な例については、GitHub 上の[AWS Proton用の Terraform OpenSource GitHub Actions](https://github.com/aws-samples/aws-proton-terraform-github-actions-sample) 自動化テンプレートを参照してください。

**Terraform IaC テンプレートバンドルファイルにおけるセルフマネージドプロビジョニングの働き:**

1. Terraform テンプレートバンドルから[環境を作成する](ag-create-env.md)と、 はコンソールまたは`spec file`入力パラメータを使用して`.tf`ファイルを AWS Proton コンパイルします。

1. コンパイル済み IaC ファイルをマージするためのプルリクエストを[AWS Protonに登録したリポジトリ](ag-create-repo.md)に送ります。

1. リクエストが承認されると、指定したプロビジョニングステータスを AWS Proton 待機します。

1. リクエストが拒否されると、環境の作成はキャンセルされます。

1. プルリクエストがタイムアウトになった場合、環境の作成は完了*しません*。

**AWS Proton Terraform IaC に関する考慮事項:**
+ AWS Proton は Terraform プロビジョニングを管理しません。
+ この[リポジトリでプロビジョニングリポジトリを .makes プルリクエストに登録](ag-create-repo.md)する必要があります。 AWS Proton AWS Proton 
+ プロビジョニングリポジトリ AWS Proton に接続する[には、CodeStar 接続を作成](setting-up-for-service.md#setting-up-vcontrol)する必要があります。
+  AWS Proton コンパイルされた IaC ファイルからプロビジョニングするには、環境およびサービスの作成および更新アクション AWS Proton 後に AWS Proton プルリクエストに応答する必要があります。詳細については、「[AWS Proton 環境](ag-environments.md)」および「[AWS Proton サービス](ag-services.md)」を参照してください。
+  AWS Proton コンパイルされた IaC ファイルからパイプラインをプロビジョニングするには、[CI/CD パイプラインリポジトリを作成](setting-up-for-service.md#setting-up-pr-repo)する必要があります。
+ プルリクエストベースのプロビジョニング自動化には、プロビジョニングされた AWS Proton リソースステータスの変更 AWS Proton を通知するステップが含まれている必要があります。 AWS Proton [NotifyResourceDeploymentStatusChange API](https://docs.aws.amazon.com/proton/latest/APIReference/API_NotifyResourceDeploymentStatusChange.html) を使用できます。
+ CloudFormation IaC ファイルから作成されたサービス、パイプライン、およびコンポーネントは、Terraform IaC ファイルから作成された環境にデプロイすることはできません。
+ CloudFormation IaC ファイルから作成されたサービス、パイプライン、およびコンポーネントは、Terraform IaC ファイルから作成された環境にデプロイすることはできません。

Terraform IaC ファイルを準備するときは AWS Proton、次の例に示すように、入力変数に名前空間をアタッチします。詳細については、「[パラメータ](parameters.md)」を参照してください。

## 例 1: AWS Proton 環境 Terraform IaC ファイル
<a name="ag-env-tform-example"></a>

```
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 3.0"
    }
  }
  // This tells terraform to store the state file in s3 at the location
  // s3://terraform-state-bucket/tf-os-sample/terraform.tfstate
  backend "s3" {
    bucket = "terraform-state-bucket"
    key    = "tf-os-sample/terraform.tfstate"
    region = "us-east-1"
  }
}

// Configure the AWS Provider
provider "aws" {
  region = "us-east-1"
  default_tags {
    tags = var.proton_tags
  }
}

resource "aws_ssm_parameter" "my_ssm_parameter" {
  name  = "my_ssm_parameter"
  type  = "String"
  // Use the Proton environment.inputs. namespace
  value = var.environment.inputs.ssm_parameter_value
}
```

## コンパイル済み Infrastructure as Code として
<a name="compiled-tform"></a>

環境またはサービスを作成すると、 はコンソールまたは`spec file`入力を使用してインフラストラクチャをコードファイルとして AWS Proton コンパイルします。これで、次の例に示すように、Terraform であなたの入力に使用できる `proton.resource-type.variables.tf` ファイルと `proton.auto.tfvars.json` ファイルが作成されます。これらのファイルは、環境名やサービスインスタンス名と同じフォルダ内の指定されたリポジトリにあります。

この例では、 が変数定義と変数値にタグ AWS Proton を含める方法と、これらの AWS Proton タグをプロビジョニングされたリソースに伝達する方法を示しています。詳細については、「[プロビジョニングされたリソースへのタグの伝達](resources.md#auto-tags-prop)」を参照してください。

### 例 2:「dev」という環境向けにコンパイルされた IaC ファイル。
<a name="ag-compiled-example"></a>

**dev/environment.tf:**

```
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 3.0"
    }
  }
  // This tells terraform to store the state file in s3 at the location
  // s3://terraform-state-bucket/tf-os-sample/terraform.tfstate
  backend "s3" {
    bucket = "terraform-state-bucket"
    key    = "tf-os-sample/terraform.tfstate"
    region = "us-east-1"
  }
}

// Configure the AWS Provider
provider "aws" {
  region = "us-east-1"
  default_tags {
    tags = var.proton_tags
  }
}

resource "aws_ssm_parameter" "my_ssm_parameter" {
  name  = "my_ssm_parameter"
  type  = "String"
  // Use the Proton environment.inputs. namespace
  value = var.environment.inputs.ssm_parameter_value
}
```

**dev/proton.environment.variables.tf:**

```
variable "environment" {
  type = object({
    inputs = map(string)
    name = string
  })
}

variable "proton_tags" {
  type = map(string)
  default = null
}
```

**dev/proton.auto.tfvars.json:**

```
{
  "environment": {
    "name": "dev",
    "inputs": {
      "ssm_parameter_value": "MyNewParamValue"
    }
  }

  "proton_tags" : {
    "proton:account" : "123456789012",
    "proton:template" : "arn:aws:proton:us-east-1:123456789012:environment-template/fargate-env",
    "proton:environment" : "arn:aws:proton:us-east-1:123456789012:environment/dev"
  }
}
```

## リポジトリパス
<a name="repo-dir"></a>

AWS Proton は、環境またはサービス作成アクションからのコンソールまたは仕様入力を使用して、コンパイルされた IaC ファイルを見つけるリポジトリとパスを見つけます。入力値は、[名前空間入力パラメータ](parameters.md)に渡されます。

AWS Proton は 2 つのリポジトリパスレイアウトをサポートしています。次の例では、2 つの環境の名前空間リソースパラメータによってパスの名前が指定されています。各環境には 2 つのサービスのサービスインスタンスがあり、そのうちの 1 つのサービスのサービスインスタンスにはコンポーネントが直接定義されています。

<a name="limits-table"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/proton/latest/userguide/ag-infrastructure-tmp-files-terraform.html)

------
#### [ Layout 1 ]

が `environments`フォルダを持つ指定されたリポジトリ AWS Proton を見つけると、コンパイルされた IaC ファイルを含むフォルダが作成され、 で名前が付けられます`environment.name`。

が、サービスインスタンス互換環境名と一致するフォルダ名を含む `environments` フォルダを持つ指定されたリポジトリ AWS Proton を見つけると、コンパイルされたインスタンス IaC ファイルを含むフォルダが作成され、 という名前が付けられます`service_instance.name`。

```
/repo
    /environments
        /env-prod                             # environment folder
            main.tf
            proton.environment.variables.tf
            proton.auto.tfvars.json
          
            /service-one-instance-one-prod    # instance folder
                main.tf
                proton.service_instance.variables.tf
                proton.auto.tfvars.json
              
            /service-two-instance-two-prod    # instance folder
                main.tf
                proton.service_instance.variables.tf
                proton.auto.tfvars.json
              
            /component-prod                   # component folder
                main.tf
                proton.component.variables.tf
                proton.auto.tfvars.json
              
        /env-staged                           # environment folder
            main.tf
            proton.variables.tf
            proton.auto.tfvars.json         
          
            /service-one-instance-one-staged  # instance folder
                main.tf
                proton.service_instance.variables.tf
                proton.auto.tfvars.json
              
            /service-two-instance-two-staged  # instance folder
                main.tf
                proton.service_instance.variables.tf
                proton.auto.tfvars.json
              
            /component-staged                 # component folder
                main.tf
                proton.component.variables.tf
                proton.auto.tfvars.json
```

------
#### [ Layout 2 ]

がフォルダなしで指定されたリポジトリ AWS Proton を検出すると`environments`、コンパイルされた環境 IaC ファイルがある`environment.name`フォルダが作成されます。

がサービスインスタンス互換環境名に一致するフォルダ名を持つ指定されたリポジトリ AWS Proton を検出すると、コンパイルされたインスタンス IaC ファイルがある`service_instance.name`フォルダが作成されます。

```
/repo
    /env-prod                             # environment folder
        main.tf
        proton.environment.variables.tf
        proton.auto.tfvars.json
      
        /service-one-instance-one-prod    # instance folder
            main.tf
            proton.service_instance.variables.tf
            proton.auto.tfvars.json
          
        /service-two-instance-two-prod    # instance folder
            main.tf
            proton.service_instance.variables.tf
            proton.auto.tfvars.json
          
        /component-prod                   # component folder
            main.tf
            proton.component.variables.tf
            proton.auto.tfvars.json
          
    /env-staged                           # environment folder
        main.tf
        proton.variables.tf
        proton.auto.tfvars.json         
      
        /service-one-instance-one-staged  # instance folder
            main.tf
            proton.service_instance.variables.tf
            proton.auto.tfvars.json
          
        /service-two-instance-two-staged  # instance folder
            main.tf
            proton.service_instance.variables.tf
            proton.auto.tfvars.json
          
        /component-staged                 # component folder
            main.tf
            proton.component.variables.tf
            proton.auto.tfvars.json
```

------