33For this module to work, you`ll need AWS credentials in the ${HOME}/.aws directory.
44=#
55
6- #=
7- 1. Create placement group.
8- 2. Create EFS Filesystem.
9- 3. Create EC2 instances and attach them to the EFS.
10- =#
11-
12- using AWS
13- println (" Adaptando o código do Módulo AWS.jl..." )
14- using FilePathsBase
15- aws_package_dir = ENV [" HOME" ] * " /.julia/packages/AWS"
16- all_entries = readdir (aws_package_dir)
17- subdirs = filter (entry -> isdir (joinpath (aws_package_dir, entry)), all_entries)
18-
19- for subdir in subdirs
20- ec2_file = joinpath (aws_package_dir, subdir, " src" , " services" , " ec2.jl" )
21- chmod (ec2_file, 0o644 )
22- content = read (ec2_file, String)
23- new_content = replace (content, " Dict{String,Any}(\" groupName\" => groupName);" => " Dict{String,Any}(\" GroupName\" => groupName);" )
24- new_content = replace (new_content, " \" MaxCount\" => MaxCount, \" MinCount\" => MinCount, \" clientToken\" => string(uuid4())" =>
25- " \" MaxCount\" => MaxCount, \" MinCount\" => MinCount, \" ClientToken\" => string(uuid4())" )
26- new_content = replace (new_content, " \" clientToken\" => string(uuid4())" => " \" ClientToken\" => string(uuid4())" )
27- open (ec2_file, " w" ) do io
28- write (io, new_content)
29- end
30- end
31-
326using Random
337using AWS: @service
348using Serialization
@@ -113,7 +87,6 @@ function ec2_create_cluster(cluster::Cluster)
11387end
11488
11589
116-
11790function ec2_get_ips_instance (instance_id:: String )
11891 public_ip = Ec2. describe_instances (Dict (" InstanceId" => instance_id))[" reservationSet" ][" item" ][" instancesSet" ][" item" ][" ipAddress" ]
11992 private_ip = Ec2. describe_instances (Dict (" InstanceId" => instance_id))[" reservationSet" ][" item" ][" instancesSet" ][" item" ][" privateIpAddress" ]
150123
151124function ec2_delete_placement_group (name)
152125 params = Dict (" GroupName" => name)
153- Ec2 . delete_placement_group (name)
126+ delete_placement_group (name)
154127end
155128
156129#=
195168Criação de Instâncias
196169=#
197170
198-
199-
200171# Funções auxiliares.
201172function ec2_set_up_ssh_connection (cluster_name)
202173
@@ -382,14 +353,14 @@ chown -R ubuntu:ubuntu /home/ubuntu/shared
382353 # Criando as instâncias
383354 params_manager, params_workers = ec2_create_params (cluster, user_data_base64)
384355 # Criar o headnode
385- instance_headnode = Ec2 . run_instances (1 , 1 , params_manager)
356+ instance_headnode = run_instances (1 , 1 , params_manager)
386357 cluster_nodes[:manager ] = instance_headnode[" instancesSet" ][" item" ][" instanceId" ]
387358
388359 # Criar os worker nodes.
389360 params_workers[" InstanceType" ] = cluster. instance_type_worker
390361 params_workers[" TagSpecification" ][" Tag" ][2 ][" Value" ] = " worker"
391362 count = cluster. count
392- instances_workers = Ec2 . run_instances (count, count, params_workers)
363+ instances_workers = run_instances (count, count, params_workers)
393364 workers = count
394365 for i in 1 : count
395366 instance = " "
@@ -435,7 +406,7 @@ chown -R ubuntu:ubuntu /home/ubuntu/shared
435406
436407 # Criar os Peers.
437408 count = cluster. count
438- instances_peers = Ec2 . run_instances (count, count, params)
409+ instances_peers = run_instances (count, count, params)
439410 for i in 1 : count
440411 instance = " "
441412 if count > 1
@@ -640,4 +611,68 @@ function ec2_get_ips(cluster::Cluster)
640611 ips[node] = ec2_get_ips_instance (id)
641612 end
642613 ips
643- end
614+ end
615+
616+
617+
618+ function delete_placement_group (
619+ groupName; aws_config:: AbstractAWSConfig = global_aws_config ()
620+ )
621+ return Ec2. ec2 (
622+ " DeletePlacementGroup" ,
623+ Dict {String,Any} (" GroupName" => groupName);
624+ aws_config= aws_config,
625+ feature_set= Ec2. SERVICE_FEATURE_SET,
626+ )
627+ end
628+ function delete_placement_group (
629+ groupName,
630+ params:: AbstractDict{String} ;
631+ aws_config:: AbstractAWSConfig = global_aws_config (),
632+ )
633+ return Ec2. ec2 (
634+ " DeletePlacementGroup" ,
635+ Dict {String,Any} (
636+ mergewith (_merge, Dict {String,Any} (" GroupName" => groupName), params)
637+ );
638+ aws_config= aws_config,
639+ feature_set= Ec2. SERVICE_FEATURE_SET,
640+ )
641+ end
642+
643+ function run_instances (
644+ MaxCount, MinCount; aws_config:: AbstractAWSConfig = global_aws_config ()
645+ )
646+ return Ec2. ec2 (
647+ " RunInstances" ,
648+ Dict {String,Any} (
649+ " MaxCount" => MaxCount, " MinCount" => MinCount, " ClientToken" => string (Ec2. uuid4 ())
650+ );
651+ aws_config= aws_config,
652+ feature_set= Ec2. SERVICE_FEATURE_SET,
653+ )
654+ end
655+ function run_instances (
656+ MaxCount,
657+ MinCount,
658+ params:: AbstractDict{String} ;
659+ aws_config:: AbstractAWSConfig = global_aws_config (),
660+ )
661+ return Ec2. ec2 (
662+ " RunInstances" ,
663+ Dict {String,Any} (
664+ mergewith (
665+ _merge,
666+ Dict {String,Any} (
667+ " MaxCount" => MaxCount,
668+ " MinCount" => MinCount,
669+ " ClientToken" => string (Ec2. uuid4 ()),
670+ ),
671+ params,
672+ ),
673+ );
674+ aws_config= aws_config,
675+ feature_set= Ec2. SERVICE_FEATURE_SET,
676+ )
677+ end
678+
0 commit comments