# Complete Guide to Setting Up a Ray Cluster with AWS Instance Profile This guide provides a comprehensive walkthrough on setting up a Ray cluster configuration with an AWS Instance Profile, including steps to create the Instance Profile if it doesn't exist already. ## Part 1: Setting Up Ray Cluster Configuration ### Step 1: Basic Configuration Start by defining the basic parameters of your Ray cluster in the configuration file: ```yaml cluster_name: ray-shuffle-tokenize max_workers: 25 upscaling_speed: 0.0 provider: type: aws region: us-west-2 cache_stopped_nodes: False ``` ### Step 2: Node Configuration Configure the node types, specifying the instance types, image IDs, and most importantly, the IAM Instance Profile ARN: ```yaml available_node_types: ray.head.default: resources: {} node_config: SubnetIds: [subnet-xxx, subnet-yyy, subnet-zzz] ImageId: ami-xxxxxxx # Example AMI ID InstanceType: i4i.8xlarge IamInstanceProfile: Arn: [Your-Instance-Profile-ARN] ray.worker.default: min_workers: 25 max_workers: 25 node_config: SubnetIds: [subnet-xxx, subnet-yyy, subnet-zzz] ImageId: ami-xxxxxxx # Example AMI ID InstanceType: i4i.8xlarge IamInstanceProfile: Arn: [Your-Instance-Profile-ARN] ``` Replace `[Your-Instance-Profile-ARN]` with the actual ARN of your instance profile. ### Step 3: Setup Commands Define any setup commands necessary for your environment: ```yaml setup_commands: - wget https://repo.anaconda.com/miniconda/Miniconda3-py310_23.3.1-0-Linux-x86_64.sh -O miniconda.sh # ... other setup commands ... ``` ### Step 4: Security Best Practices **Important**: Avoid hardcoding AWS credentials in your scripts or files. Using an IAM role through an Instance Profile is a more secure and recommended approach. ## Part 2: Creating an AWS Instance Profile (If Not Existing) ### Step 1: Create an IAM Role 1. **Open IAM in AWS Console**: Log into the AWS Management Console and navigate to the IAM (Identity and Access Management) service. 2. **Create a New Role**: Go to "Roles" > "Create role". 3. **Select EC2 as the Trust Entity**: Choose "AWS service" for the type of trusted entity and select "EC2". 4. **Attach Permissions**: Select `AmazonEC2FullAccess` and `AmazonS3FullAccess` policies for comprehensive EC2 and S3 access. 5. **Name and Create the Role**: Provide a name (e.g., `RayClusterRole`) and create the role. ### Step 2: Create the Instance Profile 1. **Navigate to the Role**: In IAM roles, find the newly created role. 2. **Create Instance Profile**: Under the "Role actions" menu, select "Add role to instance profile". 3. **Name the Instance Profile**: Give the instance profile the same name as the role for consistency. ### Step 3: Retrieve the Instance Profile ARN 1. **Open the Role Details**: Click on the role you just created. 2. **Copy the Instance Profile ARN**: In the summary section, you'll find the ARN which looks like `arn:aws:iam::[aws-account-id]:instance-profile/RayClusterRole`. ### Step 4: Update Ray Cluster Config Replace `[Your-Instance-Profile-ARN]` in your Ray cluster configuration with the ARN you just copied.