Amazon web services AWS EC2用户数据-如何调试失败的EFS装载失败

Amazon web services AWS EC2用户数据-如何调试失败的EFS装载失败,amazon-web-services,amazon-efs,Amazon Web Services,Amazon Efs,我在EC2实例(AmazonLinuxAMI)上使用EFS卷。如果我将外壳装入服务器并运行以下操作,则可以无问题地装入卷: sudo mount-tfs-o nfsvers=4.1,rsize=1048576,wsize=1048576,硬,timeo=600,重传=2 fs-xxxxxxxxx.efs.ap-southerast-2.amazonaws.com:/efs 但是,如果我在实例的用户数据部分添加一个shell脚本并引导它,我什么也得不到,我如何调试它呢?文件系统中是否有我可以查看的

我在EC2实例(AmazonLinuxAMI)上使用EFS卷。如果我将外壳装入服务器并运行以下操作,则可以无问题地装入卷:

sudo mount-tfs-o nfsvers=4.1,rsize=1048576,wsize=1048576,硬,timeo=600,重传=2 fs-xxxxxxxxx.efs.ap-southerast-2.amazonaws.com:/efs

但是,如果我在实例的用户数据部分添加一个shell脚本并引导它,我什么也得不到,我如何调试它呢?文件系统中是否有我可以查看的日志或其他内容?我没有收到错误,只是没有安装驱动器。感谢您的帮助

我正在使用以下shell脚本:

#!/bin/bash
# Make sure all packages are up-to-date
yum update -y

# Make sure that NFS utilities and AWS CLI utilities are available
yum install -y jq nfs-utils python27 python27-pip awscli
pip install --upgrade awscli

# Name of the EFS filesystem (match what was created in EFS)
EFS_FILE_SYSTEM_NAME="xxxx.efs.ap-southeast-2.amazonaws.com"

# Gets the EC2 availability zone for the current ECS instance

EC2_AVAIL_ZONE="ap-southeast-2b"
# Gets the EC2 region for the current ECS instance

EC2_REGION="Asia Pacific (Sydney)"

# Creates the mount-point for the EFS filesystem
DIR_TGT="efs"
mkdir "${DIR_TGT}"

# Get the EFS filesystem ID.
EFS_FILE_SYSTEM_ID="$(/usr/local/bin/aws efs describe-file-systems --region "${EC2_REGION}" | jq '.FileSystems[]' | jq "select(.Name==\"${EFS_FILE_SYSTEM_NAME}\")" | jq -r '.FileSystemId')"

if [ -z "${EFS_FILE_SYSTEM_ID}" ]; then
    echo "ERROR: variable not set" 1> /etc/efssetup.log
    exit
fi

# Create the mount source path
DIR_SRC="${EC2_AVAIL_ZONE}.${EFS_FILE_SYSTEM_ID}.efs.${EC2_REGION}.amazonaws.com"

# Actually mount the EFS filesystem
mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,soft,timeo=600,retrans=2 "${DIR_SRC}:/" "${DIR_TGT}"

# Create a backup of the existing /etc/fstab
cp -p "/etc/fstab" "/etc/fstab.back-$(date +%F)"

# Add the new mount point to /etc/fstab
echo -e "${DIR_SRC}:/ \t\t ${DIR_TGT} \t\t nfs \t\t nfsvers=4.1,rsize=1048576,wsize=1048576,soft,timeo=600,retrans=2 \t\t 0 \t\t 0" | tee -a /etc/fstab

您可以在
cloud init output.log

/var/log/cloud-init.log and
/var/log/cloud-init-output.log
您的EC2_区域应该是
ap-southeast-2
而不是
Asia-Pacific(Sydney)
,因为您已经提到了端点名称,所以不需要构建EFS端点

mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,soft,timeo=600,retrans=2 "${EFS_FILE_SYSTEM_NAME}:/" "${DIR_TGT}"
如果要构造它,请使用以下命令:

所以,应该是这样

DIR_SRC="${EFS_FILE_SYSTEM_ID}.efs.${EC2_REGION}.amazonaws.com"

您可以在
cloud init output.log

/var/log/cloud-init.log and
/var/log/cloud-init-output.log
您的EC2_区域应该是
ap-southeast-2
而不是
Asia-Pacific(Sydney)
,因为您已经提到了端点名称,所以不需要构建EFS端点

mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,soft,timeo=600,retrans=2 "${EFS_FILE_SYSTEM_NAME}:/" "${DIR_TGT}"
如果要构造它,请使用以下命令:

所以,应该是这样

DIR_SRC="${EFS_FILE_SYSTEM_ID}.efs.${EC2_REGION}.amazonaws.com"

DIR\u TGT=“efs”
需要是现有目录的绝对路径,例如
DIR\u TGT=“/srv/efs”
DIR\u TGT=“efs”
需要是现有目录的绝对路径,例如
DIR\u TGT=“/srv/efs”
感谢您的全面回答。我现在正在调试代码。嗨@Sudharsan,我在日志中看不到任何与未装入的文件系统相关的内容。它似乎没有给我一个错误。只是驱动器没有安装。还有什么地方可以找到这些东西?你看到你的回声了吗?您可以尝试手动运行脚本,查看是否有任何错误。感谢您提供全面的答案。我现在正在调试代码。嗨@Sudharsan,我在日志中看不到任何与未装入的文件系统相关的内容。它似乎没有给我一个错误。只是驱动器没有安装。还有什么地方可以找到这些东西?你看到你的回声了吗?您可以尝试在查看是否有任何错误后手动运行脚本。