Skip to content

Helper function that adds support for long environment variables (eg. for AWS)

License

Notifications You must be signed in to change notification settings

TixelRocks/long-env

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

long-env

Build Status Total Downloads Latest Stable Version Latest Unstable Version License

An env() alternative that works with long multi-line environment variables in places where it's not possible to do so natively - eg. AWS Elastic Beanstalk

Imagine you want to run Laravel Passport in AWS so you need to pass your private key as a PASSPORT_PRIVATE_KEY environment variable but hey 1) AWS doesn't allow multi-line environment variables 2) AWS has a limit of 4096 character per environment variable.

So you end up getting an annoying error like this:

Service:AmazonCloudFormation, Message:Template format error: Parameter 'EnvironmentVariables' default value '[****]' length is greater than 4096.

Solution

Our solution is simple, go to config/passport.php and replace

<?php 
return [
    'private_key' => env('PASSPORT_PRIVATE_KEY')
];

with:

return [
    'private_key' => long_env('PASSPORT_PRIVATE_KEY')
];

And now pass your long variable as numbered chunks instead of one super long string:

PASSPORT_PRIVATE_KEY1=
PASSPORT_PRIVATE_KEY2=
PASSPORT_PRIVATE_KEY3=
# and so on

The long_env() function will magically combine them together for you. If you need help making the chunks, just use the long_env_prepare() function provided with this package:

<?php
  json_encode(long_env_prepare('KEY', 'SUPER LONG STRING'), JSON_PRETTY_PRINT);
{
    "KEY1": "-----BEGIN PRIVATE K",
    "KEY2": "EY-----\ndasokd aoskd",
    "KEY3": "o aksdoaskd oaskdo a"
}

That's it - copy & paste these one by one into your dashboard (eg. AWS Elastic Beanstalk's Configuration tab)

About

Helper function that adds support for long environment variables (eg. for AWS)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages