class Terraforming::Resource::KMSKey
Public Class Methods
new(client)
click to toggle source
# File lib/terraforming/resource/kms_key.rb, line 14 def initialize(client) @client = client end
tf(client: Aws::KMS::Client.new)
click to toggle source
# File lib/terraforming/resource/kms_key.rb, line 6 def self.tf(client: Aws::KMS::Client.new) self.new(client).tf end
tfstate(client: Aws::KMS::Client.new)
click to toggle source
# File lib/terraforming/resource/kms_key.rb, line 10 def self.tfstate(client: Aws::KMS::Client.new) self.new(client).tfstate end
Public Instance Methods
tf()
click to toggle source
# File lib/terraforming/resource/kms_key.rb, line 18 def tf apply_template(@client, "tf/kms_key") end
tfstate()
click to toggle source
# File lib/terraforming/resource/kms_key.rb, line 22 def tfstate keys.inject({}) do |resources, key| resources["aws_kms_key.#{module_name_of(key)}"] = { "type" => "aws_kms_key", "primary" => { "id" => key.key_id, "attributes" => { "arn" => key.arn, "description" => key.description, "enable_key_rotation" => key_rotation_status_of(key).key_rotation_enabled.to_s, "id" => key.key_id, "is_enabled" => key.enabled.to_s, "key_id" => key.key_id, "key_usage" => key.key_usage, "policy" => key_policy_of(key), }, }, } resources end end
Private Instance Methods
aliases()
click to toggle source
# File lib/terraforming/resource/kms_key.rb, line 46 def aliases @aliases ||= @client.list_aliases.aliases end
key_policy_of(key)
click to toggle source
# File lib/terraforming/resource/kms_key.rb, line 60 def key_policy_of(key) policies = @client.list_key_policies(key_id: key.key_id).policy_names return "" if policies.empty? @client.get_key_policy(key_id: key.key_id, policy_name: policies[0]).policy end
key_rotation_status_of(key)
click to toggle source
# File lib/terraforming/resource/kms_key.rb, line 68 def key_rotation_status_of(key) @client.get_key_rotation_status(key_id: key.key_id) end
keys()
click to toggle source
# File lib/terraforming/resource/kms_key.rb, line 50 def keys @client .list_keys .keys .reject { |key| managed_master_key?(key) } .map { |key| @client.describe_key(key_id: key.key_id) } .map(&:key_metadata) .reject { |metadata| metadata.origin == "EXTERNAL" } # external origin key is not supoprted by Terraform end
managed_master_key?(key)
click to toggle source
# File lib/terraforming/resource/kms_key.rb, line 72 def managed_master_key?(key) !aliases.select { |a| a.target_key_id == key.key_id && a.alias_name =~ %r{\Aalias/aws/} }.empty? end
module_name_of(key)
click to toggle source
# File lib/terraforming/resource/kms_key.rb, line 76 def module_name_of(key) normalize_module_name(key.key_id) end