質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Terraform

Terraformは、インフラ構築のためのツールです。AWS/DigitalOcean/GoogleCloudといった様々なインフラに対応。インフラ構成のコード管理や変更の作業などの手間を自動化し、インフラ構築の効率化を図ることができます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

解決済

terraformでシークレットキーを直接参照したい

Nero1129
Nero1129

総合スコア113

Terraform

Terraformは、インフラ構築のためのツールです。AWS/DigitalOcean/GoogleCloudといった様々なインフラに対応。インフラ構成のコード管理や変更の作業などの手間を自動化し、インフラ構築の効率化を図ることができます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

1回答

0評価

0クリップ

134閲覧

投稿2022/05/11 06:25

前提

Terraformでiamユーザーを作成し、アクセスキーを発行させ、その値をparameter storeに保存したいです

実現したいこと

具体的に説明すると、ECSで立てたコンテナからs3へのアクセスするためのキーを発行したいのですが、手動で作成してアクセスキーをparameter storeに保存するとかせず、出来る限り、機密情報の取扱などを考えなくても済むよう、Terraformで一元管理をしたいと思っております。

TerraformでのIAMユーザーの作成、アクセスキー発行まではできました。
しかし、他のリソースから、アクセスキーの参照ができなくて困っております。
他のリソースから参照する方法が知りたいです。

例えば、local-execみたいなもので、outputを参照して、variableに代入するとか…
Terraform上で変数に代入して、参照させる方法とかあれば知りたいです。
一通り調べたのですが、よくわかりませんでした。

発生している問題・エラーメッセージ

shell

│ Error: Missing required argument │ with aws_ssm_parameter.system_user_access_id, │ on aws_ssm.tf line 25, in resource "aws_ssm_parameter" "system_user_access_id": 25: value = "${aws_iam_access_key.system_user_access_key.encrypted_secret}" │ The argument "value" is required, but no definition was found.

となってしまい、アクセスができません。
理由としては、
https://github.com/hashicorp/terraform-provider-aws/issues/780
仕様で敢えて、アクセスさせないようにするため?らしいです。
(余談:どのみち、gpgなどで暗号化しない限りはtfstateには直書きされてるので、こんな悪あがきをするくらいなら、普通にtfstateごと暗号化したりするなどしたほうがいいと思うのですがね…)

アクセスキー発行時は暗号化などはせずに、そのまま作成させてます。

terraform

#============================================================ # ユーザー作成 #============================================================ resource "aws_iam_user" "system_user" { name = "${var.project_name}-user-test" } resource "aws_iam_user_login_profile" "system_user_profile" { user = aws_iam_user.system_user.name password_reset_required = false depends_on = [aws_iam_user.system_user] } #============================================================ # アクセスキー作成 #============================================================ resource "aws_iam_access_key" "system_user_access_key" { user = aws_iam_user.system_user.name }

試したこと

  • outputして、出力された値をどうにか参照しようと試行しましたができませんでした。
  • python等スクリプトを組んで、local-execで実行しよか迷いましたが、そもそもスマートじゃないと思いやめました。

補足情報(FW/ツールのバージョンなど)

shell

/terraform # terraform -v Terraform v1.1.9 on linux_amd64 + provider registry.terraform.io/hashicorp/aws v4.13.0

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Terraform

Terraformは、インフラ構築のためのツールです。AWS/DigitalOcean/GoogleCloudといった様々なインフラに対応。インフラ構成のコード管理や変更の作業などの手間を自動化し、インフラ構築の効率化を図ることができます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。