使用 CloudFormation 创建 Braket 笔记本实例
提示
学习使用 AWS 进行量子计算的基础知识!注册 Amazon Braket 数字学习计划
您可以使用 CloudFormation 来管理 Amazon Braket 笔记本实例。Braket 笔记本实例基于 Amazon SageMaker AI 构建。借助 CloudFormation,您可以使用描述预期配置的模板文件来预调配笔记本实例。模板文件以 JSON 或 YAML 格式写入。您可以采用有序且可重复的方式创建、更新和删除实例。当您管理 AWS 账户 中的多个 Braket 笔记本实例时,您会发现这很有用。
为 Braket 笔记本创建 CloudFormation 模板后,您可以使用 CloudFormation 来部署该资源。有关更多信息,请参阅《CloudFormation 用户指南》中的在 CloudFormation 控制台上创建堆栈。
要使用 CloudFormation 创建 Braket 笔记本实例,您需要执行以下三个步骤:
-
创建一个 SageMaker AI 生命周期配置脚本。
-
创建一个由 SageMaker AI 担任的 AWS Identity and Access Management(IAM)角色。
-
使用前缀
amazon-braket-创建一个 SageMaker AI 笔记本实例
您可以对自己创建的所有 Braket 笔记本重复使用生命周期配置。您还可以为分配相同执行权限的 Braket 笔记本重复使用 IAM 角色。
本节内容:
步骤 1:创建 SageMaker AI 生命周期配置脚本
使用以下模板创建一个 SageMaker AI 生命周期配置脚本。该脚本可为 Braket 定制 SageMaker AI 笔记本实例。有关生命周期 CloudFormation 资源的配置选项,请参阅《CloudFormation 用户指南》中的 AWS::SageMaker::NotebookInstanceLifecycleConfig。
BraketNotebookInstanceLifecycleConfig: Type: "AWS::SageMaker::NotebookInstanceLifecycleConfig" Properties: NotebookInstanceLifecycleConfigName: BraketLifecycleConfig-${AWS::StackName} OnStart: - Content: Fn::Base64: | #!/usr/bin/env bash sudo -u ec2-user -i ≪EOS curl -o braket-notebook-lcc.zip https://d3ded4lzb1lnme.cloudfront.net/notebook/braket-notebook-lcc.zip unzip braket-notebook-lcc.zip ./install.sh EOS exit 0
步骤 2:创建由 Amazon SageMaker AI 担任的 IAM 角色
当您使用 Braket 笔记本实例时,SageMaker AI 会代表您执行操作。例如,假设您在受支持的设备上使用电路运行 Braket 笔记本。在笔记本实例中,SageMaker AI 会为您在 Braket 上运行操作。笔记本执行角色定义了 SageMaker AI 可以代表您执行的确切操作。有关更多信息,请参阅《Amazon SageMaker AI 开发人员指南》中的 SageMaker AI 角色。
使用以下示例创建拥有所需权限的 Braket 笔记本执行角色。您可以根据需要修改策略。
注意
确保该角色有权对前缀为 braketnotebookcdk-" 的 Amazon S3 存储桶执行 s3:ListBucket 和 s3:GetObject 操作。生命周期配置脚本需要这些权限才能复制 Braket 笔记本安装脚本。
ExecutionRole: Type: "AWS::IAM::Role" Properties: RoleName: !Sub AmazonBraketNotebookRole-${AWS::StackName} AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Principal: Service: - "sagemaker.amazonaws.com" Action: - "sts:AssumeRole" Path: "/service-role/" ManagedPolicyArns: - arn:aws:iam::aws:policy/AmazonBraketFullAccess Policies: - PolicyName: "AmazonBraketNotebookPolicy" PolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Action: - s3:GetObject - s3:PutObject - s3:ListBucket Resource: - arn:aws:s3:::amazon-braket-* - arn:aws:s3:::braketnotebookcdk-* - Effect: "Allow" Action: - "logs:CreateLogStream" - "logs:PutLogEvents" - "logs:CreateLogGroup" - "logs:DescribeLogStreams" Resource: - !Sub "arn:aws:logs:*:${AWS::AccountId}:log-group:/aws/sagemaker/*" - Effect: "Allow" Action: - braket:* Resource: "*"
第 3 步:创建带有前缀 amazon-braket- 的 SageMaker AI 笔记本实例
使用 SageMaker AI 生命周期脚本以及在步骤 1 和步骤 2 中创建的 IAM 角色创建 SageMaker AI 笔记本实例。笔记本实例是为 Braket 定制的,可以通过 Amazon Braket 控制台进行访问。有关 CloudFormation 资源配置选项的更多信息,请参阅《 CloudFormation 用户指南》中的 AWS::SageMaker::NotebookInstance。
BraketNotebook: Type: AWS::SageMaker::NotebookInstance Properties: InstanceType: ml.t3.medium NotebookInstanceName: !Sub amazon-braket-notebook-${AWS::StackName} RoleArn: !GetAtt ExecutionRole.Arn VolumeSizeInGB: 30 LifecycleConfigName: !GetAtt BraketNotebookInstanceLifecycleConfig.NotebookInstanceLifecycleConfigName