
Aws Cleanrooms
- 2.4k installs
- 2.2k repo stars
- Updated August 4, 2026
- aws/agent-toolkit-for-aws
aws-cleanrooms provides documented workflows for Troubleshoots and debugs AWS Clean Rooms collaboration issues related to IAM roles, S3 bucket policies, KMS keys, Lake Formation permissions, and CloudWatch log
About
The aws-cleanrooms skill troubleshoots and debugs AWS Clean Rooms collaboration issues related to IAM roles, S3 bucket policies, KMS keys, Lake Formation permissions, and CloudWatch logging for custom ML model training and inference jobs. Use when a customer reports permission failures, access errors, or log publishing issues in Clean Rooms. # AWS Clean Rooms ## Overview Domain expertise for troubleshooting AWS Clean Rooms collaborations and custom ML modeling. Covers permission debugging, data access issues, and CloudWatch logging configuration. ## Common tasks ### Debugging Clean Rooms errors Determine the failure type: **Access denied or permission error?** → See [permission debugging procedure](references/permission-debugging.md). Covers IAM role policies (inline + attached managed), S3 bucket policies, KMS key policies, Lake Formation permissions, and cross-account trust. **Missing CloudWatch logs for custom model jobs?** → See [custom model logging debugging procedure](references/custom-model-logging-debugging.md). Covers Configured Model Algorithm Association privacy configuration, ML Configuration role permissions, and log group verification.
- [Clean Rooms Service Role Setup](https://docs.aws.amazon.com/clean-rooms/latest/userguide/setting-up-roles.html)
- [Cross-service Confused Deputy Prevention](https://docs.aws.amazon.com/clean-rooms/latest/userguide/cross-service-confus
- [ML Roles Documentation](https://docs.aws.amazon.com/clean-rooms/latest/userguide/ml-roles.html)
- [Lake Formation Onboarding](https://docs.aws.amazon.com/lake-formation/latest/dg/onboarding-lf-permissions.html)
- # AWS Clean Rooms ## Overview Domain expertise for troubleshooting AWS Clean Rooms collaborations and custom ML modeling
Aws Cleanrooms by the numbers
- 2,412 all-time installs (skills.sh)
- +366 installs in the week ending Aug 5, 2026 (Skillselion tracking)
- Ranked #171 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
- Security screen: LOW risk (skills.sh audit)
- Data as of Aug 5, 2026 (Skillselion catalog sync)
aws-cleanrooms capabilities & compatibility
- Capabilities
- [clean rooms service role setup](https://docs.aw · [cross service confused deputy prevention](https · [ml roles documentation](https://docs.aws.amazon · [lake formation onboarding](https://docs.aws.ama · # aws clean rooms ## overview domain expertise f
- Use cases
- documentation
What aws-cleanrooms says it does
# AWS Clean Rooms ## Overview Domain expertise for troubleshooting AWS Clean Rooms collaborations and custom ML modeling.
Covers permission debugging, data access issues, and CloudWatch logging configuration.
npx skills add https://github.com/aws/agent-toolkit-for-aws --skill aws-cleanroomsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 2.4k |
|---|---|
| repo stars | ★ 2.2k |
| Security audit | 3 / 3 scanners passed |
| Last updated | August 4, 2026 |
| Repository | aws/agent-toolkit-for-aws ↗ |
How do I use aws-cleanrooms for the task described in its SKILL.md triggers?
Troubleshoots and debugs AWS Clean Rooms collaboration issues related to IAM roles, S3 bucket policies, KMS keys, Lake Formation permissions, and CloudWatch logging for custom ML model training and i.
Who is it for?
Teams invoking aws-cleanrooms when the user request matches documented triggers and prerequisites.
Skip if: Skip when cached docs are missing, the request is a negative trigger, or another sibling skill owns the workflow.
When should I use this skill?
Troubleshoots and debugs AWS Clean Rooms collaboration issues related to IAM roles, S3 bucket policies, KMS keys, Lake Formation permissions, and CloudWatch logging for custom ML model training and inference jobs. Use wh
What you get
Step-by-step guidance grounded in aws-cleanrooms documentation and reference files.
- Log publishing failure diagnosis
- Job status inspection report
Files
AWS Clean Rooms
Overview
Domain expertise for troubleshooting AWS Clean Rooms collaborations and custom ML modeling. Covers permission debugging, data access issues, and CloudWatch logging configuration.
Common tasks
Debugging Clean Rooms errors
Determine the failure type:
Access denied or permission error? → See permission debugging procedure. Covers IAM role policies (inline + attached managed), S3 bucket policies, KMS key policies, Lake Formation permissions, and cross-account trust.
Missing CloudWatch logs for custom model jobs? → See custom model logging debugging procedure. Covers Configured Model Algorithm Association privacy configuration, ML Configuration role permissions, and log group verification.
Additional resources
Clean Rooms ML Custom Model Logging Debugging
Systematic diagnostic procedure for CloudWatch log publishing failures in Clean Rooms ML custom model training and inference jobs.
Parameters
- membership_id (required): The Clean Rooms membership ID
- region (required): The AWS region
- trained_model_arn (optional): ARN of the specific trained model or inference job
You MUST ask for all required parameters upfront.
Steps
1. Validate AWS Credentials and Region
aws sts get-caller-identity- Inform the user about the AWS account and region being used
2. Check Trained Model or Inference Job Status
Determine the resource type by inspecting the ARN: if it contains trained-model-inference-job, use the inference job call; otherwise use the trained model call. If ResourceNotFoundException, try the other.
aws cleanroomsml get-trained-model --membership-identifier ${membership_id} --trained-model-arn ${trained_model_arn} --region ${region}aws cleanroomsml get-trained-model-inference-job --membership-identifier ${membership_id} --trained-model-inference-job-arn ${trained_model_arn} --region ${region}
If no ARN provided, list recent resources:
aws cleanroomsml list-trained-models --membership-identifier ${membership_id} --region ${region}aws cleanroomsml list-trained-model-inference-jobs --membership-identifier ${membership_id} --region ${region}
If multiple returned, present the list and ask the user to confirm which to investigate.
Extract: logsStatus, logsStatusDetails, configuredModelAlgorithmAssociationArn, job status.
If configuredModelAlgorithmAssociationArn is not in the response, use: aws cleanroomsml list-configured-model-algorithm-associations --membership-identifier ${membership_id} --region ${region}. If multiple associations are returned, present the list and ask the user to confirm which one is relevant to the resource under investigation.
3. Check Configured Model Algorithm Association Privacy Configuration
aws cleanroomsml get-configured-model-algorithm-association --membership-identifier ${membership_id} --configured-model-algorithm-association-arn ${configured_model_algorithm_association_arn} --region ${region}- Check
privacyConfiguration.policiesfor: trainedModels.containerLogswithallowedAccountIds(for training)trainedModelInferenceJobs.containerLogswithallowedAccountIds(for inference)- You MUST verify the customer's account ID is included in
allowedAccountIds - If
containerLogsis empty/missing, flag this as a likely root cause — but you MUST continue through all remaining steps before generating the diagnosis, as multiple issues may exist simultaneously - Explain that logging is configured in CreateConfiguredModelAlgorithmAssociation, NOT CreateTrainedModel
4. Check ML Configuration
aws cleanroomsml get-ml-configuration --membership-identifier ${membership_id} --region ${region}- Extract
defaultOutputLocation.roleArn— this role publishes logs - If no ML Configuration exists (ResourceNotFoundException), flag this as a root cause — the user must create one via PutMLConfiguration. Skip Step 5 (role permissions cannot be checked without a role ARN) and continue to Step 6, as multiple issues may exist simultaneously.
5. Check ML Configuration Role CloudWatch Permissions
aws iam get-role --role-name ${role_name}aws iam list-role-policies --role-name ${role_name}aws iam list-attached-role-policies --role-name ${role_name}- For each inline policy:
aws iam get-role-policy --role-name ${role_name} --policy-name ${policy_name} - For each attached managed policy:
aws iam get-policy --policy-arn ${policy_arn}thenaws iam get-policy-version --policy-arn ${policy_arn} --version-id ${version_id} - Required permissions:
logs:CreateLogGroup,logs:CreateLogStream,logs:PutLogEventsonarn:aws:logs:*:*:log-group:/aws/cleanroomsml/* - Also check
cloudwatch:PutMetricData(requires"Resource": "*") for training metrics - Trust policy must allow
cleanrooms-ml.amazonaws.com
6. Check CloudWatch Log Groups
aws logs describe-log-groups --log-group-name-prefix /aws/cleanroomsml/TrainedModels --region ${region}aws logs describe-log-groups --log-group-name-prefix /aws/cleanroomsml/TrainedModelInferenceJobs --region ${region}- If groups exist, check streams using the discovered log group name:
aws logs describe-log-streams --log-group-name ${log_group_name} --order-by LastEventTime --descending --max-items 5 --region ${region}- If groups don't exist, this may indicate missing
logs:CreateLogGrouppermission. Cross-reference with logsStatus and privacy config.
7. Log Publishing Status Interpretation
Only if logsStatus is PUBLISH_FAILED:
- Each member sees their own logsStatus based on their account's log publishing
- Do NOT suggest checking other accounts
- Accounts without an ML Configuration role show "Failed to publish logs as no ML Config role is set"
- Direct customer to check their ML Configuration role permissions (Step 5)
8. Generate Diagnosis
Identify root cause (typically: missing privacy config, missing CloudWatch permissions, missing ML Configuration, or missing trust policy). Provide exact fix with CLI commands. Reference ML roles docs and LogsConfigurationPolicy API. Note that a new job must be run after fixing — existing failed jobs won't retroactively publish logs.
Expected output format:
## Current Status
- Resource: [name] ([status])
- Logs status: [PUBLISH_FAILED/PUBLISH_SUCCEEDED]
## Diagnostic Results
1. [PASS/FAIL] Privacy Config (containerLogs)
2. [PASS/FAIL] ML Configuration exists
3. [N/A/PASS/FAIL] ML Config Role Permissions
4. [PASS/FAIL] Log Groups
## Root Cause
[One-paragraph explanation]
## Fix
[Exact policy statement + CLI command]Clean Rooms Permission Debugging
Systematic diagnostic procedure for permission and access errors in AWS Clean Rooms.
Parameters
- error_message (required): The exact error message or description of the permission failure
- membership_id (required): The Clean Rooms membership ID. If the user only has a collaboration ID, resolve it using
aws cleanrooms list-memberships --status ACTIVE --region ${region}and filter bycollaborationId. - collaboration_id (optional): The Clean Rooms collaboration ID
- region (required): The AWS region
You MUST ask for all required parameters upfront. You MUST NOT block on optional parameters.
Steps
1. Validate AWS Credentials and Region
aws sts get-caller-identity- Inform the user about the AWS account and region being used
2. Identify the Error Context
Classify the error: result writing failure (result receiver role), data access failure (data access service role), table association failure, or cross-account failure.
aws cleanrooms get-membership --membership-identifier ${membership_id} --region ${region}- If
collaboration_idwas not provided, extract it from the get-membership response aws cleanrooms get-collaboration --collaboration-identifier ${collaboration_id} --region ${region}- If the error involves a protected query:
aws cleanrooms list-protected-queries --membership-identifier ${membership_id} --status FAILED --region ${region}- Extract
protectedQueryId. If multiple, ask the user to confirm. aws cleanrooms get-protected-query --membership-identifier ${membership_id} --protected-query-identifier ${query_id} --region ${region}- For result writing failures, extract the output S3 bucket and result receiver role ARN from
defaultResultConfigurationin the get-membership response. If a protected query is involved, also check itsoutputConfigurationas it may override the membership default. - For data access failures involving configured tables (not ID mapping tables or training datasets), resolve to the underlying S3 bucket:
aws cleanrooms list-configured-table-associations --membership-identifier ${membership_id} --region ${region}- Extract
configuredTableAssociationIdentifier. If multiple, ask the user to confirm. aws cleanrooms get-configured-table-association --membership-identifier ${membership_id} --configured-table-association-identifier ${association_id} --region ${region}- Extract
configuredTableIdentifierand the service role ARN. aws cleanrooms get-configured-table --configured-table-identifier ${configured_table_id} --region ${region}- Extract
databaseNameandtableNamefromtableReference.glue. aws glue get-table --database-name ${database_name} --name ${table_name} --region ${region}- Extract S3 bucket from
Table.StorageDescriptor.Location - For non-Glue/S3 data sources (Snowflake, Redshift), the permission model differs — ask the user for the data source type and use
search_documentationfor that source's access requirements. - You MUST NOT fix permissions before completing the full diagnostic chain.
3. Check IAM Role Policies
- Extract
role_namefrom the role ARN (segment after the last/). Retain the full ARN asrole_arnfor policy resource checks. aws iam get-role --role-name ${role_name}aws iam list-role-policies --role-name ${role_name}aws iam list-attached-role-policies --role-name ${role_name}- For each inline policy:
aws iam get-role-policy --role-name ${role_name} --policy-name ${policy_name} - For each attached managed policy:
aws iam get-policy --policy-arn ${policy_arn}thenaws iam get-policy-version --policy-arn ${policy_arn} --version-id ${version_id} - Verify trust policy allows
cleanrooms.amazonaws.com - For Glue/S3-backed configured tables, data access roles need:
glue:GetDatabase,glue:GetTable,glue:GetPartitions,glue:BatchGetPartition,glue:GetSchema,glue:GetSchemaVersion,s3:GetObject,s3:GetBucketLocation,s3:ListBucket. For other data source types, usesearch_documentationfor current requirements. - Result receiver roles need:
s3:PutObject,s3:GetBucketLocation,s3:ListBucket - For AccessDenied on a Clean Rooms API call, also verify the caller has all dependent actions — even if they have the primary permission (e.g.,
cleanrooms:StartProtectedQuery): StartProtectedQuery:cleanrooms:GetCollaborationAnalysisTemplate,cleanrooms:GetSchema,s3:GetBucketLocation,s3:ListBucket,s3:PutObjectStartProtectedJob:cleanrooms:GetCollaborationAnalysisTemplate,cleanrooms:GetSchemaCreateConfiguredTableAssociation/UpdateConfiguredTableAssociation:iam:PassRoleCreateMembership/UpdateMembership:iam:PassRole,s3:GetBucketLocation; also logging actions if query logging is configured:logs:CreateLogDelivery,logs:CreateLogGroup,logs:DeleteLogDelivery,logs:DescribeLogGroups,logs:DescribeResourcePolicies,logs:GetLogDelivery,logs:ListLogDeliveries,logs:PutResourcePolicy,logs:UpdateLogDeliveryCreateConfiguredTable:glue:GetDatabase,glue:GetDatabases,glue:GetTable,glue:GetTables,glue:GetPartition,glue:GetPartitions,glue:BatchGetPartition,glue:GetSchema,glue:GetSchemaVersion- For
iam:PassRolefailures, verify the policy includesiam:PassRolewithiam:PassedToServicerestricted tocleanrooms.amazonaws.com. Reference: IAM troubleshooting - Check if
AWSCleanRoomsFullAccessNoQueryingis attached — this policy explicitly deniescleanrooms:StartProtectedQueryandcleanrooms:UpdateProtectedQueryand cannot be overridden by adding permissions. Reference: AWS managed policies - Check for explicit Deny statements that could override Allow (including
aws:PrincipalOrgID, VPC endpoint, or IP restriction conditions)
4. Check S3 Bucket Policy
aws s3api get-bucket-policy --bucket ${bucket_name}- Check for explicit Allow/Deny statements for the role
- For cross-account: bucket policy MUST explicitly allow the role ARN
aws s3api get-bucket-encryption --bucket ${bucket_name}— ifSSEAlgorithmisaws:kms, extract the KMS key ARN fromKMSMasterKeyID
5. Check KMS Key Policy (if SSE-KMS)
aws kms get-key-policy --key-id ${key_id} --policy-name default- For data access roles: verify
kms:Decryptandkms:DescribeKey - For result receiver roles: also verify
kms:GenerateDataKey(required to write new objects to an SSE-KMS bucket) - For cross-account: the KMS key policy MUST explicitly allow the role from the other account
- IAM role policy MUST also include these KMS permissions for the specific key ARN
6. Check Lake Formation Permissions (if applicable)
You MUST perform this step for Glue/S3-backed data sources if IAM and S3 policies appear correct, as multiple issues may exist simultaneously. Lake Formation settings apply account-wide to all Glue catalog access.
aws lakeformation get-data-lake-settings --region ${region}- If
CreateDatabaseDefaultPermissionsorCreateTableDefaultPermissionsis empty, Lake Formation enforces fine-grained access — IAM Glue permissions alone are not sufficient - Check permissions on the specific Glue table (resolved in Step 2):
aws lakeformation list-permissions --resource-type TABLE --resource '{"Table":{"DatabaseName":"${database_name}","Name":"${table_name}"}}' --region ${region}- If the table has
IAM_ALLOWED_PRINCIPALSgranted, Lake Formation is not blocking — look elsewhere - If not, check for explicit grants to the role:
aws lakeformation list-permissions --principal DataLakePrincipalIdentifier=${role_arn} --region ${region}- Verify SELECT and DESCRIBE on the relevant database and table
- Reference: Lake Formation permissions
7. Check Cross-Account Trust (if applicable)
- Re-examine the
AssumeRolePolicyDocumentfrom theaws iam get-roleoutput in Step 3 - Verify the trust policy contains
"Principal": {"Service": "cleanrooms.amazonaws.com"}and"Action": "sts:AssumeRole" - Check
Conditionblock for overly restrictive keys: aws:SourceArn— must match the collaboration or membership ARN patternaws:SourceAccount— must include the collaborating account ID(s)- For cross-account roles, verify the role's account is a member of the collaboration:
aws cleanrooms list-members --collaboration-identifier ${collaboration_id} --region ${region}
8. Generate Diagnosis
Identify the root cause, provide the exact policy fix with CLI commands. Warn the user about security implications of permission changes and suggest least-privilege policies. Reference service role setup docs.
Expected output format:
## Error Classification
- Type: [result writing | data access | table association | caller IAM | iam:PassRole | cross-account]
- Role: [role ARN]
## Diagnostic Results
1. [PASS/FAIL] IAM Role Policies
2. [PASS/FAIL] S3 Bucket Policy
3. [N/A/PASS/FAIL] KMS Key Policy
4. [N/A/PASS/FAIL] Lake Formation
## Root Cause
[One-paragraph explanation]
## Fix
[Exact policy statement + CLI command]Related skills
FAQ
What does aws-cleanrooms do?
Troubleshoots and debugs AWS Clean Rooms collaboration issues related to IAM roles, S3 bucket policies, KMS keys, Lake Formation permissions, and CloudWatch logging for custom ML model training and inference jobs. Use wh
When should I use aws-cleanrooms?
Troubleshoots and debugs AWS Clean Rooms collaboration issues related to IAM roles, S3 bucket policies, KMS keys, Lake Formation permissions, and CloudWatch logging for custom ML model training and inference jobs. Use wh
What are common prerequisites?
--- name: aws-cleanrooms description: Troubleshoots and debugs AWS Clean Rooms collaboration issues related to IAM roles, S3 bucket policies, KMS keys, Lake Formation permissions, and CloudWatch logging for custom ML mod
Is Aws Cleanrooms safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.