AWS Pinpointでエンドポイント一覧をS3にエクスポートする方法
AWS PinpointのCLIでエンドポイント取得やエンドポイント追加はできますが、一覧を取得して標準出力してくれるコマンドがないようです。
CLIでエンドポイント一覧をS3にエクスポートするcreate-export-jobがあります。
まずはIAMポリシー、IAMロールを作成してS3にエクスポートできるようにします。
IAMポリシー作成
ポリシーを作成します。以下のs3policy.jsonファイルを作成します。
s3policy.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"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/*" ] | |
} | |
] | |
} |
CLIで以下を実行します。
aws iam create-policy --policy-name s3ExportPolicy --policy-document file://s3policy.json --profile default
ポリシーにs3ExportPolicyが作成されているはずです。
IAMロール作成
ロールを作成します。以下のtrustpolicy.jsonファイルを作成します。
trustpolicy.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"Version":"2012-10-17", | |
"Statement":[ | |
{ | |
"Effect":"Allow", | |
"Principal":{ | |
"Service":"pinpoint.amazonaws.com" | |
}, | |
"Action":"sts:AssumeRole" | |
} | |
] | |
} |
CLIで以下を実行します。
aws iam create-role --role-name s3ExportRole --assume-role-policy-document file://trustpolicy.json --profile default
ロールにs3ExportRoleが作成されているはずです。
ポリシーをロールにアタッチ
最初に作成したポリシーをロールにアタッチして完了です。
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です。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"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" | |
} | |
} |
展開すると、1つのエンドポイントが一つのJSON形式で表示されています。3つエンドポイントが存在する場合は1ファイルにJSON形式が3つ書かれています。
このファイルで削除漏れのエンドポイントを削除していくことが可能です。
参考サイト
IAMの詳細
エクスポートする方法の公式ドキュメント
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント