Как я могу настроить application.properties, используя AWS CodeDeploy и / или CloudFormation? - PullRequest
1 голос
/ 10 мая 2019

У меня есть Spring Web Service, развернутая на Elastic Beanstalk. Я использую AWS CloudFormation для инфраструктуры и использую AWS CodePipeline для автоматического развертывания веб-службы от слияний до главной ветви.

Недавно я добавил интеграцию с DynamoDB, и мне нужно настроить несколько вещей в моем application.properties. Я пытался использовать переменные окружения для настройки application.properties, но при попытке установить переменные окружения из CodeDeploy я ударился об стену.

Это мое приложение. Свойства

amazon.dynamodb.endpoint=${DYNAMODB_ENDPOINT:http://localhost:8000}
amazon.dynamodb.region=${AWS_REGION:default-region}
amazon.dynamodb.accesskey=${DYNAMODB_ACCESS_KEY:TestAccessKey}
amazon.dynamodb.secretkey=${DYNAMODB_SECRET_KEY:TestSecretKey}

spring.data.dynamodb.entity2ddl.auto = create-drop
spring.data.dynamodb.entity2ddl.gsiProjectionType = ALL
spring.data.dynamodb.entity2ddl.readCapacity = 10
spring.data.dynamodb.entity2ddl.writeCapacity = 1

По умолчанию это когда я запускаю локальный экземпляр DynamoDB, и они работают нормально. Однако я не могу понять, как заставить CodeDeploy устанавливать переменные среды для меня, я также рассматривал возможность получения CloudFormation для установки переменных среды, но также не мог найти, как это сделать. Я попытался вручную установить переменные среды в экземпляре EC2, но это не сработало, и это не то решение, которое я ищу, поскольку использую EB и хочу, чтобы этот проект использовал полностью автоматизированное развертывание. Пожалуйста, дайте мне знать, если это возможно, каков отраслевой стандарт для настройки веб-сервисов, и если я неправильно понимаю CodeDeploy или CloudFormation.

1 Ответ

0 голосов
/ 10 мая 2019

В целом, не рекомендуется включать доступ и секретные ключи в файлы любого типа или в автоматизацию развертывания.

Ваш экземпляр, на котором развернуто ваше приложение, должен иметь профиль экземпляра (т. Е. IAMРоль), к которой он должен иметь необходимые разрешения DynamoDB.

Если у вас подключен этот профиль экземпляра, SDK должен автоматически обнаруживать учетные данные, регион и конечную точку, с которыми необходимо связаться.

Возможно, вам придется обновить способ создания клиента DynamoDB, чтобы использовать только значения по умолчанию.

Чтобы настроить машину для разработки с этими свойствами таким образом, чтобы AWS SDK мог получать без явного указанияих в файлах свойств вы можете запустить команду aws configure интерфейса командной строки AWS, которая должна настроить папку ~/.aws/ с информацией о вашем регионе и учетными данными для использования на вашем компьютере разработчика.

...