aws_secretsmanager 함수
aws_secretsmanager 함수
aws_secretsmanager는 AWS Secrets Manager에서 시크릿을 읽어 템플릿 안에서 locals로 사용할 수 있게 해 주는 함수예요. 시크릿 값을 직접 코드에 노출하지 않고 참조하고 싶을 때 사용합니다.
출처: Packer 공식 문서
본문
AWS Secrets Manager에서 시크릿을 읽어 템플릿 안에서 locals로 사용할 수 있습니다.
Note: AWS 시크릿 지원은 항상 시크릿의 최신 버전, 즉 AWSCURRENT를 가져와요. 이전 버전의 시크릿은 지원되지 않습니다.
aws_secretsmanager(name, key)
key가 설정되지 않았으면(null이거나 빈 문자열 "") aws_secretsmanager는 시크릿 name에 저장된 첫 번째 시크릿 키를 반환해요.
이 함수를 locals 블록에서 사용하거나, 값을 사용하고 싶은 곳에 직접 인라인으로 사용할 수 있습니다.
locals {
secret = aws_secretsmanager("my_secret", null)
}
source "null" "first-example" {
communicator = "none"
}
build {
name = "my-build-name"
sources = ["null.first-example"]
provisioner "shell-local" {
environment_vars = ["TESTVAR=${build.PackerRunUUID}"]
inline = ["echo my_secret is '${local.secret}'",
"echo my_secret using an inline call is '${aws_secretsmanager("my_secret", null)}'."]
}
}
이렇게 하면 aws secrets manager에서 my_secret 뒤에 저장된 키를 로드해요.
단일 키 시크릿이나 평문(plaintext) 시크릿을 가져올 때는 key로 null(또는 빈 문자열 "")을 지정하면 됩니다.
여러 키를 가진 시크릿을 가져올 때는 key를 가져오고 싶은 특정 키로 설정할 수 있어요. 예를 들어 다음처럼 두 키를 가진 시크릿에서 key를 "shell"로 설정하면 aws_secretsmanager는 그 값만 반환해요.
{
"test": "kitchen",
"shell": "powershell"
}
locals {
secret = aws_secretsmanager("multikey/secret", "shell")
}
source "null" "first-example" {
communicator = "none"
}
build {
name = "my-build-name"
sources = ["null.first-example"]
provisioner "shell-local" {
environment_vars = ["TESTVAR=${build.PackerRunUUID}"]
inline = ["echo my_secret is '${local.secret}'"]
}
}
이렇게 하면 multikey/secret 뒤에 있는 키 "shell"에 저장된 값 "powershell"을 로드해요.
이 함수를 사용하려면 다음 방법 중 하나로 유효한 AWS 자격 증명을 구성해야 해요.
- 환경 변수 (Environment Variables)
- CLI 구성 파일 (CLI Configuration Files)
- 컨테이너 자격 증명 (Container Credentials)
- 인스턴스 프로필 자격 증명 (Instance Profile Credentials)