AWS SSM 参数存储 Secrets 后端

要启用 SSM 参数存储,请在 airflow.cfg[secrets] 部分中指定 SystemsManagerParameterStoreBackend 作为 backend

以下是一个示例配置

[secrets]
backend = airflow.providers.amazon.aws.secrets.systems_manager.SystemsManagerParameterStoreBackend
backend_kwargs = {
  "connections_prefix": "airflow/connections",
  "connections_lookup_pattern": null,
  "variables_prefix": "airflow/variables",
  "variables_lookup_pattern": null,
  "config_prefix": "airflow/config",
  "config_lookup_pattern": null,
  "profile_name": "default"
}

要进行身份验证,您可以提供 Amazon Webservices 连接额外配置 中列出的参数,或设置 环境变量

[secrets]
backend = airflow.providers.amazon.aws.secrets.systems_manager.SystemsManagerParameterStoreBackend
backend_kwargs = {
  "connections_prefix": "airflow/connections",
  "variables_prefix": "airflow/variables",
  "config_prefix": "airflow/config",
  "role_arn": "arn:aws:iam::123456789098:role/role-name"
}

可选查找

可以选择性地查找连接、变量或配置,它们之间互斥,也可以任意组合。这将阻止向 AWS SSM 参数存储发送排除类型的请求。

如果您想在 AWS SSM 参数存储中查找某些内容而不是其他内容,可以通过将要排除的内容的相关 *_prefix 参数设置为 null 来实现。

例如,如果您想将参数 connections_prefix 设置为 "airflow/connections" 并且不查找变量和配置,则您的配置文件应如下所示

[secrets]
backend = airflow.providers.amazon.aws.secrets.systems_manager.SystemsManagerParameterStoreBackend
backend_kwargs = {
  "connections_prefix": "airflow/connections",
  "variables_prefix": null,
  "config_prefix": null,
  "profile_name": "default"
}

如果您只想在 AWS Secrets Manager 中查找连接、变量或配置的特定子集,可以通过设置相关的 *_lookup_pattern 参数来实现。此参数采用字符串形式的正则表达式作为值。

例如,如果您只想在 AWS Secrets Manager 中查找以“m”开头的连接,则您的配置文件应如下所示

[secrets]
backend = airflow.providers.amazon.aws.secrets.secrets_manager.SecretsManagerBackend
backend_kwargs = {
  "connections_prefix": "airflow/connections",
  "connections_lookup_pattern": "^m",
  "profile_name": "default"
}

存储和检索连接

如果您已将 connections_prefix 设置为 /airflow/connections,则对于连接 ID 为 smtp_default 的连接,您需要将连接存储在 /airflow/connections/smtp_default

您可以选择提供配置文件名称来引用 AWS 配置文件,例如在 ~/.aws/config 中定义的配置文件。

SSM 参数的值必须是 连接 URI 表示形式 或连接对象的 JSON 格式

在某些情况下,您需要存储在 AWS SSM 参数存储中的 URI 可能不直观,例如,当使用 HTTP / HTTPS 或 SPARK 时,您可能需要如下所示的 URI

http://https%3A%2F%2Fexample.com

spark://spark%3A%2F%2Fspark-master-0.spark-master.spark:7077

这是一种已知情况,其中 URI 的架构和协议部分是独立的,在某些情况下,需要明确指定。

有关导致此文档更新的更详细讨论,请参阅 GitHub 问题 #10256#10913。这在将来可能会得到解决。

相同的连接可以在 AWS SSM 参数存储中表示为 JSON 对象

{"conn_type": "http", "host": "https://example.com"}

{"conn_type": "spark", "host": "spark://spark-master-0.spark-master.spark", "port": 7077}

存储和检索变量

如果您已将 variables_prefix 设置为 /airflow/variables,则对于变量键为 hello 的变量,您需要将变量存储在 /airflow/variables/hello

您可以选择提供配置文件名称来引用 AWS 配置文件,例如在 ~/.aws/config 中定义的配置文件。

此条目有帮助吗?