forked from jeffreycoe/aws_kubectl_lambda
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlambda_function.rb
More file actions
34 lines (26 loc) · 1.04 KB
/
lambda_function.rb
File metadata and controls
34 lines (26 loc) · 1.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
require 'json'
require_relative './aws/cli.rb'
require_relative './aws/eks/kubeconfig.rb'
require_relative './kubernetes/kubectl.rb'
def success(msg)
{ statusCode: 200, body: JSON.generate("#{msg}") }
end
def lambda_handler(event:, context:)
if event['RequestType'] == 'Delete'
msg = "#{event['RequestType'].to_s} event detected. "\
"This method is not implemented. Skipping."
return success(msg)
end
kubeconfig = AWS::EKS::Kubeconfig.new
kubectl = Kubernetes::Kubectl.new
config_map_file = '/tmp/aws-auth-cm.yml'
cluster_name = event['ResourceProperties']['ClusterName']
config_yaml = event['ResourceProperties']['ConfigMap']
puts "Cluster Name: #{cluster_name}"
puts "Config YAML: \n#{config_yaml}"
kubeconfig.generate_kubeconfig(cluster_name)
puts 'Writing k8s cluster config map file to /tmp/aws-auth-cm.yml...'
::File.open(config_map_file, 'w') { |file| file.write(config_yaml) }
kubectl.apply(config_map_file)
{ statusCode: 200, body: JSON.generate("EKS cluster config map updated successfully.") }
end