1. 背景
terraformでIAMユーザを作成し、アクセスキーとシークレットアクセスキーを表示しようとしました。
でも、エラーになるんですよね。
それに対応した記録です。
2. 事象
terraform planしたら、以下のようにエラーが表示されました。
To reduce the risk of accidentally exporting sensitive data that was intended to be only internal, Terraform
│ requires that any root module output containing sensitive data be explicitly marked as sensitive, to confirm
│ your intent.
│
│ If you do intend to export this data, annotate the output value as sensitive by adding the following argument:
│ sensitive = true
以下のようなコードにしていました。アクセスキーとパスワードはそのまま表示されるのですが、シークレットアクセスキーが表示されません。
output “app_user_access_key” {
value = “${aws_iam_access_key.apli_s3put.id}”
}
output “app_user_secret_access_key” {
value = “${aws_iam_access_key.apli_s3put.secret}”
}
output “password” {
value = aws_iam_user_login_profile.apli_s3put.password
}
3. エラーを出さないために
3.1. sesitiveの設定
エラーを出さないために、sensitive = true
を追加しました。
まとめてやってしまおうと思ったので、全てに入れてます。
output “app_user_access_key” {
value = “${aws_iam_access_key.apli_s3put.id}”
sensitive = true
}
output “app_user_secret_access_key” {
value = “${aws_iam_access_key.apli_s3put.secret}”
sensitive = true
}
output “password” {
value = aws_iam_user_login_profile.apli_s3put.password
sensitive = true
}
そしてapplyします。以下のように<sensitive>
と表示されます。
app_user_access_key = <sensitive>
app_user_secret_access_key = <sensitive>
password = <sensitive>
3.2. sensitiveを表示
terraform output -json
とやります。
そうすると、以下のように表示されます。(値はマスクしてます。)
{
“app_user_access_key”: {
“sensitive”: true,
“type”: “string”,
“value”: “AAAAAAAAAAAAAAAA”
},
“app_user_secret_access_key”: {
“sensitive”: true,
“type”: “string”,
“value”: “vbbbbbbbbbbbaddsfastgawerqa”
},
“password”: {
“sensitive”: true,
“type”: “string”,
“value”: “cccccccc”
}
}