diff --git a/README.md b/README.md index 528073b..f9bc045 100644 --- a/README.md +++ b/README.md @@ -149,7 +149,7 @@ No modules. | [enable\_sns](#input\_enable\_sns) | Enable use of SNS for reporting errors | `bool` | `false` | no | | [enable\_sqs](#input\_enable\_sqs) | Enable use of SQS for SNS to send errors. Requires the use of enable\_sns as well | `bool` | `false` | no | | [kms\_key\_name](#input\_kms\_key\_name) | Different KMS Key (for SNS and SQS) to override default of var.name | `string` | `null` | no | -| [lambda\_environment\_variables](#input\_lambda\_environment\_variables) | Map of lambda environment variables and values | `map(string)` |
{
"DNS_RR_TimeToLive": 60,
"DebugLogLevel": "INFO",
"DynamoDBName": null,
"HeritageIdentifier": "dynr53",
"HeritageTXTRecordPrefix": "_txt",
"MaxApiRetry": 10,
"SleepTime": 60,
"SnsEnable": false,
"SnsTopicArn": "",
"TagKeyCname": "boc:dns:cname",
"TagKeyFlags": "boc:dns:flags",
"TagKeyHostName": "boc:dns:name",
"TagKeyPtrname": "boc:dns:ptrname",
"TagKeyZone": "boc:dns:zone"
} | no |
+| [lambda\_environment\_variables](#input\_lambda\_environment\_variables) | Map of lambda environment variables and values | `map(string)` | {
"DNS_RR_TimeToLive": 60,
"DebugLogLevel": "INFO",
"DynamoDBName": null,
"EMRTagPrefix": "aws",
"HeritageIdentifier": "dynr53",
"HeritageTXTRecordPrefix": "_txt",
"MaxApiRetry": 10,
"RemoteRoleArnFormat": "arn:%s:iam::%s:role/r-inf-dynamic-route53-actions",
"SleepTime": 60,
"SnsEnable": false,
"SnsTopicArn": "",
"TagKeyCname": "boc:dns:cname",
"TagKeyFlags": "boc:dns:flags",
"TagKeyHostName": "boc:dns:name",
"TagKeyPtrname": "boc:dns:ptrname",
"TagKeyZone": "boc:dns:zone"
} | no |
| [lambda\_environment\_variables\_override](#input\_lambda\_environment\_variables\_override) | Map of lambda environment variables and values to override from the defaults | `map(string)` | `{}` | no |
| [lambda\_name](#input\_lambda\_name) | Different Lambda name to override default of var.name | `string` | `null` | no |
| [name](#input\_name) | Name to use within all the created resources (default: inf-dynamic-route53) | `string` | `"inf-dynamic-route53"` | no |
diff --git a/code/ddns-lambda.py b/code/ddns-lambda.py
index af40a06..eb006d4 100755
--- a/code/ddns-lambda.py
+++ b/code/ddns-lambda.py
@@ -73,7 +73,7 @@
LOGGER = logging.getLogger()
account_id = None
region = None
-VERSION = '2.0.0rc3'
+VERSION = '2.0.0rc4'
# Read Env variables
DEBUG_LOG_LEVEL = os.environ.get('DebugLogLevel', 'INFO')
@@ -88,8 +88,10 @@
DNS_RR_TTL = 60 if DNS_RR_TTL == 0 else DNS_RR_TTL
TF_MODULE_VERSION = os.environ.get('tf_module_version', '(unknown)')
MAX_API_RETRY = int(os.environ.get('MaxApiRetry', '10'))
-REMOTE_ROLE_ARN_FORMAT = 'arn:%s:iam::%s:role/r-inf-dynamic-route53-actions'
-REMOTE_ROLE_NAME = 'r-inf-dynamic-route53-actions'
+REMOTE_ROLE_ARN_FORMAT = os.environ.get(
+ 'RemoteRoleArnFormat', 'arn:%s:iam::%s:role/r-inf-dynamic-route53-actions')
+REMOTE_ROLE_NAME = REMOTE_ROLE_ARN_FORMAT.partition('/')[2]
+EMR_TAG_PREFIX = os.environ.get('EMRTagPrefix', 'aws')
# for SNS topic
SNS_TOPIC_ARN = os.environ.get('SnsTopicArn', '')
@@ -3046,7 +3048,7 @@ def tags_to_dict(tags):
tag_dict = {}
if len(tags) > 0:
- tag_dict = {tag.get('Key', '').lstrip().rstrip(): tag.get('Value', '') for tag in tags}
+ tag_dict = {tag.get('Key', '').lstrip().rstrip() : tag.get('Value', '') for tag in tags}
return tag_dict
@@ -3275,7 +3277,8 @@ def create_fqdn(host, zone):
def discover_emr_cluster(tags):
"""
- This tags a dict of tags and determines if the appropriate EMR tags are set.
+ This tags a dict of tags and determines if the appropriate EMR tags are set. For testing, you can set EmrTagPrefix to emr, and then set
+ your tags to emr: vs aws: as listed below (because you cannot create a tag that starts with aws:).
If set, this is a member of an EMR cluster with the cluster_id as the value:
- aws:elasticmapreduce:job-flow-id = j-xxxxxxx
@@ -3288,8 +3291,9 @@ def discover_emr_cluster(tags):
"""
cluster_tuple = namedtuple('EMRCluster', ['is_cluster', 'is_master', 'cluster_id'])
- cluster_id = tags.get('emr:elasticmapreduce:job-flow-id', '')
- is_master = tags.get('emr:elasticmapreduce:instance-group-role', '') == 'MASTER'
+ cluster_id = tags.get('{EMR_TAG_PREFIX}:elasticmapreduce:job-flow-id', '')
+ is_master = tags.get(
+ '{EMR_TAG_PREFIX}:elasticmapreduce:instance-group-role', '') == 'MASTER'
is_cluster = cluster_id != ''
result = cluster_tuple(is_cluster, is_master, cluster_id)
diff --git a/code/ddns-lambda.zip b/code/ddns-lambda.zip
index 1b4f490..4575879 100644
Binary files a/code/ddns-lambda.zip and b/code/ddns-lambda.zip differ
diff --git a/variables.tf b/variables.tf
index 14448f1..c9ed4ac 100644
--- a/variables.tf
+++ b/variables.tf
@@ -47,6 +47,8 @@ variable "lambda_environment_variables" {
SleepTime = 60
SnsEnable = false
SnsTopicArn = ""
+ RemoteRoleArnFormat = "arn:%s:iam::%s:role/r-inf-dynamic-route53-actions"
+ EMRTagPrefix = "aws"
TagKeyCname = "boc:dns:cname"
TagKeyHostName = "boc:dns:name"
TagKeyZone = "boc:dns:zone"
@@ -55,6 +57,7 @@ variable "lambda_environment_variables" {
}
}
+
variable "lambda_environment_variables_override" {
description = "Map of lambda environment variables and values to override from the defaults"
type = map(string)