Due to an increased volume of orders for the holiday season, please note that processing and shipping times have been extended by a week. Please see shipping policy for standard processing times.
May 6, 2021

The Convenience of an Outdoor Kitchen Sink Cabinet. Keep the Mess Outside.

    Introducing your grill’s ultimate wingman – the outdoor kitchen sink cabinet. Your grill needs a friend. A friend that can stick by their side and lend a helping hand when needed. A friend that enhances what your grill has to offer. This friend is not co-dependent and has a lot to offer even…

Read More
May 4, 2021

The Best Gas Grill for Outdoor Kitchen Cooking

Image via Unsplash | Victoria Shes Function and Style Whether you’re looking for a solid grill to break out once every Super Bowl, or building a luxurious outdoor kitchen, the gas grill will be the cornerstone for all of your outdoor cooking endeavors. The best gas grill is an investment that showcases both function and style. Thor Kitchen’s 32-Inch…

Read More
April 22, 2021

Celery Soup

This blog is written by celebrity chef and THOR Kitchen brand ambassador Derrick Fox. Each month, Chef Fox will be sharing his favorite recipes with step-by-step directions, pictures, and his signature style. Ever go into the grocery store and see some sort of vegetable and think, “what in the hell do I do with that?”  …

Read More

Fatal error: Uncaught exception 'Aws\S3\Exception\S3Exception' with message 'Error executing "ListObjectsV2" on "https://thorkitchenstage.s3.us-west-1.amazonaws.com/?list-type=2&delimiter=%2F&prefix=uploads%2Fwpcf7_uploads%2F"; AWS HTTP error: Client error: `GET https://thorkitchenstage.s3.us-west-1.amazonaws.com/?list-type=2&delimiter=%2F&prefix=uploads%2Fwpcf7_uploads%2F` resulted in a `403 Forbidden` response: <?xml version="1.0" encoding="UTF-8"?> <Error><Code>AccessDenied</Code><Message>User: arn:aws:iam::905418160207:user/s3a (truncated...) AccessDenied (client): User: arn:aws:iam::905418160207:user/s3access_stage is not authorized to perform: s3:ListBucket on resource: "arn:aws:s3:::thorkitchenstage" because no identity-based policy allows the s3:ListBucket action - <?xml version="1.0" encoding="UTF-8"?> <Error><Code>AccessDenied</Code><Message>User: arn:aws:iam::905418160207:user/s3access_stage is not authorized to perform: s3:ListBucket on resource: "arn:aws:s3:::thorkitchenstage" because no identity-based policy allows the s3:ListBucket action</Message><RequestId>EAF8DZYA9G2XCE62</RequestId><HostId>PXsj7VGCQXfDxf5p+4ZDPbf6vPlvkNrN6NxUwwd5mc2gfKGPriC+99r2cKvg9IT4dOTXna+GzO9qhamQVmXRLIZ8XrqNKUKyg94N6QT4dm0=</HostId></Error>' GuzzleHttp\Exception\ClientException: Client error: `GET https://thorkitchenstage.s3.us-west-1.amazonaws.com/?list-type=2&delimiter=%2F&prefix=uploads%2Fwpcf7_uploads%2F` resulted in a `403 Forbidden` response: <?xml version="1.0" encoding="UTF-8"?> <Error><Code>AccessDenied</Code><Message>User: arn:aws:iam::905418160207:user/s3a (truncated...) in /var/www/stagesite/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:113 Stack trace: #0 /var/www/stagesite/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\Exception\RequestException::create() #1 /var/www/stagesite/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\Middleware::GuzzleHttp\{closure}() #2 /var/www/stagesite/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\Promise\Promise::callHandler() #3 /var/www/stagesite/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}() #4 /var/www/stagesite/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php(163): GuzzleHttp\Promise\TaskQueue->run() #5 /var/www/stagesite/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php(189): GuzzleHttp\Handler\CurlMultiHandler->tick() #6 /var/www/stagesite/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\Handler\CurlMultiHandler->execute() #7 /var/www/stagesite/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\Promise\Promise->invokeWaitFn() #8 /var/www/stagesite/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\Promise\Promise->waitIfPending() #9 /var/www/stagesite/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\Promise\Promise->invokeWaitList() #10 /var/www/stagesite/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\Promise\Promise->waitIfPending() #11 /var/www/stagesite/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\Promise\Promise->invokeWaitList() #12 /var/www/stagesite/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\Promise\Promise->waitIfPending() #13 /var/www/stagesite/vendor/aws/aws-sdk-php/src/AwsClientTrait.php(58): GuzzleHttp\Promise\Promise->wait() #14 /var/www/stagesite/vendor/aws/aws-sdk-php/src/ResultPaginator.php(139): Aws\AwsClient->execute() #15 /var/www/stagesite/vendor/aws/aws-sdk-php/src/functions.php(52): Aws\ResultPaginator->valid() #16 /var/www/stagesite/vendor/aws/aws-sdk-php/src/functions.php(69): Aws\map() #17 [internal function]: Aws\flatmap() #18 /var/www/stagesite/wp-content/plugins/s3-uploads/inc/class-stream-wrapper.php(695): Generator->valid() #19 [internal function]: S3_Uploads\Stream_Wrapper->dir_readdir() #20 /var/www/stagesite/wp-content/plugins/contact-form-7/includes/file.php(362): readdir() #21 /var/www/stagesite/wp-includes/class-wp-hook.php(322): wpcf7_cleanup_upload_files() #22 /var/www/stagesite/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters() #23 /var/www/stagesite/wp-includes/plugin.php(517): WP_Hook->do_action() #24 /var/www/stagesite/wp-includes/load.php(1280): do_action() #25 [internal function]: shutdown_action_hook() #26 {main} Next Aws\S3\Exception\S3Exception: Error executing "ListObjectsV2" on "https://thorkitchenstage.s3.us-west-1.amazonaws.com/?list-type=2&delimiter=%2F&prefix=uploads%2Fwpcf7_uploads%2F"; AWS HTTP error: Client error: `GET https://thorkitchenstage.s3.us-west-1.amazonaws.com/?list-type=2&delimiter=%2F&prefix=uploads%2Fwpcf7_uploads%2F` resulted in a `403 Forbidden` response: <?xml version="1.0" encoding="UTF-8"?> <Error><Code>AccessDenied</Code><Message>User: arn:aws:iam::905418160207:user/s3a (truncated...) AccessDenied (client): User: arn:aws:iam::905418160207:user/s3access_stage is not authorized to perform: s3:ListBucket on resource: "arn:aws:s3:::thorkitchenstage" because no identity-based policy allows the s3:ListBucket action - <?xml version="1.0" encoding="UTF-8"?> <Error><Code>AccessDenied</Code><Message>User: arn:aws:iam::905418160207:user/s3access_stage is not authorized to perform: s3:ListBucket on resource: "arn:aws:s3:::thorkitchenstage" because no identity-based policy allows the s3:ListBucket action</Message><RequestId>EAF8DZYA9G2XCE62</RequestId><HostId>PXsj7VGCQXfDxf5p+4ZDPbf6vPlvkNrN6NxUwwd5mc2gfKGPriC+99r2cKvg9IT4dOTXna+GzO9qhamQVmXRLIZ8XrqNKUKyg94N6QT4dm0=</HostId></Error> in /var/www/stagesite/vendor/aws/aws-sdk-php/src/WrappedHttpHandler.php:196 Stack trace: #0 /var/www/stagesite/vendor/aws/aws-sdk-php/src/WrappedHttpHandler.php(98): Aws\WrappedHttpHandler->parseError() #1 /var/www/stagesite/vendor/guzzlehttp/promises/src/Promise.php(209): Aws\WrappedHttpHandler->Aws\{closure}() #2 /var/www/stagesite/vendor/guzzlehttp/promises/src/Promise.php(174): GuzzleHttp\Promise\Promise::callHandler() #3 /var/www/stagesite/vendor/guzzlehttp/promises/src/RejectedPromise.php(49): GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}() #4 /var/www/stagesite/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\Promise\RejectedPromise::GuzzleHttp\Promise\{closure}() #5 /var/www/stagesite/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php(163): GuzzleHttp\Promise\TaskQueue->run() #6 /var/www/stagesite/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php(189): GuzzleHttp\Handler\CurlMultiHandler->tick() #7 /var/www/stagesite/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\Handler\CurlMultiHandler->execute() #8 /var/www/stagesite/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\Promise\Promise->invokeWaitFn() #9 /var/www/stagesite/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\Promise\Promise->waitIfPending() #10 /var/www/stagesite/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\Promise\Promise->invokeWaitList() #11 /var/www/stagesite/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\Promise\Promise->waitIfPending() #12 /var/www/stagesite/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\Promise\Promise->invokeWaitList() #13 /var/www/stagesite/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\Promise\Promise->waitIfPending() #14 /var/www/stagesite/vendor/aws/aws-sdk-php/src/AwsClientTrait.php(58): GuzzleHttp\Promise\Promise->wait() #15 /var/www/stagesite/vendor/aws/aws-sdk-php/src/ResultPaginator.php(139): Aws\AwsClient->execute() #16 /var/www/stagesite/vendor/aws/aws-sdk-php/src/functions.php(52): Aws\ResultPaginator->valid() #17 /var/www/stagesite/vendor/aws/aws-sdk-php/src/functions.php(69): Aws\map() #18 [internal function]: Aws\flatmap() #19 /var/www/stagesite/wp-content/plugins/s3-uploads/inc/class-stream-wrapper.php(695): Generator->valid() #20 [internal function]: S3_Uploads\Stream_Wrapper->dir_readdir() #21 /var/www/stagesite/wp-content/plugins/contact-form-7/includes/file.php(362): readdir() #22 /var/www/stagesite/wp-includes/class-wp-hook.php(322): wpcf7_cleanup_upload_files() #23 /var/www/stagesite/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters() #24 /var/www/stagesite/wp-includes/plugin.php(517): WP_Hook->do_action() #25 /var/www/stagesite/wp-includes/load.php(1280): do_action() #26 [internal function]: shutdown_action_hook() #27 {main} thrown in /var/www/stagesite/vendor/aws/aws-sdk-php/src/WrappedHttpHandler.php on line 196