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バケットポリシー追加
{
"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 スキーマの作成
{
"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