or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

auth-service.mdcompute-service.mdcore-framework.mdflows-service.mdgcs-service.mdgroups-service.mdindex.mdsearch-service.mdtimers-service.mdtransfer-service.md

gcs-service.mddocs/

0

# Globus Connect Server Management

1

2

Configuration and management of Globus Connect Server endpoints, collections, storage gateways, and access policies for institutional data sharing. The GCS service provides comprehensive tools for setting up and managing data access infrastructure with fine-grained control over permissions, storage backends, and user credentials.

3

4

## Capabilities

5

6

### GCS Client

7

8

Core client for Globus Connect Server management operations with comprehensive endpoint, collection, and storage gateway administration.

9

10

```python { .api }

11

class GCSClient(BaseClient):

12

"""

13

Client for GCS Manager API operations.

14

15

Manages Globus Connect Server instances including endpoints, collections,

16

storage gateways, roles, and user credentials with comprehensive

17

configuration and policy support.

18

"""

19

20

def __init__(

21

self,

22

gcs_address: str,

23

*,

24

app: GlobusApp | None = None,

25

app_scopes: list[Scope] | None = None,

26

environment: str | None = None,

27

authorizer: GlobusAuthorizer | None = None,

28

app_name: str | None = None,

29

transport_params: dict[str, Any] | None = None

30

) -> None: ...

31

32

@staticmethod

33

def get_gcs_endpoint_scopes(

34

endpoint_id: str | UUID

35

) -> GCSEndpointScopeBuilder:

36

"""

37

Get scope builder for GCS endpoint-specific operations.

38

39

Creates a scope builder for generating scopes required for

40

endpoint management operations on a specific GCS endpoint.

41

42

Parameters:

43

- endpoint_id: UUID of the GCS endpoint

44

45

Returns:

46

GCSEndpointScopeBuilder for constructing endpoint-specific scopes

47

"""

48

49

@staticmethod

50

def get_gcs_collection_scopes(

51

collection_id: str | UUID

52

) -> GCSCollectionScopeBuilder:

53

"""

54

Get scope builder for GCS collection-specific operations.

55

56

Creates a scope builder for generating scopes required for

57

collection management and data access operations.

58

59

Parameters:

60

- collection_id: UUID of the GCS collection

61

62

Returns:

63

GCSCollectionScopeBuilder for constructing collection-specific scopes

64

"""

65

```

66

67

### Endpoint Management

68

69

Manage Globus Connect Server endpoint configuration and metadata for institutional data sharing infrastructure.

70

71

```python { .api }

72

def get_gcs_info(

73

self,

74

query_params: dict[str, Any] | None = None

75

) -> UnpackingGCSResponse:

76

"""

77

Get general information about the GCS instance.

78

79

Returns basic configuration information, capabilities, and

80

metadata about the Globus Connect Server installation.

81

82

Parameters:

83

- query_params: Additional query parameters

84

85

Returns:

86

UnpackingGCSResponse with GCS instance information

87

"""

88

89

def get_endpoint(

90

self,

91

query_params: dict[str, Any] | None = None

92

) -> UnpackingGCSResponse:

93

"""

94

Get endpoint configuration and metadata.

95

96

Returns complete endpoint information including display name,

97

description, organization, contact info, and other metadata.

98

99

Parameters:

100

- query_params: Additional query parameters

101

102

Returns:

103

UnpackingGCSResponse with endpoint configuration

104

"""

105

106

def update_endpoint(

107

self,

108

endpoint_data: dict[str, Any] | EndpointDocument,

109

*,

110

query_params: dict[str, Any] | None = None

111

) -> UnpackingGCSResponse:

112

"""

113

Update endpoint configuration.

114

115

Modifies endpoint metadata including display name, description,

116

organization information, contact details, and other settings.

117

118

Parameters:

119

- endpoint_data: Endpoint configuration updates

120

- query_params: Additional parameters

121

122

Returns:

123

UnpackingGCSResponse confirming update

124

"""

125

```

126

127

### Collection Management

128

129

Create and manage collections for organized data access with support for mapped collections, guest collections, and comprehensive policy configuration.

130

131

```python { .api }

132

def get_collection_list(

133

self,

134

*,

135

mapped_collection_id: str | UUID | None = None,

136

include: str | Iterable[str] | None = None,

137

query_params: dict[str, Any] | None = None

138

) -> IterableGCSResponse:

139

"""

140

List collections with filtering and expansion options.

141

142

Parameters:

143

- mapped_collection_id: Filter by parent mapped collection

144

- include: Additional data to include (user_credential_id, etc.)

145

- query_params: Additional query parameters

146

147

Returns:

148

IterableGCSResponse with paginated collection listings

149

"""

150

151

def get_collection(

152

self,

153

collection_id: str | UUID,

154

*,

155

include: str | Iterable[str] | None = None,

156

query_params: dict[str, Any] | None = None

157

) -> UnpackingGCSResponse:

158

"""

159

Get detailed collection configuration.

160

161

Parameters:

162

- collection_id: UUID of the collection

163

- include: Additional data to include in response

164

- query_params: Additional parameters

165

166

Returns:

167

UnpackingGCSResponse with complete collection configuration

168

"""

169

170

def create_collection(

171

self,

172

collection_data: dict[str, Any] | CollectionDocument

173

) -> UnpackingGCSResponse:

174

"""

175

Create a new collection.

176

177

Creates either a mapped collection (direct storage access) or

178

guest collection (restricted access) with specified policies

179

and access controls.

180

181

Parameters:

182

- collection_data: Complete collection configuration

183

184

Returns:

185

UnpackingGCSResponse with created collection details

186

"""

187

188

def update_collection(

189

self,

190

collection_id: str | UUID,

191

collection_data: dict[str, Any] | CollectionDocument,

192

*,

193

query_params: dict[str, Any] | None = None

194

) -> UnpackingGCSResponse:

195

"""

196

Update collection configuration.

197

198

Modifies collection settings including display name, description,

199

policies, and access controls.

200

201

Parameters:

202

- collection_id: UUID of collection to update

203

- collection_data: Updated configuration

204

- query_params: Additional parameters

205

206

Returns:

207

UnpackingGCSResponse confirming update

208

"""

209

210

def delete_collection(

211

self,

212

collection_id: str | UUID,

213

*,

214

query_params: dict[str, Any] | None = None

215

) -> UnpackingGCSResponse:

216

"""

217

Delete a collection.

218

219

Permanently removes a collection. Data remains on storage

220

but is no longer accessible through Globus services.

221

222

Parameters:

223

- collection_id: UUID of collection to delete

224

- query_params: Additional parameters

225

226

Returns:

227

UnpackingGCSResponse confirming deletion

228

"""

229

```

230

231

### Storage Gateway Management

232

233

Manage storage gateways that provide the connection between collections and underlying storage systems with support for multiple storage backends.

234

235

```python { .api }

236

def get_storage_gateway_list(

237

self,

238

*,

239

include: str | Iterable[str] | None = None,

240

query_params: dict[str, Any] | None = None

241

) -> IterableGCSResponse:

242

"""

243

List storage gateways with optional data expansion.

244

245

Parameters:

246

- include: Additional data to include (policies, etc.)

247

- query_params: Additional parameters

248

249

Returns:

250

IterableGCSResponse with paginated storage gateway listings

251

"""

252

253

def create_storage_gateway(

254

self,

255

data: dict[str, Any] | StorageGatewayDocument,

256

*,

257

query_params: dict[str, Any] | None = None

258

) -> UnpackingGCSResponse:

259

"""

260

Create a new storage gateway.

261

262

Creates a storage gateway connecting to underlying storage

263

infrastructure (POSIX filesystems, S3, etc.) with specified

264

connector type and policies.

265

266

Parameters:

267

- data: Storage gateway configuration including connector and policies

268

- query_params: Additional parameters

269

270

Returns:

271

UnpackingGCSResponse with created gateway details

272

"""

273

274

def get_storage_gateway(

275

self,

276

storage_gateway_id: str | UUID,

277

*,

278

include: str | Iterable[str] | None = None,

279

query_params: dict[str, Any] | None = None

280

) -> UnpackingGCSResponse:

281

"""

282

Get storage gateway configuration.

283

284

Parameters:

285

- storage_gateway_id: UUID of the storage gateway

286

- include: Additional data to include

287

- query_params: Additional parameters

288

289

Returns:

290

UnpackingGCSResponse with gateway configuration

291

"""

292

293

def update_storage_gateway(

294

self,

295

storage_gateway_id: str | UUID,

296

data: dict[str, Any] | StorageGatewayDocument,

297

*,

298

query_params: dict[str, Any] | None = None

299

) -> UnpackingGCSResponse:

300

"""

301

Update storage gateway configuration.

302

303

Modifies gateway settings including connector parameters,

304

policies, and authentication requirements.

305

306

Parameters:

307

- storage_gateway_id: UUID of gateway to update

308

- data: Updated configuration

309

- query_params: Additional parameters

310

311

Returns:

312

UnpackingGCSResponse confirming update

313

"""

314

315

def delete_storage_gateway(

316

self,

317

storage_gateway_id: str | UUID,

318

*,

319

query_params: dict[str, Any] | None = None

320

) -> UnpackingGCSResponse:

321

"""

322

Delete a storage gateway.

323

324

Removes gateway configuration. Collections using this gateway

325

will become inaccessible until configured with a new gateway.

326

327

Parameters:

328

- storage_gateway_id: UUID of gateway to delete

329

- query_params: Additional parameters

330

331

Returns:

332

UnpackingGCSResponse confirming deletion

333

"""

334

```

335

336

### Role and Access Management

337

338

Manage user roles and permissions for collections and endpoints with fine-grained access control.

339

340

```python { .api }

341

def get_role_list(

342

self,

343

collection_id: str | UUID | None = None,

344

include: str | None = None,

345

query_params: dict[str, Any] | None = None

346

) -> IterableGCSResponse:

347

"""

348

List roles with optional filtering by collection.

349

350

Parameters:

351

- collection_id: Filter roles for specific collection

352

- include: Additional data to include

353

- query_params: Additional parameters

354

355

Returns:

356

IterableGCSResponse with role listings

357

"""

358

359

def create_role(

360

self,

361

data: dict[str, Any] | GCSRoleDocument,

362

query_params: dict[str, Any] | None = None

363

) -> UnpackingGCSResponse:

364

"""

365

Create a user role assignment.

366

367

Assigns specific permissions to a user or group for a collection,

368

defining what operations they can perform (read, write, admin).

369

370

Parameters:

371

- data: Role assignment specification

372

- query_params: Additional parameters

373

374

Returns:

375

UnpackingGCSResponse with created role details

376

"""

377

378

def get_role(

379

self,

380

role_id: str | UUID,

381

query_params: dict[str, Any] | None = None

382

) -> UnpackingGCSResponse:

383

"""

384

Get role assignment details.

385

386

Parameters:

387

- role_id: UUID of the role assignment

388

- query_params: Additional parameters

389

390

Returns:

391

UnpackingGCSResponse with role configuration

392

"""

393

394

def delete_role(

395

self,

396

role_id: str | UUID,

397

query_params: dict[str, Any] | None = None

398

) -> UnpackingGCSResponse:

399

"""

400

Remove a role assignment.

401

402

Revokes user or group permissions for a collection.

403

404

Parameters:

405

- role_id: UUID of role assignment to delete

406

- query_params: Additional parameters

407

408

Returns:

409

UnpackingGCSResponse confirming deletion

410

"""

411

```

412

413

### User Credential Management

414

415

Manage user credentials for accessing storage systems that require authentication beyond Globus identity.

416

417

```python { .api }

418

def get_user_credential_list(

419

self,

420

storage_gateway: str | UUID | None = None,

421

query_params: dict[str, Any] | None = None

422

) -> IterableGCSResponse:

423

"""

424

List user credentials with optional filtering.

425

426

Parameters:

427

- storage_gateway: Filter by associated storage gateway

428

- query_params: Additional parameters

429

430

Returns:

431

IterableGCSResponse with credential listings

432

"""

433

434

def create_user_credential(

435

self,

436

data: dict[str, Any] | UserCredentialDocument,

437

query_params: dict[str, Any] | None = None

438

) -> UnpackingGCSResponse:

439

"""

440

Create user credential for storage access.

441

442

Stores user credentials (username/password, keys, etc.) required

443

for accessing underlying storage systems that need additional

444

authentication beyond Globus identity.

445

446

Parameters:

447

- data: Credential specification including type and values

448

- query_params: Additional parameters

449

450

Returns:

451

UnpackingGCSResponse with credential metadata (not sensitive data)

452

"""

453

454

def get_user_credential(

455

self,

456

user_credential_id: str | UUID,

457

query_params: dict[str, Any] | None = None

458

) -> UnpackingGCSResponse:

459

"""

460

Get user credential metadata.

461

462

Returns credential information without exposing sensitive data.

463

464

Parameters:

465

- user_credential_id: UUID of the credential

466

- query_params: Additional parameters

467

468

Returns:

469

UnpackingGCSResponse with credential metadata

470

"""

471

472

def update_user_credential(

473

self,

474

user_credential_id: str | UUID,

475

data: dict[str, Any] | UserCredentialDocument,

476

query_params: dict[str, Any] | None = None

477

) -> UnpackingGCSResponse:

478

"""

479

Update user credentials.

480

481

Modifies stored credentials for storage system access.

482

483

Parameters:

484

- user_credential_id: UUID of credential to update

485

- data: Updated credential information

486

- query_params: Additional parameters

487

488

Returns:

489

UnpackingGCSResponse confirming update

490

"""

491

492

def delete_user_credential(

493

self,

494

user_credential_id: str | UUID,

495

query_params: dict[str, Any] | None = None

496

) -> UnpackingGCSResponse:

497

"""

498

Delete user credentials.

499

500

Removes stored credentials, potentially making associated

501

storage inaccessible until new credentials are provided.

502

503

Parameters:

504

- user_credential_id: UUID of credential to delete

505

- query_params: Additional parameters

506

507

Returns:

508

UnpackingGCSResponse confirming deletion

509

"""

510

```

511

512

### Configuration Documents and Data Classes

513

514

Comprehensive data structures for configuring endpoints, collections, storage gateways, and policies with type-safe construction.

515

516

```python { .api }

517

class EndpointDocument(PayloadWrapper):

518

"""

519

Document for configuring Globus Connect Server endpoints.

520

521

Defines endpoint metadata including display name, description,

522

organization information, contact details, and other settings.

523

"""

524

525

def __init__(

526

self,

527

*,

528

display_name: str | MissingType = MISSING,

529

description: str | MissingType = MISSING,

530

organization: str | MissingType = MISSING,

531

department: str | MissingType = MISSING,

532

contact_email: str | MissingType = MISSING,

533

contact_info: str | MissingType = MISSING,

534

info_link: str | MissingType = MISSING,

535

public: bool | MissingType = MISSING,

536

default_directory: str | MissingType = MISSING,

537

**kwargs

538

) -> None: ...

539

540

class CollectionDocument(PayloadWrapper):

541

"""

542

Base class for collection configuration documents.

543

544

Provides common functionality for both mapped and guest collections

545

with policy configuration and access control.

546

"""

547

548

def __init__(

549

self,

550

*,

551

display_name: str | MissingType = MISSING,

552

description: str | MissingType = MISSING,

553

collection_type: str | MissingType = MISSING,

554

public: bool | MissingType = MISSING,

555

**kwargs

556

) -> None: ...

557

558

class MappedCollectionDocument(CollectionDocument):

559

"""

560

Configuration for mapped collections with direct storage access.

561

562

Mapped collections provide direct access to storage through

563

a storage gateway with configurable policies and permissions.

564

"""

565

566

def __init__(

567

self,

568

*,

569

storage_gateway_id: str | UUID | MissingType = MISSING,

570

collection_base_path: str | MissingType = MISSING,

571

policies: CollectionPolicies | dict | MissingType = MISSING,

572

**kwargs

573

) -> None: ...

574

575

class GuestCollectionDocument(CollectionDocument):

576

"""

577

Configuration for guest collections with restricted access.

578

579

Guest collections provide limited access to a subdirectory

580

of a mapped collection with additional access controls.

581

"""

582

583

def __init__(

584

self,

585

*,

586

mapped_collection_id: str | UUID | MissingType = MISSING,

587

root_path: str | MissingType = MISSING,

588

**kwargs

589

) -> None: ...

590

591

class StorageGatewayDocument(PayloadWrapper):

592

"""

593

Configuration for storage gateways connecting to storage backends.

594

595

Defines the connection between Globus services and underlying

596

storage systems with connector-specific configuration and policies.

597

"""

598

599

def __init__(

600

self,

601

*,

602

display_name: str | MissingType = MISSING,

603

connector: str | MissingType = MISSING,

604

policies: StorageGatewayPolicies | dict | MissingType = MISSING,

605

**kwargs

606

) -> None: ...

607

608

class GCSRoleDocument(PayloadWrapper):

609

"""

610

Document for role assignments and permissions management.

611

612

Defines user or group permissions for collections including

613

access levels and specific operation permissions.

614

"""

615

616

def __init__(

617

self,

618

*,

619

collection: str | UUID | MissingType = MISSING,

620

principal: str | MissingType = MISSING,

621

principal_type: str | MissingType = MISSING,

622

role: str | MissingType = MISSING,

623

**kwargs

624

) -> None: ...

625

626

class UserCredentialDocument(PayloadWrapper):

627

"""

628

Document for user credential management.

629

630

Stores user credentials required for accessing storage systems

631

that need additional authentication beyond Globus identity.

632

"""

633

634

def __init__(

635

self,

636

*,

637

storage_gateway: str | UUID | MissingType = MISSING,

638

identity_id: str | MissingType = MISSING,

639

username: str | MissingType = MISSING,

640

**kwargs

641

) -> None: ...

642

```

643

644

### Storage Policies and Connectors

645

646

Comprehensive policy classes for different storage backend types with connector-specific configuration options.

647

648

```python { .api }

649

class CollectionPolicies(PayloadWrapper):

650

"""Base class for collection-level policies and access controls."""

651

652

class POSIXCollectionPolicies(CollectionPolicies):

653

"""Policies for POSIX filesystem-based collections."""

654

655

class POSIXStagingCollectionPolicies(CollectionPolicies):

656

"""Policies for POSIX collections with staging support."""

657

658

class GoogleCloudStorageCollectionPolicies(CollectionPolicies):

659

"""Policies for Google Cloud Storage collections."""

660

661

class StorageGatewayPolicies(PayloadWrapper):

662

"""Base class for storage gateway policies and configuration."""

663

664

class POSIXStoragePolicies(StorageGatewayPolicies):

665

"""Policies for POSIX filesystem storage gateways."""

666

667

class S3StoragePolicies(StorageGatewayPolicies):

668

"""Policies for Amazon S3 storage gateways."""

669

670

class GoogleCloudStoragePolicies(StorageGatewayPolicies):

671

"""Policies for Google Cloud Storage gateways."""

672

673

class AzureBlobStoragePolicies(StorageGatewayPolicies):

674

"""Policies for Azure Blob Storage gateways."""

675

676

class BoxStoragePolicies(StorageGatewayPolicies):

677

"""Policies for Box storage gateways."""

678

679

class GoogleDriveStoragePolicies(StorageGatewayPolicies):

680

"""Policies for Google Drive storage gateways."""

681

682

class OneDriveStoragePolicies(StorageGatewayPolicies):

683

"""Policies for Microsoft OneDrive storage gateways."""

684

685

class ConnectorTable:

686

"""

687

Registry and lookup table for storage connector information.

688

689

Provides information about available storage connectors,

690

their capabilities, and configuration requirements.

691

"""

692

693

def __getitem__(self, connector_id: str) -> GlobusConnectServerConnector: ...

694

695

def __contains__(self, connector_id: str) -> bool: ...

696

697

class GlobusConnectServerConnector:

698

"""

699

Information about a specific storage connector.

700

701

Contains metadata about connector capabilities, requirements,

702

and configuration options for different storage backends.

703

"""

704

```

705

706

### Response Objects

707

708

Specialized response classes for GCS operations with automatic unpacking and iteration support.

709

710

```python { .api }

711

class IterableGCSResponse(IterableResponse):

712

"""Response class for GCS operations returning paginated data."""

713

714

def __iter__(self) -> Iterator[dict[str, Any]]:

715

"""Iterate over GCS response data items."""

716

717

class UnpackingGCSResponse(GlobusHTTPResponse):

718

"""

719

Response class that automatically unpacks GCS data.

720

721

Provides direct access to the main data content from GCS

722

responses while maintaining access to full response metadata.

723

"""

724

```

725

726

### Error Handling

727

728

GCS-specific error handling for configuration and management operations.

729

730

```python { .api }

731

class GCSAPIError(GlobusAPIError):

732

"""

733

Error class for GCS Manager API errors.

734

735

Provides enhanced error handling for GCS-specific error

736

conditions including configuration validation and access issues.

737

"""

738

```

739

740

## Common Usage Patterns

741

742

### Basic Collection Setup

743

744

```python

745

from globus_sdk import GCSClient, MappedCollectionDocument, POSIXStoragePolicies

746

747

# Initialize GCS client for your endpoint

748

gcs_client = GCSClient("gcs.example.org", authorizer=authorizer)

749

750

# Get endpoint information

751

endpoint_info = gcs_client.get_endpoint()

752

print(f"Endpoint: {endpoint_info['display_name']}")

753

754

# Create a storage gateway

755

storage_gateway_doc = StorageGatewayDocument(

756

display_name="Main POSIX Storage",

757

connector="posix",

758

policies=POSIXStoragePolicies(

759

groups_allow="0,users",

760

groups_deny="",

761

file_permissions="0644",

762

directory_permissions="0755"

763

)

764

)

765

766

gateway_response = gcs_client.create_storage_gateway(storage_gateway_doc)

767

gateway_id = gateway_response["id"]

768

769

# Create a mapped collection

770

collection_doc = MappedCollectionDocument(

771

display_name="Research Data Collection",

772

description="Shared research data access",

773

storage_gateway_id=gateway_id,

774

collection_base_path="/data/research",

775

public=True

776

)

777

778

collection_response = gcs_client.create_collection(collection_doc)

779

collection_id = collection_response["id"]

780

781

print(f"Created collection: {collection_id}")

782

```

783

784

### Role and Permission Management

785

786

```python

787

from globus_sdk import GCSRoleDocument

788

789

# Grant read access to a user

790

read_role = GCSRoleDocument(

791

collection=collection_id,

792

principal="user@example.org",

793

principal_type="identity",

794

role="reader"

795

)

796

797

role_response = gcs_client.create_role(read_role)

798

799

# Grant write access to a group

800

write_role = GCSRoleDocument(

801

collection=collection_id,

802

principal="urn:globus:groups:id:12345678-1234-1234-1234-123456789012",

803

principal_type="group",

804

role="writer"

805

)

806

807

gcs_client.create_role(write_role)

808

809

# List all roles for the collection

810

roles = gcs_client.get_role_list(collection_id=collection_id)

811

for role in roles:

812

print(f"Role {role['id']}: {role['principal']} -> {role['role']}")

813

```

814

815

### Guest Collection Creation

816

817

```python

818

from globus_sdk import GuestCollectionDocument

819

820

# Create a guest collection for limited access

821

guest_doc = GuestCollectionDocument(

822

display_name="Project Alpha Data",

823

description="Limited access to project alpha dataset",

824

mapped_collection_id=collection_id,

825

root_path="/project-alpha",

826

public=False

827

)

828

829

guest_response = gcs_client.create_collection(guest_doc)

830

guest_collection_id = guest_response["id"]

831

832

# Grant access to specific users for the guest collection

833

guest_role = GCSRoleDocument(

834

collection=guest_collection_id,

835

principal="project-user@example.org",

836

principal_type="identity",

837

role="writer"

838

)

839

840

gcs_client.create_role(guest_role)

841

```

842

843

### User Credential Management

844

845

```python

846

from globus_sdk import UserCredentialDocument

847

848

# Create user credentials for storage access

849

credential_doc = UserCredentialDocument(

850

storage_gateway=gateway_id,

851

identity_id="user-identity-uuid",

852

username="storage_username"

853

# Note: password/key would be provided through secure means

854

)

855

856

credential_response = gcs_client.create_user_credential(credential_doc)

857

858

# List credentials for monitoring

859

credentials = gcs_client.get_user_credential_list(storage_gateway=gateway_id)

860

for cred in credentials:

861

print(f"Credential {cred['id']}: {cred['username']}")

862

```

863

864

### Advanced Storage Configuration

865

866

```python

867

from globus_sdk import S3StoragePolicies

868

869

# Create S3 storage gateway

870

s3_gateway_doc = StorageGatewayDocument(

871

display_name="S3 Archive Storage",

872

connector="s3",

873

policies=S3StoragePolicies(

874

s3_bucket="my-research-bucket",

875

s3_region="us-west-2",

876

s3_endpoint="https://s3.us-west-2.amazonaws.com"

877

)

878

)

879

880

s3_gateway = gcs_client.create_storage_gateway(s3_gateway_doc)

881

882

# Create collection pointing to S3 storage

883

s3_collection_doc = MappedCollectionDocument(

884

display_name="S3 Archive Collection",

885

storage_gateway_id=s3_gateway["id"],

886

collection_base_path="/",

887

public=False

888

)

889

890

s3_collection = gcs_client.create_collection(s3_collection_doc)

891

```