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
답변함 일 년 전
0

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

답변함 일 년 전

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인

관련 콘텐츠