# Deploy to AWS with S3 and CloudFront Learn how to deploy your customization to [AWS](https://aws.amazon.com/) static hosting using an [S3](https://s3.console.aws.amazon.com/s3/home) bucket and [CloudFront](https://console.aws.amazon.com/cloudfront/home) distribution. ## Prerequisites Before you get started, you need to have: - An [AWS](https://aws.amazon.com/) account. - A Project - A Merchant Center account, or an [Identity account](/docs/identity/overview.md) - A customization configured in the Merchant Center: - For Custom Applications, see [Managing Custom Applications](/merchant-center/managing-custom-applications.md). - For Custom Views, see [Managing Custom Views](/merchant-center/managing-custom-views.md). ## Configuration ### Add the customization identifier and URL Depending on the customization type, you'll need to specify either the Custom Application ID or the Custom View ID that was provided to you when you added the customization in the Merchant Center. You'll also need to specify the production URL of your CloudFront site. You can keep the standard CloudFront URL `https://.cloudfront.net` or provide your custom domain. For Custom Applications, make the following changes to the [Custom Application config](/merchant-center-customizations/tooling-and-configuration/custom-application-config.md): - Add the Custom Application ID to [`env.production.applicationId`](/merchant-center-customizations/tooling-and-configuration/custom-application-config.md#envproductionapplicationid). - Add the production URL of your CloudFront site to [`env.production.url`](/merchant-center-customizations/tooling-and-configuration/custom-application-config.md#envproductionurl). ```json title="custom-application-config.json" { "env": { "production": { "applicationId": "ckvtahxl90097sys6har1e6n3", "url": "https://.cloudfront.net" } } } ``` For Custom Views, make the following changes to the [Custom View config](/merchant-center-customizations/tooling-and-configuration/custom-view-config.md): - Add the Custom View ID to [`env.production.customViewId`](/merchant-center-customizations/tooling-and-configuration/custom-view-config.md#envproductioncustomviewid). - Add the production URL of your CloudFront site to [`env.production.url`](/merchant-center-customizations/tooling-and-configuration/custom-view-config.md#envproductionurl). ```js title="custom-view-config.mjs" const config = { env: { production: { customViewId: 'ckvtahxl90097sys6har1e6n3', url: 'https://.cloudfront.net', }, }, // ... }; ``` ### Use environment variables To avoid hardcoding values (such as the customization identifier or the Project key), you can use variable placeholders in your [Custom Application config](/merchant-center-customizations/tooling-and-configuration/custom-application-config.md#use-variable-placeholders) or [Custom View config](/merchant-center-customizations/tooling-and-configuration/custom-view-config.md#use-variable-placeholders). Example of environment variables with Custom Applications: ```json title="custom-application-config.json" highlightLines="4" { "env": { "production": { "applicationId": "${env:APPLICATION_ID}", "url": "https://.cloudfront.net" } } } ``` Example of environment variables with Custom Views: ```js title="custom-view-config.mjs" highlightLines="4" const config = { env: { production: { customViewId: '${env:CUSTOM_VIEW_ID}', url: 'https://.cloudfront.net', }, }, // ... }; ``` ## Set up S3 and CloudFront To host the production bundles of your customization, you need to create some resources in AWS, like an S3 bucket, configure a CloudFront distribution, etc. A customization is set up in a very similar way as a Create React App. Therefore, we recommend checking out other articles about configuring AWS for static hosting for more detailed explanations about the setup. - [Deploy React app to S3 & CloudFront](https://dev.to/karanpratapsingh/deploy-react-app-to-s3-cloudfront-1cao) - [Deploying create-react-app to S3 and CloudFront](https://wolovim.medium.com/deploying-create-react-app-to-s3-or-cloudfront-48dae4ce0af) ## Production bundles The main command to create the production bundles is `mc-scripts build`. The output folder is `public`. For more information, see [Going to production](/merchant-center-customizations/development/going-to-production.md). ## Test your deployment Install your customization in the Merchant Center to access it within your Projects: - For Custom Applications, see [Managing Custom Applications](/merchant-center/managing-custom-applications.md). You can also use [deployment previews](/merchant-center-customizations/concepts/deployment-previews.md) to test the application before releasing it to the production environment. - For Custom Views, see [Managing Custom Views](/merchant-center/managing-custom-views.md). ## Related pages - [Area overview page with navigation](/merchant-center-customizations.md) - [Previous page: Deploy to Render](/merchant-center-customizations/deployment/render.md) - [Next page: Deploy to Azure with Static Web Apps](/merchant-center-customizations/deployment/azure-static-web-apps.md)