in source/networkFirewallAutomation/lib/network-firewall-manager.ts [194:230]
async firewallPolicyOperations(policyPath: string): Promise<string> {
let describePolicyResponse;
try {
Logger.log(LOG_LEVEL.INFO, `Getting Firewall Policy Object`)
const policyObject: NetworkFirewall.CreateFirewallPolicyRequest = await this.ruleGroupOperations(this.fileHandler.convertFileToObject(policyPath))
// update policy name to unique policy name
policyObject.FirewallPolicyName = this.stringUtils.getUniqueResourceName(policyObject.FirewallPolicyName)
Logger.log(LOG_LEVEL.INFO, `Checking if Firewall Policy exist: ${policyObject.FirewallPolicyName}`)
Logger.log(LOG_LEVEL.INFO, `Found Firewall Policy, trying to update the policy.`)
describePolicyResponse = await this.service.describeFirewallPolicy(policyObject.FirewallPolicyName)
Logger.log(LOG_LEVEL.INFO, `Describe policy response`, describePolicyResponse)
if (describePolicyResponse && describePolicyResponse.FirewallPolicyResponse.FirewallPolicyArn) {
describePolicyResponse.FirewallPolicy = policyObject.FirewallPolicy
describePolicyResponse.FirewallPolicyResponse.Description = policyObject.Description
describePolicyResponse.FirewallPolicyResponse.Tags = policyObject.Tags
let firewallPolicyUpdateResponse = await this.service.updateFirewallPolicy({
FirewallPolicyArn: describePolicyResponse.FirewallPolicyResponse.FirewallPolicyArn,
FirewallPolicy: policyObject.FirewallPolicy,
UpdateToken: describePolicyResponse.UpdateToken,
Description: policyObject.Description,
FirewallPolicyName: describePolicyResponse.FirewallPolicyResponse.FirewallPolicyName
})
Logger.log(LOG_LEVEL.INFO, `Firewall update policy response:`, firewallPolicyUpdateResponse)
//delete the rule groups which are currently in the firewall but not in the new firewall policy file
await this.deleteRuleGroups(policyObject);
return describePolicyResponse.FirewallPolicyResponse.FirewallPolicyArn
} else {
Logger.log(LOG_LEVEL.INFO, `Firewall Policy does not exist, trying to create the policy.`)
const responseCreateFirewallPolicy = await this.service.createFirewallPolicy(policyObject)
return responseCreateFirewallPolicy.FirewallPolicyResponse.FirewallPolicyArn
}
} catch (error) {
Logger.log(LOG_LEVEL.INFO, error)
throw new Error(error)
}
}