AWS

Provider Configuration

  • max_retries … APIのリトライ回数を指定できる

Data Sources

acm_certificate

https://www.terraform.io/docs/providers/aws/d/acm_certificate.html

ACM証明書の情報取得

参考:

caller_identity

https://www.terraform.io/docs/providers/aws/d/caller_identity.html

Terraform実行中のAWSアカウントのID等の情報を取得する。

参考:

iam_policy_document

https://www.terraform.io/docs/providers/aws/d/iam_policy_document.html

IAM PolicyのJSONをHCLっぽく定義できる。
JSONテンプレートより融通が効くし、syntax checkも掛かるので、便利なことがある。

region

https://www.terraform.io/docs/providers/aws/d/region.html

provider で設定したリージョンを取得できる。

sns_topic

https://www.terraform.io/docs/providers/aws/d/sns_topic.html

SNS TopicのARNを取得できる。

ssm_parameter

https://www.terraform.io/docs/providers/aws/d/ssm_parameter.html

EC2 Parameter Storeからデータ取得

# "foo"という名前のパラメータストアを取得
data "aws_ssm_parameter" "foo" {
  name  = "foo"
}
  • SecureString であっても特にKSM keyを指定する必要はない。内部的にdecryptしてくれるみたい。
    • “terraformのstateの中ではraw textで保存されるから気をつけてね"って書いてある。

参考:

Resources

appautoscaling関連

Application AutoScaling.
ECS Serviceなどのオートスケール設定。

autoscaling関連

cloudwatch関連

ec2関連

ecs関連

動的ポートマッピングをする場合、task_definitionでhostPortを0にする:

# ecs_task_definition.tf
resource "aws_ecs_task_definition" "service" {
  :
  container_definitions = "${file("task-definitions/service.json")}"
  :
}

# task_definitions/service.json
[
  {
    :
    "portMappings": [
      {
        "containerPort": 3000,
        "hostPort": 0,
    ]
  },
  :
]

参考:

elasticsearch関連

iam関連

kms関連

lambda関連

lb関連

ALB等の作成・管理:

CLB:

rds関連

route53関連

s3関連

sns関連

vpc関連

budgets_budget

https://www.terraform.io/docs/providers/aws/r/budgets_budget.html

Budgetにコストアラートを設定できたり。

dynamodb_table

https://www.terraform.io/docs/providers/aws/r/dynamodb_table.html

DynamoDB table作成

security_group

https://www.terraform.io/docs/providers/aws/r/security_group.html

Security Groupの作成・管理

sqs_queue

https://www.terraform.io/docs/providers/aws/r/sqs_queue.html

SQS Queueの作成・管理

ssm_parameter

https://www.terraform.io/docs/providers/aws/r/ssm_parameter.html

EC2 Parameter Storeにデータを保存する。