feat&refactor: update AWS configuration guidelines and improve environment variable handling
This commit is contained in:
@@ -26,18 +26,11 @@ You need to assign values to several variables crucial for the operation of thes
|
|||||||
- Example: `"osworld_key"`
|
- Example: `"osworld_key"`
|
||||||
- **`NETWORK_INTERFACES`**: Configuration settings for network interfaces, which include subnet IDs, security group IDs, and public IP addressing.
|
- **`NETWORK_INTERFACES`**: Configuration settings for network interfaces, which include subnet IDs, security group IDs, and public IP addressing.
|
||||||
- Example:
|
- Example:
|
||||||
```python
|
```bash
|
||||||
NETWORK_INTERFACES = {
|
<!-- in .env file -->
|
||||||
"us-east-1": [
|
AWS_REGION=us-east-1
|
||||||
{
|
AWS_SUBNET_ID=subnet-xxxx
|
||||||
"SubnetId": "subnet-037edfff66c2eb894",
|
AWS_SECURITY_GROUP_ID=sg-xxxx
|
||||||
"AssociatePublicIpAddress": True,
|
|
||||||
"DeviceIndex": 0,
|
|
||||||
"Groups": ["sg-0342574803206ee9c"]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
# Add configurations for other regions
|
|
||||||
}
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,17 @@ from filelock import FileLock
|
|||||||
import boto3
|
import boto3
|
||||||
import psutil
|
import psutil
|
||||||
import logging
|
import logging
|
||||||
|
import dotenv
|
||||||
|
# Load environment variables from .env file
|
||||||
|
dotenv.load_dotenv()
|
||||||
|
|
||||||
|
# Ensure the AWS region is set in the environment
|
||||||
|
if not os.getenv('AWS_REGION'):
|
||||||
|
raise EnvironmentError("AWS_REGION must be set in the environment variables.")
|
||||||
|
|
||||||
|
# Ensure the AWS subnet and security group IDs are set in the environment
|
||||||
|
if not os.getenv('AWS_SUBNET_ID') or not os.getenv('AWS_SECURITY_GROUP_ID'):
|
||||||
|
raise EnvironmentError("AWS_SUBNET_ID and AWS_SECURITY_GROUP_ID must be set in the environment variables.")
|
||||||
|
|
||||||
from desktop_env.providers.base import VMManager
|
from desktop_env.providers.base import VMManager
|
||||||
|
|
||||||
@@ -21,39 +32,27 @@ IMAGE_ID_MAP = {
|
|||||||
|
|
||||||
INSTANCE_TYPE = "t3.medium"
|
INSTANCE_TYPE = "t3.medium"
|
||||||
|
|
||||||
# sg-0342574803206ee9c subnet-037edfff66c2eb894
|
|
||||||
NETWORK_INTERFACE_MAP = {
|
|
||||||
"us-east-1": [
|
|
||||||
{
|
|
||||||
"SubnetId": "subnet-0a4b0c5b8f6066712",
|
|
||||||
"AssociatePublicIpAddress": True,
|
|
||||||
"DeviceIndex": 0,
|
|
||||||
"Groups": [
|
|
||||||
"sg-08a53433e9b4abde6"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"ap-east-1": [
|
|
||||||
{
|
|
||||||
"SubnetId": "subnet-011060501be0b589c",
|
|
||||||
"AssociatePublicIpAddress": True,
|
|
||||||
"DeviceIndex": 0,
|
|
||||||
"Groups": [
|
|
||||||
"sg-090470e64df78f6eb"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def _allocate_vm(region=DEFAULT_REGION):
|
def _allocate_vm(region=DEFAULT_REGION):
|
||||||
|
|
||||||
|
if region not in IMAGE_ID_MAP:
|
||||||
|
raise ValueError(f"Region {region} is not supported. Supported regions are: {list(IMAGE_ID_MAP.keys())}")
|
||||||
|
|
||||||
run_instances_params = {
|
run_instances_params = {
|
||||||
"MaxCount": 1,
|
"MaxCount": 1,
|
||||||
"MinCount": 1,
|
"MinCount": 1,
|
||||||
"ImageId": IMAGE_ID_MAP[region],
|
"ImageId": IMAGE_ID_MAP[region],
|
||||||
"InstanceType": INSTANCE_TYPE,
|
"InstanceType": INSTANCE_TYPE,
|
||||||
"EbsOptimized": True,
|
"EbsOptimized": True,
|
||||||
"NetworkInterfaces": NETWORK_INTERFACE_MAP[region]
|
"NetworkInterfaces": [
|
||||||
|
{
|
||||||
|
"SubnetId": os.getenv('AWS_SUBNET_ID'),
|
||||||
|
"AssociatePublicIpAddress": True,
|
||||||
|
"DeviceIndex": 0,
|
||||||
|
"Groups": [
|
||||||
|
os.getenv('AWS_SECURITY_GROUP_ID')
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
ec2_client = boto3.client('ec2', region_name=region)
|
ec2_client = boto3.client('ec2', region_name=region)
|
||||||
|
|||||||
Reference in New Issue
Block a user