Skip to content

Commit 8a77821

Browse files
authored
Add secrect to ECS TaskDefinition (#191)
1 parent 7ed0392 commit 8a77821

File tree

3 files changed

+34
-1
lines changed

3 files changed

+34
-1
lines changed

src/crucible/aws/ecs/container_definition.clj

+5-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
"AWS::ECS::TaskDefinition > ContainerDefinition"
33
(:require [clojure.spec.alpha :as s]
44
[crucible.aws.ecs.key-value-pair :as key-value-pair]
5-
[crucible.resources :refer [spec-or-ref]]))
5+
[crucible.resources :refer [spec-or-ref]]
6+
[crucible.aws.ecs.secret :as secret]))
67

78
(s/def ::image (spec-or-ref string?))
89

@@ -87,6 +88,8 @@
8788
(s/def ::hard-limit (spec-or-ref integer?))
8889
(s/def ::soft-limit (spec-or-ref integer?))
8990

91+
(s/def ::secrets (s/coll-of ::secret/secret-spec :kind vector?))
92+
9093
(s/def ::ulimits (s/keys :req [::hard-limit
9194
::soft-limit]
9295
:opt [::name]))
@@ -123,6 +126,7 @@
123126
::port-mappings
124127
::privileged
125128
::readonly-root-filesystem
129+
::secrets
126130
::ulimits
127131
::user
128132
::volumes-from

src/crucible/aws/ecs/secret.clj

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
(ns crucible.aws.ecs.secret
2+
"AWS::ECS::TaskDefinition > Secret"
3+
(:require [clojure.spec.alpha :as s]
4+
[crucible.resources :refer [spec-or-ref]]))
5+
6+
(s/def ::name (spec-or-ref string?))
7+
(s/def ::value-from (spec-or-ref string?))
8+
9+
(s/def ::secret-spec (s/keys :req [::name
10+
::value-from]))

test/crucible/aws/ecs/task_test.clj

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
(ns crucible.aws.ecs.task-test
2+
(:require [crucible.aws.ecs.task-definition :as task]
3+
[crucible.aws.ecs.container-definition :as container]
4+
[crucible.aws.ecs.secret :as secret]
5+
[crucible.core :refer [xref]]
6+
[clojure.spec.alpha :as s]
7+
[clojure.test :refer :all]))
8+
9+
(deftest task-tests
10+
11+
(testing "task with secrets"
12+
(is
13+
(s/valid? ::task/task-definition
14+
{::task/cpu "2048"
15+
::task/memory "4096"
16+
::task/container-definitions [{::container/name "rclone"
17+
::container/image "rclone/rclone"
18+
::container/secrets [{::secret/name "rclone-access-key"
19+
::secret/value-from "arn:aws:secretsmanager:region:aws_account_id:secret:value-u9bH6K"}]}]}))))

0 commit comments

Comments
 (0)