Skip to content
Back to main site

AWS DataSync

Manage object-storage location and transfer-task records.

Plan: Pro53 of 53 operations implemented3Known differences

Executions report SUCCESS without copying data, and deleting a location still failed in Vera 1.2.2.

Example checked on Vera 1.2.2, 8 November 2026. Each coverage note names its own evidence and date.

Activate your license key and start the emulator with the Vera launcher, as in Activate Pro, then run this in a terminal of its own, from an empty scratch directory. It gives the official AWS CLI dummy credentials and a config file of its own, so no AWS account is needed and your own AWS profile isn't touched.

Terminal window
export VERA_ENDPOINT="http://localhost:5003"
export AWS_ACCESS_KEY_ID=test AWS_SECRET_ACCESS_KEY=test
export AWS_REGION=us-east-1 AWS_DEFAULT_REGION=us-east-1
export AWS_SHARED_CREDENTIALS_FILE=/dev/null
export AWS_EC2_METADATA_DISABLED=true
export AWS_PAGER="" AWS_CLI_AUTO_PROMPT=off
unset AWS_PROFILE AWS_DEFAULT_PROFILE
unset AWS_SESSION_TOKEN AWS_SECURITY_TOKEN
unset AWS_WEB_IDENTITY_TOKEN_FILE AWS_ROLE_ARN AWS_ROLE_SESSION_NAME
unset AWS_CONTAINER_CREDENTIALS_FULL_URI
unset AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
cat > vera-aws-config <<'EOF'
[default]
region = us-east-1
output = json
cli_binary_format = base64
s3 =
addressing_style = path
EOF
export AWS_CONFIG_FILE="$PWD/vera-aws-config"

When you've finished every example in this terminal, close it and delete vera-aws-config, not before.

The example uses the AWS CLI’s datasync commands. The emulator serves the 2018-11-09 API over the AWS JSON protocol, and the example was checked with the official AWS CLI 2.31.35. It creates its buckets in the emulator’s S3 first.

The example uses object-storage locations, not S3 ones. An S3 location needs an IAM role. In Vera 1.2.2, locations worked with a freshly created role, but deleting a location still failed (see Limitations).

The example leaves two locations behind that can’t be deleted: see the cleanup below. Run it against an emulator you can start fresh afterward.

Create a source bucket holding a file and an empty destination bucket. They show whether a transfer copies anything.

Terminal window
aws --endpoint-url "$VERA_ENDPOINT" s3api create-bucket --bucket vera-docs-object-source
aws --endpoint-url "$VERA_ENDPOINT" s3api create-bucket --bucket vera-docs-object-dest
printf 'hello' > payload.txt
aws --endpoint-url "$VERA_ENDPOINT" s3api put-object \
--bucket vera-docs-object-source --key hello.txt --body payload.txt

Create an object-storage location for each bucket, and describe the source location. The server host name, protocol and port are stored settings: no DataSync agent is installed or activated, and the API accepts a location with no agents. This isn’t a real agent-backed transfer setup.

Terminal window
SOURCE_ARN=$(aws --endpoint-url "$VERA_ENDPOINT" datasync create-location-object-storage \
--server-hostname localhost --server-protocol HTTP --server-port 5003 \
--bucket-name vera-docs-object-source --query LocationArn --output text)
DEST_ARN=$(aws --endpoint-url "$VERA_ENDPOINT" datasync create-location-object-storage \
--server-hostname localhost --server-protocol HTTP --server-port 5003 \
--bucket-name vera-docs-object-dest --query LocationArn --output text)
aws --endpoint-url "$VERA_ENDPOINT" datasync describe-location-object-storage \
--location-arn "$SOURCE_ARN"

The description includes these fields, and a location ARN that differs on every run:

Output (selected fields)
{
"AgentArns": [],
"ServerPort": 5003,
"ServerProtocol": "HTTP"
}

Create a task between the two locations, start it, describe the execution, then count the objects in the destination bucket:

Terminal window
TASK_ARN=$(aws --endpoint-url "$VERA_ENDPOINT" datasync create-task \
--source-location-arn "$SOURCE_ARN" --destination-location-arn "$DEST_ARN" \
--name vera-docs-transfer --query TaskArn --output text)
EXECUTION_ARN=$(aws --endpoint-url "$VERA_ENDPOINT" datasync start-task-execution \
--task-arn "$TASK_ARN" --query TaskExecutionArn --output text)
aws --endpoint-url "$VERA_ENDPOINT" datasync describe-task-execution \
--task-execution-arn "$EXECUTION_ARN" \
--query '{Status:Status,FilesTransferred:FilesTransferred,BytesTransferred:BytesTransferred}'
aws --endpoint-url "$VERA_ENDPOINT" s3api list-objects-v2 --bucket vera-docs-object-dest \
--no-paginate --query KeyCount

The execution reports success, but nothing was transferred:

Output
{
"Status": "SUCCESS",
"FilesTransferred": 0,
"BytesTransferred": 0
}

The last command prints 0: the destination bucket is still empty. Its --no-paginate makes the CLI print the response’s KeyCount: with the CLI’s default paginator, the command can print null even when the response’s KeyCount is 0.

To clean up, delete the task, the object and the buckets, then the local file:

Terminal window
aws --endpoint-url "$VERA_ENDPOINT" datasync delete-task --task-arn "$TASK_ARN"
aws --endpoint-url "$VERA_ENDPOINT" s3api delete-object --bucket vera-docs-object-source --key hello.txt
aws --endpoint-url "$VERA_ENDPOINT" s3api delete-bucket --bucket vera-docs-object-source
aws --endpoint-url "$VERA_ENDPOINT" s3api delete-bucket --bucket vera-docs-object-dest
rm payload.txt

This cleanup is incomplete: both locations remain. DeleteLocation returns InvalidRequestException, saying the location wasn’t found, and describe-location-object-storage still returns it afterward. Rather than retrying the delete, start a fresh emulator to clear them: see Stop and start again.

  • Object-storage location records, created with a server host name, protocol, port and bucket name, with no agents, and described.
  • Task records, created between two locations and deleted.
  • Task executions, started and described, reporting SUCCESS without moving data: see Limitations.
  • S3 locations, probed separately. An S3 location needs a bucket access role, and in Vera 1.2.2, locations worked with a freshly created IAM role. CreateLocationS3 and DescribeLocationS3 were also exercised in Vera 1.2.0 preview, where CreateLocationS3 rejected a role ARN that wasn’t created. The example sticks to object-storage locations.
  • Also served, not yet tested: agents, other kinds of location (EFS, FSx, NFS, SMB, HDFS and Azure Blob), updates to tasks and locations, listing, cancelling executions, and tags.

The main limits are below. A few more apply to every service, and the API coverage notes cover smaller differences.

  • Transfers don’t move data. An execution reports SUCCESS with no files or bytes transferred, and the source object never reaches the destination bucket.
  • Locations can’t be deleted. For locations created with both CreateLocationS3 and CreateLocationObjectStorage, DeleteLocation answers InvalidRequestException, saying the location wasn’t found, and the type-specific describe still returns the location afterward. Location deletion still failed in Vera 1.2.2.
  • Agents and other options weren’t tested. Real agents, other location types, manifests, schedules, filters, task reports, retries and bandwidth limits weren’t verified.

Every operation in AWS's published 2018-11-09 API (SDK model, botocore 1.43.105), and whether the emulator implements it. Availability combines the earlier implementation inventory with the dated observations below; checking a page's example does not verify every operation. Each note names its evidence first; an observation given without a build or date comes from earlier testing, on 3 November 2026. What the statuses mean

OperationStatusNotes
CancelTaskExecutionImplemented
CreateAgentImplemented
CreateLocationAzureBlobImplemented
CreateLocationEfsImplemented
CreateLocationFsxLustreImplemented
CreateLocationFsxOntapImplemented
CreateLocationFsxOpenZfsImplemented
CreateLocationFsxWindowsImplemented
CreateLocationHdfsImplemented
CreateLocationNfsImplemented
CreateLocationObjectStorageImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — created a location with a server host name, port, HTTP protocol and bucket name, and an empty agent list. These are stored settings: no DataSync agent was installed or activated.
CreateLocationS3ImplementedLocal observation: Vera 1.2.2, 8 November 2026 — worked with a freshly created IAM role as the bucket access role.
CreateLocationSmbImplemented
CreateTaskImplemented
DeleteAgentImplemented
DeleteLocationKnown differenceLocal observation: Vera 1.2.2, 8 November 2026 — deleting a location still failed. Local observation: For an S3 location created with CreateLocationS3, answers InvalidRequestException saying the location wasn't found, and the location remains. Local observation: Vera 1.2.0 preview, 5 November 2026 — the same for locations created with CreateLocationS3 and with CreateLocationObjectStorage: InvalidRequestException saying the location wasn't found, and the type-specific describe still returned it.
DeleteTaskImplemented
DescribeAgentImplemented
DescribeLocationAzureBlobImplemented
DescribeLocationEfsImplemented
DescribeLocationFsxLustreImplemented
DescribeLocationFsxOntapImplemented
DescribeLocationFsxOpenZfsImplemented
DescribeLocationFsxWindowsImplemented
DescribeLocationHdfsImplemented
DescribeLocationNfsImplemented
DescribeLocationObjectStorageImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — returned the stored ServerPort, ServerProtocol and an empty AgentArns list, and still returned the location after DeleteLocation failed.
DescribeLocationS3Implemented
DescribeLocationSmbImplemented
DescribeTaskImplemented
DescribeTaskExecutionKnown differenceLocal observation: Reports every phase SUCCESS with 0 files and bytes transferred, though nothing was copied. Local observation: Vera 1.2.0 preview, 5 November 2026 — reported SUCCESS with 0 files and 0 bytes transferred between two object-storage locations, though the source bucket held an object.
ListAgentsImplemented
ListLocationsImplemented
ListTagsForResourceImplemented
ListTaskExecutionsImplemented
ListTasksImplemented
StartTaskExecutionKnown differenceLocal observation: The execution reports SUCCESS at once, but no files or bytes are transferred and nothing reaches the destination. Local observation: Vera 1.2.0 preview, 5 November 2026 — between two object-storage locations, the execution reported SUCCESS, and the source object didn't reach the destination bucket.
TagResourceImplemented
UntagResourceImplemented
UpdateAgentImplemented
UpdateLocationAzureBlobImplemented
UpdateLocationEfsImplemented
UpdateLocationFsxLustreImplemented
UpdateLocationFsxOntapImplemented
UpdateLocationFsxOpenZfsImplemented
UpdateLocationFsxWindowsImplemented
UpdateLocationHdfsImplemented
UpdateLocationNfsImplemented
UpdateLocationObjectStorageImplemented
UpdateLocationS3Implemented
UpdateLocationSmbImplemented
UpdateTaskImplemented
UpdateTaskExecutionImplemented