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.
Connect
Section titled “Connect”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.
export VERA_ENDPOINT="http://localhost:5003"export AWS_ACCESS_KEY_ID=test AWS_SECRET_ACCESS_KEY=testexport AWS_REGION=us-east-1 AWS_DEFAULT_REGION=us-east-1export AWS_SHARED_CREDENTIALS_FILE=/dev/nullexport AWS_EC2_METADATA_DISABLED=trueexport AWS_PAGER="" AWS_CLI_AUTO_PROMPT=offunset AWS_PROFILE AWS_DEFAULT_PROFILEunset AWS_SESSION_TOKEN AWS_SECURITY_TOKENunset AWS_WEB_IDENTITY_TOKEN_FILE AWS_ROLE_ARN AWS_ROLE_SESSION_NAMEunset AWS_CONTAINER_CREDENTIALS_FULL_URIunset AWS_CONTAINER_CREDENTIALS_RELATIVE_URIcat > vera-aws-config <<'EOF'[default]region = us-east-1output = jsoncli_binary_format = base64s3 = addressing_style = pathEOFexport 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).
Example
Section titled “Example”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.
aws --endpoint-url "$VERA_ENDPOINT" s3api create-bucket --bucket vera-docs-object-sourceaws --endpoint-url "$VERA_ENDPOINT" s3api create-bucket --bucket vera-docs-object-destprintf 'hello' > payload.txtaws --endpoint-url "$VERA_ENDPOINT" s3api put-object \ --bucket vera-docs-object-source --key hello.txt --body payload.txtCreate 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.
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:
{ "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:
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 KeyCountThe execution reports success, but nothing was transferred:
{ "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:
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.txtaws --endpoint-url "$VERA_ENDPOINT" s3api delete-bucket --bucket vera-docs-object-sourceaws --endpoint-url "$VERA_ENDPOINT" s3api delete-bucket --bucket vera-docs-object-destrm payload.txtThis 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.
Supported features
Section titled “Supported features”- 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
SUCCESSwithout 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.
CreateLocationS3andDescribeLocationS3were also exercised in Vera 1.2.0 preview, whereCreateLocationS3rejected 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.
Limitations
Section titled “Limitations”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
SUCCESSwith no files or bytes transferred, and the source object never reaches the destination bucket. - Locations can’t be deleted. For locations created with both
CreateLocationS3andCreateLocationObjectStorage,DeleteLocationanswersInvalidRequestException, 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.
API coverage
Section titled “API coverage”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
No operation matches .
Try part of a name, such as CancelTaskExecution, or .
| Operation | Status | Notes |
|---|---|---|
| Cancel | Implemented | |
| Create | Implemented | |
| Create | Implemented | |
| Create | Implemented | |
| Create | Implemented | |
| Create | Implemented | |
| Create | Implemented | |
| Create | Implemented | |
| Create | Implemented | |
| Create | Implemented | |
| Create | Implemented | Local 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. |
| Create | Implemented | Local observation: Vera 1.2.2, 8 November 2026 — worked with a freshly created IAM role as the bucket access role. |
| Create | Implemented | |
| Create | Implemented | |
| Delete | Implemented | |
| Delete | Known difference | Local 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. |
| Delete | Implemented | |
| Describe | Implemented | |
| Describe | Implemented | |
| Describe | Implemented | |
| Describe | Implemented | |
| Describe | Implemented | |
| Describe | Implemented | |
| Describe | Implemented | |
| Describe | Implemented | |
| Describe | Implemented | |
| Describe | Implemented | Local 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. |
| Describe | Implemented | |
| Describe | Implemented | |
| Describe | Implemented | |
| Describe | Known difference | Local 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. |
| List | Implemented | |
| List | Implemented | |
| List | Implemented | |
| List | Implemented | |
| List | Implemented | |
| Start | Known difference | Local 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. |
| Tag | Implemented | |
| Untag | Implemented | |
| Update | Implemented | |
| Update | Implemented | |
| Update | Implemented | |
| Update | Implemented | |
| Update | Implemented | |
| Update | Implemented | |
| Update | Implemented | |
| Update | Implemented | |
| Update | Implemented | |
| Update | Implemented | |
| Update | Implemented | |
| Update | Implemented | |
| Update | Implemented | |
| Update | Implemented |