Hasura on ECS(公式の「Quickstart with AWS ECS」の記事)で詰まったところのメモ
https://hasura.io/docs/latest/enterprise/getting-started/quickstart-aws-ecs/ をやってみて、詰まったところを書き留めておく
twitterに書いていたやつを、ちゃんと整理して書く
aws ecs create-cluster --cluster-name hasura-fargate-cluster
は普通にできた
aws cliで手順が書いてあるのは、やり方がぶれないのでありがたい
せっかくであれば、security-groupとかsubnetとかもcliで作る手順を書いてくれるとありがたかったが、まあ個人の環境や起動したい構成にも依存するところもあるので仕方ないと言えば仕方ないか
wget https://raw.githubusercontent.com/hasura/graphql-engine/stable/install-manifests/enterprise/aws-ecs/hasura-fargate-task.json
windowsだったので、だめだった。
git bashでもwgetコマンドが入っておらず、
を入れて、wgetが実行できる環境を整えたhasura-fargate-task.json
の変更のために、RDSとElastiCacheの環境を作った
RDSのデータベース名が分からなくなったので、CLIから次の手順に従って確かめた
Step5
aws ecs register-task-definition --cli-input-json file://hasura-fargate-task.json
も普通にできた
Step6
>aws ecs list-task-definitions
{
"taskDefinitionArns": [
"arn:aws:ecs:ap-northeast-1:776890984871:task-definition/hasura:1"
]
}
タスク定義が普通にあった
そのあとの手順でログが出ない感じがしたので、hasura-fargate-task.jsonに次の記載を追加
{
...
"containerDefinitions": [
{
...
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-create-group": "true",
"awslogs-group": "ecs/hasura",
"awslogs-region": "ap-northeast-1",
"awslogs-stream-prefix": "hasura"
}
},
...
}
],
"executionRoleArn": "arn:aws:iam::<AWS AccountID>:role/ecsTaskExecutionRole",
...
}
<AWS AccountID>
は自分のAWSアカウントID
今回publicサブネットに置いたので
aws ecs create-service \
--cluster hasura-fargate-cluster \
--service-name hasura-fargate-service \
--task-definition hasura:1 \
--desired-count 1 \
--launch-type "FARGATE" \
--network-configuration "awsvpcConfiguration={subnets=[subnet-abcd1234],securityGroups=[sg-abcd1234],assignPublicIp=ENABLED}"
を実行
(subnetsとsecurityGroupsの部分は自分の環境の値に変更
サービス、タスクは起動していた
タスクのパブリックIPにアクセスしてみると
何も出ない。
:8080
をつけてみたが、同様の状態
タスクのログでは、/healthz
へのリクエストが受けつられているようだったので、コンテナ自体は立ち上がっていそう
ALBとかを立ててみたが、状況は変わらず
VPC Reachability Analyzerを使ってみる
eniのsecurity groupがよくなさそう
eniにsecurity groupを設定した覚えとかはないが、、
taskかserviceのsecurity groupを変更すれば良さそう
今まで設定していたsecurity groupががばがば過ぎて、エラーが発生しているようだったので、新しくsecurity groupを作ってみた
新しく作ったうえで、新しくserviceを作った
aws ecs create-service \
--cluster hasura-fargate-cluster \
--service-name hasura-fargate-service \
--task-definition hasura:1 \
--desired-count 1 \
--launch-type "FARGATE" \
--network-configuration "awsvpcConfiguration={subnets=[subnet-abcd1234],securityGroups=[sg-new-abcd1234],assignPublicIp=ENABLED}"
igwからのリクエストが疎通するようになった模様!!
今度はタスクが起動失敗するようになった。。
ログを確認してみると、、
postgresが接続できない?
これまでこのようなことはなかったので、怪しいのは新しく作ったsecurity group、、、
postgresのsecurity groupを見ると、同一のsecurity groupからのリクエストしか受け付けないようになっていた
新しく作ったsecurity groupからのリクエストを受け付けるように変更してみる
タスクは起動した!
そして、Hasuraにもアクセスできるようになったでい!