Symfony 8 AWS 시크릿 번들
Source: Dev.to
이전 번들은 Symfony 5와 6을 지원했으며 210 000회 이상 다운로드되었습니다. 유용하게 쓰인 것 같네요. :D 새로운 Symfony 번들 아키텍처를 따르는 별도 라이브러리로 업데이트 버전을 공개하기로 했습니다. 자세한 내용은 이 글의 두 번째 파트에서 다루겠습니다.
아무튼…
GitHub: https://github.com/constup-foss/symfony8-aws-secrets-bundle
이 번들은 AWS Secrets Manager에 저장된 비밀을 Symfony 8 서비스 컨테이너의 파라미터 값으로 사용할 수 있게 해줍니다. IAM 역할을 통해 누가(또는 어떤 애플리케이션이) 비밀을 볼 수 있는지 접근 제어가 가능한 AWS Secrets Manager를 사용하고 있다면, 이 번들이 바로 당신을 위한 것입니다.
지원하는 인증 방법은 다음과 같습니다:
~/.aws디렉터리에서 프로파일을 로드하는 방식- AWS IAM 사용자에게서 발급받은 장기 자격 증명(AccessKeyId와 SecretAccessKey) 사용 방식
- 임시 AWS STS 토큰을 사용하는 방식
사용 방법은 매우 간단합니다. 별도의 코딩이 전혀 필요하지 않으며, 원하는 환경 변수에 AWS 비밀의 이름을 지정하고, 제공되는 env var 프로세서를 서비스 컨테이너에 등록하면 바로 값을 사용할 수 있습니다. 바로 그겁니다.
또한 이 번들은 AWS에 연결하기 위한 엔드포인트 지정도 지원합니다. 기업 내부 인프라 뒤에 AWS가 있거나 LocalStack 같은 환경에서 통합 테스트를 수행하고 싶을 때 유용합니다. AWS 비밀이 JSON 형태일 경우, 비밀 이름 뒤에 :와 키 이름을 붙여 개별 키만 추출할 수도 있습니다. 예를 들어 환경 변수에 my_secret:db_password와 같이 지정하면 db_password 키만 가져옵니다.
레포지토리에는 다음과 같은 완전한 문서가 포함되어 있습니다:
- Doctrine ORM의 데이터베이스 연결 정보를 번들을 이용해 로드하는 실전 단계별 예제
- 다양한 환경(베어 메탈, Docker, AWS CodeBuild 파이프라인)에서 번들을 사용하는 방법
약간의 역사와 피드백이 중요한 이유
내가 처음 만든 AWS Secrets Bundle(https://github.com/constup-foss/aws-secrets-bundle)은 2021년 8월에 Symfony 5용으로 공개했습니다. 당시 직장에서 필요했기 때문에 만들었고, Symfony 6과 이후 7을 지원하도록 몇 차례 풀 리퀘스트를 보낸 정도였습니다. 그 외에는 별다른 피드백이 없었고, GitHub 스타도 겨우 11개(대부분 친구들)였으며 이슈도 거의 없었습니다. 그래서 “아무도 쓰지 않을 거야”라고 생각했고, 작업을 Node와 TypeScript로 옮기면서 자연스럽게 잊어버렸습니다.
시간이 4년 반 정도 흐른 뒤, 새 Composer 라이브러리를 추가하려고 Packagist에 로그인했습니다. 보통 사람들은 뭔가를 퍼블리시할 때만 Packagist에 들어가는데, 그때 통계 페이지를 보게 되었습니다. “정리 모드”라서 오래된 레포를 정리하고, GitHub 계정을 개인용과 FOSS용으로 나누고 있었기에 몇몇 라이브러리를 폐기하거나 삭제해야 할지 확인하고 있었습니다. 그때 눈에 들어온 다운로드 수는 212 549였습니다.
사실 나는 오랫동안 이 프로젝트를 포기했었는데, 누군가가 실제로 사용하고 있다는 증거가 전혀 없었기 때문이었습니다. 그래서 여러분도 라이브러리를 사용한다면 별을 하나씩 눌러 주세요. 이것은 허영심이 아니라, 유지보수자가 “아무도 안 쓰는구나” 하고 포기하지 않게 하는 중요한 신호입니다. Symfony도 이를 돕기 위해 https://github.com/symfony/thanks 라는 도구를 만들었습니다. 프로젝트에 dev 의존성으로 추가하고 composer thanks 명령을 실행하면, 여러분이 사용 중인 라이브러리에 자동으로 스타를 달아줍니다.
아무튼… 지금은 여기까지입니다. 제 번들이 여러분에게 도움이 되길 바라며, 별도 잊지 말고 눌러 주세요 ;)