decouple config와 aws_sercrets 공존 불가?!
aws_secrets.py에서 boto3로 시크릿값 사용시, credentail 에러 발생
(botocore.exceptions.NoCredentialsError: Unable to locate credentials)
해결 : task-definition에 ecsTaskExecutionRole 추가
디폴트가 아니므로 매번 추가해줘야 함.
import os
import boto3
import json
from botocore.exceptions import NoCredentialsError
class SecretManager:
def __init__(self):
ENV = os.environ.get("DJANGO_ENV")
if not ENV:
raise NoCredentialsError
self.ENV = ENV
def get_secrets(self):
return self._read_secrets()
def _read_secrets(self):
if self.ENV == "development":
return self._read_from_local_dot_env()
else:
return self._read_from_aws_secrets_manager()
def _read_from_local_dot_env(self):
secrets = {}
with open('config/settings/.env') as f:
for line in f:
if line.strip() == '' or line.startswith('#'):
continue
key, value = line.strip().split('=', 1)
secrets[key] = value
return secrets
def _read_from_aws_secrets_manager(self):
secret_name = aws_secrets_manager 이름
region_name = 지역
session = boto3.session.Session()
client = session.client(service_name='secretsmanager', region_name=region_name)
response = client.get_secret_value(SecretId=secret_name)
secret_string = response['SecretString']
return json.loads(secret_string)
위와 같이 로컬의 환경키 주입 방식으로 변경으로 인한 기존 docker-compose.yml 오류 발생