Skip to content

Commit

Permalink
Clarify S3 usage
Browse files Browse the repository at this point in the history
  • Loading branch information
m-mohr committed Oct 23, 2024
1 parent d09b109 commit f1fdff4
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 5 deletions.
7 changes: 6 additions & 1 deletion json-schema/platforms/custom-s3.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,11 @@
}
},
"then": {
"$comment": "No specific validation rules apply"
"bucket": {
"type": "string"
},
"region": {
"type": "string"
}
}
}
10 changes: 7 additions & 3 deletions platforms/aws-s3.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

This defines the Amazon Web Services (AWS) S3 interface.

- `platform`: `https://{bucket}.s3.{region}.amazonaws.com`
- `bucket`: The bucket name
- `region`: One of the S3 regions (lowercase)
- `platform`: `https://{bucket}.s3.{region}.amazonaws.com`,
which is the endpoint URL after replacing all variables in the URL.
- `bucket`: The bucket name.
- `region`: One of the S3 regions (lowercase).

**Note:** If `s3` exists in `auth:refs`, you should use sign requests,
e.g. using the AWS CLI parameter `--no-sign-request`.
35 changes: 34 additions & 1 deletion platforms/custom-s3.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,37 @@

This defines the S3 interface for providers other than AWS (e.g. minio-based).

- `platform`: The API URL, must be the endpoint URL that can be used for the AWS CLI for example.
- `platform`: The API URL (template), must be the endpoint URL that can be used for the AWS CLI for example, e.g. `https://{bucket}.example.com` or `http://example.com:9000`.
- `bucket`: The bucket name, if applicable.
- `region`: The region, if applicable.

## Mapping to S3 tooling

### GDAL (`/vsis3/`)

GDAL documentation: <https://gdal.org/en/latest/user/virtual_file_systems.html#vsis3-aws-s3-files>

- `platform`: Some options for S3 can be inferred from the given URL (template):
- `AWS_HTTPS` can be retrieved by parsing the scheme part of the URL. `https` = `ON`, `http` = `OFF`.
- `AWS_S3_ENDPOINT` is the authority part of the URL after replacing all variables in the URL.
- `AWS_VIRTUAL_HOSTING` must be set to `FALSE` if there's no `{bucket}` placeholder in the URL template, otherwise `TRUE` (default value).
- The `region` property corresponds to the `AWS_REGION` option.
- The `requester_pays` property corresponds to the `AWS_REQUEST_PAYER` option. If `requester_pays` is `true`, set `AWS_REQUEST_PAYER` to `requester`.
- If `s3` exists in `auth:refs`, you should set `AWS_NO_SIGN_REQUEST` to `YES`. Otherwise it should be `NO`.

### AWS CLI

AWS CLI documentation: <https://awscli.amazonaws.com/v2/documentation/api/latest/reference/index.html>

- `platform` corresponds to `--endpoint-url` after replacing all variables in the URL.
- `region` corresponds to `--region`.
- If `s3` is **missing** from `auth:refs`, you should use `--no-sign-request`.

### s3cmd

s3cmd documentation: <https://s3tools.org/usage>

- `platform` corresponds to `--host` / `--host-bucket` after replacing all variables in the URL (?).
- `region` corresponds to `--region`.
- `requester_pays` corresponds to `--requester-pays`.
- If `s3` exists in `auth:refs`, you should use the `s3cmd sign` command.

0 comments on commit f1fdff4

Please sign in to comment.