

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用创建 Braket 笔记本实例 CloudFormation
<a name="braket-cloudformation"></a>

**提示**  
**通过以下方式学习量子计算的基础 AWS！**注册 [Amazon Braket 数字学习计划](https://skillbuilder.aws/learning-plan/EH35DWGU3R/amazon-braket--knowledge-badge-readiness-path-includes-labs)，完成一系列学习课程和数字评估后，即可获得自己的数字徽章。

您可以使用 CloudFormation 来管理您的 Amazon Braket 笔记本实例。Braket 笔记本实例建立在 Amazon A SageMaker I 之上。使用 CloudFormation，您可以使用描述预期配置的模板文件来配置笔记本实例。模板文件以 JSON 或 YAML 格式写入。您可以采用有序且可重复的方式创建、更新和删除实例。当您管理 AWS 账户中的多个 Braket Notebook 实例时，您会发现这很有用。

为 Braket 笔记本创建 CloudFormation 模板后，您可以使用 CloudFormation 来部署该资源。有关更多信息，请参阅*CloudFormation 用户指南*中的[在 CloudFormation 控制台上创建堆栈](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)。

要使用创建 Braket 笔记本实例 CloudFormation，请执行以下三个步骤：

1. 创建 A SageMaker I 生命周期配置脚本。

1. 创建由 A SageMaker I 担任的 AWS Identity and Access Management (IAM) 角色。

1. 创建带有前缀的 SageMaker AI 笔记本实例 **amazon-braket-**

您可以对自己创建的所有 Braket Notebook 重复使用生命周期配置。您还可以为分配相同执行权限的 Braket Notebook 重复使用 IAM 角色。

**Topics**
+ [步骤 1：创建 A SageMaker I 生命周期配置脚本](#braket-create-cloudformation-template-step-1)
+ [第 2 步：创建由 Amazon A SageMaker I 担任的 IAM 角色](#braket-create-cloudformation-template-step-2)
+ [步骤 3：创建带有前缀的 SageMaker AI 笔记本实例 `amazon-braket-`](#braket-create-cloudformation-template-step-3)

## 步骤 1：创建 A SageMaker I 生命周期配置脚本
<a name="braket-create-cloudformation-template-step-1"></a>

使用以下模板创建 A [SageMaker I 生命周期配置脚本](https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html)。该脚本为 Braket 自定义 SageMaker AI 笔记本实例。有关生命周期 CloudFormation 资源的配置选项，请参阅*CloudFormation 用户指南[AWS::SageMaker::NotebookInstanceLifecycleConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstancelifecycleconfig.html)*中的。

```
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 A SageMaker I 担任的 IAM 角色
<a name="braket-create-cloudformation-template-step-2"></a>

当您使用 Braket 笔记本实例时， SageMaker AI 会代表您执行操作。例如，假设您在受支持的设备上使用电路运行 Braket Notebook。在笔记本实例中， SageMaker AI 会为您在 Braket 上运行操作。笔记本执行角色定义了允许 SageMaker AI 代表您执行的确切操作。有关更多信息，请参阅 [SageMaker A *mazon AI 开发者指南中的 SageMaker AI* 角色](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html)。

使用以下示例创建拥有所需权限的 Braket Notebook 执行角色。您可以根据需要修改策略。

**注意**  
确保该角色有权对前缀为 `braketnotebookcdk-"` 的 Amazon S3 存储桶执行 `s3:ListBucket` 和 `s3:GetObject` 操作。生命周期配置脚本需要这些权限才能复制 Braket Notebook 安装脚本。

```
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：创建带有前缀的 SageMaker AI 笔记本实例 `amazon-braket-`
<a name="braket-create-cloudformation-template-step-3"></a>

使用 A SageMaker I 生命周期脚本以及在步骤 1 和步骤 2 中创建的 IAM 角色创建 A SageMaker I 笔记本实例。Notebook 实例是为 Braket 定制的，可以通过 Amazon Braket 控制台进行访问。有关此 CloudFormation 资源配置选项的更多信息，请参阅*CloudFormation 用户指南[AWS::SageMaker::NotebookInstance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html)*中的。

```
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
```