This post is Private. Only a writer or those who know its URL can access this post.

Article information
Show article in Markdown
Report article
Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

この記事について

JAWS-UG CLI専門支部 #95 Lex入門 (秋のVUIキャンペーン第1弾)で実施するハンズオン用の手順書です。

前提条件

必要な権限

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

  • 以下のサービスの対するフルコントロール権限
    • IAM
    • Lex

0. 準備

0.1. リージョンを指定

バージニアリージョンを利用します。(リンク先にサービスが提供されているリージョンの一覧が記載されています)

API Reference

コマンド
export AWS_DEFAULT_REGION="us-east-1"

0.2. 資格情報を確認

コマンド
aws configure list

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

結果
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************QSAA         iam-role
secret_key     ****************c1xY         iam-role
    region                us-west-2              env    AWS_DEFAULT_REGION

0.3. バージョン確認

コマンド
aws --version
結果
(可能な限り最新版を利用しましょう)

0.4. バージョンアップ(必要に応じて)

コマンド
sudo pip install -U awscli

0.5 変数の確認

コマンド
cat << ETX

    ALIAS: ${ALIAS}
    BOT_NAME: ${BOT_NAME}
    INTENT_NAME: ${INTENT_NAME}
    SLOT_TYPE_NAME: ${SLOT_TYPE_NAME}

ETX

1. エイリアスの削除

削除するリソースを確認します。

コマンド
aws lex-models get-bot-alias \
    --name ${ALIAS} \
    --bot-name ${BOT_NAME}
結果
{
    "name": "DEV",
    "checksum": "11a4ddb4-3c8c-4ad8-a841-18d389184915",
    "lastUpdatedDate": 1508653879.681,
    "createdDate": 1508653879.681,
    "botVersion": "$LATEST",
    "botName": "OrderFlowersBot",
    "description": "JAWSUG CLI 20171023"
}

リソースを削除します。

コマンド
aws lex-models delete-bot-alias \
    --name ${ALIAS} \
    --bot-name ${BOT_NAME}

リソースが削除されたことを確認します。

コマンド
aws lex-models get-bot-aliases \
    --bot-name ${BOT_NAME}
結果
{
    "BotAliases": []
}

2. ボットの削除

削除するリソースを確認します。

コマンド
aws lex-models get-bots \
    --name-contains ${BOT_NAME}
結果
{
    "bots": [
        {
            "status": "NOT_BUILT",
            "name": "OrderFlowersBot",
            "version": "$LATEST",
            "lastUpdatedDate": 1508653373.381,
            "createdDate": 1508653340.237,
            "description": "Bot to order flowers on the behalf of a user"
        }
    ]
}

リソースを削除します。

コマンド
aws lex-models delete-bot \
    --name ${BOT_NAME}

リソースが削除されたことを確認します。

コマンド
aws lex-models get-bots \
    --name-contains ${BOT_NAME}
結果
{
    "bots": []
}

3. インテントの削除

削除するリソースを確認します。

コマンド
aws lex-models get-intents \
    --name-contains ${INTENT_NAME}
結果
{
    "intents": [
        {
            "version": "$LATEST",
            "createdDate": 1508653195.186,
            "name": "OrderFlowers",
            "lastUpdatedDate": 1508654600.844,
            "description": "Intent to order a bouquet of flowers for pick up"
        }
    ]
}

リソースを削除します。

コマンド
aws lex-models delete-intent \
    --name ${INTENT_NAME}

リソースが削除されたことを確認します。

コマンド
aws lex-models get-intents \
    --name-contains ${INTENT_NAME}
結果
{
    "intents": []
}

4. スロットタイプの削除

削除するリソースを確認します。

コマンド
aws lex-models get-slot-types \
    --name-contains ${SLOT_TYPE_NAME}
結果
{
    "slotTypes": [
        {
            "version": "$LATEST",
            "createdDate": 1508653101.833,
            "name": "FlowerTypes",
            "lastUpdatedDate": 1508653101.833,
            "description": "Types of flowers to pick up"
        }
    ]
}

リソースを削除します。

コマンド
aws lex-models delete-slot-type \
    --name ${SLOT_TYPE_NAME}

リソースが削除されたことを確認します。

コマンド
aws lex-models get-slot-types \
    --name-contains ${SLOT_TYPE_NAME}
結果
{
    "slotTypes": []
}

5. Service-linked Roleの削除

削除するリソースを確認します。

コマンド
aws iam get-role \
    --role-name AWSServiceRoleForLexBots
結果
{
    "Role": {
        "Description": "Service-linked Role for Lex in CLI Hands-on",
        "AssumeRolePolicyDocument": {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Action": "sts:AssumeRole",
                    "Effect": "Allow",
                    "Principal": {
                        "Service": "lex.amazonaws.com"
                    }
                }
            ]
        },
        "RoleId": "AXXXXXXXXXXXXXXXXXXXX",
        "CreateDate": "2017-10-22T06:16:12Z",
        "RoleName": "AWSServiceRoleForLexBots",
        "Path": "/aws-service-role/lex.amazonaws.com/",
        "Arn": "arn:aws:iam::XXXXXXXXXXXX:role/aws-service-role/lex.amazonaws.com/AWSServiceRoleForLexBots"
    }
}

リソースを削除します。

コマンド
aws iam delete-service-linked-role \
    --role-name AWSServiceRoleForLexBots
結果
{
    "DeletionTaskId": "task/aws-service-role/lex.amazonaws.com/AWSServiceRoleForLexBots/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

リソースが削除されたことを確認します。(タスクIDを差し替えてください)

何度か検証した範囲では、先のコマンドによるService-linked Roleの削除は失敗するようです。マネージメントコンソール(Lex)から削除することをお勧めします。

コマンド
aws iam get-service-linked-role-deletion-status \
    --deletion-task-id "task/aws-service-role/lex.amazonaws.com/AWSServiceRoleForLexBots/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
結果
{
    "Status": "FAILED",
    "Reason": {
        "RoleUsageList": [],
        "Reason": "Role could not be deleted because of an internal error."
    }
}

以上です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした