#
# 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
#
#      http://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.
#
# AWS account ID
accessKey=
# AWS secret key
secretKey=
# AWS bucket name
s3Bucket=
# AWS bucket region
# Mapping of S3 regions to their constants
# US Standard us-standard
# US West us-west-2
# US West (Northern California) us-west-1
# EU (Ireland) EU
# Asia Pacific (Singapore) ap-southeast-1
# Asia Pacific (Sydney) ap-southeast-2
# Asia Pacific (Tokyo) ap-northeast-1
# South America (Sao Paulo) sa-east-1
s3Region=
# S3 endpoint to be used. This parameter is optional
# and has a higher precedence over endpoint derived
# via S3 region.
kmsKeyId=
connectionTimeout=120000
socketTimeout=120000
maxConnections=20
maxErrorRetry=10
endpoint-url=
# maximum concurrent threads to write to S3.
writeThreads=10
# proxy configurations (optional)
#proxyHost=
#proxyPort=
