## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------
#
# Quarkus
#
quarkus.ssl.native=true
quarkus.log.file.enable = false

#
# Camel
#
camel.context.name = quarkus-camel-example

#
# Camel :: AWS S3
#
camel.component.aws-s3.access-key={{env:AWS_ACCESS_KEY}}
camel.component.aws-s3.secret-key={{env:AWS_SECRET_KEY}}
camel.component.aws-s3.region={{env:AWS_REGION}}

#
# Camel :: AWS SNS
#
camel.component.aws-sns.access-key={{env:AWS_ACCESS_KEY}}
camel.component.aws-sns.secret-key={{env:AWS_SECRET_KEY}}
camel.component.aws-sns.region={{env:AWS_REGION}}

#
# Camel :: AWS EKS
#
camel.component.aws-eks.access-key={{env:AWS_ACCESS_KEY}}
camel.component.aws-eks.secret-key={{env:AWS_SECRET_KEY}}
camel.component.aws-eks.region={{env:AWS_REGION}}

#
# Camel :: AWS SQS
#
camel.component.aws-sqs.access-key={{env:AWS_ACCESS_KEY}}
camel.component.aws-sqs.secret-key={{env:AWS_SECRET_KEY}}
camel.component.aws-sqs.region={{env:AWS_REGION}}

#
# Camel :: AWS KMS
#
camel.component.aws-kms.access-key={{env:AWS_ACCESS_KEY}}
camel.component.aws-kms.secret-key={{env:AWS_SECRET_KEY}}
camel.component.aws-kms.region={{env:AWS_REGION}}

#
# Camel :: AWS ECS
#
camel.component.aws-ecs.access-key={{env:AWS_ACCESS_KEY}}
camel.component.aws-ecs.secret-key={{env:AWS_SECRET_KEY}}
camel.component.aws-ecs.region={{env:AWS_REGION}}

#
# Camel :: AWS IAM
#
camel.component.aws-iam.access-key={{env:AWS_ACCESS_KEY}}
camel.component.aws-iam.secret-key={{env:AWS_SECRET_KEY}}
camel.component.aws-iam.region={{env:AWS_REGION}}

#
# Camel :: AWS EC2
#
camel.component.aws-ec2.access-key={{env:AWS_ACCESS_KEY}}
camel.component.aws-ec2.secret-key={{env:AWS_SECRET_KEY}}
camel.component.aws-ec2.region={{env:AWS_REGION}}

#
# Camel :: AWS Lambda
#
camel.component.aws-lambda.access-key={{env:AWS_ACCESS_KEY}}
camel.component.aws-lambda.secret-key={{env:AWS_SECRET_KEY}}
camel.component.aws-lambda.region={{env:AWS_REGION}}

#
# Camel :: AWS Translate
#
camel.component.aws-translate.access-key={{env:AWS_ACCESS_KEY}}
camel.component.aws-translate.secret-key={{env:AWS_SECRET_KEY}}
camel.component.aws-translate.region={{env:AWS_REGION}}

#
# Camel :: AWS Kinesis
#
camel.component.aws-kinesis.access-key={{env:AWS_ACCESS_KEY}}
camel.component.aws-kinesis.secret-key={{env:AWS_SECRET_KEY}}
camel.component.aws-kinesis.region={{env:AWS_REGION}}

#
# Camel :: AWS Kinesis Firehose
#
camel.component.aws-kinesis-firehose.access-key={{env:AWS_ACCESS_KEY}}
camel.component.aws-kinesis-firehose.secret-key={{env:AWS_SECRET_KEY}}
camel.component.aws-kinesis-firehose.region={{env:AWS_REGION}}