modifyTokenHeaders($request, $credentials); $credentials = $this->getSigningCredentials($credentials); return parent::signRequest($request, $credentials, $signingService); } public function presign(RequestInterface $request, CredentialsInterface $credentials, $expires, array $options = []) { $request = $this->modifyTokenHeaders($request, $credentials); $credentials = $this->getSigningCredentials($credentials); return parent::presign($request, $credentials, $expires, $options); } private function modifyTokenHeaders( RequestInterface $request, CredentialsInterface $credentials ) { //The x-amz-security-token header is not supported by s3 express $request = $request->withoutHeader('X-Amz-Security-Token'); return $request->withHeader( 'x-amz-s3session-token', $credentials->getSecurityToken() ); } private function getSigningCredentials(CredentialsInterface $credentials) { return new Credentials( $credentials->getAccessKeyId(), $credentials->getSecretKey() ); } }