Occ problem: An unhandled exception has been thrown (Bucket has to be configured)

Hello

I faced a problem with configuring nextcloud currently deployed from image nextcloud:22.2.3-fpm in kubernetes installed using Helm chart 2.6.5.

S3 is used as an external storage, EFS as a persistent volume, with MySQL and Redis.
Web part works good and there is nothing to say about it.
But problem is with occ console tool, which I can’t run.
It throws an Exception “Bucket has to be configured. in /var/www/html/lib/private/Files/ObjectStore/S3ConnectionTrait.php:70”

Nextcloud version: 22.2.3
Operating system and version : Debian GNU/Linux 11 (bullseye)
Apache or nginx version : nginx 1.21.5-alpine
PHP version: 8.0.13

The issue you are facing:

Is this the first time you’ve seen this error? Y:

Steps to replicate it:

  1. attach to the running kubernetes deployment with command kubectl -n nextcloud exec nextcloud-deployment-pod -it -- bash
  2. cd /var/www/html where Nextcloud is installed
  3. run sudo -u www-data /usr/local/bin/php -d memory_limit=-1 /var/www/html/occ

The output of the command:

[owncloud][files_sharing][0] /appinfo/app.php is deprecated, use \OCP\AppFramework\Bootstrap\IBootstrap on the application class instead.
[owncloud][no app in context][4] {"Exception":"Exception","Message":"Bucket has to be configured.","Code":0,"Trace":[{"file":"/var/www/html/lib/private/Files/ObjectStore/S3.php","line":33,"function":"parseParams","class":"OC\\Files\\ObjectStore\\S3","type":"->","args":[{"region":false,"bucket":false,"key":false,"secret":false,"autocreate":true,"use_ssl":true}]},{"file":"/var/www/html/lib/private/legacy/OC_Util.php","line":126,"function":"__construct","class":"OC\\Files\\ObjectStore\\S3","type":"->","args":[{"region":false,"bucket":false,"key":false,"secret":false,"autocreate":true,"use_ssl":true}]},{"file":"/var/www/html/lib/private/legacy/OC_Util.php","line":300,"function":"initObjectStoreRootFS","class":"OC_Util","type":"::","args":[{"class":"\\OC\\Files\\ObjectStore\\S3","arguments":{"region":false,"bucket":false,"key":false,"secret":false,"autocreate":true,"use_ssl":true}}]},{"file":"/var/www/html/lib/private/Files/Filesystem.php","line":244,"function":"setupFS","class":"OC_Util","type":"::","args":[""]},{"file":"/var/www/html/lib/private/Server.php","line":413,"function":"getMountManager","class":"OC\\Files\\Filesystem","type":"::","args":[null]},{"file":"/var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php","line":160,"function":"OC\\{closure}","class":"OC\\Server","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/pimple/pimple/src/Pimple/Container.php","line":118,"function":"OC\\AppFramework\\Utility\\{closure}","class":"OC\\AppFramework\\Utility\\SimpleContainer","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php","line":127,"function":"offsetGet","class":"Pimple\\Container","type":"->","args":["RootFolder"]},{"file":"/var/www/html/lib/private/ServerContainer.php","line":136,"function":"query","class":"OC\\AppFramework\\Utility\\SimpleContainer","type":"->","args":["RootFolder",false]},{"file":"/var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php","line":56,"function":"query","class":"OC\\ServerContainer","type":"->","args":["RootFolder"]},{"file":"/var/www/html/lib/private/Server.php","line":446,"function":"get","class":"OC\\AppFramework\\Utility\\SimpleContainer","type":"->","args":["RootFolder"]},{"function":"OC\\{closure}","class":"OC\\Server","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/lib/private/Files/Node/LazyFolder.php","line":62,"function":"call_user_func","args":[{"__class__":"Closure"}]},{"file":"/var/www/html/lib/private/Files/Node/LazyFolder.php","line":79,"function":"__call","class":"OC\\Files\\Node\\LazyFolder","type":"->","args":["listen",["\\OC\\Files","preWrite",{"__class__":"Closure"}]]},{"file":"/var/www/html/custom_apps/notes/lib/AppInfo/NotesHooks.php","line":70,"function":"listen","class":"OC\\Files\\Node\\LazyFolder","type":"->","args":["\\OC\\Files","preWrite",{"__class__":"Closure"}]},{"file":"/var/www/html/custom_apps/notes/lib/AppInfo/NotesHooks.php","line":37,"function":"listenTo","class":"OCA\\Notes\\AppInfo\\NotesHooks","type":"->","args":[{"__class__":"OC\\Files\\Node\\LazyRoot"},"\\OC\\Files","preWrite",{"__class__":"Closure"}]},{"file":"/var/www/html/custom_apps/notes/lib/AppInfo/Application.php","line":32,"function":"register","class":"OCA\\Notes\\AppInfo\\NotesHooks","type":"->","args":[]},{"file":"/var/www/html/lib/private/AppFramework/Bootstrap/Coordinator.php","line":178,"function":"boot","class":"OCA\\Notes\\AppInfo\\Application","type":"->","args":[{"__class__":"OC\\AppFramework\\Bootstrap\\BootContext"}]},{"file":"/var/www/html/lib/private/legacy/OC_App.php","line":205,"function":"bootApp","class":"OC\\AppFramework\\Bootstrap\\Coordinator","type":"->","args":["notes"]},{"file":"/var/www/html/lib/private/legacy/OC_App.php","line":139,"function":"loadApp","class":"OC_App","type":"::","args":["notes"]},{"file":"/var/www/html/lib/private/Console/Application.php","line":119,"function":"loadApps","class":"OC_App","type":"::","args":[]},{"file":"/var/www/html/console.php","line":98,"function":"loadCommands","class":"OC\\Console\\Application","type":"->","args":[{"__class__":"Symfony\\Component\\Console\\Input\\ArgvInput"},{"__class__":"Symfony\\Component\\Console\\Output\\ConsoleOutput"}]},{"file":"/var/www/html/occ","line":11,"args":["/var/www/html/console.php"],"function":"require_once"}],"File":"/var/www/html/lib/private/Files/ObjectStore/S3ConnectionTrait.php","Line":70,"CustomMessage":"Could not boot notes: Bucket has to be configured."}
An unhandled exception has been thrown:
Exception: Bucket has to be configured. in /var/www/html/lib/private/Files/ObjectStore/S3ConnectionTrait.php:70
Stack trace:
#0 /var/www/html/lib/private/Files/ObjectStore/S3.php(33): OC\Files\ObjectStore\S3->parseParams(Array)
#1 /var/www/html/lib/private/legacy/OC_Util.php(126): OC\Files\ObjectStore\S3->__construct(Array)
#2 /var/www/html/lib/private/legacy/OC_Util.php(300): OC_Util::initObjectStoreRootFS(Array)
#3 /var/www/html/lib/private/Files/Mount/Manager.php(91): OC_Util::setupFS()
#4 /var/www/html/lib/private/Files/View.php(1385): OC\Files\Mount\Manager->find('/appdata_ociyqv...')
#5 /var/www/html/lib/private/Files/Node/Root.php(200): OC\Files\View->getFileInfo('/appdata_ociyqv...')
#6 [internal function]: OC\Files\Node\Root->get('/appdata_ociyqv...')
#7 /var/www/html/lib/private/Files/Node/LazyFolder.php(65): call_user_func_array(Array, Array)
#8 /var/www/html/lib/private/Files/Node/LazyFolder.php(142): OC\Files\Node\LazyFolder->__call('get', Array)
#9 /var/www/html/lib/private/Files/AppData/AppData.php(141): OC\Files\Node\LazyFolder->get('appdata_ociyqvu...')
#10 /var/www/html/custom_apps/richdocuments/lib/TemplateManager.php(146): OC\Files\AppData\AppData->getFolder('templates')
#11 /var/www/html/custom_apps/richdocuments/lib/TemplateManager.php(134): OCA\Richdocuments\TemplateManager->createAppDataFolders()
#12 [internal function]: OCA\Richdocuments\TemplateManager->__construct('richdocuments', NULL, Object(OC\AllConfig), Object(OC\Files\AppData\AppData), Object(OC\URLGenerator), Object(OC\Files\Node\LazyRoot), Object(OC\L10N\LazyL10N))
#13 /var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php(106): ReflectionClass->newInstanceArgs(Array)
#14 /var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php(114): OC\AppFramework\Utility\SimpleContainer->buildClass(Object(ReflectionClass))
#15 /var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php(131): OC\AppFramework\Utility\SimpleContainer->resolve('OCA\\Richdocumen...')
#16 /var/www/html/lib/private/AppFramework/DependencyInjection/DIContainer.php(460): OC\AppFramework\Utility\SimpleContainer->query('OCA\\Richdocumen...')
#17 /var/www/html/lib/private/AppFramework/DependencyInjection/DIContainer.php(432): OC\AppFramework\DependencyInjection\DIContainer->queryNoFallback('OCA\\Richdocumen...')
#18 /var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php(87): OC\AppFramework\DependencyInjection\DIContainer->query('OCA\\Richdocumen...', true)
#19 [internal function]: OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(ReflectionParameter))
#20 /var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php(106): array_map(Object(Closure), Array)
#21 /var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php(114): OC\AppFramework\Utility\SimpleContainer->buildClass(Object(ReflectionClass))
#22 /var/www/html/lib/private/AppFramework/Utility/SimpleContainer.php(131): OC\AppFramework\Utility\SimpleContainer->resolve('OCA\\Richdocumen...')
#23 /var/www/html/lib/private/AppFramework/DependencyInjection/DIContainer.php(460): OC\AppFramework\Utility\SimpleContainer->query('OCA\\Richdocumen...')
#24 /var/www/html/lib/private/ServerContainer.php(145): OC\AppFramework\DependencyInjection\DIContainer->queryNoFallback('OCA\\Richdocumen...')
#25 /var/www/html/lib/private/Console/Application.php(215): OC\ServerContainer->query('OCA\\Richdocumen...')
#26 /var/www/html/lib/private/Console/Application.php(128): OC\Console\Application->loadCommandsFromInfoXml(Array)
#27 /var/www/html/console.php(98): OC\Console\Application->loadCommands(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#28 /var/www/html/occ(11): require_once('/var/www/html/c...')

The output of your Nextcloud log in Admin > Logging:

Nothing during the running command

The output of your config.php file in /path/to/nextcloud (make sure you remove any identifiable information!):

<?php
$CONFIG = array (
  'htaccess.RewriteBase' => '/',
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'apps_paths' => 
  array (
    0 => 
    array (
      'path' => '/var/www/html/apps',
      'url' => '/apps',
      'writable' => false,
    ),
    1 => 
    array (
      'path' => '/var/www/html/custom_apps',
      'url' => '/custom_apps',
      'writable' => true,
    ),
  ),
  'log_type' => 'errorlog',
  'loglevel' => 0,
  'log.condition' => 
  array (
    'apps' => 
    array (
      0 => 'admin_audit',
    ),
  ),
  'overwriteprotocol' => 'https',
  'memcache.distributed' => '\\OC\\Memcache\\Redis',
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'redis' => 
  array (
    'host' => '*** sensitive parameters replaced ***',
    'port' => 6379,
  ),
  'objectstore' => 
  array (
    'class' => '\\OC\\Files\\ObjectStore\\S3',
    'arguments' => 
    array (
      'region' => '*** sensitive parameters replaced ***',
      'bucket' => '*** sensitive parameters replaced ***',
      'key' => '*** sensitive parameters replaced ***',
      'secret' => '*** sensitive parameters replaced ***',
      'autocreate' => true,
      'use_ssl' => true,
    ),
  ),
  'trusted_domains' => 
  array (
    0 => 'localhost',
    1 => '*** sensitive parameters replaced ***',
  ),
  'datadirectory' => '/var/www/html/data',
  'mail_smtpmode' => 'smtp',
  'mail_smtphost' => '*** sensitive parameters replaced ***',
  'mail_smtpport' => '*** sensitive parameters replaced ***',
  'mail_smtpsecure' => 'ssl',
  'mail_smtpauth' => true,
  'mail_smtpauthtype' => 'PLAIN',
  'mail_smtpname' => '*** sensitive parameters replaced ***',
  'mail_smtppassword' => '*** sensitive parameters replaced ***',
  'mail_from_address' => '*** sensitive parameters replaced ***',
  'mail_domain' => '*** sensitive parameters replaced ***',
  'installed' => true,
  'instanceid' => '*** sensitive parameters replaced ***',
  'passwordsalt' => '*** sensitive parameters replaced ***',
  'secret' => '*** sensitive parameters replaced ***',
  'overwrite.cli.url' => 'https://localhost',
  'version' => '22.2.3.0',
  'dbtype' => 'mysql',
  'dbname' => 'nextcloud',
  'dbhost' => '*** sensitive parameters replaced ***',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => false,
  'dbuser' => '*** sensitive parameters replaced ***',
  'dbpassword' => '*** sensitive parameters replaced ***',
  'theme' => '',
  'maintenance' => false,
  'filelocking.enabled' => true,
  'redis.session.locking_enabled' => 1,
  'redis.session.lock_retries' => -1,
  'redis.session.lock_wait_time' => 10000,
  'app_install_overwrite' => 
  array (
    0 => 'occweb',
  ),
);

The output of your Apache/nginx/system log in /var/log/____:

Nothing during the running command

File permissions are set automatically duting deployment and the owner of files is www-data:root.

So the question is what is wrong with occ? Because Web-server itself works fine, S3 bucket also works fine as an external storage for Nextcloud.