https://docs.aws.amazon.com/ja_jp/kendra/latest/dg/gs-cli.html
Amazon Kendraは、ユーザーが自然言語を使用して高度な検索アルゴリズムデータを検索できるようにする、
高精度のインテリジェント検索サービスです。
東京リージョンではまだ使用できない。オレゴンで実施。
-- 1. コマンド等のインストール
-- 1.1 aws cli version 2 インストール
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version
-- 1.2 jqインストール
sudo yum -y install jq
-- 2. S3 バケットを作成しドキュメントをアップロードする
curl -o tutorial-dataset.zip https://docs.aws.amazon.com/kendra/latest/dg/samples/tutorial-dataset.zip
unzip tutorial-dataset.zip
ls -ltr
aws s3 mb s3://bucket123
aws s3 ls
aws s3 cp tutorial-dataset/data s3://bucket123/data/ --recursive
aws s3 ls s3://bucket123 --recursive
-- 3. Amazon Kendra用のIAMロールの作成
-- 3.1 IAMポリシー作成
vim policy01.json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cloudwatch:PutMetricData"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"cloudwatch:namespace": "AWS/Kendra"
}
}
},
{
"Effect": "Allow",
"Action": [
"logs:DescribeLogGroups"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup"
],
"Resource": [
"arn:aws:logs:us-west-2:999999999999:log-group:/aws/kendra/*"
]
},
{
"Effect": "Allow",
"Action": [
"logs:DescribeLogStreams",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:us-west-2:999999999999:log-group:/aws/kendra/*:log-stream:*"
]
},
{
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::bucket123/*"
],
"Effect": "Allow"
},
{
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::bucket123"
],
"Effect": "Allow"
},
{
"Effect": "Allow",
"Action": [
"kendra:BatchPutDocument",
"kendra:BatchDeleteDocument"
],
"Resource": "arn:aws:kendra:us-west-2:999999999999:index/*"
}
]
}
aws iam create-policy \
--policy-name policy01 \
--policy-document file://policy01.json
-- 3.2 IAMロール作成
vim role01.json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "kendra.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
aws iam create-role \
--role-name role01 \
--assume-role-policy-document file://role01.json
-- 3.3 ポリシーをロールにアタッチ
aws iam attach-role-policy \
--policy-arn arn:aws:iam::999999999999:policy/policy01 \
--role-name role01
-- 4. インデックスの作成
aws kendra create-index \
--name index01 \
--description "index01" \
--role-arn arn:aws:iam::999999999999:role/role01 \
--edition DEVELOPER_EDITION
aws kendra list-indices
aws kendra describe-index \
--id 11111111-1111-1111-1111-111111111111
-- 5. データソースの作成
aws kendra create-data-source \
--index-id 11111111-1111-1111-1111-111111111111 \
--name ds01 \
--role-arn arn:aws:iam::999999999999:role/role01 \
--type S3 \
--configuration '{"S3Configuration":{"BucketName":"bucket123"}}'
aws kendra list-data-sources \
--index-id 11111111-1111-1111-1111-111111111111
aws kendra describe-data-source \
--id 22222222-2222-2222-2222-222222222222 \
--index-id 11111111-1111-1111-1111-111111111111
-- 6. データソースの同期
aws kendra start-data-source-sync-job \
--id 22222222-2222-2222-2222-222222222222 \
--index-id 11111111-1111-1111-1111-111111111111
aws kendra list-data-source-sync-jobs \
--id 22222222-2222-2222-2222-222222222222 \
--index-id 11111111-1111-1111-1111-111111111111
aws kendra describe-data-source \
--id 22222222-2222-2222-2222-222222222222 \
--index-id 11111111-1111-1111-1111-111111111111
-- 7. インデックスをクエリする
aws kendra query \
--index-id 11111111-1111-1111-1111-111111111111 \
--query-text "Who is Lewis Hamilton?"
aws kendra query \
--index-id 11111111-1111-1111-1111-111111111111 \
--query-text "How does Formula One work?"
aws kendra query \
--index-id 11111111-1111-1111-1111-111111111111 \
--query-text "Formula One"
-- 8. クリーンアップ
-- データソースの削除
aws kendra list-data-sources \
--index-id 11111111-1111-1111-1111-111111111111
aws kendra delete-data-source \
--index-id 11111111-1111-1111-1111-111111111111 \
--id 22222222-2222-2222-2222-222222222222
-- インデックスの削除
aws kendra list-indices
aws kendra delete-index \
--id 11111111-1111-1111-1111-111111111111
-- IAMロールの削除
aws iam list-roles | grep role01
aws iam detach-role-policy \
--role-name role01 \
--policy-arn arn:aws:iam::999999999999:policy/policy01
aws iam delete-role --role-name role01
-- IAMポリシーの削除
aws iam list-policies | grep policy01
aws iam delete-policy \
--policy-arn arn:aws:iam::999999999999:policy/policy01
-- S3バケットの削除
aws s3 ls
aws s3 rb s3://bucket123 --force