SSM(Systems Manager)
- ssm.tf
1 2 3 4 5 6 7 8 9 10 |
resource "aws_ssm_parameter" "hoge" { name = "hoge" type = "SecureString" value = "DUMMY" lifecycle { ignore_changes = [ value ] } } |
- aws-cliで上書き
1 |
$ aws ssm put-parameter --name "hoge" --type "SecureString" --value "hogeeee" --overwrite |
- aws-cliで上書き(ValueがURLの場合)
1 |
$ aws ssm put-parameter --cli-input-json '{"Name": "hoge", "Type": "SecureString", "Value": "http://localhost:3000/"}' --overwrite |
- 上記を復号したい場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ aws ssm get-parameters --name "hoge" --with-decryption { "InvalidParameters": [], "Parameters": [ { "Name": "hoge", "LastModifiedDate": xxxxx.xxx, "Value": "hogeeee", "Version": 3, "Type": "SecureString", "ARN": "arn:aws:ssm:ap-northeast-1xxxxxxxx:parameter/hoge" } ] } |
Secrets Manager
- secretmanager.tf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
resource "aws_secretsmanager_secret" "hoge" { name = "stg/hoge" description = "stg/hoge" recovery_window_in_days = 30 force_overwrite_replica_secret = false } resource "aws_secretsmanager_secret_version" "hoge" { secret_id = aws_secretsmanager_secret.hoge.id secret_string = jsonencode({ "dbName" = "dummy", "dbUserName" = "dummy", "dbPassword" = "dummy" }) lifecycle { ignore_changes = [ secret_string ] } } |
- aws-cliで上書き
1 2 3 4 5 |
$ aws secretsmanager get-secret-value --secret-id stg/hoge |grep SecretString $ aws secretsmanager put-secret-value \ --secret-id stg/hoge \ --secret-string {"dbName":"hoge","dbUserName":"hoge","dbPassword":"hoge"} |
Terraformではパスワード等、直書きNGなので、ダミー文字列をignoreして、aws-cliコマンドで上書きして管理するのが良さげ。
ECSのタスク定義にSSMのパラメータストアとSecrets ManagerをTerraformで読み込ませる場合
- ecs.tf
1 2 3 4 5 6 7 8 9 10 11 12 13 |
resource "aws_ecs_task_definition" "hoge" { ~省略~ container_definitions = data.template_file.hoge.rendered } data "template_file" "hoge" { template = file("files/task-definitions/hoge.json") vars = { API_KEY = aws_ssm_parameter.hoge.arn, DB_SECRETS = aws_secretsmanager_secret.hoge.arn, } } |
- hoge.json
1 2 3 4 5 6 7 8 9 10 11 12 |
"secrets": [ { "name": "API_KEY", "valueFrom": "${API_KEY}" }, { "name": "DB_SECRETS", "valueFrom": "${DB_SECRETS}" }, ] } ] |
Was this helpful?
0 / 0
1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。