I’m trying to mount an S3 bucket using s3fs on an AWS WorkSpace running Ubuntu 22.04.
The mount works perfectly when I use the WorkSpace normally. However, it fails during the image creation process. I don’t see any log—possibly because the image creation process runs in a separate environment or temporary WorkSpace instance.
Here’s my setup:
echo $ACCESS_KEY:$SECRET_KEY | sudo tee /etc/passwd-s3fs > /dev/null
sudo chmod 600 /etc/passwd-s3fs
sudo touch /etc/systemd/system/s3fs-mount.service
sudo chmod 644 /etc/systemd/system/s3fs-mount.service
Contents of /etc/systemd/system/s3fs-mount.service:
[Unit]
Description=Mount S3 bucket with s3fs
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/mount-s3fs.sh
ExecStop=/bin/umount /datafolder
StandardOutput=journal
StandardError=journal
TimeoutStartSec=30
SuccessExitStatus=0 1
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
sudo touch /usr/local/bin/mount-s3fs.sh
sudo chmod 755 /usr/local/bin/mount-s3fs.sh
Contents of /usr/local/bin/mount-s3fs.sh:
#!/bin/bash
LOGFILE=/var/log/s3fs-mount.log
BUCKET_NAME=datafolder
MOUNT_POINT=/datafolder
log() {
echo "$(date +'%Y-%m-%d %H:%M:%S') - $1" >> $LOGFILE
}
if ! command -v s3fs >/dev/null 2>&1; then
log "s3fs not installed."
exit 0
fi
if mountpoint -q "$MOUNT_POINT"; then
log "$MOUNT_POINT is already mounted."
exit 0
fi
log "Mounting..."
mkdir -p "$MOUNT_POINT"
s3fs "$BUCKET_NAME" "$MOUNT_POINT" -o _netdev,rw,nosuid,nodev,allow_other,nonempty,default_acl=public-read,umask=0022
if [ $? -eq 0 ]; then
log "Successfully mounted $BUCKET_NAME to $MOUNT_POINT"
exit 0
fi
log "Failed to mount $BUCKET_NAME to $MOUNT_POINT"
Final Setup:
sudo touch /var/log/s3fs-mount.log
sudo chmod 644 /var/log/s3fs-mount.log
sudo systemctl daemon-reload
sudo systemctl enable s3fs-mount.service
sudo systemctl start s3fs-mount.service