airflow.providers.amazon.aws.secrets.secrets_manager
¶
与从 AWS Secrets Manager 获取密钥相关的对象。
模块内容¶
类¶
从 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。