{Kendra}開始方法 (AWS CLI)

 

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