Spaces:
Build error
Build error
File size: 1,907 Bytes
d660b02 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
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'")
|