Spaces:
Build error
Build error
import json | |
from pathlib import Path | |
from loguru import logger | |
try: | |
import boto3 | |
except ModuleNotFoundError: | |
logger.warning("Couldn't load AWS or SageMaker imports. Run 'poetry install --with aws' to support AWS.") | |
from llm_engineering.settings import settings | |
def create_sagemaker_user(username: str): | |
assert settings.AWS_REGION, "AWS_REGION is not set." | |
assert settings.AWS_ACCESS_KEY, "AWS_ACCESS_KEY is not set." | |
assert settings.AWS_SECRET_KEY, "AWS_SECRET_KEY is not set." | |
# Create IAM client | |
iam = boto3.client( | |
"iam", | |
region_name=settings.AWS_REGION, | |
aws_access_key_id=settings.AWS_ACCESS_KEY, | |
aws_secret_access_key=settings.AWS_SECRET_KEY, | |
) | |
# Create user | |
iam.create_user(UserName=username) | |
# Attach necessary policies | |
policies = [ | |
"arn:aws:iam::aws:policy/AmazonSageMakerFullAccess", | |
"arn:aws:iam::aws:policy/AWSCloudFormationFullAccess", | |
"arn:aws:iam::aws:policy/IAMFullAccess", | |
"arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryFullAccess", | |
"arn:aws:iam::aws:policy/AmazonS3FullAccess", | |
] | |
for policy in policies: | |
iam.attach_user_policy(UserName=username, PolicyArn=policy) | |
# Create access key | |
response = iam.create_access_key(UserName=username) | |
access_key = response["AccessKey"] | |
logger.info(f"User '{username}' successfully created.") | |
logger.info("Access Key ID and Secret Access Key successfully created.") | |
return {"AccessKeyId": access_key["AccessKeyId"], "SecretAccessKey": access_key["SecretAccessKey"]} | |
if __name__ == "__main__": | |
new_user = create_sagemaker_user("sagemaker-deployer") | |
with Path("sagemaker_user_credentials.json").open("w") as f: | |
json.dump(new_user, f) | |
logger.info("Credentials saved to 'sagemaker_user_credentials.json'") | |