--- name: Configure Data 360 Connector description: Creates and tests the AWS Glue Data Catalog connection in Salesforce Data 360 for Zero Copy Iceberg federation, then guides through data stream setup. --- # Configure Data 360 Connector You are setting up the Salesforce Data 360 AWS Glue Data Catalog connector for Zero Copy file federation with an Iceberg table in S3. ## Prerequisites Before running this skill: - The AWS deployment must be complete (`./scripts/deploy.sh` or all 3 CDK stacks deployed) - A `.env` file must exist in the project root with these variables: - `DATA_CLOUD_AWS_ACCESS_KEY_ID` - `DATA_CLOUD_AWS_SECRET_ACCESS_KEY` - `GLUE_CATALOG_URL` - `GLUE_CATALOG_ID` - `GLUE_SIGNING_REGION` - `GLUE_SIGNING_SERVICE` - The Data 360 MCP server must be configured and connected to the target Salesforce org - The Salesforce org must have Data 360 enabled ## Steps ### Step 1: Load credentials from .env Read the `.env` file at the project root to get the AWS credentials and Glue endpoint configuration. Verify all required variables are present. ### Step 2: Check for existing connection Use `d360_connection_list` to check if a connection named `AWS_Iceberg_Zero_Copy` already exists. If it does, skip to Step 4. ### Step 3: Create the connection Call `d360_connection_create` with: ```json { "request": { "connectorType": "GLUE_IRC", "name": "AWS_Iceberg_Zero_Copy", "label": "AWS Iceberg Zero Copy", "parameters": [ {"paramName": "catalogUrl", "value": ""}, {"paramName": "catalogId", "value": ""}, {"paramName": "signingRegion", "value": ""}, {"paramName": "signingService", "value": ""} ], "credentials": [ {"paramName": "awsAccessKey", "value": ""}, {"paramName": "awsSecretKey", "value": ""} ] } } ``` Confirm the connection was created successfully (status should be "Processing" or "Active"). ### Step 4: Test the connection Call `d360_connection_test` with: ```json { "request": { "connectorType": "GLUE_IRC", "method": "Ingress", "parameters": [ {"paramName": "catalogUrl", "value": ""}, {"paramName": "catalogId", "value": ""}, {"paramName": "signingRegion", "value": ""}, {"paramName": "signingService", "value": ""} ], "credentials": [ {"paramName": "awsAccessKey", "value": ""}, {"paramName": "awsSecretKey", "value": ""} ] } } ``` Verify `success: true` in the response. ### Step 5: Verify table visibility Call `d360_connection_objects_list` with the connection ID from Step 3 and `advancedAttributes: {"DATABASE": "iceberg_db"}`. Confirm the `churn` table appears in the results. ### Step 6: Guide data stream creation The Data 360 Connect API does not yet support creating file federation (Zero Copy / BYOL) data streams programmatically. Instruct the user to complete this in the Salesforce UI: 1. In Data Cloud → Data Streams → New 2. Under Other Sources, select **AWS Glue Data Catalog** 3. Select connection: **AWS Iceberg Zero Copy** 4. Select database: **iceberg_db** 5. Select schema (use the default/only option shown) 6. Select table: **churn** 7. Click Next 8. Object name: **Churn_Iceberg** 9. Category: **Other** 10. Primary key: **phone** 11. Select all fields, click Next 12. Data space: **Default** 13. Click **Deploy** After deployment, the data stream is active and Data 360 queries the Iceberg table in S3 directly with zero data movement. ## Troubleshooting - **Connection test fails**: Verify the IAM user `data_cloud_user` has `lakeformation:GetDataAccess` permission and `AWSGlueServiceRole` attached. Verify the `Data360LakeFormationStack` is deployed. - **Table not visible**: Ensure `load_sample_data.py` was run successfully and the Iceberg table exists in the `iceberg_db` Glue database. - **"Invalid credentials"**: The access key in `.env` may have been rotated. Create a new one with `aws iam create-access-key --user-name data_cloud_user --profile data360` and update `.env`.