Git Configuration - Geekoosh/flyway-lambda GitHub Wiki

Flyway Lambda supports loading Git configuration from environment variables, function parameters, and AWS Secret manager (for Git credentials).

Function parameters take precedence over both environment variables and secrets.

Git options

Option Description Parameter Environment variable Value type Required Default
Git repo address HTTPS URL without credentials gitRepository GIT_REPOSITORY string Yes
Git branch Branch name (e.g., master, develop) gitBranch GIT_BRANCH string Yes
Folders within repo List of folders within the repo to load migration scripts from (e.g., migrations/sql) folders GIT_FOLDERS comma-delimited list of strings No
Commit to clone from Optional commit id to pull commit string No
Git username Repo username username GIT_USERNAME string Yes
Git password User password password GIT_PASSWORD string Yes
Reuse code between invocations With large Git repos, invoked frequently for migration, reusing the repo between invocations have the potential to minimize the initial cloning time. reuseRepo GIT_REUSE_REPO 0/1 or false/true No false

Example for invoking the lambda with Git parameters:

aws lambda invoke --function-name FlywayLambda --payload '{ "gitRequest": {"gitBranch": "develop"} }' response.json

AWS Secret Manager

For enhanced security, Flyway lambda supports loading Git repo credentials stored in AWS Secret Manager.

Follow the instructions to store Git credentials and make them available for the Flyway lambda:

  1. Create a secret in AWS Secret Manager and set its value to a JSON of the following format:
{"username": "[Git user]", "password": "[Git password]"}
  1. Create a lambda environment variable GIT_SECRET with either the secret name or secret ARN

  2. Add permissions to access the secret to the lambda execution IAM role

{
  "Effect": "Allow",
  "Action": [
     "secretsmanager:DescribeSecret",
     "secretsmanager:GetSecretValue"
  ],
  "Resource": "[secret ARN or *]"
}