この記事について
JAWS-UG CLI専門支部 #95 Lex入門 (秋のVUIキャンペーン第1弾)で実施するハンズオン用の手順書です。
前提条件
必要な権限
作業にあたっては、以下の権限を有したIAMユーザもしくはIAMロールを利用してください。
- 以下のサービスの対するフルコントロール権限
- IAM
- Lex
0. 準備
0.1. リージョンを指定
バージニアリージョンを利用します。(リンク先にサービスが提供されているリージョンの一覧が記載されています)
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."
}
}
以上です。