AWS Elastic Container Service (ECS) の設定

Next-Gen WAF をサイドカーとして AWS Elastic Container Service (ECS) にデプロイできます。このデプロイオプションは、Fargate と EC2 の両方の起動タイプと互換性があります。

前提条件

サイト (ワークスペースとも呼ばれます) のエージェントキーをコピーします。これらのキーは、Next-Gen WAF を AWS ECS のサイドカーとして設定する際に使用します。

AWS ECS のセットアップ

Next-Gen WAF を AWS ECS のサイドカーとして設定するには、Amazon の ECS チュートリアル および サイドカーのドキュメントを参照してください。また、以下を必ず行ってください。

  • タスク定義のストレージボリュームタイプを Bind マウントに設定します。

  • Next-Gen WAF エージェント専用のコンテナを追加して、必ず以下を設定します。

    • Name フィールドを sigsci-agent に変更します。

    • Image URI* フィールドをsignalsciences:sigsci-agent:<agent-version>に変更します。<agent-version> を特定のエージェントバージョンに置き換える必要があります。この変数を latest に設定すると、AWS は都合の悪いタイミングで Next-Gen WAF エージェントをアップグレードする可能性があります。

  • Next-Gen WAF エージェントコンテナのリソース制限 (ulimits) を設定します。nofile のソフト制限とハード制限は 65335 に設定します。これらの制限を低く設定しすぎると (デフォルトは 1024) 高すぎる場合よりも悪影響が生じます。

  • エージェントシークレットキーの環境変数を作成し、以下を必ず設定してください。

    • キーフィールドを SIGSCI_SECRETACCESSKEYに設定します。

    • Value フィールドを、インストール前提条件の完了中にコピーした secretaccesskey の値に設定します。

  • エージェントアクセスキーの環境変数を作成し、以下を必ず設定してください。

    • キーフィールドを SIGSCI_ACCESSKEYIDに設定します。

    • Value フィールドを、インストール前提条件の完了中にコピーした accesskeyid の値に設定します。

  • Next-Gen WAF エージェントコンテナのマウントポイントパスを /var/run に設定します。これは Next-Gen WAF エージェントのデフォルトパスですが、別のパスを設定することもできます。

JSON の設定例

ヒント:この例のJSONでは、すべての REPLACEME を置き換える必要があります。

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
{
"ipcMode": null,
"executionRoleArn": "arn:aws:iam::REPLACEME:role/ecsTaskExecutionRole",
"containerDefinitions": [
{
"dnsSearchDomains": null,
"logConfiguration": {
"logDriver": "awslogs",
"secretOptions": null,
"options": {
"awslogs-group": "/ecs/sigsci-example",
"awslogs-region": "us-west-1",
"awslogs-stream-prefix": "ecs"
}
},
"entryPoint": null,
"portMappings": [
{
"hostPort": 8080,
"protocol": "tcp",
"containerPort": 8080
}
],
"command": null,
"linuxParameters": null,
"cpu": 0,
"environment": [
{
"name": "apache_port",
"value": "8080"
},
{
"name": "sigsci_rpc",
"value": "/var/run/sigsci.sock"
}
],
"dnsServers": null,
"mountPoints": [
{
"readOnly": null,
"containerPath": "/var/run",
"sourceVolume": "run"
}
],
"workingDirectory": null,
"secrets": null,
"dockerSecurityOptions": null,
"memory": null,
"memoryReservation": null,
"volumesFrom": [],
"stopTimeout": null,
"image": "signalsciences/sigsci-agent:latest",
"startTimeout": null,
"firelensConfiguration": null,
"dependsOn": null,
"disableNetworking": null,
"interactive": null,
"healthCheck": null,
"essential": true,
"links": null,
"hostname": null,
"extraHosts": null,
"pseudoTerminal": null,
"user": null,
"readonlyRootFilesystem": null,
"dockerLabels": null,
"systemControls": null,
"privileged": null,
"name": "apache"
},
{
"dnsSearchDomains": null,
"logConfiguration": {
"logDriver": "awslogs",
"secretOptions": null,
"options": {
"awslogs-group": "/ecs/sigsci-example",
"awslogs-region": "us-west-1",
"awslogs-stream-prefix": "ecs"
}
},
"entryPoint": null,
"portMappings": [],
"command": null,
"linuxParameters": null,
"cpu": 0,
"environment": [
{
"name": "SIGSCI_ACCESSKEYID",
"value": "REPLACEME"
},
{
"name": "SIGSCI_SECRETACCESSKEY",
"value": "REPLACEME"
}
],
"ulimits": [
{
"name": "nofile",
"softLimit": 65335,
"hardLimit": 65335
}
],
"dnsServers": null,
"mountPoints": [
{
"readOnly": null,
"containerPath": "/var/run",
"sourceVolume": "run"
}
],
"workingDirectory": null,
"secrets": null,
"dockerSecurityOptions": null,
"memory": null,
"memoryReservation": null,
"volumesFrom": [],
"stopTimeout": null,
"image": "signalsciences/sigsci-agent:latest",
"startTimeout": null,
"firelensConfiguration": null,
"dependsOn": null,
"disableNetworking": null,
"interactive": null,
"healthCheck": null,
"essential": true,
"links": null,
"hostname": null,
"extraHosts": null,
"pseudoTerminal": null,
"user": null,
"readonlyRootFilesystem": null,
"dockerLabels": null,
"systemControls": null,
"privileged": null,
"name": "agent"
}
],
"memory": "4096",
"taskRoleArn": "arn:aws:iam::REPLACEME:role/EcsServiceRole2",
"family": "sigsci-example",
"pidMode": null,
"requiresCompatibilities": [
"FARGATE"
],
"networkMode": "host",
"cpu": "2048",
"inferenceAccelerators": null,
"proxyConfiguration": null,
"volumes": [
{
"efsVolumeConfiguration": null,
"name": "run",
"host": {
"sourcePath": null
},
"dockerVolumeConfiguration": null
}
],
"tags": []
}