微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从Airflow Celery Executor连接到启用TLS的Elasticache Redis

如何解决从Airflow Celery Executor连接到启用TLS的Elasticache Redis

我当前在Airflow 1.10上使用Celery Executor。我的经纪人是AWS Elasticache Redis(v。5.0.6)。如何启用传输加密?

根据Airflow源代码ssl_keyfilessl_certfilessl_ca_certs是必需的。

elif 'redis://' in broker_url:
    broker_use_ssl = {'ssl_keyfile': conf.get('celery','SSL_KEY'),'ssl_certfile': conf.get('celery','SSL_CERT'),'ssl_ca_certs': conf.get('celery','SSL_CACERT'),'ssl_cert_reqs': ssl.CERT_required}
 

https://github.com/apache/airflow/blob/1.10.10/airflow/config_templates/default_celery.py#L68-L72

但是Elasticache Redis不提供那些TLS证书。官方文档仅解释了redis-cli的解决方案,该解决方案使用了stunnel的TLS隧道技术。

https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/in-transit-encryption.html#connect-tls

Airflow Celery Executor是否在Elasticache Redis支持加密传输中?如果是这样,我们如何实现呢?

解决方法

以下气流配置适用于Elasticache和Redis SSL 请注意'

上的多余subfields
db.collection.aggregate([
  {
    $set: {
      subfields: { $objectToArray: [ "$field2" ] }
    }
  },{
    $set: {
      subfields: {
        $reduce: {
          input: { $concatArrays: [ "$subfields.v" ] },initialValue: [],in: { $concatArrays: [ "$$value","$$this" ] }
        }
      }
    }
  },{$match: {subfields: "whatever you are looking for"}},{$unset: "subfields"}
])
s

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。