fix(KeyError): Handle service key errors (#1819)

Co-authored-by: sergargar <sergargar@users.noreply.github.com>
This commit is contained in:
Sergio Garciaandsergargar authored and sergargar committed 2023-02-03 14:39:33 +01:00
1 parent b1a2d2e2a4
commit c351232c58
5 files changed
+55 -28

No files matched your search

@@ -46,7 +46,9 @@ class Lambda:
for function in page["Functions"]:
lambda_name = function["FunctionName"]
lambda_arn = function["FunctionArn"]
lambda_runtime = function["Runtime"]
lambda_runtime = None
if "Runtime" in function:
lambda_runtime = function["Runtime"]
self.functions[lambda_name] = Function(
name=lambda_name,
arn=lambda_arn,
@@ -38,11 +38,14 @@ class CloudWatch:
describe_alarms_paginator = regional_client.get_paginator("describe_alarms")
for page in describe_alarms_paginator.paginate():
for alarm in page["MetricAlarms"]:
metric_name = None
if "MetricName" in alarm:
metric_name = alarm["MetricName"]
self.metric_alarms.append(
MetricAlarm(
alarm["AlarmArn"],
alarm["AlarmName"],
alarm["MetricName"],
metric_name,
alarm["Namespace"],
regional_client.region,
)
@@ -67,29 +67,46 @@ class EC2:
"PublicDnsName" in instance
and "PublicIpAddress" in instance
):
public_dns = instance["PublicDnsName"]
public_ip = instance["PublicIpAddress"]
if "IamInstanceProfile" in instance:
instance_profile = instance["IamInstanceProfile"]
http_tokens = None
http_endpoint = None
public_dns = None
public_ip = None
private_ip = None
instance_profile = None
if "MetadataOptions" in instance:
http_tokens = instance["MetadataOptions"]["HttpTokens"]
http_endpoint = instance["MetadataOptions"][
"HttpEndpoint"
]
if (
"PublicDnsName" in instance
and "PublicIpAddress" in instance
):
public_dns = instance["PublicDnsName"]
public_ip = instance["PublicIpAddress"]
if "PrivateIpAddress" in instance:
private_ip = instance["PrivateIpAddress"]
if "IamInstanceProfile" in instance:
instance_profile = instance["IamInstanceProfile"]
self.instances.append(
Instance(
instance["InstanceId"],
arn,
instance["State"]["Name"],
regional_client.region,
instance["InstanceType"],
instance["ImageId"],
instance["LaunchTime"],
instance["PrivateDnsName"],
instance["PrivateIpAddress"],
public_dns,
public_ip,
http_tokens,
http_endpoint,
instance_profile,
self.instances.append(
Instance(
instance["InstanceId"],
arn,
instance["State"]["Name"],
regional_client.region,
instance["InstanceType"],
instance["ImageId"],
instance["LaunchTime"],
instance["PrivateDnsName"],
private_ip,
public_dns,
public_ip,
http_tokens,
http_endpoint,
instance_profile,
)
)
)
except Exception as error:
logger.error(
f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
@@ -72,9 +72,14 @@ class EMR:
master_node_security_group = cluster_info["Cluster"][
"Ec2InstanceAttributes"
]["EmrManagedMasterSecurityGroup"]
master_node_additional_security_groups = cluster_info["Cluster"][
"Ec2InstanceAttributes"
]["AdditionalMasterSecurityGroups"]
master_node_additional_security_groups = None
if (
"AdditionalMasterSecurityGroups"
in cluster_info["Cluster"]["Ec2InstanceAttributes"]
):
master_node_additional_security_groups = cluster_info[
"Cluster"
]["Ec2InstanceAttributes"]["AdditionalMasterSecurityGroups"]
self.clusters[cluster.id].master = Node(
security_group_id=master_node_security_group,
additional_security_groups_id=master_node_additional_security_groups,
@@ -38,8 +38,8 @@ class S3:
def __list_buckets__(self, audit_info):
logger.info("S3 - Listing buckets...")
buckets = []
try:
buckets = []
list_buckets = self.client.list_buckets()
for bucket in list_buckets["Buckets"]:
try:
@@ -60,11 +60,11 @@ class S3:
logger.error(
f"{bucket_region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
)
return buckets
except Exception as error:
logger.error(
f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
)
return buckets
def __get_bucket_versioning__(self, bucket):
logger.info("S3 - Get buckets versioning...")