<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
  <head>
    <meta http-equiv="Content-Language" content="en-us"></meta>
    <link rel="stylesheet" type="text/css" href="style.css">
    <title>S3 Put Task</title>
  </head>

  <body>
    <h2><a name="s3put">s3:put</a></h2>

    <h3>Description</h3>

    <p>Puts nested resources into an S3 bucket.</p>

    <h3>Parameters</h3>
    <table border="1" cellpadding="2" cellspacing="0">
      <tr>
        <td valign="top"><b>Attribute</b></td>
        <td valign="top"><b>Description</b></td>
        <td align="center" valign="top"><b>Required</b></td>
      </tr>
      <tr>
        <td valign="top">bucket</td>
        <td valign="top">destination bucket</td>
        <td align="center">Yes</td>
      </tr>
      <tr>
        <td valign="top">clientrefid</td>
        <td valign="top">Ant reference ID of an <a href="s3client.html">s3:client</a>
        defined elsewhere</td>
        <td align="center">Yes, unless a nested <code>s3:client</code> is specified</td>
      </tr>
      <tr>
        <td valign="top">enablemultiplemappings</td>
        <td valign="top">Enable multiple destinations generated from nested mapper elements</td>
        <td align="center">No, default <code>false</code></td>
      </tr>
      <tr>
        <td valign="top">filtering</td>
        <td valign="top">Whether to apply global Ant filters</td>
        <td align="center">No, default <code>false</code></td>
      </tr>
      <tr>
        <td valign="top">inputencoding</td>
        <td valign="top">Input encoding</td>
        <td align="center">No</td>
      </tr>
      <tr>
        <td valign="top">outputencoding</td>
        <td valign="top">Output encoding</td>
        <td align="center">No</td>
      </tr>
    </table>

    <h3>Parameters specified as nested elements</h3>

    <h4>resource collection</h4>

    <p>Any number of nested resource collections are accepted.</p>

    <h4>FilterSet</h4>

    <p>Any number of nested filtersets are accepted.</p>

    <h4>FilterChain</h4>

    <p>Any number of nested filterchains are accepted.</p>

    <h4>Mapper</h4>

    <p>Any number of nested mapper elements are accepted.</p>

    <h4>FileNameMapper</h4>

    <p>Any number of type defined mappers are accepted.</p>

  </body>
</html>
