[JAWS-UG CLI] Amazon MachineLearning 入門 (8) リソースの削除

# この記事について

[JAWS-UG CLI専門支部 #67 MachineLearning入門](https://jawsug-cli.doorkeeper.jp/events/41917)で実施するハンズオン用の手順書です。


# 前提条件

## 必要な権限

作業にあたっては、以下の権限を有したIAMユーザもしくはIAMロールを利用してください。

- MachineLearningのフルコントロール権限
- S3のフルコントロール権限

# 0. 準備

## 0.1. リージョンを指定

```bash:コマンド
export AWS_DEFAULT_REGION="eu-west-1"
```

## 0.2. 資格情報を確認


```bash:コマンド
aws configure list
```

インスタンスプロファイルを設定したEC2インスタンスでアクセスキーを設定せずに実行した場合、以下のようになります。

```text:結果
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************GMWA         iam-role
secret_key     ****************obFC         iam-role
    region                eu-west-1              env    AWS_DEFAULT_REGION
```

## 0.3. バージョン確認

```bash:コマンド
aws --version
```

```text:結果
aws-cli/1.10.66 Python/2.7.12 Linux/4.4.19-29.55.amzn1.x86_64 botocore/1.4.56
```

## 0.4. バージョンアップ（必要に応じて）

```bash:コマンド
sudo pip install -U awscli
```


## 0.5. 変数の確認

```bash:コマンド
cat << ETX

    BAT_ID: ${BAT_ID}
    RE_BAT_ID: ${RE_BAT_ID}
    EVAL_ID: ${EVAL_ID}
    ML_MODEL_ID: ${ML_MODEL_ID}
    TRAINING_DATA_SOURCE_ID: ${TRAINING_DATA_SOURCE_ID}
    PREDICTION_DATA_SOURCE_ID: ${PREDICTION_DATA_SOURCE_ID}
    BUCKET_NAME: ${BUCKET_NAME}

ETX
```

```text:結果

    BAT_ID: bat-cli-************
    RE_BAT_ID: re-bat-cli-************
    EVAL_ID: eval-cli-************
    ML_MODEL_ID: ml-model-cli-************
    TRAINING_DATA_SOURCE_ID: training-cli-************
    PREDICTION_DATA_SOURCE_ID: prediction-cli-************
    BUCKET_NAME: jawsug-cli-ml-************

```


# 1. 環境削除

## 1.1. 削除対象の確認

```bash:コマンド
cat << ETX

    BAT_ID: ${BAT_ID}
    RE_BAT_ID: ${RE_BAT_ID}
    EVAL_ID: ${EVAL_ID}
    ML_MODEL_ID: ${ML_MODEL_ID}
    TRAINING_DATA_SOURCE_ID: ${TRAINING_DATA_SOURCE_ID}
    PREDICTION_DATA_SOURCE_ID: ${PREDICTION_DATA_SOURCE_ID}
    BUCKET_NAME: ${BUCKET_NAME}

ETX
```

```text:結果

    BAT_ID: bat-cli-************
    RE_BAT_ID: re-bat-cli-************
    EVAL_ID: eval-cli-************
    ML_MODEL_ID: ml-model-cli-************
    TRAINING_DATA_SOURCE_ID: training-cli-************
    PREDICTION_DATA_SOURCE_ID: prediction-cli-************
    BUCKET_NAME: jawsug-cli-ml-************

```

## 1.2. リアルタイムエンドポイントの削除

### 削除

```bash:コマンド
aws machinelearning delete-realtime-endpoint \
    --ml-model-id ${ML_MODEL_ID}
```

```json:結果
{
    "MLModelId": "ml-model-cli-************",
    "RealtimeEndpointInfo": {
        "PeakRequestsPerSecond": 0,
        "EndpointStatus": "NONE"
    }
}
```


## 1.3. バッチ予測の削除

### 削除

```bash:コマンド
aws machinelearning delete-batch-prediction \
    --batch-prediction-id ${BAT_ID}
```

```json:結果
{
    "BatchPredictionId": "bat-cli-************"
}
```

```bash:コマンド
aws machinelearning delete-batch-prediction \
    --batch-prediction-id ${RE_BAT_ID}
```

```json:結果
{
    "BatchPredictionId": "re-bat-cli-************"
}
```


### 確認

```bash:コマンド
aws machinelearning get-batch-prediction \
    --batch-prediction-id ${BAT_ID}
```

```text:結果
{
    "Status": "DELETED",
    "BatchPredictionId": "bat-cli-************"
}
```

```bash:コマンド
aws machinelearning get-batch-prediction \
    --batch-prediction-id ${RE_BAT_ID}
```

```text:結果
{
    "Status": "DELETED",
    "BatchPredictionId": "re-bat-cli-************"
}
```


## 1.4. 評価の削除

### 削除

```bash:コマンド
aws machinelearning delete-evaluation \
    --evaluation-id ${EVAL_ID}
```

```json:結果
{
    "EvaluationId": "eval-cli-************"
}
```

### 確認

```bash:コマンド
aws machinelearning get-evaluation \
    --evaluation-id ${EVAL_ID}
```

```text:結果
{
    "Status": "DELETED",
    "EvaluationId": "eval-cli-************"
}
```


## 1.5. 学習モデルの削除

### 削除

```bash:コマンド
aws machinelearning delete-ml-model \
    --ml-model-id ${ML_MODEL_ID}
```

```json:結果
{
    "MLModelId": "ml-model-cli-************"
}
```

### 確認

```bash:コマンド
aws machinelearning get-ml-model \
    --ml-model-id ${ML_MODEL_ID}
```

```text:結果
{
    "MLModelId": "ml-model-cli-************",
    "Status": "DELETED"
}
```


## 1.6. データソースの削除（学習用）

### 削除

```bash:コマンド
aws machinelearning delete-data-source \
    --data-source-id ${TRAINING_DATA_SOURCE_ID}
```

```json:結果
{
    "DataSourceId": "training-cli-************"
}
```

### 確認

```bash:コマンド
aws machinelearning get-data-source \
    --data-source-id ${TRAINING_DATA_SOURCE_ID}
```

```text:結果
{
    "Status": "DELETED",
    "ComputeStatistics": false,
    "DataSourceId": "training-cli-************"
}
```


## 1.7. データソースの削除（バッチ予測用）

### 削除

```bash:コマンド
aws machinelearning delete-data-source \
    --data-source-id ${PREDICTION_DATA_SOURCE_ID}
```

```json:結果
{
    "DataSourceId": "prediction-cli-************"
}
```

### 確認

```bash:コマンド
aws machinelearning get-data-source \
    --data-source-id ${PREDICTION_DATA_SOURCE_ID}
```

```text:結果
{
    "Status": "DELETED",
    "ComputeStatistics": false,
    "DataSourceId": "prediction-cli-************"
}
```


## 1.8. S3バケットの削除

### 削除

```bash:コマンド
aws s3 rb s3://${BUCKET_NAME} --force
```

```text:結果
delete: s3://jawsug-cli-ml-************/.writePermissionCheck.tmp
delete: s3://jawsug-cli-ml-************/banking-batch.csv
delete: s3://jawsug-cli-ml-************/batch-prediction/bat-cli.manifest
delete: s3://jawsug-cli-ml-************/banking.csv
delete: s3://jawsug-cli-ml-************/data_schema.json
delete: s3://jawsug-cli-ml-************/batch-prediction/result/bat-cli-banking-batch.csv.gz
delete: s3://jawsug-cli-ml-************/prediction_data_schema.json
remove_bucket: s3://jawsug-cli-ml-************/
```

### 確認

```bash:コマンド
aws s3 ls s3://${BUCKET_NAME}
```

```text:結果
An error occurred (NoSuchBucket) when calling the ListObjects operation: The specified bucket does not exist
```

以上です。

お疲れ様でした。