Setting up Artifactory to Use S3If you are moving your filestore to S3 in the context of upgrading Artifactory, or a first time installation, we recommend that you first do a standard installation of Artifactory using the default settings, or a standard upgrade using your current settings. |
In order to move your Artifactory filestore to the cloud, you need to execute the following steps: Setting Your LicenseTo use an S3 object store, your Artifactory installation needs to be activated with the appropriate JFrog license. Configuring Artifactory to Use S3From version 4.6, Artifactory's filestore is configured through the binarystore.xml file. For details, please refer to Configuring the Filestore. Eventual Versus Direct (eventual-less) Upload MechanismIf you are migrating from any eventual mechanism to the direct upload mechanism, make sure your eventual directory is empty or you could experience data loss. |
The default S3 chain templates rely on an eventual upload mechanism, whereby an upload from a client is considered successful when the full binary has been uploaded to Artifactory. From Artifactory 7.9.0, the direct upload mechanism serves as an alternative mechanism whereby an upload is not considered successful until it reaches S3. There are advantages to both which we cover below: Eventual upload mechanism- Client uploads an artifact to Artifactory.
- Artifactory receives the full upload.
- Artifactory returns a 201 success message to the client.
- A database entry for the artifact is created.
- The binary is stored in an eventual directory on the local disk.
- Artifactory uploads the binary to S3.
- The binary is deleted from the eventual directory.
Advantages - Uploads may be faster when the S3 upload speed is slow (such as when Artifactory is hosted on-prem).
- Uploads are still possible when S3 is down or experiencing network issues.
Direct Upload Mechanism- Client uploads an artifact to Artifactory.
- Artifactory receives and simultaneously uploads to S3.
- Artifactory finishes uploading the binary to S3
- Artifactory returns 201 success to the client.
- A database entry for the artifact is created.
Advantages - No need for persistent storage for the eventual directory.
- Uploads may be faster due to less contention for disk IO, particularly when Artifactory is hosted on AWS.
Migrating Your Filestore from local/mounted storage to S3 - For an Artifactory HA cluster running version 5.0 and above, to migrate your filestore to an S3 provider, please refer to Migrating Data from NFS.
Standalone installations: there are two ways to migrate your filestore over to your S3 provider. Automatic Filestore Migration (Recommended)To make sure your filestore migration completes successfully without corrupting files, we recommend configuring Artifactory to do this migration for you automatically: To do so, you need to create the following links in $JFROG_HOME/artifactory/var/data/artifactory/eventual/ (create it if the eventual folder does not exist - it is created automatically when the eventual binary provider is applied via an Artifactory restart with an updated binarystore.xml): - A link with the name
_add that points to the $JFROG_HOME/artifactory/var/data/artifactory/filestore directory - A link with the name _pre that points to the
$JFROG_HOME/artifactory/var/data/artifactory/filestore/_pre directory
With this setting, as soon as Artifactory starts up, it will automatically move your complete filestore over to your S3 provider.
Artifactory versions below 6.2.0 will migrate the filestore to the S3 bucket automatically. There is no need to create a link to the $JFROG_HOME/artifactory/var/data/artifactory/ filestore directory. |
The process of moving your filestore to your S3 provider will delete your current filestore. We strongly recommend you do a complete system backup before doing this migration. |
Once the migration is complete, you may delete the _pre link and the $JFROG_HOME/artifactory/var/data/artifactory /_pre directory |
Manual Filestore Migration
To migrate your filestore manually, you need to execute the following steps: - Stop Artifactory
- Copy the
$JFROG_HOME/artifactory/var/data/artifactory/filestore directory to your S3 object storage to the bucket name and path specified when you configured Artifactory to use S3. - Start Artifactory
Server Side Encryption SupportFrom version 5.7.0, Artifactory supports SSE-KMS. You can configure Artifactory to work against an S3 bucket that is configured with Server Side Encryption. To set up Artifactory to work with against an S3 bucket configured with KMS, add the following line to the bintraystore.xml file: <property name="s3service.server-side-encryption" value="aws:kms"></property> |