Amazon Personalizeでのデータインポートを成功させるためのS3バケットポリシー設定ガイド
こんにちは、ともぞうです。今回は、Amazon Personalizeでのデータインポートを成功させるためのS3バケットポリシーの設定方法について解説します。
Amazon Personalizeは機械学習を用いたパーソナライズされたレコメンデーションを提供するサービスですが、データのインポートには、「①Amazon Personalize 向けの IAM ロールの作成」と「②S3バケットポリシーの設定」の両方が必須です。
この記事では、それらを設定する方法について説明します。
①Amazon Personalize 向けの IAM ロールの作成
信頼ポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "personalize.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
許可ポリシー
{
"Version": "2012-10-17",
"Id": "PersonalizeS3BucketAccessPolicy",
"Statement": [
{
"Sid": "PersonalizeS3BucketAccessPolicy",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::<bucket-name>",
"arn:aws:s3:::<bucket-name>/*"
]
}
]
}
② S3バケットポリシーの作成
バケットポリシー
{
"Version": "2012-10-17",
"Id": "PersonalizeS3BucketAccessPolicy",
"Statement": [
{
"Sid": "PersonalizeS3BucketAccessPolicy",
"Effect": "Allow",
"Principal": {
"Service": "personalize.amazonaws.com"
},
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::<bucket-name>",
"arn:aws:s3:::<bucket-name>/*"
]
}
]
}
まとめ
Amazon Personalizeのデータインポートジョブを実行するために必要な「IAMロール」と「S3バケットポリシー」の作成手順を紹介しました。
通常どちらの設定も必要な場合とは、クロスアカウントアクセスの場合などが考えられます。
実際は1つのAWSアカウント内で「Amazon Personalize」と「S3バケット」を作成していますが、あたかもAmazon Personalizeは異なるAWS アカウント内(アカウントA)で作成されており、別AWS アカウント内(アカウントB)のS3バケットにアクセスしているように感じました。
このように通常と異なる対応が必要な場合はAWS公式ドキュメント(Amazon Personalize サービスロールに対する、Amazon S3 ポリシーのアタッチ)を参考にするといいですね。