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 中存储密钥,以便与此操作符一起使用:将它们作为 conn URI 存储在一个字段中,或者利用 Secrets 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 的字段,用于连接的额外参数。请注意,此额外字段必须是有效的 JSON。

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

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

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

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

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

  • config_lookup_pattern (str | None) – 指定配置键需要匹配的模式才能在 AWS Secrets Manager 中查找。仅当 config_prefix 不为 None 时才适用。如果设置为 None(配置中的空值),则首先在 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。

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

此条目是否有帮助?