Skip to content

Commit cc0f1e8

Browse files
committed
Replace get with post and use form encoding
1 parent 172f280 commit cc0f1e8

File tree

2 files changed

+12
-15
lines changed

2 files changed

+12
-15
lines changed

lib/flame_ec2/ec2_api.ex

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,11 @@ defmodule FlameEC2.EC2Api do
1010
require Logger
1111

1212
def run_instances!(%BackendState{} = state) do
13-
params = build_query_from_state(state)
13+
params = build_params_from_state(state)
1414

1515
uri =
1616
state.config.ec2_service_endpoint
1717
|> URI.new!()
18-
|> URI.append_query(params)
1918
|> URI.to_string()
2019

2120
credentials = :aws_credentials.get_credentials()
@@ -27,7 +26,8 @@ defmodule FlameEC2.EC2Api do
2726
%{} ->
2827
[
2928
url: uri,
30-
method: :get,
29+
method: :post,
30+
form: params,
3131
headers: [{:accept, "application/json"}],
3232
aws_sigv4: Map.put_new(credentials, :service, "ec2")
3333
]
@@ -40,14 +40,13 @@ defmodule FlameEC2.EC2Api do
4040
end
4141
end
4242

43-
def build_query_from_state(%BackendState{} = state) do
43+
def build_params_from_state(%BackendState{} = state) do
4444
state.config
4545
|> params_from_config()
4646
|> Map.merge(instance_tags(state))
4747
|> Map.put("Action", "RunInstances")
4848
|> flatten_json_object()
4949
|> Map.filter(fn {_k, v} -> not is_nil(v) end)
50-
|> URI.encode_query()
5150
end
5251

5352
defp instance_tags(%BackendState{} = state) do

test/flame_ec2/ec2_api_test.exs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,26 +23,25 @@ defmodule FlameEC2.EC2ApiTest do
2323
config = FlameEC2.QuickConfigs.simple_valid_config()
2424
state = FlameEC2.BackendState.new(config, [])
2525

26-
query = FlameEC2.EC2Api.build_query_from_state(state)
27-
parsed = URI.decode_query(query)
26+
parsed = FlameEC2.EC2Api.build_params_from_state(state)
2827

2928
assert parsed["Action"] == "RunInstances"
3029
assert parsed["ImageId"] == "ami-123"
3130
assert parsed["InstanceType"] == "t3.nano"
32-
assert parsed["MaxCount"] == "1"
33-
assert parsed["MinCount"] == "1"
31+
assert parsed["MaxCount"] == 1
32+
assert parsed["MinCount"] == 1
3433

35-
assert parsed["NetworkInterface.1.AssociatePublicIpAddress"] == "false"
36-
assert parsed["NetworkInterface.1.DeleteOnTermination"] == "true"
37-
assert parsed["NetworkInterface.1.DeviceIndex"] == "0"
34+
assert parsed["NetworkInterface.1.AssociatePublicIpAddress"] == false
35+
assert parsed["NetworkInterface.1.DeleteOnTermination"] == true
36+
assert parsed["NetworkInterface.1.DeviceIndex"] == 0
3837
assert parsed["NetworkInterface.1.SubnetId"] == "subnet-123"
3938
assert parsed["NetworkInterface.1.SecurityGroupId.1"] == "sg-123"
4039

4140
assert parsed["TagSpecification.1.ResourceType"] == "instance"
4241
assert parsed["TagSpecification.1.Tag.1.Key"] == "FLAME_PARENT_IP"
4342
assert parsed["TagSpecification.1.Tag.1.Value"] == context[:local_ipv4]
4443
assert parsed["TagSpecification.1.Tag.2.Key"] == "FLAME_PARENT_APP"
45-
assert parsed["TagSpecification.1.Tag.2.Value"] == "flame_ec2"
44+
assert parsed["TagSpecification.1.Tag.2.Value"] == :flame_ec2
4645

4746
assert parsed["UserData"]
4847
{:ok, decoded} = Base.decode64(parsed["UserData"])
@@ -72,8 +71,7 @@ defmodule FlameEC2.EC2ApiTest do
7271

7372
state = FlameEC2.BackendState.new(config, [])
7473

75-
query = FlameEC2.EC2Api.build_query_from_state(state)
76-
parsed = URI.decode_query(query)
74+
parsed = FlameEC2.EC2Api.build_params_from_state(state)
7775

7876
assert parsed["LaunchTemplate.LaunchTemplateId"] == "lt-123"
7977
assert parsed["LaunchTemplate.Version"] == "1"

0 commit comments

Comments
 (0)