Install Amazon QuickSight

Edit on GitHub

This document describes how to install Amazon QuickSight.

Install feature core

Follow the steps below to install the Amazon QuickSight core.

Prerequisites

Install the required features:

NAME VERSION INSTALLATION GUIDE
Analytics 202410.0 Install the Analytics feature
Spryker Core Back Office 202410.0 Install the Spryker Core Back Office feature

1) Install the required modules

Install the required modules using Composer:

composer require spryker-eco/amazon-quicksight:"^2.0.0" --update-with-dependencies
Verification

Make sure the following modules have been installed:

MODULE EXPECTED DIRECTORY
AmazonQuicksight vendor/spryker-eco/amazon-quicksight

2) Set up the configuration

  1. Add one of the following QuickSight asset bundles to the project level, for example–to src/Pyz/Zed/AmazonQuicksight/data/asset-bundle.zip. Preconfigured asset bundles per demo shop:
  1. Define the path to the asset bundle:

src/Pyz/Zed/AmazonQuicksight/AmazonQuicksightConfig.php

<?php

namespace Pyz\Zed\AmazonQuicksight;

use SprykerEco\Zed\AmazonQuicksight\AmazonQuicksightConfig as SprykerEcoAmazonQuicksightConfig;

class AmazonQuicksightConfig extends SprykerEcoAmazonQuicksightConfig
{
    /**
     * @var string
     */
    protected const ASSET_BUNDLE_IMPORT_FILE_PATH = '%s/src/Pyz/Zed/AmazonQuicksight/data/asset-bundle.zip';

    /**
     * @return string
     */
    public function getAssetBundleImportFilePath(): string
    {
        return sprintf(static::ASSET_BUNDLE_IMPORT_FILE_PATH, APPLICATION_ROOT_DIR);
    }
}
  1. To enable the asset bundle import, configure the data sets and data source IDs from one of the asset bundles:

src/Pyz/Zed/AmazonQuicksight/AmazonQuicksightConfig.php

B2B Marketplace
<?php

namespace Pyz\Zed\AmazonQuicksight;

use SprykerEco\Zed\AmazonQuicksight\AmazonQuicksightConfig as SprykerEcoAmazonQuicksightConfig;

class AmazonQuicksightConfig extends SprykerEcoAmazonQuicksightConfig
{
    /**
     * @var list<string>
     */
    protected const ASSET_BUNDLE_IMPORT_DELETE_DATA_SET_IDS = [
        'SprykerB2BMPDefaultDatasetCategoryLocalizedProductAbstract',
        'SprykerB2BMPDefaultDatasetCompany',
        'SprykerB2BMPDefaultDatasetCustomer',
        'SprykerB2BMPDefaultDatasetCustomerAddress',
        'SprykerB2BMPDefaultDatasetMerchantCommission',
        'SprykerB2BMPDefaultDatasetMerchantOrder',
        'SprykerB2BMPDefaultDatasetMerchantOrderCategory',
        'SprykerB2BMPDefaultDatasetMerchantOrderItems',
        'SprykerB2BMPDefaultDatasetMerchantProductOffer',
        'SprykerB2BMPDefaultDatasetMerchantProductProductAbstract',
        'SprykerB2BMPDefaultDatasetMerchantStore',
        'SprykerB2BMPDefaultDatasetOrderDiscounts',
        'SprykerB2BMPDefaultDatasetOrderItemCategoryProductBrand',
        'SprykerB2BMPDefaultDatasetOrderItemLocalizedProductConcrete',
        'SprykerB2BMPDefaultDatasetOrderItemProductCategory',
        'SprykerB2BMPDefaultDatasetOrderItemsReturnDate',
        'SprykerB2BMPDefaultDatasetOrderItemState',
        'SprykerB2BMPDefaultDatasetOrderItemStateCustomers',
        'SprykerB2BMPDefaultDatasetOrderItemStateHistory',
        'SprykerB2BMPDefaultDatasetOrderPaymentMethods',
        'SprykerB2BMPDefaultDatasetOrderReturns',
        'SprykerB2BMPDefaultDatasetOrderReturnsProductConcrete',
        'SprykerB2BMPDefaultDatasetOrderShipmentMethods',
        'SprykerB2BMPDefaultDatasetOrderTotalsCustomerCompany',
        'SprykerB2BMPDefaultDatasetOrderTotalsCustomSQL',
        'SprykerB2BMPDefaultDatasetProductConcreteAvailability',
        'SprykerB2BMPDefaultDatasetProductConcreteStore',
        'SprykerB2BMPDefaultDatasetQuoteProducts',
        'SprykerB2BMPDefaultDatasetShoppingListProducts',
    ];

    /**
     * @var string
     */
    protected const DEFAULT_DATA_SOURCE_ID = 'SprykerB2BMPDefaultDataSource';
}
B2B
<?php

namespace Pyz\Zed\AmazonQuicksight;

use SprykerEco\Zed\AmazonQuicksight\AmazonQuicksightConfig as SprykerEcoAmazonQuicksightConfig;

class AmazonQuicksightConfig extends SprykerEcoAmazonQuicksightConfig
{
    /**
     * @var list<string>
     */
    protected const ASSET_BUNDLE_IMPORT_DELETE_DATA_SET_IDS = [
        'SprykerB2BDefaultDatasetOrderShipmentMethods',
        'SprykerB2BDefaultDatasetOrderReturnsProductConcrete',
        'SprykerB2BDefaultDatasetOrderReturns',
        'SprykerB2BDefaultDatasetOrderItemCategoryProductBrand',
        'SprykerB2BDefaultDatasetOrderItemLocalizedProductConcrete',
        'SprykerB2BDefaultDatasetOrderItemProductCategory',
        'SprykerB2BDefaultDatasetOrderItemsReturnDate',
        'SprykerB2BDefaultDatasetOrderItemState',
        'SprykerB2BDefaultDatasetOrderItemStateHistory',
        'SprykerB2BDefaultDatasetOrderDiscounts',
        'SprykerB2BDefaultDatasetOrderPaymentMethods',
        'SprykerB2BDefaultDatasetOrderItemStateCustomers',
        'SprykerB2BDefaultDatasetOrderTotalsCustomerCompany',
        'SprykerB2BDefaultDatasetOrderTotalsCustomSQL',
        'SprykerB2BDefaultDatasetCategoryLocalizedProductAbstract',
        'SprykerB2BDefaultDatasetProductConcreteStore',
        'SprykerB2BDefaultDatasetMerchantStore',
        'SprykerB2BDefaultDatasetQuoteProducts',
        'SprykerB2BDefaultDatasetProductConcreteAvailability',
        'SprykerB2BDefaultDatasetCompany',
        'SprykerB2BDefaultDatasetCustomer',
        'SprykerB2BDefaultDatasetCustomerAddress',
    ];

    /**
     * @var string
     */
    protected const DEFAULT_DATA_SOURCE_ID = 'SprykerB2BDefaultDataSource';
}
B2C Marketplace
<?php

namespace Pyz\Zed\AmazonQuicksight;

use SprykerEco\Zed\AmazonQuicksight\AmazonQuicksightConfig as SprykerEcoAmazonQuicksightConfig;

class AmazonQuicksightConfig extends SprykerEcoAmazonQuicksightConfig
{
    /**
     * @var list<string>
     */
    protected const ASSET_BUNDLE_IMPORT_DELETE_DATA_SET_IDS = [
        'SprykerB2CMPDefaultDatasetCategoryLocalizedProductAbstract',
        'SprykerB2CMPDefaultDatasetCustomer',
        'SprykerB2CMPDefaultDatasetCustomerAddress',
        'SprykerB2CMPDefaultDatasetMerchantCommission',
        'SprykerB2CMPDefaultDatasetMerchantOrder',
        'SprykerB2CMPDefaultDatasetMerchantOrderCategory',
        'SprykerB2CMPDefaultDatasetMerchantOrderItems',
        'SprykerB2CMPDefaultDatasetMerchantProductOffer',
        'SprykerB2CMPDefaultDatasetMerchantProductProductAbstract',
        'SprykerB2CMPDefaultDatasetMerchantStore',
        'SprykerB2CMPDefaultDatasetOrderDiscounts',
        'SprykerB2CMPDefaultDatasetOrderItemCategoryProductBrand',
        'SprykerB2CMPDefaultDatasetOrderItemLocalizedProductConcrete',
        'SprykerB2CMPDefaultDatasetOrderItemProductCategory',
        'SprykerB2CMPDefaultDatasetOrderItemsReturnDate',
        'SprykerB2CMPDefaultDatasetOrderItemState',
        'SprykerB2CMPDefaultDatasetOrderItemStateHistory',
        'SprykerB2CMPDefaultDatasetOrderPaymentMethods',
        'SprykerB2CMPDefaultDatasetOrderReturns',
        'SprykerB2CMPDefaultDatasetOrderReturnsProductConcrete',
        'SprykerB2CMPDefaultDatasetOrderShipmentMethods',
        'SprykerB2CMPDefaultDatasetOrderTotalsCustomSQL',
        'SprykerB2CMPDefaultDatasetProductConcreteAvailability',
        'SprykerB2CMPDefaultDatasetProductConcreteStore',
        'SprykerB2CMPDefaultDatasetQuoteProducts',
    ];

    /**
     * @var string
     */
    protected const DEFAULT_DATA_SOURCE_ID = 'SprykerB2CMPDefaultDataSource';
}
B2C
<?php

namespace Pyz\Zed\AmazonQuicksight;

use SprykerEco\Zed\AmazonQuicksight\AmazonQuicksightConfig as SprykerEcoAmazonQuicksightConfig;

class AmazonQuicksightConfig extends SprykerEcoAmazonQuicksightConfig
{
    /**
     * @var list<string>
     */
    protected const ASSET_BUNDLE_IMPORT_DELETE_DATA_SET_IDS = [
        'SprykerB2CDefaultDatasetCategoryLocalizedProductAbstract',
        'SprykerB2CDefaultDatasetCustomer',
        'SprykerB2CDefaultDatasetCustomerAddress',
        'SprykerB2CDefaultDatasetOrderDiscounts',
        'SprykerB2CDefaultDatasetOrderItemCategoryProductBrand',
        'SprykerB2CDefaultDatasetOrderItemLocalizedProductConcrete',
        'SprykerB2CDefaultDatasetOrderItemProductCategory',
        'SprykerB2CDefaultDatasetOrderItemsReturnDate',
        'SprykerB2CDefaultDatasetOrderItemState',
        'SprykerB2CDefaultDatasetOrderItemStateHistory',
        'SprykerB2CDefaultDatasetOrderPaymentMethods',
        'SprykerB2CDefaultDatasetOrderReturns',
        'SprykerB2CDefaultDatasetOrderReturnsProductConcrete',
        'SprykerB2CDefaultDatasetOrderShipmentMethods',
        'SprykerB2CDefaultDatasetOrderTotalsCustomSQL',
        'SprykerB2CDefaultDatasetProductConcreteAvailability',
        'SprykerB2CDefaultDatasetProductConcreteStore',
        'SprykerB2CDefaultDatasetQuoteProducts',
    ];

    /**
     * @var string
     */
    protected const DEFAULT_DATA_SOURCE_ID = 'SprykerB2CDefaultDataSource';
}
Verification

These changes are verified in a later step.

  1. Add the following environment configuration:
CONFIGURATION SPECIFICATION NAMESPACE
AmazonQuicksightConstants::AWS_ACCOUNT_ID ID of the AWS account holding your Amazon QuickSight account. SprykerEco\Shared\AmazonQuicksight
AmazonQuicksightConstants::AWS_REGION AWS region of your Amazon QuickSight account. SprykerEco\Shared\AmazonQuicksight
AmazonQuicksightConstants::AWS_QUICKSIGHT_NAMESPACE Name of the QuickSight namespace. SprykerEco\Shared\AmazonQuicksight
AmazonQuicksightConstants::DEFAULT_DATA_SOURCE_USERNAME Username of the default data source. SprykerEco\Shared\AmazonQuicksight
AmazonQuicksightConstants::DEFAULT_DATA_SOURCE_PASSWORD Default data source password. SprykerEco\Shared\AmazonQuicksight
AmazonQuicksightConstants::DEFAULT_DATA_SOURCE_DATABASE_NAME Default data source database name. SprykerEco\Shared\AmazonQuicksight
AmazonQuicksightConstants::DEFAULT_DATA_SOURCE_DATABASE_HOST Default data source database host. SprykerEco\Shared\AmazonQuicksight
AmazonQuicksightConstants::DEFAULT_DATA_SOURCE_DATABASE_PORT Default data source database port. SprykerEco\Shared\AmazonQuicksight
AmazonQuicksightConstants::DEFAULT_DATA_SOURCE_VPC_CONNECTION_ARN Default data source VPC connection ARN. SprykerEco\Shared\AmazonQuicksight
AmazonQuicksightConstants::GENERATE_EMBED_URL_ALLOWED_DOMAINS List of domains allowed for generating embed URLs. SprykerEco\Shared\AmazonQuicksight
AmazonQuicksightConstants::QUICKSIGHT_ASSUMED_ROLE_ARN The role ARN used by Aws\Sts\StsClient to assume a role used for all API calls to Quicksight. SprykerEco\Shared\AmazonQuicksight

config/Shared/config_default.php

<?php

use SprykerEco\Shared\AmazonQuicksight\AmazonQuicksightConstants;

// -------------------------------- AWS QUICKSIGHT -------------------------------
$config[AmazonQuicksightConstants::AWS_ACCOUNT_ID] = getenv('AWS_ACCOUNT_ID');
$config[AmazonQuicksightConstants::AWS_REGION] = getenv('AWS_REGION');
$config[AmazonQuicksightConstants::AWS_QUICKSIGHT_NAMESPACE] = getenv('QUICKSIGHT_NAMESPACE');
$config[AmazonQuicksightConstants::DEFAULT_DATA_SOURCE_USERNAME] = getenv('SPRYKER_BI_DB_USER');
$config[AmazonQuicksightConstants::DEFAULT_DATA_SOURCE_PASSWORD] = getenv('SPRYKER_BI_DB_PASSWORD');
$config[AmazonQuicksightConstants::DEFAULT_DATA_SOURCE_DATABASE_NAME] = getenv('SPRYKER_DB_DATABASE');
$config[AmazonQuicksightConstants::DEFAULT_DATA_SOURCE_DATABASE_HOST] = getenv('SPRYKER_DB_RO_REPLICA_HOST');
$config[AmazonQuicksightConstants::DEFAULT_DATA_SOURCE_DATABASE_PORT] = getenv('SPRYKER_DB_PORT');
$config[AmazonQuicksightConstants::DEFAULT_DATA_SOURCE_VPC_CONNECTION_ARN] = getenv('QUICKSIGHT_VPC_CONNECTION_ARN');
$config[AmazonQuicksightConstants::GENERATE_EMBED_URL_ALLOWED_DOMAINS] = [
    sprintf('https://%s', getenv('SPRYKER_BE_HOST')),
];
$config[AmazonQuicksightConstants::QUICKSIGHT_ASSUMED_ROLE_ARN] = getenv('QUICKSIGHT_ASSUMED_ROLE_ARN');
Credentials

We recommended not defining the AWS credentials and let the SDK attempt to load them from the environment. If you need to specify the credentials,for example–for local development, you can do it as follows:

CONFIGURATION SPECIFICATION NAMESPACE
AmazonQuicksightConstants::AWS_CREDENTIALS_KEY AWS access key ID. SprykerEco\Shared\AmazonQuicksight
AmazonQuicksightConstants::AWS_CREDENTIALS_SECRET AWS access key secret. SprykerEco\Shared\AmazonQuicksight
AmazonQuicksightConstants::AWS_CREDENTIALS_TOKEN AWS security token. SprykerEco\Shared\AmazonQuicksight
<?php

use SprykerEco\Shared\AmazonQuicksight\AmazonQuicksightConstants;

// -------------------------------- AWS QUICKSIGHT -------------------------------
$config[AmazonQuicksightConstants::AWS_CREDENTIALS_KEY] = getenv('AWS_ACCESS_KEY_ID');
$config[AmazonQuicksightConstants::AWS_CREDENTIALS_SECRET] = getenv('AWS_SECRET_ACCESS_KEY');
$config[AmazonQuicksightConstants::AWS_CREDENTIALS_TOKEN] = getenv('AWS_SESSION_TOKEN');

3) Set up database schema and transfer objects

Apply database changes and generate entity and transfer changes:

console propel:install
console transfer:generate
Verification

Make sure the following changes have been applied in the database:

DATABASE ENTITY TYPE EVENT
spy_quicksight_user table created
spy_quicksight_asset_bundle_import_job table created

Make sure the following changes have been triggered in transfer objects:

TRANSFER TYPE EVENT PATH
QuicksightUser class created src/Generated/Shared/Transfer/QuicksightUserTransfer
QuicksightUserCriteria class created src/Generated/Shared/Transfer/QuicksightUserCriteriaTransfer
QuicksightUserConditions class created src/Generated/Shared/Transfer/QuicksightUserConditionsTransfer
QuicksightUserCollection class created src/Generated/Shared/Transfer/QuicksightUserCollectionTransfer
QuicksightUserCollectionResponse class created src/Generated/Shared/Transfer/QuicksightUserCollectionResponseTransfer
QuicksightDeleteUserResponse class created src/Generated/Shared/Transfer/QuicksightDeleteUserResponseTransfer
QuicksightDeleteUserRequest class created src/Generated/Shared/Transfer/QuicksightDeleteUserRequestTransfer
QuicksightListUsersRequest class created src/Generated/Shared/Transfer/QuicksightListUsersRequestTransfer
QuicksightListUsersResponse class created src/Generated/Shared/Transfer/QuicksightListUsersResponseTransfer
QuicksightGenerateEmbedUrlRequest class created src/Generated/Shared/Transfer/QuicksightGenerateEmbedUrlRequestTransfer
QuicksightExperienceConfiguration class created src/Generated/Shared/Transfer/QuicksightExperienceConfigurationTransfer
QuicksightConsole class created src/Generated/Shared/Transfer/QuicksightConsoleTransfer
QuicksightGenerateEmbedUrlResponse class created src/Generated/Shared/Transfer/QuicksightGenerateEmbedUrlResponseTransfer
QuicksightEmbedUrl class created src/Generated/Shared/Transfer/QuicksightEmbedUrlTransfer
QuicksightAssetBundleImportJob class created src/Generated/Shared/Transfer/QuicksightAssetBundleImportJobTransfer
QuicksightAssetBundleImportJobCollection class created src/Generated/Shared/Transfer/QuicksightAssetBundleImportJobCollectionTransfer
QuicksightAssetBundleImportJobCriteria class created src/Generated/Shared/Transfer/QuicksightAssetBundleImportJobCriteriaTransfer
QuicksightAssetBundleImportJobConditions class created src/Generated/Shared/Transfer/QuicksightAssetBundleImportJobConditionsTransfer
QuicksightStartAssetBundleImportJobRequest class created src/Generated/Shared/Transfer/QuicksightStartAssetBundleImportJobRequestTransfer
QuicksightAssetBundleImportSource class created src/Generated/Shared/Transfer/QuicksightAssetBundleImportSourceTransfer
QuicksightOverrideParameters class created src/Generated/Shared/Transfer/QuicksightOverrideParametersTransfer
QuicksightOverrideParametersDataSource class created src/Generated/Shared/Transfer/QuicksightOverrideParametersDataSourceTransfer
QuicksightOverrideParametersDataSourceCredentials class created src/Generated/Shared/Transfer/QuicksightOverrideParametersDataSourceCredentialsTransfer
QuicksightOverrideParametersDataSourceCredentialPair class created src/Generated/Shared/Transfer/QuicksightOverrideParametersDataSourceCredentialPairTransfer
QuicksightOverrideParametersDataSourceParameters class created src/Generated/Shared/Transfer/QuicksightOverrideParametersDataSourceCredentialPairTransfer
QuicksightOverrideParametersDataSourceMariaDbParameters class created src/Generated/Shared/Transfer/QuicksightOverrideParametersDataSourceCredentialPairTransfer
QuicksightOverrideParametersDataSourceVpcConnectionProperties class created src/Generated/Shared/Transfer/QuicksightOverrideParametersDataSourceCredentialPairTransfer
QuicksightOverridePermissions class created src/Generated/Shared/Transfer/QuicksightOverridePermissionsTransfer
QuicksightOverridePermissionsAnalysis class created src/Generated/Shared/Transfer/QuicksightOverridePermissionsAnalysisTransfer
QuicksightOverridePermissionsDashboard class created src/Generated/Shared/Transfer/QuicksightOverridePermissionsDashboardTransfer
QuicksightOverridePermissionsDataSet class created src/Generated/Shared/Transfer/QuicksightOverridePermissionsDataSetTransfer
QuicksightOverridePermissionsDataSource class created src/Generated/Shared/Transfer/QuicksightOverridePermissionsDataSourceTransfer
QuicksightPermissions class created src/Generated/Shared/Transfer/QuicksightPermissionsTransfer
QuicksightStartAssetBundleImportJobResponse class created src/Generated/Shared/Transfer/QuicksightStartAssetBundleImportJobResponseTransfer
QuicksightDescribeAssetBundleImportJobRequest class created src/Generated/Shared/Transfer/QuicksightDescribeAssetBundleImportJobRequestTransfer
QuicksightDescribeAssetBundleImportJobResponse class created src/Generated/Shared/Transfer/QuicksightDescribeAssetBundleImportJobResponseTransfer
EnableQuicksightAnalyticsRequest class created src/Generated/Shared/Transfer/EnableQuicksightAnalyticsRequestTransfer
EnableQuicksightAnalyticsResponse class created src/Generated/Shared/Transfer/EnableQuicksightAnalyticsResponseTransfer
ResetQuicksightAnalyticsRequest class created src/Generated/Shared/Transfer/ResetQuicksightAnalyticsRequestTransfer
ResetQuicksightAnalyticsResponse class created src/Generated/Shared/Transfer/ResetQuicksightAnalyticsResponseTransfer

4) Add translations

Generate a new translation cache for Zed:

console translator:generate-cache

5) Set up behavior

  1. Enable the following behaviors by registering the plugins:
PLUGIN SPECIFICATION PREREQUISITES NAMESPACE
QuicksightAnalyticsCollectionExpanderPlugin Expands the provided AnalyticsCollectionTransfer with QuickSight analytics. SprykerEco\Zed\AmazonQuicksight\Communication\Plugin\AnalyticsGui
QuicksightUserExpanderPlugin Populates UserTransfer.quicksightUser in the collection with existing QuickSight users. SprykerEco\Zed\AmazonQuicksight\Communication\Plugin\User
DeleteQuicksightUserPostUpdatePlugin Deletes a QuickSight user when the QuickSight role is deselected for the user or when the user is deactivated or deleted. SprykerEco\Zed\AmazonQuicksight\Communication\Plugin\User

src/Pyz/Zed/AnalyticsGui/AnalyticsGuiDependencyProvider.php

<?php

namespace Pyz\Zed\AnalyticsGui;

use Spryker\Zed\AnalyticsGui\AnalyticsGuiDependencyProvider as SprykerAnalyticsGuiDependencyProvider;
use SprykerEco\Zed\AmazonQuicksight\Communication\Plugin\AnalyticsGui\QuicksightAnalyticsCollectionExpanderPlugin;

class AnalyticsGuiDependencyProvider extends SprykerAnalyticsGuiDependencyProvider
{
    /**
     * @return list<\Spryker\Zed\AnalyticsGuiExtension\Dependency\Plugin\AnalyticsCollectionExpanderPluginInterface>
     */
    protected function getAnalyticsCollectionExpanderPlugins(): array
    {
        return [
            new QuicksightAnalyticsCollectionExpanderPlugin(),
        ];
    }
}

src/Pyz/Zed/User/UserDependencyProvider.php

<?php

namespace Pyz\Zed\User;

use Spryker\Zed\User\UserDependencyProvider as SprykerUserDependencyProvider;
use SprykerEco\Zed\AmazonQuicksight\Communication\Plugin\User\DeleteQuicksightUserPostUpdatePlugin;
use SprykerEco\Zed\AmazonQuicksight\Communication\Plugin\User\QuicksightUserExpanderPlugin;

class UserDependencyProvider extends SprykerUserDependencyProvider
{
    /**
     * @return list<\Spryker\Zed\UserExtension\Dependency\Plugin\UserExpanderPluginInterface>
     */
    protected function getUserExpanderPlugins(): array
    {
        return [
            new QuicksightUserExpanderPlugin(),
        ];
    }

    /**
     * @return list<\Spryker\Zed\UserExtension\Dependency\Plugin\UserPostUpdatePluginInterface>
     */
    protected function getUserPostUpdatePlugins(): array
    {
        return [
            new DeleteQuicksightUserPostUpdatePlugin(),
        ];
    }
}
Verification
PLUGIN VERIFICATION
Verify QuicksightAnalyticsCollectionExpanderPlugin Go to https://mysprykershop.com/analytics-gui/analytics and make sure QuickSight analytics is displayed. By default, you should see the No Analytics permission has been granted to the current user message.
Verify QuicksightUserExpanderPlugin Create a new QuickSight user in the spy_quicksight_user DB table and call UserFacade::getUserCollection() for a user used for the newly created QuickSight user. Make sure the UserCollection.user.quicksightUser is expanded.
Verify DeleteQuicksightUserPostUpdatePlugin In the Back Office, go to Users>Users. For a newly created QuickSight user, deactivate deactive the respective Back Office user. Make sure the corresponding row is deleted in the spy_quicksight_user DB table.
  1. Enable behaviors by registering the console commands:
PLUGIN SPECIFICATION PREREQUISITES NAMESPACE
QuicksightUserSyncCreateConsole In the spy_quicksight_user DB table, persists the users registered in QuickSight by persisted user emails. SprykerEco\Zed\AmazonQuicksight\Communication\Console

src/Pyz/Zed/Console/ConsoleDependencyProvider.php

<?php

namespace Pyz\Zed\Console;

use Spryker\Zed\Console\ConsoleDependencyProvider as SprykerConsoleDependencyProvider;
use Spryker\Zed\Kernel\Container;
use SprykerEco\Zed\AmazonQuicksight\Communication\Console\QuicksightUserSyncCreateConsole;

class ConsoleDependencyProvider extends SprykerConsoleDependencyProvider
{
    /**
     * @param \Spryker\Zed\Kernel\Container $container
     *
     * @return list<\Symfony\Component\Console\Command\Command>
     */
    protected function getConsoleCommands(Container $container): array
    {
        return [
            new QuicksightUserSyncCreateConsole(),
        ];
    }
}
Verification
  1. Create a QuickSight user in QuickSight.
  2. Sync QuickSight to Back Office users:
console quicksight-user:sync:create

In the spy_quicksight_user table, make sure that the corresponding QuickSight user has been added.

  1. Optional: To sync users automatically during deployment, configure the installation stage of a pipeline, for example–destructive pipeline. Add the following command to the end of the demodata section:

config/install/destructive.yml

sections:
    demodata:
#       ...other commands
        create-quicksight-users:
            command: 'vendor/bin/console quicksight-user:sync:create'
  1. Clear router cache:
console router:cache:warm-up:backoffice
Verification

In the Back Office, make sure you can access the Analytics page: https://backoffice.mysprykershop.com/amazon-quicksight/analytics/enable.

Install feature frontend

Follow the steps below to install the Amazon QuickSight frontend.

Prerequisites

Install the required features:

NAME VERSION INSTALLATION GUIDE
Spryker Core 202410.0 Install the Spryker Core feature

1) Enable Javascript and CSS changes:

  1. Update package.json:

package.json

{
    "workspaces": [
        "vendor/spryker-eco/*/assets/Zed"
    ],
}
  1. Enable Javascript and CSS changes:
npm install
console frontend:zed:build