0

S3 で静的ウェブサイトをホストできることはわかっていますが、これは AWS EFS で実行できますか? それもお勧めですか?

4

3 に答える 3

1

可能ですが、価格と性能を考慮すると、お勧めしません。EFS は現在 $0.30/GB で、S3 は月額 $0.03/GB です。また、EFS からサービスを提供するには、1 つ以上の実行中の EC2 インスタンスが必要です。ベンチマークについては知りませんが、S3 は自動的にスケーリングするため、S3 もより優れたパフォーマンスを提供することを完全に期待しています。

于 2016-09-11T21:54:10.690 に答える
0

現在、Elastic Beanstalk を使用してこのセットアップを行っています。私が持っているのは、2 つのスクリプトを含む .ebextensions フォルダーだけです。

  • 01-umount-efs.config
  • 02-マウント-efs.config

01-umount-efs.config

commands:
  01_mount:
    command: umount /var/app/current/efs || /bin/true
  02_mount:
    command: umount -l /var/app/current/efs || /bin/true

02-マウント-efs.config

# Mount
commands:
  create_post_dir:
    command: "mkdir -p /opt/elasticbeanstalk/hooks/appdeploy/post"
    ignoreErrors: true
  do_something:
    command: "/sbin/service httpd restart"
files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/99_mount_efs.sh":
      mode: "000755"
      content : |
        #!/bin/bash

        EC2_REGION="ap-southeast-2"
        EFS_MOUNT_DIR=/var/app/current/efs
        EFS_FILE_SYSTEM_ID=fs-xxxxxxxx
        EC2_ZONE=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone)

        echo "Mounting EFS filesystem ${EFS_DNS_NAME} to directory ${EFS_MOUNT_DIR} ..."

        echo "Region is ${EC2_REGION}"

        echo 'Stopping NFS ID Mapper...'
        service rpcidmapd status &> /dev/null
        if [ $? -ne 0 ] ; then
            echo 'rpc.idmapd is already stopped!'
        else
            service rpcidmapd stop
            if [ $? -ne 0 ] ; then
                echo 'ERROR: Failed to stop NFS ID Mapper!'
                exit 1
            fi
        fi

        echo 'Checking if EFS mount directory exists...'
        if [ ! -d ${EFS_MOUNT_DIR} ]; then
            echo "Creating directory ${EFS_MOUNT_DIR} ..."
            mkdir -p ${EFS_MOUNT_DIR}
            if [ $? -ne 0 ]; then
                echo 'ERROR: Directory creation failed!'
                exit 1
            fi
            chmod 777 ${EFS_MOUNT_DIR}
            if [ $? -ne 0 ]; then
                echo 'ERROR: Permission update failed!'
                exit 1
            fi
        else
            echo "Directory ${EFS_MOUNT_DIR} already exists!"
        fi

        mountpoint -q ${EFS_MOUNT_DIR}
        if [ $? -ne 0 ]; then
            echo "mount -t nfs4 -o nfsvers=4.1 ${EC2_ZONE}.${EFS_FILE_SYSTEM_ID}.efs.${EC2_REGION}.amazonaws.com:/ ${EFS_MOUNT_DIR}"
            mount -t nfs4 -o nfsvers=4.1 ${EC2_ZONE}.${EFS_FILE_SYSTEM_ID}.efs.${EC2_REGION}.amazonaws.com:/ ${EFS_MOUNT_DIR}
            if [ $? -ne 0 ] ; then
                echo 'ERROR: Mount command failed!'
                exit 1
            fi
        else
            echo "Directory ${EFS_MOUNT_DIR} is already a valid mountpoint!"
        fi

        echo 'EFS mount complete.'

ap-southeast-2 (EC2_REGION) と fs-xxxxxxxx (EFS_FILE_SYSTEM_ID) を変更するだけです。

次に、Beanstalk 構成 > ソフトウェアで、ドキュメント ルートを/efsに設定します。

EC2 インスタンスを経由して、EFS への FTP アクセスを設定することもできます。

  1. キー ファイルを作成してダウンロードします: [EC2] > [ネットワークとセキュリティ] > [キー ペア] > [キー ペアの作成]
  2. 作成したばかりのキー ペアを選択します: [Beanstalk] > [構成] > [セキュリティ] > [仮想マシンのアクセス許可] > [EC2 キー ペア]
  3. 次に、.pem ファイルを .ppk に変換し、それを使用して sftp 経由で接続することをお勧めします。

FTP 設定例

{
    "type": "sftp",
    "host": "ec2-XX-XX-XXX-XX.ap-southeast-2.compute.amazonaws.com",
    "user": "ec2-user",
    "port": "22",
    "remote_path": "/var/app/current/efs/",
    "connect_timeout": 30,
    "ftp_passive_mode": true,
    "ssh_key_file": "C:/Path/To/KeyFile/ec2-access.ppk",
    "remote_time_offset_in_hours": 10,
}

注: Elastic Beanstalk を使用しており、インスタンスが常にスピンアップおよびスピンダウンしているため、「ホスト」は変更される可能性があります。これまでのところ、EFS 上のファイルに簡単にアクセスする方法は見つかりませんでした。

于 2018-03-23T22:53:54.287 に答える