terraform で map 型の値を key 順にソートした上で value のリストを取得する

terraform で map 型の値を key 順にソートした上で value のリストを取得する

terraform で map 型を for で整形した際に key を昇順にソートして並べてくれます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
> {for k, v in {"a":3, "c":2, "d":1}: v => k}

{
"1" = "d"
"2" = "c"
"3" = "a"
}

> values({for k, v in {"a":3, "c":2, "d":1}: v => k})

[
"d",
"c",
"a",
]

これを利用し、data リソースで取得した Subnet ID を AZ 順 (a → c → d) に list で取得してみます。

続きを読む
tfsec aws-vpc-add-description-to-security-group 対応
Terraform Elasticache Redis 6.x 構築時の注意

AWS IAM Policy はインラインでなく、管理ポリシーを積極的に使おう

概要

IAM Policy で、管理ポリシーとインラインポリシーってどういう違いがあって、どっちを使うべきなのだろう?と調べてみました。

続きを読む

aws_ssm_parameter の value を ignore_change に指定しない

概要

これまで秘密情報は以下の様な取り扱いをしていることが多かったです。

1
2
3
4
5
6
7
8
9
resource "aws_ssm_parameter" "master_password" {
name = "master_password"
type = "SecureString"
value = "dummy"

lifecycle {
ignore_changes = [value]
}
}
1
2
3
data "aws_ssm_parameter" "master_password" {
name = "master_password"
}

上記いずれの場合にも、事前に Parameter Store への登録が必須です。
つまり、terraform で管理されない作業が発生していることになります。

対応ステップ

terraform で完結させる方法としては、パラメータストアに登録する value を暗号化して登録することです。

続きを読む