 to install and configure the AWS CLI on your hostyou don't need to care about enabling your other stack components (orchestrators, step operators, and model deployers) to have access to the artifact store through IAM roles and policies

you can combine the S3 artifact store with other stack components that are not running in AWS

Note: When you create the IAM user for your AWS access key, please remember to grant the created IAM user permissions to read and write to your S3 bucket (i.e. at a minimum: s3:PutObject, s3:GetObject, s3:ListBucket, s3:DeleteObject)

After having set up the IAM user and generated the access key, as described in the AWS documentation, you can register the S3 Artifact Store as follows:

# Store the AWS access key in a ZenML secret

zenml secret create s3_secret \

--aws_access_key_id='<YOUR_S3_ACCESS_KEY_ID>' \

--aws_secret_access_key='<YOUR_S3_SECRET_KEY>'

# Register the S3 artifact-store and reference the ZenML secret

zenml artifact-store register s3_store -f s3 \

--path='s3://your-bucket' \

--authentication_secret=s3_secret

# Register and set a stack with the new artifact store

zenml stack register custom_stack -a s3_store ... --set

Advanced Configuration

The S3 Artifact Store accepts a range of advanced configuration options that can be used to further customize how ZenML connects to the S3 storage service that you are using. These are accessible via the client_kwargs, config_kwargs and s3_additional_kwargs configuration attributes and are passed transparently to the underlying S3Fs library:

client_kwargs: arguments that will be transparently passed to the botocore client . You can use it to configure parameters like endpoint_url and region_name when connecting to an S3-compatible endpoint (e.g. Minio).

config_kwargs: advanced parameters passed to botocore.client.Config.

s3_additional_kwargs: advanced parameters that are used when calling S3 API, typically used for things like ServerSideEncryption and ACL.