airflow.providers.amazon.aws.secrets.secrets_manager

与从 AWS Secrets Manager 获取密钥相关的对象。

SecretsManagerBackend

从 AWS Secrets Manager 中检索连接或变量。

模块内容

class airflow.providers.amazon.aws.secrets.secrets_manager.SecretsManagerBackend(connections_prefix='airflow/connections', connections_lookup_pattern=None, variables_prefix='airflow/variables', variables_lookup_pattern=None, config_prefix='airflow/config', config_lookup_pattern=None, sep='/', extra_conn_words=None, **kwargs)[源码]

基类: airflow.secrets.BaseSecretsBackend, airflow.utils.log.logging_mixin.LoggingMixin

从 AWS Secrets Manager 中检索连接或变量。

可以通过 airflow.cfg 进行如下配置

[secrets]
backend = airflow.providers.amazon.aws.secrets.secrets_manager.SecretsManagerBackend
backend_kwargs = {"connections_prefix": "airflow/connections"}

例如,当 {"connections_prefix": "airflow/connections"} 设置后,如果定义了一个路径为 airflow/connections/smtp_default 的密钥,则可以使用 conn_id smtp_default 访问该连接。

{"variables_prefix": "airflow/variables"} 设置后,如果定义了一个路径为 airflow/variables/hello 的密钥,则可以使用名称 hello 访问该变量。

{"config_prefix": "airflow/config"} 设置后,如果定义了一个路径为 airflow/config/sql_alchemy_conn 的密钥,则可以使用键 sql_alchemy_conn 访问该配置。

您还可以将 AWS 连接额外配置中列出的其他关键字参数传递给此类,这些参数将用于建立连接并传递给 Boto3 客户端。

[secrets]
backend = airflow.providers.amazon.aws.secrets.secrets_manager.SecretsManagerBackend
backend_kwargs = {"connections_prefix": "airflow/connections", "region_name": "eu-west-1"}

另请参阅

配置连接

在 Secret Manager 中存储密钥以与此操作符一起使用有两种方式:将它们存储在一个字段中作为连接 URI,或者利用 Secrets Manager 的原生方法将它们存储在多个字段中。 Secret Manager 会在字段名称中搜索特定词语来尝试检索连接的一部分。这些词语是

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"],
}

但是,这些列表可以使用配置参数 extra_conn_words 进行扩展。此外,您还可以有一个名为 extra 的字段用于连接的额外参数。请注意,此 extra 字段必须是有效的 JSON。

参数:
  • connections_prefix (str) – 指定用于读取连接密钥的前缀。如果设置为 None(配置中的 null 值),则不会向 AWS Secrets Manager 发送连接请求。如果您不想要 connections_prefix,请将其设置为空字符串

  • connections_lookup_pattern (str | None) – 指定连接 ID 需要匹配的模式才能在 AWS Secrets Manager 中查找。仅当 connections_prefix 不为 None 时适用。如果设置为 None(配置中的 null 值),则所有连接都将首先在 AWS Secrets Manager 中查找。

  • variables_prefix (str) – 指定用于读取变量密钥的前缀。如果设置为 None(配置中的 null 值),则不会向 AWS Secrets Manager 发送变量请求。如果您不想要 variables_prefix,请将其设置为空字符串

  • variables_lookup_pattern (str | None) – 指定变量键需要匹配的模式才能在 AWS Secrets Manager 中查找。仅当 variables_prefix 不为 None 时适用。如果设置为 None(配置中的 null 值),则所有变量都将首先在 AWS Secrets Manager 中查找。

  • config_prefix (str) – 指定用于读取配置密钥的前缀。如果设置为 None(配置中的 null 值),则不会向 AWS Secrets Manager 发送配置请求。如果您不想要 config_prefix,请将其设置为空字符串

  • config_lookup_pattern (str | None) – 指定配置键需要匹配的模式才能在 AWS Secrets Manager 中查找。仅当 config_prefix 不为 None 时适用。如果设置为 None(配置中的 null 值),则所有配置键都将首先在 AWS Secrets Manager 中查找。

  • sep (str) – 用于连接 secret_prefix 和 secret_id 的分隔符。默认值:“/”

  • extra_conn_words (dict[str, list[str]] | None) – 仅当您将 full_url_mode 设置为 false 并将密钥存储在 Secrets Manager 的不同字段中时使用。您可以在默认词语之外为每个连接部分添加更多词语。要搜索的额外词语应以列表字典的形式传递,每个列表对应一个连接部分。字典的可选键必须是:user, password, host, schema, conn_type。

connections_lookup_pattern = None[源码]
variables_lookup_pattern = None[源码]
config_lookup_pattern = None[源码]
sep ='/'[源码]
are_secret_values_urlencoded = False[源码]
extra_conn_words[源码]
profile_name[源码]
api_version[源码]
use_ssl[源码]
kwargs[源码]
property client[源码]

创建一个 Secrets Manager 客户端。

get_conn_value(conn_id)[源码]

获取连接的序列化表示。

参数:

conn_id (str) – 连接 ID

get_variable(key)[源码]

获取 Airflow 变量。

参数:

key (str) – 变量键

返回:

变量值

返回类型:

str | None

get_config(key)[源码]

获取 Airflow 配置。

参数:

key (str) – 配置选项键

返回:

配置选项值

返回类型:

str | None

此条目是否有帮助?