type
status
date
slug
summary
tags
category
icon
password
书籍
EC2内でDockerがセットアップして、それをAWS EFSにマウントしました。
手順を共有したいと思います。
- EC2のオペレーティングシステム:LINUX2023
- Dockerのバージョン:最新版を
sudo dnf install -y docker
コマンドでインストールしました。」
構成図
構成を説明します。
- formation templateにより、VPCを構築しております
- formation templateにより、EC2を構築しております
- formation templateにより、EFSを構築しております
- formation templateにより、RDSを構築しております
- EC2内にDockerをインストールしておリます。
- EFSの/がEC2の/mnt/efsとマウントしておリます。
- Docker内にwordpressをインストールしておリます。
- Dockerの/var/www/htmlをホスト機の/mnt/efsにマウントしておリます
- wordpress pressのデータベースはRDSを使っております。
これでアプリケーションがステートレスの状態でスケーラブルが容易になります。

1.formation templateにより、リソースを構築する操作手順
ローカルformation templateを用意し、下記の流れで、リソースを構築できます。







2.formation templateにより、VPCを構築
10-VPC.yml formation templateにより、下記のリソースが構築されます
リソース名 | タイプ | 説明 |
CFnVPC | AWS::EC2::VPC | VPC(仮想プライベートクラウド)の定義 |
PublicSubnet1 | AWS::EC2::Subnet | パブリックサブネット1の定義 |
PublicSubnet2 | AWS::EC2::Subnet | パブリックサブネット2の定義 |
PrivateSubnet1 | AWS::EC2::Subnet | プライベートサブネット1の定義 |
PrivateSubnet2 | AWS::EC2::Subnet | プライベートサブネット2の定義 |
CFnVPCIGW | AWS::EC2::InternetGateway | VPCのインターネットゲートウェイの定義 |
CFnVPCIGWAttach | AWS::EC2::VPCGatewayAttachment | インターネットゲートウェイをVPCにアタッチ |
PublicRouteTable | AWS::EC2::RouteTable | パブリックルートテーブルの定義 |
PublicRoute | AWS::EC2::Route | インターネットゲートウェイを経由するデフォルトのルートの定義 |
PublicSubnet1Association | AWS::EC2::SubnetRouteTableAssociation | パブリックサブネット1をパブリックルートテーブルに関連付ける |
PublicSubnet2Association | AWS::EC2::SubnetRouteTableAssociation | パブリックサブネット2をパブリックルートテーブルに関連付ける |
下記のコードを使って、Cloud formationで、VPCを構築します
3.formation templateにより、EC2を構築
20-EC2.yml formation templateにより、下記のリソースが構築されます
リソース名 | タイプ | 説明 | プロパティ |
EC2WebServer01 | AWS::EC2::Instance | EC2インスタンスの定義 | ImageId: EC2インスタンスが使用するAMIのID InstanceType: インスタンスのサイズ SubnetId: EC2インスタンスを配置するサブネットのID UserData: インスタンスの起動時に実行されるスクリプト KeyName: SSHキーペアの名前 SecurityGroupIds: 関連付けるセキュリティグループのID |
EC2SG | AWS::EC2::SecurityGroup | EC2インスタンス用のセキュリティグループの定義 | GroupDescription: グループの説明 VpcId: 関連付けるVPCのID SecurityGroupIngress: 入力トラフィックを制御するルールのリスト |
下記のコードを使って、Cloud formationで、VPCを構築します
4.formation templateにより、EFSを構築
30-EFS.yml formation templateにより、下記のリソースが構築されます
項目 | 説明 | 設定値 |
EFSCreate | AWS EFS ファイルシステム | - FileSystemTags: - Key: Name Value: ecs-handson-efs - PerformanceMode: generalPurpose - ThroughputMode: bursting - Encrypted: false |
EFSMountTargetSecurityGroup | EFS マウントターゲット用 EC2 セキュリティグループ | - GroupDescription: EFS マウントターゲット用セキュリティグループ - VpcId: ImportValue(VPCStackName-VPCID) - SecurityGroupIngress: - IpProtocol: tcp FromPort: 2049 ToPort: 2049 CidrIp: 0.0.0.0/0 |
EFSMountTarget1 | AWS EFS マウントターゲット #1 | - FileSystemId: 参照(EFSCreate) - SecurityGroups: 参照(EFSMountTargetSecurityGroup) - SubnetId: ImportValue(VPCStackName-PublicSubnet1) |
EFSMountTarget2 | AWS EFS マウントターゲット #2 | - FileSystemId: 参照(EFSCreate) - SecurityGroups: 参照(EFSMountTargetSecurityGroup) - SubnetId: ImportValue(VPCStackName-PublicSubnet2) |
EFSInboundRule | EFS マウントターゲットセキュリティグループのインバウンドルール | - GroupId: 参照(EFSMountTargetSecurityGroup) - IpProtocol: tcp - FromPort: 2049 - ToPort: 2049 - CidrIp: 0.0.0.0/0 |
下記のコードを使って、Cloud formationで、EFSを構築します
5.formation templateにより、RDSを構築
40-RDS.yml formation templateにより、下記のリソースが構築されます
項目 | リソース | 設定値 |
パラメータ | ㅤ | ㅤ |
ㅤ | VPCStack | デフォルト値: VPC-10 |
ㅤ | DBUser | デフォルト値: dbmaster |
ㅤ | DBPassword | デフォルト値: (非表示) 1214567qaz |
リソース | ㅤ | ㅤ |
ㅤ | DBInstance | ㅤ |
ㅤ | ㅤ | タイプ: AWS::RDS::DBInstance |
ㅤ | ㅤ | 削除ポリシー: Delete |
ㅤ | ㅤ | DBInstanceClass: db.t3.micro |
ㅤ | ㅤ | AllocatedStorage: "10" |
ㅤ | ㅤ | StorageType: gp2 |
ㅤ | ㅤ | Engine: MySQL |
ㅤ | ㅤ | MasterUsername: DBUserへの参照 |
ㅤ | ㅤ | MasterUserPassword: DBPasswordへの参照 (非表示) |
ㅤ | ㅤ | DBName: wordpress |
ㅤ | ㅤ | BackupRetentionPeriod: 0 |
ㅤ | ㅤ | DBSubnetGroupName: DBSubnetGroupへの参照 |
ㅤ | ㅤ | VPCSecurityGroups: DBSecurityGroupへの参照 |
ㅤ | DBSubnetGroup | ㅤ |
ㅤ | ㅤ | タイプ: AWS::RDS::DBSubnetGroup |
ㅤ | ㅤ | DBSubnetGroupDescription: DB Subnet Group for Private Subnet |
ㅤ | ㅤ | SubnetIds: |
ㅤ | ㅤ | - Fn::ImportValue: VPCStack-PrivateSubnet1への参照 |
ㅤ | ㅤ | - Fn::ImportValue: VPCStack-PrivateSubnet2への参照 |
ㅤ | DBSecurityGroup | ㅤ |
ㅤ | ㅤ | タイプ: AWS::EC2::SecurityGroup |
ㅤ | ㅤ | GroupDescription: AWS::StackName-MySQL |
ㅤ | ㅤ | VpcId: Fn::ImportValue: VPCStack-VPCIDへの参照 |
ㅤ | ㅤ | SecurityGroupIngress: |
ㅤ | ㅤ | - IpProtocol: tcp |
ㅤ | ㅤ | FromPort: 3306 |
ㅤ | ㅤ | ToPort: 3306 |
ㅤ | ㅤ | CidrIp: 10.0.0.0/16 |
出力 | ㅤ | ㅤ |
ㅤ | DBEndpoint | Value: DBInstance.Endpoint.Addressからの取得 |
ㅤ | ㅤ | Export: Name: AWS::StackName-DBEndpoint |
下記のコードを使って、Cloud formationで、RDSを構築します
7.EC2内にDockerをインストールしておリます。
テンプレートのユーザデータに、EC2が起動後に自動的に、Dockerをインストールするので、この作業の実施は不要

8.EFSの/がEC2の/mnt/efsとマウント
SSHでEC2にログインします。


下記のコードを使って、先ずは、EC2の「/mnt/efs」をEFSの「/」にマウントします。
マウントコマンドを使用して EFS を一時的にマウントする:
- まず、
mount
コマンドを使用して EFS を一時的にマウントします。これにより、EC2 インスタンスで EFS を利用できるようになります。

EFS ファイルシステムのマウント:
/etc/fstab
ファイルを編集して、EC2 インスタンスの起動時に EFS を自動でマウントするように設定します。
- ここで、
fs-12345678
の部分は EFS ファイルシステムの ID に置き換えます。

- sudo コマンドを使用して、/etc/fstab ファイルを開きます。
- ファイルの末尾に、EFS ファイルシステムのマウント設定を追加します。
<ファイルシステムID> を EFS ファイルシステムの ID に、<リージョン> を EFS ファイルシステムが作成された AWS リージョンに置き換えます。
ファイルを保存して終了します。保存するには Ctrl + O、終了するには Ctrl + X を押します。
これで、/etc/fstab ファイルが更新され、次回の再起動時に EFS が正しくマウントされるようになります。
これで、EC2 インスタンスの
/mnt/efs
は EFS ファイルシステムのルートディレクトリにマウントされます。9.Docker内にwordpressをインストールします。
下記のコードでwordpressのイメージをインストールします

下記のコマンドで、イメージを作るをコンテナとして起動し、ホスト機の80ポートをコンテナの80に設定して、コンテナの/var/www/html/wp-contentをホスト機の/mnt/efsにマウントするように設定します。各環境構築変数をコンテナにインポートするよう、下記のコードを参照してください。
これで、EC2の公有 IPv4 DNSでアクセスしてみましょう


📎 参考文章
- 一些引用
- 引用文章
有关Notion安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
- 作者:みなみ
- 链接:https://www.minami.ac.cn//%E3%83%86%E3%82%AF%E3%83%96%E3%83%AD%E3%82%B0/df7d45c9-60a0-40ee-8f85-575bec2940d6
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章