@@ -60,8 +60,7 @@ public class Localstack {
6060 CommonUtils .disableSslCertChecking ();
6161 }
6262
63- private Localstack () {
64- }
63+ private Localstack () {}
6564
6665 public void startup (LocalstackDockerConfiguration dockerConfiguration ) {
6766 if (locked ) {
@@ -70,12 +69,19 @@ public void startup(LocalstackDockerConfiguration dockerConfiguration) {
7069 locked = true ;
7170 this .externalHostName = dockerConfiguration .getExternalHostName ();
7271
72+ Map <String , String > environmentVariables = dockerConfiguration .getEnvironmentVariables ();
73+ environmentVariables = environmentVariables == null ? Collections .emptyMap () : environmentVariables ;
74+ environmentVariables = new HashMap <String , String >(environmentVariables );
75+ // add default environment variables
76+ Map <String , String > defaultEnvVars = getDefaultEnvironmentVariables ();
77+ environmentVariables .putAll (defaultEnvVars );
78+
7379 try {
7480 localStackContainer = Container .createLocalstackContainer (dockerConfiguration .getExternalHostName (),
7581 dockerConfiguration .isPullNewImage (), dockerConfiguration .isRandomizePorts (),
7682 dockerConfiguration .getImageName (), dockerConfiguration .getImageTag (),
7783 dockerConfiguration .getPortEdge (), dockerConfiguration .getPortElasticSearch (),
78- dockerConfiguration . getEnvironmentVariables () , dockerConfiguration .getPortMappings (),
84+ environmentVariables , dockerConfiguration .getPortMappings (),
7985 dockerConfiguration .getBindMounts (), dockerConfiguration .getPlatform ());
8086 loadServiceToPortMap ();
8187
@@ -118,25 +124,38 @@ private void loadServiceToPortMap() {
118124 }
119125 }
120126
127+ private Map <String , String > getDefaultEnvironmentVariables () {
128+ Map <String , String > result = new HashMap <String , String >();
129+ addEnvVariableIfDefined (Constants .ENV_LOCALSTACK_API_KEY , result );
130+ return result ;
131+ }
132+
133+ private void addEnvVariableIfDefined (String envVarName , Map <String , String > envVars ) {
134+ String value = System .getenv (envVarName );
135+ if (value != null ) {
136+ envVars .put (envVarName , value );
137+ }
138+ }
139+
121140 // TODO: this is now obsolete, as we're using a single edge port - remove!
122141 private void doLoadServiceToPortMap () {
123142 String localStackPortConfig = "" ;
124143 for (int i = 0 ; i < PYTHON_VERSIONS_FOLDERS .length ; i ++) {
125144 String filePath = String .format (PORT_CONFIG_FILENAME , PYTHON_VERSIONS_FOLDERS [i ]);
126145
127146 localStackPortConfig = localStackContainer .executeCommand (Arrays .asList ("cat" , filePath ));
128- if (localStackPortConfig .contains ("No such container" )){
147+ if (localStackPortConfig .contains ("No such container" )) {
129148 localStackPortConfig = "" ;
130149 continue ;
131- }else if (localStackPortConfig .contains ("No such file" )){
150+ } else if (localStackPortConfig .contains ("No such file" )) {
132151 localStackPortConfig = "" ;
133152 continue ;
134- }else {
153+ } else {
135154 break ;
136155 }
137156 }
138157
139- if (localStackPortConfig .isEmpty ()){
158+ if (localStackPortConfig .isEmpty ()) {
140159 throw new LocalstackDockerException ("No config file found" ,new Exception ());
141160 }
142161
0 commit comments