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を使っております。
これでアプリケーションがステートレスの状態でスケーラブルが容易になります。

notion image

1.formation templateにより、リソースを構築する操作手順

ローカルformation templateを用意し、下記の流れで、リソースを構築できます。
notion image
notion image
 
notion image
notion image
notion image
notion image
notion image

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をインストールするので、この作業の実施は不要
notion image

8.EFSの/がEC2の/mnt/efsとマウント

SSHでEC2にログインします。
notion image
notion image
 
 
 
下記のコードを使って、先ずは、EC2の「/mnt/efs」をEFSの「/」にマウントします。
マウントコマンドを使用して EFS を一時的にマウントする:
  • まず、mount コマンドを使用して EFS を一時的にマウントします。これにより、EC2 インスタンスで EFS を利用できるようになります。
    notion image
    EFS ファイルシステムのマウント:
    • /etc/fstab ファイルを編集して、EC2 インスタンスの起動時に EFS を自動でマウントするように設定します。
    • ここで、fs-12345678 の部分は EFS ファイルシステムの ID に置き換えます。
    notion image
    • sudo コマンドを使用して、/etc/fstab ファイルを開きます。
    • ファイルの末尾に、EFS ファイルシステムのマウント設定を追加します。
    <ファイルシステムID> を EFS ファイルシステムの ID に、<リージョン> を EFS ファイルシステムが作成された AWS リージョンに置き換えます。
    ファイルを保存して終了します。保存するには Ctrl + O、終了するには Ctrl + X を押します。
    これで、/etc/fstab ファイルが更新され、次回の再起動時に EFS が正しくマウントされるようになります。
    これで、EC2 インスタンスの /mnt/efs は EFS ファイルシステムのルートディレクトリにマウントされます。

    9.Docker内にwordpressをインストールします。

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

    📎 参考文章

    • 一些引用
    • 引用文章
     
    💡
    有关Notion安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
    相关文章
    クラウド技術の共有 | AWS Site-to-Site
    Lazy loaded image
    EKSでのWordPressデプロイ:KCNA-JP試験対策 (Kubernetes実践編)
    Lazy loaded image
    Kubernetes、仮想マシンとコンテナの概念を超簡単に解説!
    Lazy loaded image
    初心者向け!コンテナ化WordPressサイト構築ガイド(超詳細版)
    Lazy loaded image
    529-AWS SAP AWS 「理論・実践・一問道場」VPCエンドポイント
    Lazy loaded image
    528-AWS SAP AWS 「理論・実践・一問道場」Migration Evaluator
    Lazy loaded image
    初心者向け!コンテナ化WordPressサイト構築ガイド(超詳細版)CMD経由でPostgreSQL メジャーバージョンにアップグレード
    Loading...
    みなみ
    みなみ
    一个普通的干饭人🍚
    最新发布
    02-生成AIパスポート試験対策:第2章「生成AI」
    2025-2-1
    01-生成AIパスポート試験対策:第1章「人口知能」
    2025-2-1
    究極のAWS認定 AI 実践者 AIF-C01 - 学習メモ
    2025-1-27
    不要再傻傻的直接买NISA啦
    2025-1-27
    Kubernetes、仮想マシンとコンテナの概念を超簡単に解説!
    2025-1-24
    529-AWS SAP AWS 「理論・実践・一問道場」VPCエンドポイント
    2025-1-22
    公告
    🎉欢迎访问我的博客🎉
    - 感谢您的支持 --
    本站点于2024/09/01建立
    👏主要分享IT相关主题👏
    系统管理:
    Redhat…
    容器和编排:
    Kubernetes、Openshift…
    云计算:
    AWS、IBM…
    AI入门
    以及技术笔记和考证经验
    定期更新,欢迎互动。
    感谢访问!
    快速浏览相关标签