0

私はLinux上でAsteriskを使用しているVOIPプロジェクトに取り組んでいます。私たちの現在の目標は、複数のEC2マシンにそれぞれAsteriskコンテナを実行させることです。我々は、開発、ステージング、およびプロダクション環境を持つことができるようにしたいと考えています。これを行うために、AWS-ECSを使用するCloudFormationテンプレートを作成しています。 私の問題は、AWS-S3バケットをコンテナボリュームにマップする適切な方法が見つからないことです。私は2種類のバケツを使いたい。 1つは、すべてのコンテナにアスタリスク設定ファイルを注入するためのものです。もう1つはボイスメッセージとすべてのコンテナのログを保存することです。ありがとうございます。AWS Cloud Formationテンプレートを使用してAWS ECSのコンテナにAWS S3バケットをマップする方法はありますか?

P.S. AWS-ECRでアスタリスクイメージをプッシュし、TaskDefenitionでそのアスタリスクイメージを参照しました。私はMountPointsとVolumesをそこに見るが、私の解決策ではないようだ。

答えて

1

タスク定義で環境変数を使用してみることはできますか? CFテンプレート内

それはこのようになります:

"DefJob":{ 
    "Type":"AWS::ECS::TaskDefinition", 
    "Properties":{ 
     "ContainerDefinitions":[ 
      { 
       "Name":"integration-jobs", 
       "Cpu":"3096", 
       "Essential":"true", 
       "Image":"828387064194.dkr.ecr.us-east-1.amazonaws.com/poblano:integration", 
       "Memory":"6483", 
       "Environment":[ 
       { 
        "Name":"S3_REGION", 
        "Value":"us-east-1" 
       }, 
       { 
        "Name":"S3_BUCKET" 
        "Value":"Name-of-S3" 
        } 
        ........ 

そして、これらのS3バケットを使用するように容器にこれらの環境変数を参照します。インスタンスがこれらのS3バケットを使用するためのアクセス権を持っていることを確認する必要があります。

私はそれがこの問題に正確に答えていない知っているおかげで、 マニッシュ

0

が、これはマニッシュのソリューションよりも塩基性であるが、ECSコンテナ間の共有ストレージを達成するために、生の方法は弾性に依存することですファイルシステム。ドッカーインスタンス、または自動スケーリンググループの起動構成のユーザーデータで、このようなスクリプトを設定することにより

、EFSは、このように/のようなものに設定し、ボリュームを共有し、すべてのドッカーインスタンスのMNT/EFS /にマウントすることができますmnt/efs /何か。このため

、このユーザーデータブロックは、仕事をしていません(私たちはアマゾンECS最適化された画像でそれを使用します)。

Content-Type: multipart/mixed; boundary="==BOUNDARY==" 
MIME-Version: 1.0 

--==BOUNDARY== 
MIME-Version: 1.0 
Content-Type: text/text/x-shellscript; charset="us-ascii" 
#!/bin/bash 
yum install -y nfs-utils 
mkdir "/mnt/efs" 
echo "us-east-1a.fs-1234567.efs.us-east-1.amazonaws.com:/ /mnt/efs nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 0 0" >> /etc/fstab 
mount -a 
/etc/init.d/docker restart 
docker start ecs-agent 
--==BOUNDARY==-- 

Dockerが最後に再起動されます。それ以外の場合、マウントされたボリュームは表示されません(インスタンス作成時のみ必要です)。

もちろん、これを実行するには、インスタンスとEFSがNFSネットワークポート(2049)を介して通信できるようにセキュリティグループを設定する必要があります。

関連する問題