ember-cli-deploy-s3 is an `ember-cli-deploy` plugin designed to upload static assets, such as JavaScript, CSS, images, and the `index.html` file, to an Amazon S3 bucket as part of an Ember CLI application's deployment pipeline. The current stable version is 5.0.1, with releases typically occurring as needed to address bugs, incorporate new features, or handle breaking changes in its underlying dependencies like the AWS SDK. Its primary differentiator is its seamless integration into the `ember-cli-deploy` ecosystem, providing a standardized way to handle asset deployment to S3 without manual scripting. It leverages the AWS SDK for credential resolution and S3 operations, with version 5.x adopting AWS SDK v3, which introduced significant changes compared to previous versions. Configuration is handled through the `config/deploy.js` file, allowing developers to specify S3 bucket details, access credentials, regions, and file patterns for upload.
npm install ember-cli-deploy-s3Verified import paths — ran on the pinned version, not inferred.
This quickstart demonstrates how to install the plugin, configure it in `config/deploy.js` with essential AWS credentials and S3 bucket details, and the basic command to trigger a deployment.
Review AWS SDK documentation for v3 migration, update any custom code using AWS SDK directly to use `@aws-sdk/client-s3` and other modular clients, and ensure your deployment environment supports the new SDK.
Upgrade your Node.js environment to a supported version (14, 16, 18, or 20+) to meet the plugin's minimum requirements.
Always define separate configuration objects for `ENV.s3` (for `ember-cli-deploy-s3`) and `ENV['s3-index']` (for `ember-cli-deploy-s3-index`), even if they contain similar properties.
Ensure AWS credentials are correctly configured in your deployment environment (e.g., `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` environment variables, `~/.aws/credentials` file, or appropriate IAM role for EC2 instances/containers). Explicitly providing `accessKeyId` and `secretAccessKey` in `config/deploy.js` can override this for testing but is generally not recommended for production.
Ensure that if you are using AWS STS, the `sessionToken` field in your `ENV.s3` configuration (or corresponding environment variable for SDK resolution) is correctly set. Upgrade to at least version 5.0.1 for robust `sessionToken` handling.
Update your `package.json` and `yarn.lock`/`package-lock.json` to ensure `@aws-sdk/client-s3` (and other related v3 packages) are correctly installed and that any custom S3 interaction code uses the new v3 API.
Ensure `ENV.s3.bucket` is defined with your S3 bucket name in `config/deploy.js`.
Verify your AWS `accessKeyId`, `secretAccessKey`, and optionally `sessionToken`. Check the IAM user/role permissions for S3 actions (e.g., `s3:PutObject`, `s3:GetObjectAcl`, `s3:ListBucket`). Ensure the `region` is correctly set and matches your bucket.
Upgrade Node.js to version `14.x || 16.x || 18.x || >= 20.*` to meet the plugin's minimum requirements.
Define separate, distinct configuration objects for `ENV.s3` and `ENV['s3-index']` in `config/deploy.js`. Do not assign the same object reference to both.