AWS Elastic Container Service (ECS) の設定
- English
- 日本語
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を置き換える必要があります。
{ "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": []}