AWS Pinpointでエンドポイント一覧をS3にエクスポートする方法

AWS Pinpointでエンドポイント一覧をS3にエクスポートする方法

AWS PinpointのCLIでエンドポイント取得やエンドポイント追加はできますが、一覧を取得して標準出力してくれるコマンドがないようです。

CLIでエンドポイント一覧をS3にエクスポートするcreate-export-jobがあります。

まずはIAMポリシー、IAMロールを作成してS3にエクスポートできるようにします。

IAMポリシー作成

ポリシーを作成します。以下のs3policy.jsonファイルを作成します。

s3policy.json


{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowUserToSeeBucketListInTheConsole",
"Action": [
"s3:ListAllMyBuckets",
"s3:GetBucketLocation"
],
"Effect": "Allow",
"Resource": [ "arn:aws:s3:::*" ]
},
{
"Sid": "AllowRootAndHomeListingOfBucket",
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [ "arn:aws:s3:::バケット名" ],
"Condition": {
"StringEquals": {
"s3:delimiter": [ "/" ],
"s3:prefix": [
"",
"Exports/"
]
}
}
},
{
"Sid": "AllowListingOfUserFolder",
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [ "arn:aws:s3:::バケット名" ],
"Condition": {
"StringLike": {
"s3:prefix": [
"Exports/*"
]
}
}
},
{
"Sid": "AllowAllS3ActionsInUserFolder",
"Action": [ "s3:*" ],
"Effect": "Allow",
"Resource": [ "arn:aws:s3:::バケット名/Exports/*" ]
}
]
}
view raw

gistfile1.txt

hosted with ❤ by GitHub

CLIで以下を実行します。

aws iam create-policy --policy-name s3ExportPolicy --policy-document file://s3policy.json --profile default

ポリシーにs3ExportPolicyが作成されているはずです。

AWS Pinpointでエンドポイント一覧をS3にエクスポートする方法

IAMロール作成

ロールを作成します。以下のtrustpolicy.jsonファイルを作成します。

trustpolicy.json


{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Principal":{
"Service":"pinpoint.amazonaws.com"
},
"Action":"sts:AssumeRole"
}
]
}
view raw

gistfile1.txt

hosted with ❤ by GitHub

CLIで以下を実行します。

aws iam create-role --role-name s3ExportRole --assume-role-policy-document file://trustpolicy.json --profile default

ロールにs3ExportRoleが作成されているはずです。

AWS Pinpointでエンドポイント一覧をS3にエクスポートする方法

ポリシーをロールにアタッチ

最初に作成したポリシーをロールにアタッチして完了です。

CLIで以下を実行します。–policy-arnでポリシーのARNを指定します。

aws iam attach-role-policy --policy-arn arn:aws:iam::999999999999:policy/s3ExportPolicy --role-name s3ExportRole --profile default

エクスポートする

これでRoleArnもできたので実際にエクスポートしてみます。

CLIで以下を実行します。RoleArnではIAMロールのARNを指定します。

aws pinpoint create-export-job --application-id "アプリケーションID" --region us-west-2 --export-job-request S3UrlPrefix=s3://バケット名/Exports/,RoleArn=arn:aws:iam::999999999999:role/s3ExportRole --profile default

標準出力で以下のように出力され、バケット名/Exports/配下に圧縮ファイル(gz)が作成されていればOKです。


{
"ExportJobResponse": {
"CreationDate": "2020-07-04T06:21:41.606Z",
"Definition": {
"RoleArn": "arn:aws:iam::999999999999:role/s3ExportRole",
"S3UrlPrefix": "s3://バケット名/Exports/"
},
"Id": "22d2e2f2452d4645558111333ada506c",
"JobStatus": "CREATED",
"Type": "EXPORT"
}
}
view raw

gistfile1.txt

hosted with ❤ by GitHub

AWS Pinpointでエンドポイント一覧をS3にエクスポートする方法

展開すると、1つのエンドポイントが一つのJSON形式で表示されています。3つエンドポイントが存在する場合は1ファイルにJSON形式が3つ書かれています。

このファイルで削除漏れのエンドポイントを削除していくことが可能です。

参考サイト

IAMの詳細

エンドポイントまたはセグメントをエクスポートするための IAM ロール - Amazon Pinpoint
Amazon Pinpoint のセグメント情報を Amazon Simple Storage Service (Amazon S3) へエクスポートするための IAM ロールを作成します。

エクスポートする方法の公式ドキュメント

Amazon Pinpoint からエンドポイントをエクスポートする - Amazon Pinpoint
エンドポイントをエクスポートして、Amazon Pinpoint プロジェクトのすべてのユーザーのデータを取得します。

コメント

タイトルとURLをコピーしました