
AWS S3 Copy
CertifiedCopy an object between S3 locations
AWS S3 Copy
Copy an object between S3 locations
Copies an object within or across buckets. Optionally deletes the source after copy. Supports versionId on source and SSE on destination.
type: io.kestra.plugin.aws.s3.CopyExamples
id: aws_s3_copy
namespace: company.team
tasks:
- id: copy
type: io.kestra.plugin.aws.s3.Copy
accessKeyId: "{{ secret('AWS_ACCESS_KEY_ID') }}"
secretKeyId: "{{ secret('AWS_SECRET_KEY_ID') }}"
region: "eu-central-1"
from:
bucket: "my-bucket"
key: "path/to/file"
to:
bucket: "my-bucket2"
key: "path/to/file2"
Installation
Our standard Docker images already include this plugin. If you use a -slim image or another setup, install it with the following command:
kestractl plugins get io.kestra.plugin:plugin-aws --compatible-for $KESTRA_VERSION For kestractl, use your Kestra version with --compatible-for, or specify an exact plugin version.
For Kestra CLI, replace LATEST with a specific version or version range to pin the plugin version.
Properties
accessKeyId string
Access Key Id in order to connect to AWS
If no credentials are defined, we will use the default credentials provider chain to fetch credentials.
assets
Assets this task consumes as inputs or produces as outputs, for lineage tracking and the asset graph (Enterprise Edition). A flow declaring this property on a task is rejected in the open-source edition.
io.kestra.core.models.assets.AssetsDeclaration
IGNOREFAILWARNAsset failure behavior
Behavior applied to the task state when a declared asset fails to render, emit, or be persisted (e.g. a lock conflict): FAIL escalates it to FAILED, WARN (default) warns it if it would otherwise succeed, IGNORE leaves the state untouched.
Whether to auto-register assets referenced dynamically at runtime that are not statically declared in inputs or outputs.
The assets consumed as inputs.
io.kestra.core.models.assets.AssetIdentifier
1The assets produced as outputs.
io.kestra.plugin.ee.assets.Dataset
1150{}1150io.kestra.plugin.ee.assets.File
1150{}1150io.kestra.plugin.ee.assets.Table
1150{}1150io.kestra.plugin.ee.assets.VM
1150{}1150io.kestra.core.models.assets.External
1150{}1150io.kestra.core.models.assets.Custom
11501Custom asset type
{}1150compatibilityMode booleanstring
Enable compatibility mode
Use it to connect to S3 bucket with S3 compatible services that don't support the new transport client.
delete booleanstring
falseDelete source after copy
If true, deletes the source object once copy succeeds.
endpointOverride string
The endpoint with which the SDK should communicate
This property allows you to use a different S3 compatible storage backend.
forcePathStyle booleanstring
Force path style access
Use path-style URLs (https://endpoint/bucket/key) instead of virtual-hosted-style URLs (https://bucket.endpoint/key). Required by most S3-compatible services such as MinIO, RustFS or LocalStack. Works with or without compatibilityMode.
from
Source object
Bucket/key (and optional versionId) to copy from.
io.kestra.plugin.aws.s3.Copy-CopyObjectFrom
Bucket
Key
KMS Key ARN or Key ID to use when server side encryption is AWS_KMS
NONEAES256AWS_KMSServer side encryption to apply to the target object
Example: AES256 or AWS_KMS
The specific version of the object
region string
AWS region with which the SDK should communicate
secretKeyId string
Secret Key Id in order to connect to AWS
If no credentials are defined, we will use the default credentials provider chain to fetch credentials.
sessionToken string
AWS session token, retrieved from an AWS token service, used for authenticating that this user has received temporary permissions to access a given resource
If no credentials are defined, we will use the default credentials provider chain to fetch credentials.
stsEndpointOverride string
The AWS STS endpoint with which the SDKClient should communicate
stsRoleArn string
AWS STS Role
The Amazon Resource Name (ARN) of the role to assume. If set the task will use the StsAssumeRoleCredentialsProvider. If no credentials are defined, we will use the default credentials provider chain to fetch credentials.
stsRoleExternalId string
AWS STS External Id
A unique identifier that might be required when you assume a role in another account. This property is only used when an stsRoleArn is defined.
stsRoleSessionDuration string
PT15MAWS STS Session duration
The duration of the role session (default: 15 minutes, i.e., PT15M). This property is only used when an stsRoleArn is defined.
stsRoleSessionName string
AWS STS Session name
This property is only used when an stsRoleArn is defined.
to
Destination object
Bucket/key to copy to; defaults to source when omitted.
io.kestra.plugin.aws.s3.Copy-CopyObject
Bucket
Key
KMS Key ARN or Key ID to use when server side encryption is AWS_KMS
NONEAES256AWS_KMSServer side encryption to apply to the target object
Example: AES256 or AWS_KMS
webIdentityToken string
OIDC token to assume the STS role with
When set together with stsRoleArn, the role is assumed through AssumeRoleWithWebIdentity and no AWS credentials are needed at all: AWS verifies the token against the identity provider that issued it.
Use {{ oidcToken(audience='sts.amazonaws.com') }} to have Kestra Enterprise mint one for the running execution.
The resulting credentials last stsRoleSessionDuration; the token expression is rendered again at every refresh, so a short-lived token keeps working for a long task.
Outputs
bucket string
Bucket
key string
Key
versionId string
The version of the object