Put OneBucket in front of PowerScale CloudPools, then move the cloud tier from AWS S3 to Wasabi without reconfiguring the OneFS cluster.
PowerScale CloudPools tiers cold file data to a single cloud storage account. Changing providers normally means recalling everything you tiered back onto the cluster and sending it out again to the new target — a capacity problem, a change window, and a migration project in one.Putting a OneBucket™ between OneFS and your object stores removes that constraint. CloudPools talks to one endpoint that never changes, and you add, drain, and retire backends behind it from the OneBucket console.
In OneFS, go to Storage → Storage Pools (SmartPools) and open the CloudPools tab. Select your cloud storage account and choose Edit.This is the starting point: an Amazon S3 account whose URI is a regional AWS endpoint, using the AWS User name (key) CloudPools has been writing with. Storage region is pinned to that region.Leave this dialog open — you come back to it in the last step of Part 1.
2
Collect your OneBucket credentials
In the OneBucket console, open Credentials. Note two things: the S3 endpoint shown at the top of the page — the URL CloudPools will use — and the Access Key ID of an active S3 credential.If you have no credentials yet, select Add Credentials and create an S3 pair first. See Set up your OneBucket for the full walkthrough.
Secret keys are shown only once, at creation. Copy or download the secret before you leave the page.
3
Add an Endpoint for each backend
Open Endpoints. Each Endpoint is one object store OneBucket can reach.Add both providers now, even though only AWS will carry data at first — having Wasabi defined in advance makes Part 2 a policy change rather than a setup task. For each, select Create Endpoint and enter the name, URL, protocol, and bucket style, then that store’s own access keys.
4
Open the Policies page
A policy maps one OneBucket™ to one or more Peer Buckets at your Endpoints. Open Policies and select Create Policy.
5
Name the OneBucket™ (step 1 of 4)
Enter a bucket name, or * to match any Peer Bucket at your Endpoints. * is the right choice for CloudPools, which creates and names its own buckets.Optionally select Gzip or Brotli under Available Encoding, then select Next.
The OneBucket™ name cannot be changed after the policy is created.
6
Add your first Peer Bucket (step 2 of 4)
Select Add Peer Bucket. At least one Peer Bucket must be synchronous.
7
Configure AWS as a synchronous peer
Choose Synchronous so every write lands on AWS before the request returns, and leave Active on. Under Permissions, select Read, Write, and Delete — CloudPools needs all three.Set Endpoint to AWS, optionally enter a Region, and select the AWS Access Key ID. Set Peer Bucket to * to keep bucket names unchanged, then apply.
8
Review the peer list
The peer appears as * on AWS, type sync, active. Select Next.
9
Set the sync quorum (step 3 of 4)
Quorum is the minimum number of synchronous Peer Buckets with write access that must acknowledge a PUT for it to succeed. With one peer, the only value is 1/1.Marking a peer Required forces every PUT to succeed on that specific peer, regardless of quorum. Select Next.
10
Authorize the core keys (step 4 of 4)
Select the Core Access Key(s) allowed to use this OneBucket™ — including the key CloudPools will authenticate with. Select Create Policy.
11
Confirm the policy is live
The policy now shows one Core Key, a Quorum of 1, and a single sync peer on AWS. Active policies apply automatically.
12
Repoint the CloudPools account at OneBucket
Return to the OneFS Edit cloud storage account details dialog and change:
Field
New value
Name or alias
Something recognizable, such as OneBucket
URI
Your OneBucket S3 endpoint, for example https://s3.cluster8.onebucket.io
User name (key)
Your OneBucket Access Key ID
Key (secret key)
The matching secret
Storage region
Default — OneBucket resolves placement itself
Leave Account ID and Telemetry reporting bucket as they are. Select Save; State Details confirms the account revalidated using AWS signature version 4 authentication.
CloudPools now writes through OneBucket to AWS. Nothing has changed from the cluster’s point of view — and this is the last time you edit anything in OneFS.
Everything from here happens in the OneBucket console. OneFS keeps pointing at the same endpoint with the same credentials throughout.
1
Open the policy for editing
On Policies, select the gear icon on your policy to open Update Policy. The dialog exposes the same four stages as the wizard — OneBucket™, Peer Bucket, Sync Quorum, and Core Keys — as tabs you can revisit in any order.Open the Peer Bucket tab. Today it lists one sync peer on AWS.
2
Add Wasabi as a second synchronous peer
Select Add another Peer Bucket. Choose Synchronous, leave Active on, and grant Read, Write, and Delete.Select Turn on opportunistic replication so OneBucket populates Wasabi as objects move through it, rather than requiring a separate bulk copy. Set Endpoint to WASABI and select the Wasabi Access Key ID you registered with that Endpoint.
3
Set the peer bucket name and apply
Scroll to Peer Bucket and enter * to keep bucket names identical across providers. You can instead add a prefix or suffix — backup-*, for example — to rename buckets on this backend only.Select Apply.
4
Demote AWS to read-only
Edit the AWS peer and clear Write and Delete, leaving Read selected. New objects now go only to Wasabi, while anything not yet replicated is still served from AWS.Replication and Compression grey out once the peer can no longer be written to, and so do its Endpoint and key fields.
5
Confirm both peers
The Peer Bucket tab now lists AWS in sequence 1 and Wasabi in sequence2, both sync and both active. Sequence controls the order OneBucket tries peers — drag a row by its handle to change it.Select Apply changes.
6
Verify the policy
The policy summary shows two active sync peers. Quorum is still1, so a write succeeds as soon as one synchronous peer with write access acknowledges it.
Don’t wait for tiering activity to fill Wasabi. Opportunistic replication only copies objects as they move through OneBucket — and CloudPools touches cold data rarely. A recall is read-only, and even when a file changes, CloudPools writes new objects and leaves the old ones in place until garbage collection, which defaults to years.
Drain AWS as its own step. Use flux, OneBucket’s asynchronous movement engine, to copy the AWS bucket to Wasabi in the background. OneBucket stays in front the whole time, so CloudPools keeps seeing one endpoint while the copy runs. Flux isn’t required, either: any copy tool works because OneBucket fronts both buckets regardless.Leave the policy in this state until Wasabi holds everything you need.
7
Deactivate the AWS peer
When you’re ready to stop reading from AWS, switch its Active toggle off in the policy list. A banner appears: This policy includes disabled Peer Bucket(s).Deactivating is reversible — toggle it back on if reads start failing.
8
Confirm the peer is inactive
Reopen Update Policy and check the Peer Bucket tab. AWS shows as inactive, Wasabi as active.Run your validation here — list buckets, read a recalled file, write a new one — while the AWS peer can still be re-enabled.
9
Delete the AWS peer
Select the trash icon on the AWS row and confirm Delete.
Removing a Peer Bucket removes OneBucket’s route to that backend. Objects that exist only on AWS become unreachable through this OneBucket™. Confirm Wasabi holds everything you need before you delete.
10
Confirm Wasabi is the only peer
One sync peer remains on WASABI. Select Apply changes.
11
Verify the finished policy
The policy shows a single active sync peer onWASABI, and the warning banner is gone.
CloudPools is now tiering to Wasabi. The OneFS cloud storage account still points at the same OneBucket endpoint with the same credentials it had at the end of Part 1 — it was never touched during the migration.
You can. Editing the same OneFS dialog to use a Wasabi URI and Wasabi keys is a valid way to change providers.What it does not do is move your data. Every file CloudPools has already tiered is a stub on the cluster pointing at an object in the old account. Change that account’s target, and the stubs still reference AWS.To actually leave AWS, you have to bring the data home and send it out again: recall every tiered file back onto the cluster, then re-tier it to Wasabi. That is the expensive part, and it is expensive three ways at once.
Cost of a recall-and-re-tier
Capacity
The cluster needs enough free space to hold data it deliberately tiered off.
Time and egress
Every object crosses the wire twice — cloud to cluster, cluster to cloud — and you pay AWS egress on the way in.
Risk
It is a change window, with stubs being rewritten while users are reading through them.
The timing is what makes the difference. Make this edit as your migration, and you pay the table above. Make it after OneBucket has already moved the data and it costs nothing — see No lock-in below.
No change window. CloudPools served reads and writes throughout.
No migration project
No copy job to scope, schedule, run, and reconcile.
No rehydration. The stubs never changed, because the endpoint they point at never changed. s3.cluster8.onebucket.io was the target before the swap and after it. Which provider sits behind that name is a policy detail the cluster never sees — so there was nothing to recall and nothing to re-tier, and the cluster needed no spare capacity to absorb it.No downtime. No cutover moment to schedule. AWS served reads while Wasabi filled; both served reads once Wasabi was warm, and Wasabi served them alone at the end. Every step in Part 2 was a toggle you could flip back, right up until you deleted the AWS peer.No migration project. Opportunistic replication seeded Wasabi with everything CloudPools touched, and flux drained the cold remainder behind the bucket. The copy never involved the cluster or a maintenance calendar — the only judgment call was when Wasabi held enough for AWS to go.No lock-in. OneBucket does not have to stay in the path. Because the policy used * as the Peer Bucket name and no encoding, the objects now in Wasabi carry the same bucket names and the same keys they had on AWS. So once Wasabi holds a complete copy, you open that OneFS dialog one final time, point it straight at Wasabi with your Wasabi keys, and CloudPools resolves its existing stubs against Wasabi directly. The edit that was expensive as a migration method costs nothing as a postscript.Which is the part worth saying plainly: the thing that made the move safe is not something you are then stuck with. Keep OneBucket for what it does next — a third provider, a cache tier, spreading reads, the next move. Remove it if you would rather not have it in the data path. Either way the migration is done, and it was done without a recall.
Tested end to end: stubs written through OneBucket resolve correctly once the CloudPools account points straight at Wasabi. It relies on the objects being stored unchanged — keep the Peer Bucket as * with no prefix or suffix, and leave policy encoding off.
Data still has to cross from AWS to Wasabi, and you still pay egress once for the objects that move. The difference is that it happens behind the bucket, on its own schedule, while both providers keep serving — instead of through the cluster, in a window, with capacity set aside for it.
And it is repeatable. Adding a third provider, splitting reads across two, or reversing this entire move is the same handful of policy edits. CloudPools keeps tiering exactly as designed — it just gains a cloud tier that is no longer a single fixed destination.
Credentials, Endpoints, and policies from scratch.
Architecture
How placement, caching, and quorum work behind the bucket.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"OneBucket","colors":{"primary":"#E31B23","light":"#F5474E","dark":"#B4141B"},"logo":{"light":"https://www.onebucket.io/onebucket-icon.svg","dark":"https://www.onebucket.io/onebucket-icon.svg"},"favicon":"https://www.onebucket.io/onebucket-icon.svg","navbar":{"links":[{"href":"mailto:hi@mintlify.com","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.mintlify.com"}},"footer":{"socials":{"x":"https://x.com/mintlify","github":"https://github.com/mintlify","linkedin":"https://linkedin.com/company/mintlify"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"onebucket","hasAudioNarration":false,"actualSubdomain":"onebucket","customDomains":["docs.onebucket.io"],"gitSource":{"type":"github","owner":"attimis","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"collectionId":"f349c94e-4b15-46f1-b421-435dc28b5029","liveDeploymentHistoryId":"6aa22f47b3db868a851da290","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aa22f47b3db868a851da290"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6aa22f47b3db868a851da290","clientVersion":"0.0.3964","searchFilterCounts":[{"language":"default","tag":"Getting Started","count":3},{"language":"default","tag":"Reference","count":2},{"language":"default","tag":"Concepts","count":1},{"language":"default","tag":"Connectors","count":1},{"language":"default","tag":"Guides","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"guides/cloudpools-migration","slug":"/guides/cloudpools-migration","pageMetadata":{"title":"Migrate CloudPools from AWS to Wasabi","sidebarTitle":"CloudPools migration","description":"Put OneBucket in front of PowerScale CloudPools, then move the cloud tier from AWS S3 to Wasabi without reconfiguring the OneFS cluster.","icon":"cloud-arrow-up","href":"/guides/cloudpools-migration"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Put OneBucket in front of PowerScale CloudPools, then move the cloud tier from AWS S3 to Wasabi without reconfiguring the OneFS cluster.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Card,CardGroup,Check,Heading,Note,OptimizedImage,Step,Steps,Table,Warning}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!Check)_missingMdxReference(`Check`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`PowerScale CloudPools tiers cold file data to a single cloud storage account. Changing providers normally means recalling everything you tiered back onto the cluster and sending it out again to the new target — a capacity problem, a change window, and a migration project in one.`}),`\n`,_jsx(_components.p,{children:`Putting a OneBucket™ between OneFS and your object stores removes that constraint. CloudPools talks to one endpoint that never changes, and you add, drain, and retire backends behind it from the OneBucket console.`}),`\n`,_jsx(Heading,{level:`2`,id:`what-this-buys-you`,children:`What this buys you`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`No rehydration`,icon:`database`,children:_jsx(_components.p,{children:`Not one tiered file comes back to the cluster. The stubs never change.`})}),_jsx(Card,{title:`No downtime`,icon:`clock`,children:_jsx(_components.p,{children:`No change window. CloudPools keeps serving reads and writes the whole way.`})}),_jsx(Card,{title:`No migration project`,icon:`list-check`,children:_jsx(_components.p,{children:`No bulk copy job to scope, schedule, run, and reconcile.`})}),_jsx(Card,{title:`No lock-in`,icon:`arrow-right-from-bracket`,children:_jsx(_components.p,{children:`When it’s done, you can point CloudPools straight at Wasabi and drop OneBucket from the path entirely.`})})]}),`\n`,_jsx(_components.p,{children:`Each of those is unpacked at the end. The steps come first.`}),`\n`,_jsx(_components.p,{children:`This guide does both halves in order:`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Part 1`,icon:`plug`,children:_jsx(_components.p,{children:`Point an existing CloudPools account at OneBucket, with AWS S3 as the only backend.`})}),_jsx(Card,{title:`Part 2`,icon:`arrow-right-arrow-left`,children:_jsx(_components.p,{children:`Add Wasabi alongside AWS, shift writes over, and retire the AWS backend.`})})]}),`\n`,_jsx(Heading,{level:`2`,id:`before-you-start`,children:`Before you start`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Admin access to your `,_jsx(_components.a,{href:`https://app.onebucket.io`,children:`OneBucket console`}),` and to the OneFS web UI.`]}),`\n`,_jsx(_components.li,{children:`Access keys for each backend — the AWS keys CloudPools already uses, and a Wasabi Access Key ID and secret.`}),`\n`,_jsx(_components.li,{children:`An existing CloudPools cloud storage account. This guide edits one rather than creating it from scratch.`}),`\n`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`The screenshots show OneFS 9.15.0.0 on cluster`,_jsx(_components.code,{children:`garage43`}),`. Menu paths are stable across recent 9.x releases, but exact labels can differ.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`part-1-put-onebucket-in-front-of-cloudpools`,children:`Part 1: Put OneBucket in front of CloudPools`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`See where CloudPools points today`,children:[_jsxs(_components.p,{children:[`In OneFS, go to `,_jsx(_components.strong,{children:`Storage → Storage Pools (SmartPools)`}),` and open the `,_jsx(_components.strong,{children:`CloudPools`}),` tab. Select your cloud storage account and choose `,_jsx(_components.strong,{children:`Edit`}),`.`]}),_jsxs(_components.p,{children:[`This is the starting point: an `,_jsx(_components.strong,{children:`Amazon S3`}),` account whose `,_jsx(_components.strong,{children:`URI`}),` is a regional AWS endpoint, using the AWS `,_jsx(_components.strong,{children:`User name (key)`}),` CloudPools has been writing with. `,_jsx(_components.strong,{children:`Storage region`}),` is pinned to that region.`]}),_jsx(_components.p,{children:`Leave this dialog open — you come back to it in the last step of Part 1.`}),_jsx(OptimizedImage,{src:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/01-01-cloudpools-aws-s3.png?fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=3049cc2c0aa6463dab67d2e17c7a3f40`,alt:`Edit cloud storage account details in OneFS, pointing at an AWS S3 regional endpoint`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1215`,height:`1215`,\"data-path\":`images/01-01-cloudpools-aws-s3.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/01-01-cloudpools-aws-s3.png?w=280\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=e224499e46b5e2a915758d535cae5589 280w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/01-01-cloudpools-aws-s3.png?w=560\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=ed64767e8c3db6f588d88c69e793a0f3 560w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/01-01-cloudpools-aws-s3.png?w=840\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=9505eebb30517c2a7647cbe7800b9e6e 840w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/01-01-cloudpools-aws-s3.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=c53cd72b40428d21145c1a7f03f57edb 1100w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/01-01-cloudpools-aws-s3.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=ddf3bc85e5cf76050da210cb2afca5de 1650w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/01-01-cloudpools-aws-s3.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=506a1d0a3eaed6625733558da9bebd26 2500w`})]}),_jsxs(Step,{title:`Collect your OneBucket credentials`,children:[_jsxs(_components.p,{children:[`In the OneBucket console, open `,_jsx(_components.strong,{children:`Credentials`}),`. Note two things: the `,_jsx(_components.strong,{children:`S3`}),` endpoint shown at the top of the page — the URL CloudPools will use — and the `,_jsx(_components.strong,{children:`Access Key ID`}),` of an active S3 credential.`]}),_jsxs(_components.p,{children:[`If you have no credentials yet, select `,_jsx(_components.strong,{children:`Add Credentials`}),` and create an S3 pair first. See `,_jsx(_components.a,{href:`/setup`,children:`Set up your OneBucket`}),` for the full walkthrough.`]}),_jsx(Warning,{children:_jsx(_components.p,{children:`Secret keys are shown only once, at creation. Copy or download the secret before you leave the page.`})}),_jsx(OptimizedImage,{src:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/01-02-onebucket-creds.png?fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=38d0f561a5eefe481b6c2fd02cdcdf5c`,alt:`The Credentials page, showing the S3 endpoint and an active access key`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1253`,height:`1253`,\"data-path\":`images/01-02-onebucket-creds.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/01-02-onebucket-creds.png?w=280\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=c0e6dc3e232997940669ffc7273bc66e 280w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/01-02-onebucket-creds.png?w=560\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=002a0756ffe61e2a1036f0ba1ffcdf6f 560w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/01-02-onebucket-creds.png?w=840\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=109e4b61ece85642d94b1002c2b893da 840w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/01-02-onebucket-creds.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=67d2f77e529bec4d230ee6ef79a3fea9 1100w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/01-02-onebucket-creds.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=b8a6f65426b54ebd8cb1d714a975ef60 1650w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/01-02-onebucket-creds.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=dd3f6cc162e21278fbcd2b772914a4ed 2500w`})]}),_jsxs(Step,{title:`Add an Endpoint for each backend`,children:[_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`Endpoints`}),`. Each Endpoint is one object store OneBucket can reach.`]}),_jsxs(_components.p,{children:[`Add both providers now, even though only AWS will carry data at first — having Wasabi defined in advance makes Part 2 a policy change rather than a setup task. For each, select `,_jsx(_components.strong,{children:`Create Endpoint`}),` and enter the name, URL, protocol, and bucket style, then that store’s own access keys.`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/01-03-onebucket-endpoints.png?fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=44a2536b335b0c841423d42a71108073`,alt:`The Endpoints page with AWS and WASABI defined, both S3, both virtual-hosted`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1224`,height:`1224`,\"data-path\":`images/01-03-onebucket-endpoints.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/01-03-onebucket-endpoints.png?w=280\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=8d4380150c082a7e011ad1625ba78256 280w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/01-03-onebucket-endpoints.png?w=560\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=e7700edacff6f10d1e21017ac0bd4651 560w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/01-03-onebucket-endpoints.png?w=840\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=1865a3552a5e0578a70ebf4f37a0c933 840w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/01-03-onebucket-endpoints.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=dc05791b4cb5cc4a85c288edf104bde8 1100w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/01-03-onebucket-endpoints.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=3f495dc182b6bb93e6ed2dda0315307c 1650w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/01-03-onebucket-endpoints.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=cb3799416738838c294271c224badfef 2500w`})]}),_jsxs(Step,{title:`Open the Policies page`,children:[_jsxs(_components.p,{children:[`A policy maps one OneBucket™ to one or more `,_jsx(_components.strong,{children:`Peer Buckets`}),` at your Endpoints. Open `,_jsx(_components.strong,{children:`Policies`}),` and select `,_jsx(_components.strong,{children:`Create Policy`}),`.`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-01-policy.png?fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=9188cbdc9f6fd0fbc86f267992268be0`,alt:`The Policies page before any policy exists`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1224`,height:`1224`,\"data-path\":`images/02-01-policy.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-01-policy.png?w=280\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=752b00be5aad4da71b10586d3358676b 280w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-01-policy.png?w=560\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=01d29293430ec0fbbc9a6ead8a042a6f 560w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-01-policy.png?w=840\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=b16bfb69afdf2e5941024a9b10eb9ab9 840w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-01-policy.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=30c4762ca37b5a3a17a879373416cb7e 1100w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-01-policy.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=073b364f4f4da77ae8fed103c0296989 1650w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-01-policy.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=f742dc67dbb836a0e3f7a9d40f31f12d 2500w`})]}),_jsxs(Step,{title:`Name the OneBucket™ (step 1 of 4)`,children:[_jsxs(_components.p,{children:[`Enter a bucket name, or `,_jsx(_components.code,{children:`*`}),` to match any Peer Bucket at your Endpoints. `,_jsx(_components.code,{children:`*`}),` is the right choice for CloudPools, which creates and names its own buckets.`]}),_jsxs(_components.p,{children:[`Optionally select `,_jsx(_components.strong,{children:`Gzip`}),` or `,_jsx(_components.strong,{children:`Brotli`}),` under `,_jsx(_components.strong,{children:`Available Encoding`}),`, then select `,_jsx(_components.strong,{children:`Next`}),`.`]}),_jsx(Warning,{children:_jsx(_components.p,{children:`The OneBucket™ name cannot be changed after the policy is created.`})}),_jsx(OptimizedImage,{src:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-02-policy.png?fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=c25939b2df9d991f313ab9f66e301a72`,alt:`Create Policy wizard step 1, with the OneBucket name set to an asterisk`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1224`,height:`1224`,\"data-path\":`images/02-02-policy.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-02-policy.png?w=280\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=2ed879bb40144a66e7454f69d88a02a2 280w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-02-policy.png?w=560\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=c38b46d43eaeac0cdf97e3494f5f1f14 560w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-02-policy.png?w=840\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=c4168f0e24f658395cadb47a733185c6 840w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-02-policy.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=39802b6b7659b8ee9b6e5398b0dfbd02 1100w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-02-policy.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=80debb56a8c5516be1c30cec7028d504 1650w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-02-policy.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=16e1c98eb832368ec285a788087f3f76 2500w`})]}),_jsxs(Step,{title:`Add your first Peer Bucket (step 2 of 4)`,children:[_jsxs(_components.p,{children:[`Select `,_jsx(_components.strong,{children:`Add Peer Bucket`}),`. At least one Peer Bucket must be synchronous.`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-03-policy.png?fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=6c70b952d36415b0ada5d2d95c4a5f12`,alt:`Create Policy wizard step 2, prompting for at least one Peer Bucket`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1224`,height:`1224`,\"data-path\":`images/02-03-policy.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-03-policy.png?w=280\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=e23c019d6ea443530728422123d09dcd 280w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-03-policy.png?w=560\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=248c414883511eb1fd2c6acc55c1590f 560w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-03-policy.png?w=840\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=663401c6d90750df2cc4dda8bee38161 840w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-03-policy.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=bb4833a58f76ea88c6d398732ca36bb5 1100w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-03-policy.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=e1cb1f556b80b65910c71c6536e52ca9 1650w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-03-policy.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=672c69c502938d2ed20f4826d38843ab 2500w`})]}),_jsxs(Step,{title:`Configure AWS as a synchronous peer`,children:[_jsxs(_components.p,{children:[`Choose `,_jsx(_components.strong,{children:`Synchronous`}),` so every write lands on AWS before the request returns, and leave `,_jsx(_components.strong,{children:`Active`}),` on. Under `,_jsx(_components.strong,{children:`Permissions`}),`, select `,_jsx(_components.strong,{children:`Read`}),`, `,_jsx(_components.strong,{children:`Write`}),`, and `,_jsx(_components.strong,{children:`Delete`}),` — CloudPools needs all three.`]}),_jsxs(_components.p,{children:[`Set `,_jsx(_components.strong,{children:`Endpoint`}),` to `,_jsx(_components.code,{children:`AWS`}),`, optionally enter a `,_jsx(_components.strong,{children:`Region`}),`, and select the AWS `,_jsx(_components.strong,{children:`Access Key ID`}),`. Set `,_jsx(_components.strong,{children:`Peer Bucket`}),` to `,_jsx(_components.code,{children:`*`}),` to keep bucket names unchanged, then apply.`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-04-policy.png?fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=3c52790c4442304a27c0b03ff3f23524`,alt:`Peer Bucket settings: Synchronous, full permissions, AWS endpoint`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1253`,height:`1253`,\"data-path\":`images/02-04-policy.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-04-policy.png?w=280\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=d2767aad63f6995dc3524aa45e3acf18 280w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-04-policy.png?w=560\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=ea28d6c1289c060f18795db5f9b77f13 560w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-04-policy.png?w=840\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=edd31928fd19a26d01a5f9f23639abf6 840w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-04-policy.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=184810794b7d15d8e9d6a816687772aa 1100w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-04-policy.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=4ff7b4892089531c229c27c7d2bcb9bf 1650w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-04-policy.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=7b364d7bebeb50d8fc4156314250fc1b 2500w`})]}),_jsxs(Step,{title:`Review the peer list`,children:[_jsxs(_components.p,{children:[`The peer appears as `,_jsx(_components.code,{children:`*`}),` on `,_jsx(_components.code,{children:`AWS`}),`, type `,_jsx(_components.code,{children:`sync`}),`, active. Select `,_jsx(_components.strong,{children:`Next`}),`.`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-05-policy.png?fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=fa7b1c9aa176822dbbbb6851dced84d3`,alt:`One synchronous AWS peer listed in the wizard`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1253`,height:`1253`,\"data-path\":`images/02-05-policy.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-05-policy.png?w=280\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=5fccfc3ae97fe4fdda553e6a5873642b 280w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-05-policy.png?w=560\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=ebf5478ae2200aa05bfb53c69aa351db 560w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-05-policy.png?w=840\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=6a3dffe6d2b558584857c2a538feb0d2 840w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-05-policy.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=8e7d87c08189ddb13cd1280358c8a609 1100w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-05-policy.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=5766176f365df4305cc21ab36c530f92 1650w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-05-policy.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=57ebc2ea3d62b1bc6ed72fa047ec5635 2500w`})]}),_jsxs(Step,{title:`Set the sync quorum (step 3 of 4)`,children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Quorum`}),` is the minimum number of synchronous Peer Buckets with write access that must acknowledge a PUT for it to succeed. With one peer, the only value is `,_jsx(_components.code,{children:`1/1`}),`.`]}),_jsxs(_components.p,{children:[`Marking a peer `,_jsx(_components.strong,{children:`Required`}),` forces every PUT to succeed on that specific peer, regardless of quorum. Select `,_jsx(_components.strong,{children:`Next`}),`.`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-06-policy.png?fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=a19caa1bc6ce3f10a20eaad8b9f1c173`,alt:`Sync Quorum set to 1 of 1 for the single AWS peer`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1253`,height:`1253`,\"data-path\":`images/02-06-policy.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-06-policy.png?w=280\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=fd547c38b065e9ea142267c9fda21139 280w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-06-policy.png?w=560\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=df0506481d3212e9fd087a5910fc594d 560w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-06-policy.png?w=840\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=b4e4cfc24a7dc2a0021706ec8ea4e9c2 840w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-06-policy.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=b0cf69fac240d36c6e656846c2e12912 1100w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-06-policy.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=1101658b98942659b0f340cc912bf053 1650w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-06-policy.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=2827a88f7a414c8e1e44026dd4ecfdeb 2500w`})]}),_jsxs(Step,{title:`Authorize the core keys (step 4 of 4)`,children:[_jsxs(_components.p,{children:[`Select the `,_jsx(_components.strong,{children:`Core Access Key(s)`}),` allowed to use this OneBucket™ — including the key CloudPools will authenticate with. Select `,_jsx(_components.strong,{children:`Create Policy`}),`.`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-07-policy.png?fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=f3d4943de482141e6b1539d6683a67df`,alt:`Selecting core access keys in step 4 of the wizard`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1253`,height:`1253`,\"data-path\":`images/02-07-policy.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-07-policy.png?w=280\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=159187d19379dfeda8555907f9c930e6 280w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-07-policy.png?w=560\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=24f600a3fe1ca89ea1588af325aa6b1b 560w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-07-policy.png?w=840\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=e2db7e4eb9be80f8c422298cf9a3febf 840w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-07-policy.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=3fef4618021b01ddbaf66220272aa55d 1100w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-07-policy.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=6b2691a41d44566c0e61f3100bc8464d 1650w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-07-policy.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=10188e434bf8809d023076223597b939 2500w`})]}),_jsxs(Step,{title:`Confirm the policy is live`,children:[_jsxs(_components.p,{children:[`The policy now shows one Core Key, a Quorum of `,_jsx(_components.code,{children:`1`}),`, and a single `,_jsx(_components.code,{children:`sync`}),` peer on `,_jsx(_components.code,{children:`AWS`}),`. Active policies apply automatically.`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-08-policy.png?fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=61896571cdbb165d677797fcad7ada9b`,alt:`The created policy with one synchronous AWS peer`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1253`,height:`1253`,\"data-path\":`images/02-08-policy.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-08-policy.png?w=280\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=9324b102db349df003893802f1de292d 280w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-08-policy.png?w=560\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=875c308d1f89ea2751161e33b84122af 560w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-08-policy.png?w=840\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=8096f1298f16777daa911c23e74bc87a 840w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-08-policy.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=2dd0b953e88938566b5999b05be8a48c 1100w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-08-policy.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=15fbe86e0ec1c2d3a96798f44988b849 1650w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/02-08-policy.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=aa885e8f5d24461d272b0f3d64b320a6 2500w`})]}),_jsxs(Step,{title:`Repoint the CloudPools account at OneBucket`,children:[_jsxs(_components.p,{children:[`Return to the OneFS `,_jsx(_components.strong,{children:`Edit cloud storage account details`}),` dialog and change:`]}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`New value`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Name or alias`})}),_jsxs(_components.td,{children:[`Something recognizable, such as `,_jsx(_components.code,{children:`OneBucket`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`URI`})}),_jsxs(_components.td,{children:[`Your OneBucket S3 endpoint, for example `,_jsx(_components.code,{children:`https://s3.cluster8.onebucket.io`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`User name (key)`})}),_jsx(_components.td,{children:`Your OneBucket Access Key ID`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Key (secret key)`})}),_jsx(_components.td,{children:`The matching secret`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Storage region`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`Default`}),` — OneBucket resolves placement itself`]})]})]})]}),_jsxs(_components.p,{children:[`Leave `,_jsx(_components.strong,{children:`Account ID`}),` and `,_jsx(_components.strong,{children:`Telemetry reporting bucket`}),` as they are. Select `,_jsx(_components.strong,{children:`Save`}),`; `,_jsx(_components.strong,{children:`State Details`}),` confirms the account revalidated using AWS signature version 4 authentication.`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-cloudpools-onebucket-s3.png?fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=9e2b8efe571a6ff35d07e3b1d4a3ec4e`,alt:`The OneFS cloud account repointed at the OneBucket S3 endpoint`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1224`,height:`1224`,\"data-path\":`images/03-cloudpools-onebucket-s3.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-cloudpools-onebucket-s3.png?w=280\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=fb28032d080eb1cc37e45c9d13e64207 280w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-cloudpools-onebucket-s3.png?w=560\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=0d4ec05e88ed5e914d661382384fbc0a 560w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-cloudpools-onebucket-s3.png?w=840\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=ff91fa9951c59e496fddde04802e687c 840w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-cloudpools-onebucket-s3.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=d7b970c123ecb265ee1cc09f1d555ac0 1100w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-cloudpools-onebucket-s3.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=f4dd625adbea1c49f1dd214a757cc7d9 1650w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-cloudpools-onebucket-s3.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=c3c008667c43e6d57b9f36b416237269 2500w`}),_jsx(Check,{children:_jsx(_components.p,{children:`CloudPools now writes through OneBucket to AWS. Nothing has changed from the cluster’s point of view — and this is the last time you edit anything in OneFS.`})})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`part-2-move-the-cloud-tier-to-wasabi`,children:`Part 2: Move the cloud tier to Wasabi`}),`\n`,_jsx(_components.p,{children:`Everything from here happens in the OneBucket console. OneFS keeps pointing at the same endpoint with the same credentials throughout.`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Open the policy for editing`,children:[_jsxs(_components.p,{children:[`On `,_jsx(_components.strong,{children:`Policies`}),`, select the gear icon on your policy to open `,_jsx(_components.strong,{children:`Update Policy`}),`. The dialog exposes the same four stages as the wizard — `,_jsx(_components.strong,{children:`OneBucket™`}),`, `,_jsx(_components.strong,{children:`Peer Bucket`}),`, `,_jsx(_components.strong,{children:`Sync Quorum`}),`, and `,_jsx(_components.strong,{children:`Core Keys`}),` — as tabs you can revisit in any order.`]}),_jsxs(_components.p,{children:[`Open the `,_jsx(_components.strong,{children:`Peer Bucket`}),` tab. Today it lists one `,_jsx(_components.code,{children:`sync`}),` peer on `,_jsx(_components.code,{children:`AWS`}),`.`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-01-policy.png?fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=63ad9b519535820b968d5bf33a491be1`,alt:`The Update Policy dialog showing a single AWS peer`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1253`,height:`1253`,\"data-path\":`images/03-01-policy.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-01-policy.png?w=280\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=82c3855072948da16842995b4ad58909 280w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-01-policy.png?w=560\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=8dfc184b38f1dcf91455104d8226c827 560w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-01-policy.png?w=840\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=b4309378b93984d955c560e084decaae 840w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-01-policy.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=0139e79168c115a5464bfff7bc72716d 1100w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-01-policy.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=8b1739992233b346ca9e935c40a43b9f 1650w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-01-policy.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=f22ef7661e0a6012e336f41aeca2b36f 2500w`})]}),_jsxs(Step,{title:`Add Wasabi as a second synchronous peer`,children:[_jsxs(_components.p,{children:[`Select `,_jsx(_components.strong,{children:`Add another Peer Bucket`}),`. Choose `,_jsx(_components.strong,{children:`Synchronous`}),`, leave `,_jsx(_components.strong,{children:`Active`}),` on, and grant `,_jsx(_components.strong,{children:`Read`}),`, `,_jsx(_components.strong,{children:`Write`}),`, and `,_jsx(_components.strong,{children:`Delete`}),`.`]}),_jsxs(_components.p,{children:[`Select `,_jsx(_components.strong,{children:`Turn on opportunistic replication`}),` so OneBucket populates Wasabi as objects move through it, rather than requiring a separate bulk copy. Set `,_jsx(_components.strong,{children:`Endpoint`}),` to `,_jsx(_components.code,{children:`WASABI`}),` and select the Wasabi `,_jsx(_components.strong,{children:`Access Key ID`}),` you registered with that Endpoint.`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-02-policy.png?fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=9513f3137f5988222f9a77e9b00f5364`,alt:`Adding a synchronous Wasabi peer with opportunistic replication enabled`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1244`,height:`1244`,\"data-path\":`images/03-02-policy.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-02-policy.png?w=280\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=a8824fcfb2f45e458a65490b5ff28c9b 280w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-02-policy.png?w=560\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=669a46c2cfd3380f15592170fa463d15 560w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-02-policy.png?w=840\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=afd9e33c6ab27bff6acb45462efca7d9 840w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-02-policy.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=f055a315a99ba3dcd314942853061476 1100w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-02-policy.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=e1486e408c810c001987821469cc8ff3 1650w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-02-policy.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=69545451f4d614524f1e8ce2943debc7 2500w`})]}),_jsxs(Step,{title:`Set the peer bucket name and apply`,children:[_jsxs(_components.p,{children:[`Scroll to `,_jsx(_components.strong,{children:`Peer Bucket`}),` and enter `,_jsx(_components.code,{children:`*`}),` to keep bucket names identical across providers. You can instead add a prefix or suffix — `,_jsx(_components.code,{children:`backup-*`}),`, for example — to rename buckets on this backend only.`]}),_jsxs(_components.p,{children:[`Select `,_jsx(_components.strong,{children:`Apply`}),`.`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-03-policy.png?fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=f74ec56216f91859fb16a19c70286bba`,alt:`The Peer Bucket field set to an asterisk before applying`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1253`,height:`1253`,\"data-path\":`images/03-03-policy.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-03-policy.png?w=280\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=5a6e8b0e43f3e2746fb6f5f65a0c10d0 280w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-03-policy.png?w=560\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=490c2088af7182a10de493d94dd143d0 560w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-03-policy.png?w=840\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=4476ece68c771428987fd15009388bd5 840w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-03-policy.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=ad87d67569b949abd39ac13d7e3e797a 1100w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-03-policy.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=fd30e9cb44c5513d28be79f8a49afa9a 1650w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-03-policy.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=74bcb986e49efadd2fbb538eeea505da 2500w`})]}),_jsxs(Step,{title:`Demote AWS to read-only`,children:[_jsxs(_components.p,{children:[`Edit the AWS peer and clear `,_jsx(_components.strong,{children:`Write`}),` and `,_jsx(_components.strong,{children:`Delete`}),`, leaving `,_jsx(_components.strong,{children:`Read`}),` selected. New objects now go only to Wasabi, while anything not yet replicated is still served from AWS.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Replication`}),` and `,_jsx(_components.strong,{children:`Compression`}),` grey out once the peer can no longer be written to, and so do its Endpoint and key fields.`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-04-policy.png?fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=c133a8483b0b472a49d1e8eec2ae0cff`,alt:`The AWS peer with only Read permission, replication greyed out`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1253`,height:`1253`,\"data-path\":`images/03-04-policy.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-04-policy.png?w=280\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=0df8791361754e368a1b6defaf76210d 280w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-04-policy.png?w=560\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=1aacc3db277feb5b2c35534d8679cd89 560w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-04-policy.png?w=840\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=f4d0f0cca86f7bece928c0b07519f5d2 840w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-04-policy.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=a3d0effa117a59655122ac8f1f2eca1b 1100w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-04-policy.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=2de63ac07f3918ebe449b6eac96417e4 1650w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-04-policy.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=cd1c0c7bf67e8374392295d47896530c 2500w`})]}),_jsxs(Step,{title:`Confirm both peers`,children:[_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Peer Bucket`}),` tab now lists AWS in sequence `,_jsx(_components.code,{children:`1`}),` and Wasabi in sequence`,_jsx(_components.code,{children:`2`}),`, both `,_jsx(_components.code,{children:`sync`}),` and both active. Sequence controls the order OneBucket tries peers — drag a row by its handle to change it.`]}),_jsxs(_components.p,{children:[`Select `,_jsx(_components.strong,{children:`Apply changes`}),`.`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-05-policy.png?fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=c34bc3907e87ec8abe4f8602a6a5d246`,alt:`Both AWS and Wasabi peers listed as active synchronous peers`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1253`,height:`1253`,\"data-path\":`images/03-05-policy.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-05-policy.png?w=280\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=0990f0060115055007402cd43f7ef167 280w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-05-policy.png?w=560\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=f68c7c315c8e795ce0608b4b87c7ed33 560w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-05-policy.png?w=840\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=99d5d5f88ea5f9f70fcb7434ba036576 840w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-05-policy.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=3d8e917b3b7f7a34c206f2349df60e6f 1100w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-05-policy.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=02d78a2b92c93fe026ee8b943ec3fcd4 1650w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-05-policy.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=a76b9b5dc611a685a2898f51e0024d9b 2500w`})]}),_jsxs(Step,{title:`Verify the policy`,children:[_jsxs(_components.p,{children:[`The policy summary shows two active `,_jsx(_components.code,{children:`sync`}),` peers. `,_jsx(_components.strong,{children:`Quorum`}),` is still`,_jsx(_components.code,{children:`1`}),`, so a write succeeds as soon as one synchronous peer with write access acknowledges it.`]}),_jsx(Note,{children:_jsx(_components.p,{children:`Don’t wait for tiering activity to fill Wasabi. Opportunistic replication only copies objects as they move through OneBucket — and CloudPools touches cold data rarely. A recall is read-only, and even when a file changes, CloudPools writes new objects and leaves the old ones in place until garbage collection, which defaults to years.`})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Drain AWS as its own step.`}),` Use `,_jsx(_components.strong,{children:`flux`}),`, OneBucket’s asynchronous movement engine, to copy the AWS bucket to Wasabi in the background. OneBucket stays in front the whole time, so CloudPools keeps seeing one endpoint while the copy runs. Flux isn’t required, either: any copy tool works because OneBucket fronts both buckets regardless.`]}),_jsx(_components.p,{children:`Leave the policy in this state until Wasabi holds everything you need.`}),_jsx(OptimizedImage,{src:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-06-policy.png?fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=fad99c89d48377ee6e16ed38e0fe3be5`,alt:`The policy listing two active synchronous peers`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1253`,height:`1253`,\"data-path\":`images/03-06-policy.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-06-policy.png?w=280\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=104013496e4cc1eae51ae57f254ca94d 280w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-06-policy.png?w=560\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=7fc118a350e703fad043956e69465374 560w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-06-policy.png?w=840\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=dcd2620a1f164b89ef2ad0fc220df7cd 840w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-06-policy.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=e3ba71f09bb343a91941051f94d58eef 1100w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-06-policy.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=07fbbb6539b5e0fbf6fdb9a172f459c3 1650w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/03-06-policy.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=42d93688dc108d00b037ec753974db58 2500w`})]}),_jsxs(Step,{title:`Deactivate the AWS peer`,children:[_jsxs(_components.p,{children:[`When you’re ready to stop reading from AWS, switch its `,_jsx(_components.strong,{children:`Active`}),` toggle off in the policy list. A banner appears: `,_jsx(_components.strong,{children:`This policy includes disabled Peer Bucket(s)`}),`.`]}),_jsx(_components.p,{children:`Deactivating is reversible — toggle it back on if reads start failing.`}),_jsx(OptimizedImage,{src:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-01-policy.png?fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=54d5ef48b74b82c0c9e914749f77a363`,alt:`The AWS peer deactivated, with a warning banner on the policy`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1253`,height:`1253`,\"data-path\":`images/04-01-policy.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-01-policy.png?w=280\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=56c3d6ee74f249c37644dcf242afde5e 280w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-01-policy.png?w=560\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=a8c7ea29ce922fdb47c81f137e0316c9 560w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-01-policy.png?w=840\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=0ff9e4e333e419ade9c038d8509c04d5 840w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-01-policy.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=0f67e60cf7bfbcae5c9a4d146d66e704 1100w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-01-policy.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=6b7a3fa0c6d171aa0d4e3a034b61b390 1650w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-01-policy.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=419a562dd90e2a91de021c41f6c8fc28 2500w`})]}),_jsxs(Step,{title:`Confirm the peer is inactive`,children:[_jsxs(_components.p,{children:[`Reopen `,_jsx(_components.strong,{children:`Update Policy`}),` and check the `,_jsx(_components.strong,{children:`Peer Bucket`}),` tab. AWS shows as inactive, Wasabi as active.`]}),_jsx(_components.p,{children:`Run your validation here — list buckets, read a recalled file, write a new one — while the AWS peer can still be re-enabled.`}),_jsx(OptimizedImage,{src:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-02-policy.png?fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=b7c2373b504cc51eee7929b250bb3cf2`,alt:`The Update Policy dialog with AWS inactive and Wasabi active`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1253`,height:`1253`,\"data-path\":`images/04-02-policy.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-02-policy.png?w=280\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=5aafade78a527f23b196a7b3aa61b254 280w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-02-policy.png?w=560\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=20ee880563deb70f9a817d1e730ab0d8 560w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-02-policy.png?w=840\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=deef42184edfb3dc9a2eb6e8cb180d00 840w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-02-policy.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=b1947c52db28d6c82e71fe292b2bc99d 1100w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-02-policy.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=dd834d0d48b8af74b6ce349f3de2aecb 1650w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-02-policy.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=0ab64a9cef630c1e662370de912946dc 2500w`})]}),_jsxs(Step,{title:`Delete the AWS peer`,children:[_jsxs(_components.p,{children:[`Select the trash icon on the AWS row and confirm `,_jsx(_components.strong,{children:`Delete`}),`.`]}),_jsx(Warning,{children:_jsx(_components.p,{children:`Removing a Peer Bucket removes OneBucket’s route to that backend. Objects that exist only on AWS become unreachable through this OneBucket™. Confirm Wasabi holds everything you need before you delete.`})}),_jsx(OptimizedImage,{src:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-03-policy.png?fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=ca5d332e35905c551224519ce2571b0b`,alt:`The Delete Remote confirmation dialog`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1253`,height:`1253`,\"data-path\":`images/04-03-policy.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-03-policy.png?w=280\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=bda1724a29cccbe3eae7da52974fbda3 280w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-03-policy.png?w=560\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=a2244c8f0f17dd11fc7237d379bbedb0 560w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-03-policy.png?w=840\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=83221c3f2f67bb844677445382403746 840w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-03-policy.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=e49843386861a638d2dbde12f5c7bfc9 1100w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-03-policy.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=1080c64fa9368c2c1b9c342a9cd4eab1 1650w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-03-policy.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=ff7a4898544968096a7cde4c869dcf62 2500w`})]}),_jsxs(Step,{title:`Confirm Wasabi is the only peer`,children:[_jsxs(_components.p,{children:[`One `,_jsx(_components.code,{children:`sync`}),` peer remains on `,_jsx(_components.code,{children:`WASABI`}),`. Select `,_jsx(_components.strong,{children:`Apply changes`}),`.`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-04-policy.png?fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=3b49127295d7662efc69e26439e2c172`,alt:`The Update Policy dialog with Wasabi as the only peer`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1253`,height:`1253`,\"data-path\":`images/04-04-policy.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-04-policy.png?w=280\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=72ae93a0898cefc0275692e93de0a77a 280w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-04-policy.png?w=560\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=8341e5f7692ebcae2108950adc1cee96 560w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-04-policy.png?w=840\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=3ef0e2ba006afc4e54ff5ff28a3b2974 840w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-04-policy.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=b6b2c1c8f0358def3376559359a4d220 1100w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-04-policy.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=a147c59b20e8bfbdd43f78cfda0c27f5 1650w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-04-policy.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=1bb8babe3b49224cc347fbcbcb218a88 2500w`})]}),_jsxs(Step,{title:`Verify the finished policy`,children:[_jsxs(_components.p,{children:[`The policy shows a single active `,_jsx(_components.code,{children:`sync`}),` peer on`,_jsx(_components.code,{children:`WASABI`}),`, and the warning banner is gone.`]}),_jsx(OptimizedImage,{src:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-05-policy.png?fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=9dc21e484ee771698370d42f178d829a`,alt:`The final policy with Wasabi as the only active peer`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1253`,height:`1253`,\"data-path\":`images/04-05-policy.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-05-policy.png?w=280\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=4edac433b68d6cac1ff02571d9b06fcc 280w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-05-policy.png?w=560\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=694b6f976f68750920e5ee7472de493a 560w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-05-policy.png?w=840\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=081ace45e7046df7a24801569f2fae64 840w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-05-policy.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=9a7fec0139da1dc806562cc25f80b7ce 1100w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-05-policy.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=02355c4c627028e3ce3f3bac18c34768 1650w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/04-05-policy.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=3e38699a2d8c73778ca4a24d90078720 2500w`}),_jsx(Check,{children:_jsx(_components.p,{children:`CloudPools is now tiering to Wasabi. The OneFS cloud storage account still points at the same OneBucket endpoint with the same credentials it had at the end of Part 1 — it was never touched during the migration.`})})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`why-not-point-cloudpools-straight-at-wasabi`,children:`Why not point CloudPools straight at Wasabi?`}),`\n`,_jsx(_components.p,{children:`You can. Editing the same OneFS dialog to use a Wasabi URI and Wasabi keys is a valid way to change providers.`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/05-01cloudpools-wasabi-s3.png?fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=43a9b12e90231339a3948295bbfb4548`,alt:`A OneFS cloud storage account pointed directly at Wasabi`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`1224`,height:`1224`,\"data-path\":`images/05-01cloudpools-wasabi-s3.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/05-01cloudpools-wasabi-s3.png?w=280\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=bdcf0dcd753b9c86f11838a92e19c0a3 280w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/05-01cloudpools-wasabi-s3.png?w=560\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=3b1a82035aa90054df7c0cbe9ebe1c62 560w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/05-01cloudpools-wasabi-s3.png?w=840\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=5f85d767150df597ab6a80a1dced9fa5 840w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/05-01cloudpools-wasabi-s3.png?w=1100\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=b5d943357bc11675ab81a49a0606b6ee 1100w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/05-01cloudpools-wasabi-s3.png?w=1650\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=b5702f95fc7ff1808999b7007948ad8f 1650w, https://mintcdn.com/onebucket/fUC0rxB50q9n4F86/images/05-01cloudpools-wasabi-s3.png?w=2500\u0026fit=max\u0026auto=format\u0026n=fUC0rxB50q9n4F86\u0026q=85\u0026s=144eb72cdf7ed248a51007ce3672c06f 2500w`}),`\n`,_jsxs(_components.p,{children:[`What it does not do is move your data. Every file CloudPools has already tiered is a stub on the cluster pointing at an object in the `,_jsx(_components.em,{children:`old`}),` account. Change that account’s target, and the stubs still reference AWS.`]}),`\n`,_jsx(_components.p,{children:`To actually leave AWS, you have to bring the data home and send it out again: recall every tiered file back onto the cluster, then re-tier it to Wasabi. That is the expensive part, and it is expensive three ways at once.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{}),_jsx(_components.th,{children:`Cost of a recall-and-re-tier`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Capacity`})}),_jsx(_components.td,{children:`The cluster needs enough free space to hold data it deliberately tiered off.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Time and egress`})}),_jsx(_components.td,{children:`Every object crosses the wire twice — cloud to cluster, cluster to cloud — and you pay AWS egress on the way in.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Risk`})}),_jsx(_components.td,{children:`It is a change window, with stubs being rewritten while users are reading through them.`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`The timing is what makes the difference. Make this edit `,_jsx(_components.em,{children:`as`}),` your migration, and you pay the table above. Make it `,_jsx(_components.em,{children:`after`}),` OneBucket has already moved the data and it costs nothing — see `,_jsx(_components.strong,{children:`No lock-in`}),` below.`]}),`\n`,_jsx(Heading,{level:`2`,id:`what-this-bought-you`,children:`What this bought you`}),`\n`,_jsx(_components.p,{children:`Going through OneBucket, none of that happened.`}),`\n`,_jsxs(CardGroup,{cols:3,children:[_jsx(Card,{title:`No rehydration`,icon:`database`,children:_jsx(_components.p,{children:`Not one tiered file came back to the cluster.`})}),_jsx(Card,{title:`No downtime`,icon:`clock`,children:_jsx(_components.p,{children:`No change window. CloudPools served reads and writes throughout.`})}),_jsx(Card,{title:`No migration project`,icon:`list-check`,children:_jsx(_components.p,{children:`No copy job to scope, schedule, run, and reconcile.`})})]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`No rehydration.`}),` The stubs never changed, because the endpoint they point at never changed. `,_jsx(_components.code,{children:`s3.cluster8.onebucket.io`}),` was the target before the swap and after it. Which provider sits behind that name is a policy detail the cluster never sees — so there was nothing to recall and nothing to re-tier, and the cluster needed no spare capacity to absorb it.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`No downtime.`}),` No cutover moment to schedule. AWS served reads while Wasabi filled; both served reads once Wasabi was warm, and Wasabi served them alone at the end. Every step in Part 2 was a toggle you could flip back, right up until you deleted the AWS peer.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`No migration project.`}),` Opportunistic replication seeded Wasabi with everything CloudPools touched, and flux drained the cold remainder behind the bucket. The copy never involved the cluster or a maintenance calendar — the only judgment call was when Wasabi held enough for AWS to go.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`No lock-in.`}),` OneBucket does not have to stay in the path. Because the policy used `,_jsx(_components.code,{children:`*`}),` as the Peer Bucket name and no encoding, the objects now in Wasabi carry the same bucket names and the same keys they had on AWS. So once Wasabi holds a complete copy, you open that OneFS dialog one final time, point it straight at Wasabi with your Wasabi keys, and CloudPools resolves its existing stubs against Wasabi directly. The edit that was expensive as a migration method costs nothing as a postscript.`]}),`\n`,_jsx(_components.p,{children:`Which is the part worth saying plainly: the thing that made the move safe is not something you are then stuck with. Keep OneBucket for what it does next — a third provider, a cache tier, spreading reads, the next move. Remove it if you would rather not have it in the data path. Either way the migration is done, and it was done without a recall.`}),`\n`,_jsx(Check,{children:_jsxs(_components.p,{children:[`Tested end to end: stubs written through OneBucket resolve correctly once the CloudPools account points straight at Wasabi. It relies on the objects being stored unchanged — keep the Peer Bucket as `,_jsx(_components.code,{children:`*`}),` with no prefix or suffix, and leave policy encoding off.`]})}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`Data still has to cross from AWS to Wasabi, and you still pay egress once for the objects that move. The difference is that it happens behind the bucket, on its own schedule, while both providers keep serving — instead of through the cluster, in a window, with capacity set aside for it.`})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`And it is repeatable.`}),` Adding a third provider, splitting reads across two, or reversing this entire move is the same handful of policy edits. CloudPools keeps tiering exactly as designed — it just gains a cloud tier that is no longer a single fixed destination.`]}),`\n`,_jsx(Heading,{level:`2`,id:`next`,children:`Next`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Set up your OneBucket`,icon:`sliders`,href:`/setup`,children:_jsx(_components.p,{children:`Credentials, Endpoints, and policies from scratch.`})}),_jsx(Card,{title:`Architecture`,icon:`layers`,href:`/concepts/architecture`,children:_jsx(_components.p,{children:`How placement, caching, and quorum work behind the bucket.`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Migrate CloudPools from AWS to Wasabi","sidebarTitle":"CloudPools migration","description":"Put OneBucket in front of PowerScale CloudPools, then move the cloud tier from AWS S3 to Wasabi without reconfiguring the OneFS cluster.","icon":"cloud-arrow-up","href":"/guides/cloudpools-migration"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"What this buys you","slug":"what-this-buys-you","depth":2,"children":[]},{"title":"Before you start","slug":"before-you-start","depth":2,"children":[]},{"title":"Part 1: Put OneBucket in front of CloudPools","slug":"part-1-put-onebucket-in-front-of-cloudpools","depth":2,"children":[]},{"title":"Part 2: Move the cloud tier to Wasabi","slug":"part-2-move-the-cloud-tier-to-wasabi","depth":2,"children":[]},{"title":"Why not point CloudPools straight at Wasabi?","slug":"why-not-point-cloudpools-straight-at-wasabi","depth":2,"children":[]},{"title":"What this bought you","slug":"what-this-bought-you","depth":2,"children":[]},{"title":"Next","slug":"next","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"onebucket","siteName":"OneBucket","title":"Migrate CloudPools from AWS to Wasabi - OneBucket","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-31T19:40:17.173Z","originalFileLocation":"guides/cloudpools-migration.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Put OneBucket in front of PowerScale CloudPools, then move the cloud tier from AWS S3 to Wasabi without reconfiguring the OneFS cluster.\">\u003cmeta data-mint-head name=\"application-name\" content=\"OneBucket\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/svg+xml\" sizes=\"180x180\" href=\"https://www.onebucket.io/onebucket-icon.svg\">\u003clink data-mint-head rel=\"icon\" type=\"image/svg+xml\" sizes=\"32x32\" href=\"https://www.onebucket.io/onebucket-icon.svg\">\u003clink data-mint-head rel=\"icon\" type=\"image/svg+xml\" sizes=\"16x16\" href=\"https://www.onebucket.io/onebucket-icon.svg\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/svg+xml\" href=\"https://www.onebucket.io/onebucket-icon.svg\">\u003cmeta data-mint-head property=\"og:title\" content=\"Migrate CloudPools from AWS to Wasabi - OneBucket\">\u003cmeta data-mint-head property=\"og:description\" content=\"Put OneBucket in front of PowerScale CloudPools, then move the cloud tier from AWS S3 to Wasabi without reconfiguring the OneFS cluster.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"OneBucket\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.onebucket.io/guides/cloudpools-migration\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://onebucket.mintlify.app/_mintlify/api/og/v2?division=Guides\u0026amp;title=Migrate+CloudPools+from+AWS+to+Wasabi\u0026amp;description=Put+OneBucket+in+front+of+PowerScale+CloudPools%2C+then+move+the+cloud+tier+from+AWS+S3+to+Wasabi+without+reconfiguring+the+OneFS+cluster.\u0026amp;theme=7e5af826b2586f3758160aa1\u0026amp;signature=213ef9b22b8c426aedbd3e23ab14565759021d7c6c8ee9f7323612a095c45102\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Migrate CloudPools from AWS to Wasabi - OneBucket\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Put OneBucket in front of PowerScale CloudPools, then move the cloud tier from AWS S3 to Wasabi without reconfiguring the OneFS cluster.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://onebucket.mintlify.app/_mintlify/api/og/v2?division=Guides\u0026amp;title=Migrate+CloudPools+from+AWS+to+Wasabi\u0026amp;description=Put+OneBucket+in+front+of+PowerScale+CloudPools%2C+then+move+the+cloud+tier+from+AWS+S3+to+Wasabi+without+reconfiguring+the+OneFS+cluster.\u0026amp;theme=7e5af826b2586f3758160aa1\u0026amp;signature=213ef9b22b8c426aedbd3e23ab14565759021d7c6c8ee9f7323612a095c45102\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"https://mintlify.s3.us-west-1.amazonaws.com/onebucket/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"OneBucket\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#E31B23\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.onebucket.io/guides/cloudpools-migration\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/cloudpools-migration.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.onebucket.io/#organization\",\"name\":\"OneBucket\",\"url\":\"https://docs.onebucket.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.onebucket.io/onebucket-icon.svg\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.onebucket.io#website\",\"name\":\"OneBucket\",\"url\":\"https://docs.onebucket.io\",\"publisher\":{\"@id\":\"https://docs.onebucket.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.onebucket.io/guides/cloudpools-migration#webpage\",\"url\":\"https://docs.onebucket.io/guides/cloudpools-migration\",\"name\":\"Migrate CloudPools from AWS to Wasabi\",\"description\":\"Put OneBucket in front of PowerScale CloudPools, then move the cloud tier from AWS S3 to Wasabi without reconfiguring the OneFS cluster.\",\"dateModified\":\"2026-08-31T19:40:17.173Z\",\"isPartOf\":{\"@id\":\"https://docs.onebucket.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.onebucket.io/guides/cloudpools-migration#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.onebucket.io/guides/cloudpools-migration#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"OneBucket\",\"item\":\"https://docs.onebucket.io\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Migrate CloudPools from AWS to Wasabi\",\"item\":\"https://docs.onebucket.io/guides/cloudpools-migration\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.onebucket.io/guides/cloudpools-migration#article\",\"headline\":\"Migrate CloudPools from AWS to Wasabi\",\"name\":\"Migrate CloudPools from AWS to Wasabi\",\"description\":\"Put OneBucket in front of PowerScale CloudPools, then move the cloud tier from AWS S3 to Wasabi without reconfiguring the OneFS cluster.\",\"url\":\"https://docs.onebucket.io/guides/cloudpools-migration\",\"mainEntityOfPage\":{\"@id\":\"https://docs.onebucket.io/guides/cloudpools-migration#webpage\"},\"dateModified\":\"2026-08-31T19:40:17.173Z\",\"publisher\":{\"@id\":\"https://docs.onebucket.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.onebucket.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"OneBucket\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"OneBucket","nav":{"global":null,"groups":[{"group":"Getting Started","pages":[{"title":"Introduction","href":"/index"},{"title":"Quickstart","href":"/quickstart"},{"title":"Set up your OneBucket","sidebarTitle":"Setup","icon":"sliders","href":"/setup"}]},{"group":"Concepts","icon":"layers","pages":[{"title":"Architecture","description":"How the Adaptive Data Fabric presents every backend as one logical bucket — placement, caching, and access over S3 and MCP.","icon":"layers","href":"/concepts/architecture"}]},{"group":"Guides","icon":"book-open-cover","pages":[{"title":"Migrate CloudPools from AWS to Wasabi","sidebarTitle":"CloudPools migration","icon":"cloud-arrow-up","href":"/guides/cloudpools-migration"}]},{"group":"Connectors","icon":"plug","pages":[{"title":"OneBucket Connector for Claude","sidebarTitle":"Claude","description":"Connect Claude to your OneBucket over MCP — browse, read, and manage objects and query activity, using your own credentials.","icon":"plug","href":"/connectors/claude"}]},{"group":"Reference","icon":"book","pages":[{"title":"S3 API compatibility","sidebarTitle":"S3 API","icon":"code","href":"/reference/s3-api"},{"title":"CLI reference","sidebarTitle":"CLI","icon":"terminal","href":"/reference/cli"}]}]},"title":"Migrate CloudPools from AWS to Wasabi - OneBucket","buildId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","deploymentId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-CFBqa0On.js","lightbox-handle-r17bVUz3.js"]}