ECSでアプリケーションのアクションによって新たなサービスを起動することはできますか?

0

ECS上にデプロイされたアプリケーション内でユーザーが特定のアクションを行った場合に、同一クラスター内に新たなサービスを起動する方法はありますか? 具体的には、laravelアプリケーション内で、ユーザーがUI上で、「公開」ボタンを押下することで、新たなサービスが起動し、nnext.jsのコンテナを立ち上げたいと考えています。 また、立ち上げたコンテナ内に、Githubから自動デプロイを行いたいと考えています。 どなたかアドバイスをいただけると幸いです。よろしくお願いいたします。

2 回答
0

実際に検証してはいないですが、案だけ出してみます。 githubから自動デプロイしたいとのことなので、簡素なCI/CDパイプラインみたいなものが必要になりそうです。 codepipelineを使いたくなりますが、codepipelineは基本的に特定の「固定の」リポジトリをソースにするものなので、ユーザーごとにgithubURLが異なってくる今回のケースでは都度都度パイプラインを作成する必要が出てきそうなので大変そうです。

githubリポジトリはパブリックになっているものとして、アプリケーションで「公開」ボタンを押されたときに対象githubリポジトリのURLをdynamoDB等に格納、dynamoDBストリームを使ってlambdaを呼び出しlambdaからcodebuildを起動、buildspec.yml内でdynamoDBからgithubリポジトリURL取得、git clone、docker build, ECRへのpushを行い、ECRへのpushまでが完了したことをEventbridge等で検知して、lambdaを使って、ecsタスク及びecsサービスを作成・・みたいなことをすれば可能かもしれません。

PHPなら、aws SDK for PHPを使ってdynamoDBへの書き込みをすることになるでしょう。 https://docs.aws.amazon.com/aws-sdk-php/v3/api/

上記のやり方で実現できるかもしれませんが、そもそも本当にアプリケーションからECSサービスを立ち上げる必要があるのかといった点は検討したほうがよろしいかと思います。作成されようとしているサービスの性質がインターネットに公開するようなパブリックなものであれば、他人がいくらでもあなたのAWSリソースを使えるということになりかねないですし、社内利用を想定したプライベートなものであれば、こんな大掛かりな仕組みが必要なのかは疑問です。 以上、よろしくお願いします。

profile picture
Kikuchi
已回答 1 年前
0

ご回答いただきありがとうございます。公開されるたびに、サービスを立ち上げる仕様については、見直す必要があると感じました。

已回答 1 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则

相关内容