- Sign in to the AWS Management Console
- Go to Cloud9 environment. and Click Open IDE
NodeJS Installed
nvm install node
orbrew install node
node -v
andnpm -v
AWS CDK command line installed
npm install -g aws-cdk
ornpm install -g aws-cdk@2.88.0 --force
cdk --version
This cdk test on 2.88.0 (build 5d497f9)
npm install aws-cdk-lib
npm install constructs
이 문서에 표시된 모든 하위 라이브러리는 이미 aws-cdk-lib에 있습니다.
// for v1
import * as sagemaker from '@aws-cdk/aws-sagemaker';
// for v2
import * as sagemaker from 'aws-cdk-lib/aws-sagemaker';
cdk-sagemaker-studio-stack.ts의 첫번재로 sagamaker execution rolename 을 생성합니다.
// create a SageMakerExecutionRole-${region}-cdk for the SageMaker Studio
let sagemakerExecutionRole = new Role(this, 'SageMakerExecutionRole', {
assumedBy: new ServicePrincipal('sagemaker.amazonaws.com'),
roleName: `SageMakerExecutionRole-${region}-cdk`,
description: 'SageMaker execution role'
});
Managed Policy 권한을 role에 부여합니다.
sagemakerExecutionRole.addManagedPolicy(
ManagedPolicy.fromAwsManagedPolicyName('AmazonSageMakerFullAccess')
);
const userSettings = {
executionRole: sagemakerExecutionRole.roleArn,
}
Default VPC의 subnet에 Sagemaker Domain을 CfnDomain으로 생성합니다.
// create a SageMaker domain
const defaultVpc = aws_ec2.Vpc.fromLookup(this, 'DefaultVpc', {
isDefault: true
});
const vpcSubnets = defaultVpc.selectSubnets({
subnetType: aws_ec2.SubnetType.PUBLIC
});
const domain = new sagemaker.CfnDomain(this, 'SageMakerDomain', {
authMode: 'IAM',
domainName: 'SageMakerDomain',
defaultUserSettings: userSettings,
subnetIds: vpcSubnets.subnetIds,
vpcId: defaultVpc.vpcId,
});
profile name을 team과 name으로 하여 Sagemaker 사용자를 생성합니다.
const profile = {'team': 'data-sciences', 'name': 'youngjin'}
new sagemaker.CfnUserProfile(this, 'SageMakerUserProfile', {
domainId: domain.attrDomainId,
userProfileName: `${profile.team}-${profile.name}`,
userSettings: userSettings,
});
- Cloud9을 위한 IAM 역할 생성 IAM > role 생성(역할 만들기) > EC2 사용사례 선택
- Role 만들고 Cloud9 권한 설정
AdministratorAccess 권한설정 후 역할이름을
devops-workshop-admin
만듭니다. Cloud9의 Manage EC2 instance > 작업(보안) > IAM 역할수정 >devops-workshop-admin
연결 - 기존 자격증명 파일 제거
Cloud9의 AWS SETTING > Credentials(AWS managed temporary credentials: disable) - aws sts get-caller-identity 명령어로 변경확인
aws sts get-caller-identity
{
"Arn": "arn:aws:sts::045364116382:assumed-role/devops-workshop-admin/i-00a2ff1a3281076d4"
}
git clone https://github.com/comeddy/cdk-sagemaker-studio.git
cd cdk-sagemaker-studio
bin/cdk-sagemaker-studio.ts
- 메인 CDK 앱과 스택이 정의된 엔트리 포인트 파일입니다.
lib/cdk-sagemaker-studio-stack.ts
- 스튜디오 도메인, 스튜디오 사용자 프로필 및 스튜디오 사용자 앱을 정의하는 세이지메이커 스튜디오 스택 파일입니다.
This is a blank project for CDK development with TypeScript.
The cdk.json
file tells the CDK Toolkit how to execute your app.
cdk docs (doc)
Opens the CDK API Reference in your browsercdk doctor
Checks your CDK project for potential problems
cdk synth
emits the synthesized CloudFormation templatecdk deploy
deploy this stack to your default AWS account/regioncdk diff
compare deployed stack with current statecdk destroy
Destroys one or more specified stacks
AWS 관리 콘솔에서 Cloud Formation을 열면 다음과 같은 SageMaker Studio 스택과 리소스가 생성된 것을 볼 수 있습니다.
Sagemaker에 SageMakerDomain 이름으로 도메인 생성 확인합니다.
Sagemaker Execution Role은 Cloud9이 실행된 region 혹은 aws config region 이름으로 역할생성/소멸됩니다.
region이 us-east-1일 경우
SageMakerExecutionRole-us-east-1-cdk
로컬 시스템에서는 aws config default region 변경하시면 Sagemaker Execution Role도 별도 반영합니다.
vi ~/.aws/config
[default]
region = ap-northeast-2
output = json
region이 ap-northeast-2 일 경우
SageMakerExecutionRole-ap-northeast-2-cdk