cloudenv / openenv.yaml
Vishvam10
initial space commit
b404de3
Raw History Blame Contribute Delete
4.92 kB
spec_version: 1
name: cloudenv
display_name: "CloudEnv AWS Configuration Environment"
description: >
An RL environment where an AI agent configures AWS cloud infrastructure pipelines.
The agent receives a broken pipeline and must issue AWS API actions (S3, SQS, Lambda,
IAM, etc.) to restore it to a valid state. Tasks range from easy single-service fixes
to hard multi-service orchestration with complex IAM policies.
Rewards are shaped based on pipeline connection validity and step efficiency.
type: space
runtime: fastapi
app: cloudenv.server.app:app
port: 7860
tags:
- openenv
- aws
- cloud-infrastructure
- reinforcement-learning
action_space:
type: composite
fields:
- name: task_id
type: string
description: "Task identifier (maps to pipeline_id)"
- name: episode_id
type: string
description: "Episode identifier"
- name: service
type: string
values:
[
s3,
sqs,
sns,
dynamodb,
lambda,
iam,
sts,
secretsmanager,
logs,
events,
kinesis,
cloudwatch,
ssm,
stepfunctions,
firehose,
ec2,
rds,
elasticache,
ecs,
route53,
apigateway,
apigatewayv2,
cognito-idp,
cognito-identity,
ses,
sesv2,
acm,
wafv2,
glue,
athena,
]
description: "AWS service to interact with (or internal for init)"
- name: operation
type: string
description: >
AWS API operation name (e.g. CreateBucket, PutBucketPolicy) or internal
operations like InitializeEnvironment.
- name: payload
type: object
description: "Arguments for the AWS API call"
- name: instance_id
type: string
required: false
description: "Specific instance of the AWS service (e.g. bucket name, queue URL)"
- name: intent
type: string
required: false
description: "Optional semantic intent describing the goal of this action"
- name: principal_arn
type: string
required: false
description: "IAM principal ARN performing the action (defaults to root)"
observation_space:
fields:
- name: task_id
type: string
description: "Current task identifier"
- name: episode_id
type: string
description: "Current episode identifier"
- name: step_count
type: integer
description: "Number of steps taken so far in this episode"
- name: operation_result
type: object
description: "Result of the last AWS API operation (service, operation, status, result/error)"
- name: reward
type: float
description: "Reward received for the last action"
- name: done
type: boolean
description: "Whether the episode is complete (pipeline fully restored)"
- name: current_pipeline_state
type: object
description: "Current broken pipeline graph after the last action"
reward:
min: 0.0
max: 1.0
description: >
Per-step reward is shaped by pipeline validity (0.7 * valid_ratio),
improvement deltas (0.15 * combined_delta), and step efficiency
(0.05 * step_factor). When all connections match the ideal pipeline,
the environment returns reward=0.99 and done=true. Episode-level scoring
is produced by cloudenv.server.graders.* (0.01-0.99).
difficulties:
- easy
- medium
- hard
- all
max_steps: 50
tasks:
- id: easy-task-1
description: >
Single-service S3 policy fix: a bucket policy denies s3:GetObject on a target
bucket. Correct it to Allow so the pipeline validates.
grader: cloudenv.server.graders.easy_grader
- id: easy-task-2
description: >
Lambda invoke fix: a lambda:func_a -> lambda:func_b edge denies
lambda:InvokeFunction. Update IAM policy to Allow invocation.
grader: cloudenv.server.graders.easy_grader
- id: medium-task-1
description: >
Multi-service chain: s3 -> lambda is valid, but lambda -> sqs denies
sqs:SendMessage while lambda -> sns is already valid. Update the SQS policy
(or IAM role) to allow SendMessage.
grader: cloudenv.server.graders.medium_grader
- id: hard-task-1
description: >
S3 -> Lambda -> SQS pipeline with broken service_url configs and an SQS policy
denying SendMessage. Fix the Lambda/SQS config URLs and attach an Allow
SendMessage role policy.
grader: cloudenv.server.graders.hard_grader
- id: hard-task-2
description: >
IAM role-policy mismatch with duplicate node configs. Normalize Lambda config
(service_url/timeout/retry_attempts), normalize SQS config
(service_url/visibility_timeout), and allow SendMessage/ReceiveMessage in IAM.
grader: cloudenv.server.graders.hard_grader