この記事について
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
1. Service-linked roleの作成
Lexのbotに音声で応答させる(Pollyで音声を合成する)ために必要となるRoleを作成します。
1.1. Service-linked roleの不存在を確認
Service-linked roleの不存在を確認します。
マネージメントコンソールですでにボットを作成済みの場合、本章の手順は省略してください。
コマンド
aws iam get-role --role-name AWSServiceRoleForLexBots
結果
An error occurred (NoSuchEntity) when calling the GetRole operation: Role not found for AWSServiceRoleForLexBots
1.2. パラメーターの指定
コマンド
SERVICE_NAME="lex.amazonaws.com"
DESCRIPTION="Service-linked Role for Lex in CLI Hands-on"
1.3. Service-linked roleの作成
変数の確認
コマンド
cat << EOF
SERVICE_NAME: ${SERVICE_NAME}
DESCRIPTION: ${DESCRIPTION}
EOF
結果
SERVICE_NAME: lex.amazonaws.com
DESCRIPTION: Service-linked Role for Lex in CLI Hands-on
Service-linked roleの作成
Service-linked roleを作成します。
コマンド
aws iam create-service-linked-role \
--aws-service-name ${SERVICE_NAME} \
--description "${DESCRIPTION}"
結果
{
"Role": {
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"sts:AssumeRole"
],
"Effect": "Allow",
"Principal": {
"Service": [
"lex.amazonaws.com"
]
}
}
]
},
"RoleId": "AXXXXXXXXXXXXXXXXXXXX",
"CreateDate": "2017-10-22T06:16:12.867Z",
"RoleName": "AWSServiceRoleForLexBots",
"Path": "/aws-service-role/lex.amazonaws.com/",
"Arn": "arn:aws:iam::XXXXXXXXXXXX:role/aws-service-role/lex.amazonaws.com/AWSServiceRoleForLexBots"
}
}
作成したリソースの確認
Service-linked roleが正常に作成されたことを確認します。
コマンド
aws iam get-role --role-name AWSServiceRoleForLexBots
結果
{
"Role": {
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": "lex.amazonaws.com"
}
}
]
},
"RoleId": "AXXXXXXXXXXXXXXXXXXXX",
"CreateDate": "2017-10-08T04:37:04Z",
"RoleName": "AWSServiceRoleForLexBots",
"Path": "/aws-service-role/lex.amazonaws.com/",
"Arn": "arn:aws:iam::XXXXXXXXXXXX:role/aws-service-role/lex.amazonaws.com/AWSServiceRoleForLexBots"
}
}
以上です。