in redash/query_runner/athena.py [0:0]
def configuration_schema(cls):
schema = {
"type": "object",
"properties": {
"region": {"type": "string", "title": "AWS Region"},
"aws_access_key": {"type": "string", "title": "AWS Access Key"},
"aws_secret_key": {"type": "string", "title": "AWS Secret Key"},
"s3_staging_dir": {
"type": "string",
"title": "S3 Staging (Query Results) Bucket Path",
},
"schema": {
"type": "string",
"title": "Schema Name",
"default": "default",
},
"glue": {"type": "boolean", "title": "Use Glue Data Catalog"},
"work_group": {
"type": "string",
"title": "Athena Work Group",
"default": "primary",
},
"cost_per_tb": {
"type": "number",
"title": "Athena cost per Tb scanned (USD)",
"default": 5,
},
},
"required": ["region", "s3_staging_dir"],
"extra_options": ["glue", "cost_per_tb"],
"order": [
"region",
"s3_staging_dir",
"schema",
"work_group",
"cost_per_tb",
],
"secret": ["aws_secret_key"],
}
if SHOW_EXTRA_SETTINGS:
schema["properties"].update(
{
"encryption_option": {
"type": "string",
"title": "Encryption Option",
},
"kms_key": {"type": "string", "title": "KMS Key"},
}
)
schema["extra_options"].append("encryption_option")
schema["extra_options"].append("kms_key")
if ASSUME_ROLE:
del schema["properties"]["aws_access_key"]
del schema["properties"]["aws_secret_key"]
schema["secret"] = []
schema["order"].insert(1, "iam_role")
schema["order"].insert(2, "external_id")
schema["properties"].update(
{
"iam_role": {"type": "string", "title": "IAM role to assume"},
"external_id": {
"type": "string",
"title": "External ID to be used while STS assume role",
},
}
)
else:
schema["order"].insert(1, "aws_access_key")
schema["order"].insert(2, "aws_secret_key")
if not OPTIONAL_CREDENTIALS and not ASSUME_ROLE:
schema["required"] += ["aws_access_key", "aws_secret_key"]
return schema