

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 建立 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 SageMaker AI 為基礎。使用 CloudFormation，您可以使用描述預期組態的範本檔案來佈建筆記本執行個體。範本檔案是以 JSON 或 YAML 格式撰寫。您可以以有序且可重複的方式建立、更新和刪除執行個體。當您在 中管理多個 Braket 筆記本執行個體時，您可能會發現這一點很有用 AWS 帳戶。

為 Braket 筆記本建立 CloudFormation 範本後，您可以使用 CloudFormation 來部署資源。如需詳細資訊，請參閱《 *CloudFormation 使用者指南*》中的[在 CloudFormation 主控台上建立堆疊](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)。

若要使用 CloudFormation 建立 Braket 筆記本執行個體，請執行這三個步驟：

1. 建立 SageMaker AI 生命週期組態指令碼。

1. 建立由 SageMaker AI 擔任的 AWS Identity and Access Management (IAM) 角色。

1. 使用 字首建立 SageMaker AI 筆記本執行個體 **amazon-braket-**

您可以為您建立的所有 Braket 筆記本重複使用生命週期組態。您也可以為您指派相同執行許可的 Braket 筆記本重複使用 IAM 角色。

**Topics**
+ [步驟 1：建立 SageMaker AI 生命週期組態指令碼](#braket-create-cloudformation-template-step-1)
+ [步驟 2：建立 Amazon SageMaker AI 擔任的 IAM 角色](#braket-create-cloudformation-template-step-2)
+ [步驟 3：建立字首為 的 SageMaker AI 筆記本執行個體 `amazon-braket-`](#braket-create-cloudformation-template-step-3)

## 步驟 1：建立 SageMaker AI 生命週期組態指令碼
<a name="braket-create-cloudformation-template-step-1"></a>

使用下列範本建立 [SageMaker AI 生命週期組態指令碼](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 SageMaker AI 擔任的 IAM 角色
<a name="braket-create-cloudformation-template-step-2"></a>

當您使用 Braket 筆記本執行個體時，SageMaker AI 會代表您執行操作。例如，假設您使用支援的裝置上的電路執行 Braket 筆記本。在筆記本執行個體中，SageMaker AI 會為您在 Braket 上執行 操作。筆記本執行角色會定義允許 SageMaker AI 代表您執行的確切操作。如需詳細資訊，請參閱《Amazon [SageMaker AI 開發人員指南》中的 SageMaker AI 角色](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html)。 *Amazon SageMaker *

使用下列範例來建立具有所需許可的 Braket 筆記本執行角色。您可以根據您的需求修改政策。

**注意**  
請確定角色具有在字首為 的 Amazon S3 儲存貯體上 `s3:ListBucket`和 `s3:GetObject`操作的許可`braketnotebookcdk-"`。生命週期組態指令碼需要這些許可才能複製 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：建立字首為 的 SageMaker AI 筆記本執行個體 `amazon-braket-`
<a name="braket-create-cloudformation-template-step-3"></a>

使用 SageMaker AI 生命週期指令碼和步驟 1 和步驟 2 中建立的 IAM 角色來建立 SageMaker AI 筆記本執行個體。筆記本執行個體是針對 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
```