Last active
March 17, 2023 17:55
-
-
Save terranware/519b91b975854cd1dd03257b4c559544 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
################################################################################################### | |
#### Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. | |
#### | |
#### Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file | |
#### except in compliance with the License. A copy of the License is located at | |
#### | |
#### http://aws.amazon.com/apache2.0/ | |
#### | |
#### or in the "license" file accompanying this file. This file is distributed on an "AS IS" | |
#### BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | |
#### License for the specific language governing permissions and limitations under the License. | |
################################################################################################### | |
################################################################################################### | |
#### This configuration file mounts an Amazon EFS file system to a directory named /efs. To mount | |
#### the file system to a different path, modify the MOUNT_DIRECTORY value in the "option_settings" | |
#### section. | |
#### | |
#### The FILE_SYSTEM_ID setting references a resource named "FileSystem", which is created by the | |
#### storage-efs-createfilesystem.config configuration file. To use this file to mount a | |
#### file system that you created outside of AWS Elastic Beanstalk, replace the Ref with the | |
#### resource ID (e.g., fs-e7605f4e): | |
#### | |
#### FILE_SYSTEM_ID: fs-e7605f4e | |
#### | |
#### If your environment and file system are in a custom VPC, you must configure the VPC to allow | |
#### DNS resolution and DNS host names. See this topic in the VPC User Guide for more information: | |
#### http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-dns.html | |
################################################################################################### | |
option_settings: | |
aws:elasticbeanstalk:application:environment: | |
MOUNT_DIRECTORY: '/efs' | |
############################################## | |
#### Do not modify values below this line #### | |
############################################## | |
REGION: '`{"Ref": "AWS::Region"}`' | |
packages: | |
yum: | |
nfs-utils: [] | |
jq: [] | |
commands: | |
01_mount: | |
command: "/tmp/mount-efs.sh" | |
files: | |
"/tmp/mount-efs.sh": | |
mode: "000755" | |
content : | | |
#!/bin/bash | |
EFS_REGION=$(/opt/elasticbeanstalk/bin/get-config environment | jq -r '.REGION') | |
EFS_MOUNT_DIR=$(/opt/elasticbeanstalk/bin/get-config environment | jq -r '.MOUNT_DIRECTORY') | |
EFS_FILE_SYSTEM_ID=$(/opt/elasticbeanstalk/bin/get-config environment | jq -r '.EFS_ID') | |
echo "Mounting EFS filesystem ${EFS_DNS_NAME} to directory ${EFS_MOUNT_DIR} ..." | |
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 "Appending ${EFS_FILE_SYSTEM_ID}.efs.${EFS_REGION}.amazonaws.com mount to /etc/fstab" | |
echo "${EFS_FILE_SYSTEM_ID}.efs.${EFS_REGION}.amazonaws.com:/ ${EFS_MOUNT_DIR} nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 0 0" >> /etc/fstab | |
mount -a -t nfs4 | |
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.' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment