blob: c0b281c39088240b54d4f6b1f7f2ec255b0a507e [file] [log] [blame]
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>gRPC &mdash; Airflow Documentation</title>
<script type="text/javascript" src="../../_static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/language_data.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="MySQL Connection" href="mysql.html" />
<link rel="prev" title="Google Cloud SQL Connection" href="gcp_sql.html" />
<script>
document.addEventListener('DOMContentLoaded', function() {
var el = document.getElementById('changelog');
if (el !== null ) {
// [AIRFLOW-...]
el.innerHTML = el.innerHTML.replace(
/\[(AIRFLOW-[\d]+)\]/g,
`<a href="https://issues.apache.org/jira/browse/$1">[$1]</a>`
);
// (#...)
el.innerHTML = el.innerHTML.replace(
/\(#([\d]+)\)/g,
`<a href="https://github.com/apache/airflow/pull/$1">(#$1)</a>`
);
};
})
</script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-140539454-1']);
_gaq.push(['_trackPageview']);
</script>
<style>
.example-header {
position: relative;
background: #9AAA7A;
padding: 8px 16px;
margin-bottom: 0;
}
.example-header--with-button {
padding-right: 166px;
}
.example-header:after{
content: '';
display: table;
clear: both;
}
.example-title {
display:block;
padding: 4px;
margin-right: 16px;
color: white;
overflow-x: auto;
}
.example-header-button {
top: 8px;
right: 16px;
position: absolute;
}
.example-header + .highlight-python {
margin-top: 0 !important;
}
.viewcode-button {
display: inline-block;
padding: 8px 16px;
border: 0;
margin: 0;
outline: 0;
border-radius: 2px;
-webkit-box-shadow: 0 3px 5px 0 rgba(0,0,0,.3);
box-shadow: 0 3px 6px 0 rgba(0,0,0,.3);
color: #404040;
background-color: #e7e7e7;
cursor: pointer;
font-size: 16px;
font-weight: 500;
line-height: 1;
text-decoration: none;
text-overflow: ellipsis;
overflow: hidden;
text-transform: uppercase;
-webkit-transition: background-color .2s;
transition: background-color .2s;
vertical-align: middle;
white-space: nowrap;
}
.viewcode-button:visited {
color: #404040;
}
.viewcode-button:hover, .viewcode-button:focus {
color: #404040;
background-color: #d6d6d6;
}
</style>
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../index.html" class="icon icon-home"> Airflow
</a>
<div class="version">
1.10.5
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../project.html">Project</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../license.html">License</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../start.html">Quick Start</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../installation.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../tutorial.html">Tutorial</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">How-to Guides</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../set-config.html">Setting Configuration Options</a></li>
<li class="toctree-l2"><a class="reference internal" href="../initialize-database.html">Initializing a Database Backend</a></li>
<li class="toctree-l2"><a class="reference internal" href="../operator/index.html">Using Operators</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Managing Connections</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="index.html#creating-a-connection-with-the-ui">Creating a Connection with the UI</a></li>
<li class="toctree-l3"><a class="reference internal" href="index.html#editing-a-connection-with-the-ui">Editing a Connection with the UI</a></li>
<li class="toctree-l3"><a class="reference internal" href="index.html#creating-a-connection-with-environment-variables">Creating a Connection with Environment Variables</a></li>
<li class="toctree-l3 current"><a class="reference internal" href="index.html#connection-types">Connection Types</a><ul class="current">
<li class="toctree-l4"><a class="reference internal" href="aws.html">Amazon Web Services Connection</a></li>
<li class="toctree-l4"><a class="reference internal" href="gcp.html">Google Cloud Platform Connection</a></li>
<li class="toctree-l4"><a class="reference internal" href="gcp_sql.html">Google Cloud SQL Connection</a></li>
<li class="toctree-l4 current"><a class="current reference internal" href="#">gRPC</a></li>
<li class="toctree-l4"><a class="reference internal" href="mysql.html">MySQL Connection</a></li>
<li class="toctree-l4"><a class="reference internal" href="oracle.html">Oracle Connection</a></li>
<li class="toctree-l4"><a class="reference internal" href="postgres.html">PostgresSQL Connection</a></li>
<li class="toctree-l4"><a class="reference internal" href="ssh.html">SSH Connection</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../secure-connections.html">Securing Connections</a></li>
<li class="toctree-l2"><a class="reference internal" href="../secure-connections.html#rotating-encryption-keys">Rotating encryption keys</a></li>
<li class="toctree-l2"><a class="reference internal" href="../write-logs.html">Writing Logs</a></li>
<li class="toctree-l2"><a class="reference internal" href="../executor/use-celery.html">Celery Executor</a></li>
<li class="toctree-l2"><a class="reference internal" href="../executor/use-dask.html">Dask Executor</a></li>
<li class="toctree-l2"><a class="reference internal" href="../executor/use-mesos.html">Scaling Out with Mesos (community contributed)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../run-behind-proxy.html">Running Airflow behind a reverse proxy</a></li>
<li class="toctree-l2"><a class="reference internal" href="../run-with-systemd.html">Running Airflow with systemd</a></li>
<li class="toctree-l2"><a class="reference internal" href="../run-with-upstart.html">Running Airflow with upstart</a></li>
<li class="toctree-l2"><a class="reference internal" href="../use-test-config.html">Using the Test Mode Configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../check-health.html">Checking Airflow Health Status</a></li>
<li class="toctree-l2"><a class="reference internal" href="../define_extra_link.html">Define an operator extra link</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tracking-user-activity.html">Tracking User Activity</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../ui.html">UI / Screenshots</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../concepts.html">Concepts</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../profiling.html">Data Profiling</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../cli.html">Command Line Interface Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../scheduler.html">Scheduling &amp; Triggers</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../plugins.html">Plugins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../security.html">Security</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../timezone.html">Time zones</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../api.html">REST API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../integration.html">Integration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../metrics.html">Metrics</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../kubernetes.html">Kubernetes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../lineage.html">Lineage</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../changelog.html">Changelog</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../faq.html">FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../macros.html">Macros reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../_api/index.html">Python API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../privacy_notice.html">Privacy Notice</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">Airflow</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">How-to Guides</a> &raquo;</li>
<li><a href="index.html">Managing Connections</a> &raquo;</li>
<li>gRPC</li>
<li class="wy-breadcrumbs-aside">
<a href="../../_sources/howto/connection/grpc.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<blockquote>
<div></div></blockquote>
<div class="section" id="grpc">
<h1>gRPC<a class="headerlink" href="#grpc" title="Permalink to this headline"></a></h1>
<p>The gRPC connection type enables integrated connection to a gRPC service</p>
<div class="section" id="authenticating-to-grpc">
<h2>Authenticating to gRPC<a class="headerlink" href="#authenticating-to-grpc" title="Permalink to this headline"></a></h2>
<p>There are several ways to connect to gRPC service using Airflow.</p>
<ol class="arabic simple">
<li><p>Using <cite>NO_AUTH</cite> mode, simply setup an insecure channel of connection.</p></li>
<li><p>Using <cite>SSL</cite> or <cite>TLS</cite> mode, supply a credential pem file for the connection id,
this will setup SSL or TLS secured connection with gRPC service.</p></li>
<li><p>Using <cite>JWT_GOOGLE</cite> mode. It is using google auth default credentials by default,
further use case of getting credentials from service account can be add later on.</p></li>
<li><p>Using <cite>OATH_GOOGLE</cite> mode. Scopes are required in the extra field, can be setup in the UI.
It is using google auth default credentials by default,
further use case of getting credentials from service account can be add later on.</p></li>
<li><p>Using <cite>CUSTOM</cite> mode. For this type of connection, you can pass in a connection
function takes in the connection object and return a gRPC channel and supply whatever
authentication type you want.</p></li>
</ol>
</div>
<div class="section" id="default-connection-ids">
<h2>Default Connection IDs<a class="headerlink" href="#default-connection-ids" title="Permalink to this headline"></a></h2>
<p>The following connection IDs are used by default.</p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">grpc_default</span></code></dt><dd><p>Used by the <a class="reference internal" href="../../_api/airflow/contrib/hooks/grpc_hook/index.html#airflow.contrib.hooks.grpc_hook.GrpcHook" title="airflow.contrib.hooks.grpc_hook.GrpcHook"><code class="xref py py-class docutils literal notranslate"><span class="pre">GrpcHook</span></code></a>
hook.</p>
</dd>
</dl>
</div>
<div class="section" id="configuring-the-connection">
<h2>Configuring the Connection<a class="headerlink" href="#configuring-the-connection" title="Permalink to this headline"></a></h2>
<dl class="simple">
<dt>Host</dt><dd><p>The host url of the gRPC server</p>
</dd>
<dt>Port (Optional)</dt><dd><p>The port to connect to on gRPC server</p>
</dd>
<dt>Auth Type</dt><dd><p>Authentication type of the gRPC connection.
<cite>NO_AUTH</cite> by default, possible values are
<cite>NO_AUTH</cite>, <cite>SSL</cite>, <cite>TLS</cite>, <cite>JWT_GOOGLE</cite>,
<cite>OATH_GOOGLE</cite>, <cite>CUSTOM</cite></p>
</dd>
<dt>Credential Pem File (Optional)</dt><dd><p>Pem file that contains credentials for
<cite>SSL</cite> and <cite>TLS</cite> type auth
Not required for other types.</p>
</dd>
<dt>Scopes (comma separated) (Optional)</dt><dd><p>A list of comma-separated <a class="reference external" href="https://developers.google.com/identity/protocols/googlescopes">Google Cloud scopes</a> to
authenticate with.
Only for <cite>OATH_GOOGLE</cite> type connection</p>
</dd>
</dl>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="mysql.html" class="btn btn-neutral float-right" title="MySQL Connection" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="gcp_sql.html" class="btn btn-neutral float-left" title="Google Cloud SQL Connection" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
<div class="footer">This page uses <a href="https://analytics.google.com/">
Google Analytics</a> to collect statistics. You can disable it by blocking
the JavaScript coming from www.google-analytics.com. Check our
<a href="../../privacy_notice.html">Privacy Policy</a>
for more details.
<script type="text/javascript">
(function() {
var ga = document.createElement('script');
ga.src = ('https:' == document.location.protocol ?
'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
ga.setAttribute('async', 'true');
var nodes = document.documentElement.childNodes;
var i = -1;
var node;
do {
i++;
node = nodes[i]
} while(node.nodeType !== Node.ELEMENT_NODE);
node.appendChild(ga);
})();
</script>
</div>
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>