SecretsManagerBackend
AmazonRetrieves Connection or Variables from AWS Secrets Manager
Access Instructions
Install the Amazon provider package into your Airflow environment.
Update your environment config per the instructions in the docs below.
Parameters
Documentation
Retrieves Connection or Variables from AWS Secrets Manager
Configurable via airflow.cfg
like so:
[secrets]backend = airflow.providers.amazon.aws.secrets.secrets_manager.SecretsManagerBackendbackend_kwargs = {"connections_prefix": "airflow/connections"}
For example, when {"connections_prefix": "airflow/connections"}
is set, if a secret is defined with the path airflow/connections/smtp_default
, the connection with conn_id smtp_default
would be accessible.
When {"variables_prefix": "airflow/variables"}
is set, if a secret is defined with the path airflow/variables/hello
, the variable with the name hello
would be accessible.
When {"config_prefix": "airflow/config"}
set, if a secret is defined with the path airflow/config/sql_alchemy_conn
, the config with they sql_alchemy_conn
would be accessible.
You can also pass additional keyword arguments listed in AWS Connection Extra config to this class, and they would be used for establishing a connection and passed on to Boto3 client.
[secrets]backend = airflow.providers.amazon.aws.secrets.secrets_manager.SecretsManagerBackendbackend_kwargs = {"connections_prefix": "airflow/connections", "region_name": "eu-west-1"}
See also
There are two ways of storing secrets in Secret Manager for using them with this operator: storing them as a conn URI in one field, or taking advantage of native approach of Secrets Manager and storing them in multiple fields. There are certain words that will be searched in the name of fields for trying to retrieve a connection part. Those words are:
possible_words_for_conn_fields = {"login": ["login", "user", "username", "user_name"],"password": ["password", "pass", "key"],"host": ["host", "remote_host", "server"],"port": ["port"],"schema": ["database", "schema"],"conn_type": ["conn_type", "conn_id", "connection_type", "engine"],}
However, these lists can be extended using the configuration parameter extra_conn_words
. Also, you can have a field named extra for extra parameters for the conn. Please note that this extra field must be a valid JSON.