3
3
For this module to work, you`ll need AWS credentials in the ${HOME}/.aws directory.
4
4
=#
5
5
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
-
32
6
using Random
33
7
using AWS: @service
34
8
using Serialization
@@ -113,7 +87,6 @@ function ec2_create_cluster(cluster::Cluster)
113
87
end
114
88
115
89
116
-
117
90
function ec2_get_ips_instance (instance_id:: String )
118
91
public_ip = Ec2. describe_instances (Dict (" InstanceId" => instance_id))[" reservationSet" ][" item" ][" instancesSet" ][" item" ][" ipAddress" ]
119
92
private_ip = Ec2. describe_instances (Dict (" InstanceId" => instance_id))[" reservationSet" ][" item" ][" instancesSet" ][" item" ][" privateIpAddress" ]
150
123
151
124
function ec2_delete_placement_group (name)
152
125
params = Dict (" GroupName" => name)
153
- Ec2 . delete_placement_group (name)
126
+ delete_placement_group (name)
154
127
end
155
128
156
129
#=
195
168
Criação de Instâncias
196
169
=#
197
170
198
-
199
-
200
171
# Funções auxiliares.
201
172
function ec2_set_up_ssh_connection (cluster_name)
202
173
@@ -382,14 +353,14 @@ chown -R ubuntu:ubuntu /home/ubuntu/shared
382
353
# Criando as instâncias
383
354
params_manager, params_workers = ec2_create_params (cluster, user_data_base64)
384
355
# Criar o headnode
385
- instance_headnode = Ec2 . run_instances (1 , 1 , params_manager)
356
+ instance_headnode = run_instances (1 , 1 , params_manager)
386
357
cluster_nodes[:manager ] = instance_headnode[" instancesSet" ][" item" ][" instanceId" ]
387
358
388
359
# Criar os worker nodes.
389
360
params_workers[" InstanceType" ] = cluster. instance_type_worker
390
361
params_workers[" TagSpecification" ][" Tag" ][2 ][" Value" ] = " worker"
391
362
count = cluster. count
392
- instances_workers = Ec2 . run_instances (count, count, params_workers)
363
+ instances_workers = run_instances (count, count, params_workers)
393
364
workers = count
394
365
for i in 1 : count
395
366
instance = " "
@@ -435,7 +406,7 @@ chown -R ubuntu:ubuntu /home/ubuntu/shared
435
406
436
407
# Criar os Peers.
437
408
count = cluster. count
438
- instances_peers = Ec2 . run_instances (count, count, params)
409
+ instances_peers = run_instances (count, count, params)
439
410
for i in 1 : count
440
411
instance = " "
441
412
if count > 1
@@ -640,4 +611,68 @@ function ec2_get_ips(cluster::Cluster)
640
611
ips[node] = ec2_get_ips_instance (id)
641
612
end
642
613
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