{Personalize}開始方法 (AWS CLI)


https://docs.aws.amazon.com/ja_jp/personalize/latest/dg/getting-started-cli.html

ドメインデータセットグループは、データセット、レコメンダー、フィルターなど、
ドメイン固有の事前設定されたリソース用の Amazon Personalize コンテナです。

カスタムデータセットグループを使用すると、構成可能なユースケース用のカスタムリソースを構築できます。


-- 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 バケットを作成しトレーニングデータをアップロードする

wget http://files.grouplens.org/datasets/movielens/ml-latest-small.zip
unzip ml-latest-small.zip

head ml-latest-small/ratings.csv

cat ml-latest-small/ratings.csv | awk -F',' '{print $1","$2","$4}' | sed 's/userId,movieId,timestamp/USER_ID,ITEM_ID,TIMESTAMP/' > ratings.csv

head ratings.csv


aws s3 mb s3://bucket123
aws s3 ls


aws s3 cp ratings.csv s3://bucket123

aws s3 ls s3://bucket123 --recursive

-- 3. S3バケットポリシー追加

vim b.json

{
    "Version": "2012-10-17",
    "Id": "PersonalizeS3BucketAccessPolicy",
    "Statement": [
        {
            "Sid": "PersonalizeS3BucketAccessPolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "personalize.amazonaws.com"
            },
            "Action": [
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::bucket123",
                "arn:aws:s3:::bucket123/*"
            ]
        }
    ]
}

aws s3api put-bucket-policy \
--bucket bucket123 \
--policy file://b.json


aws s3api get-bucket-policy \
--bucket bucket123

 


-- 4. Amazon Personalize用のIAMロールの作成
-- 4.1 IAMポリシー作成
vim policy01.json

{
    "Version": "2012-10-17",
    "Id": "PersonalizeS3BucketAccessPolicy",
    "Statement": [
        {
            "Sid": "PersonalizeS3BucketAccessPolicy",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::bucket123",
                "arn:aws:s3:::bucket123/*"
            ]
        }
    ]
}

aws iam create-policy \
--policy-name policy01 \
--policy-document file://policy01.json

-- 4.2 IAMロール作成
vim role01.json


{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "personalize.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "999999999999"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:personalize:ap-northeast-1:999999999999:*"
        }
      }
    }
  ]
}


aws iam create-role \
--role-name role01 \
--assume-role-policy-document file://role01.json

-- 4.3 ポリシーをロールにアタッチ
aws iam attach-role-policy \
--policy-arn arn:aws:iam::999999999999:policy/policy01 \
--role-name role01

aws iam attach-role-policy \
--policy-arn arn:aws:iam::aws:policy/service-role/AmazonPersonalizeFullAccess \
--role-name role01

 

 


-- 5. レーニングデータのインポート

-- 5.1 データセットグループの作成

aws personalize create-dataset-group \
--name dsg01

 

aws personalize list-dataset-groups

aws personalize describe-dataset-group \
--dataset-group-arn arn:aws:personalize:ap-northeast-1:999999999999:dataset-group/dsg01

-- 5.2 スキーマの作成

vim a.json

{
  "type": "record",
  "name": "Interactions",
  "namespace": "com.amazonaws.personalize.schema",
  "fields": [
      {
          "name": "USER_ID",
          "type": "string"
      },
      {
          "name": "ITEM_ID",
          "type": "string"
      },
      {
          "name": "TIMESTAMP",
          "type": "long"
      }
  ],
  "version": "1.0"
}


aws personalize create-schema \
--name schema01 \
--schema file://a.json


aws personalize list-schemas


aws personalize describe-schema \
--schema-arn arn:aws:personalize:ap-northeast-1:999999999999:schema/schema01

-- 5.3 データセットの作成

aws personalize create-dataset \
--name ds01 \
--dataset-group-arn arn:aws:personalize:ap-northeast-1:999999999999:dataset-group/dsg01 \
--dataset-type Interactions \
--schema-arn arn:aws:personalize:ap-northeast-1:999999999999:schema/schema01


aws personalize list-datasets

aws personalize describe-dataset \
--dataset-arn arn:aws:personalize:ap-northeast-1:999999999999:dataset/dsg01/INTERACTIONS


-- 5.4 データセットのインポートジョブを作成

aws personalize create-dataset-import-job \
--job-name job01 \
--dataset-arn arn:aws:personalize:ap-northeast-1:999999999999:dataset/dsg01/INTERACTIONS \
--data-source dataLocation=s3://bucket123/ratings.csv \
--role-arn arn:aws:iam::999999999999:role/role01

aws personalize list-dataset-import-jobs

aws personalize describe-dataset-import-job \
--dataset-import-job-arn arn:aws:personalize:ap-northeast-1:999999999999:dataset-import-job/job01

 


-- 6. ソリューションを作成する (モデルをトレーニングする)


-- 6.1 ソリューションを作成

aws personalize create-solution \
--name sol01 \
--dataset-group-arn arn:aws:personalize:ap-northeast-1:999999999999:dataset-group/dsg01 \
--recipe-arn arn:aws:personalize:::recipe/aws-user-personalization

aws personalize list-solutions


aws personalize describe-solution \
--solution-arn arn:aws:personalize:ap-northeast-1:999999999999:solution/sol01

 

-- 6.2 モデルをトレーニン

aws personalize create-solution-version \
--solution-arn arn:aws:personalize:ap-northeast-1:999999999999:solution/sol01


aws personalize list-solution-versions

aws personalize describe-solution-version \
--solution-version-arn arn:aws:personalize:ap-northeast-1:999999999999:solution/sol01/11111111

★約20分まつ

-- 6.3 ソリューションバージョンのメトリクスを取得

aws personalize get-solution-metrics \
--solution-version-arn arn:aws:personalize:ap-northeast-1:999999999999:solution/sol01/11111111

 

 

-- 7. キャンペーン作成 (ソリューションをデプロイ) します。

aws personalize create-campaign \
--name cam01 \
--solution-version-arn arn:aws:personalize:ap-northeast-1:999999999999:solution/sol01/11111111 \
--min-provisioned-tps 1

aws personalize list-campaigns

aws personalize describe-campaign \
--campaign-arn arn:aws:personalize:ap-northeast-1:999999999999:campaign/cam01

 

 


-- 8. 推奨事項の取得

aws personalize-runtime get-recommendations \
--campaign-arn arn:aws:personalize:ap-northeast-1:999999999999:campaign/cam01 \
--user-id 123

 


-- 9. クリーンアップ

-- キャンペーンの削除

aws personalize list-campaigns

aws personalize delete-campaign \
--campaign-arn arn:aws:personalize:ap-northeast-1:999999999999:campaign/cam01


-- ソリューションの削除

aws personalize list-solutions

aws personalize delete-solution \
--solution-arn arn:aws:personalize:ap-northeast-1:999999999999:solution/sol01


-- データセットの削除

aws personalize list-datasets

aws personalize delete-dataset \
--dataset-arn arn:aws:personalize:ap-northeast-1:999999999999:dataset/dsg01/INTERACTIONS

 


-- スキーマの削除

aws personalize list-schemas

aws personalize delete-schema \
--schema-arn arn:aws:personalize:ap-northeast-1:999999999999:schema/schema01

 

-- データセットグループの削除

aws personalize list-dataset-groups

aws personalize delete-dataset-group \
--dataset-group-arn arn:aws:personalize:ap-northeast-1:999999999999:dataset-group/dsg01

 

-- 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 detach-role-policy \
--role-name role01 \
--policy-arn arn:aws:iam::aws:policy/service-role/AmazonPersonalizeFullAccess


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