我正在考虑使用AWS pinpoint将推送通知发送到我的移动应用程序。 我已经通过控制台创build和configuration了应用程序,现在我想对其进行编写脚本。 推荐的方法是创build一个IAM用户,让用户访问精确定位的服务,然后使用用户的凭证。
所以我创build了一个完全访问精确定位服务的用户。
用户页面的屏幕截图显示了精确的权限
我的政策JSON直接从示例http://docs.aws.amazon.com/pinpoint/latest/developerguide/permissions-actions.html复制,除了我删除了mobileanalytics因为我只想使用推送通知。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "mobiletargeting:*", ], "Resource": "*" } ] }
然后,我将用户凭据复制到〜/ .aws / credentials中,并尝试使用CLI获取应用程序的列表,并给我一个内部服务器错误。 我确信凭证文件的格式和我使用的命令行是正确的,因为如果我使用根证书,它的工作原理。
显然,现在我已经畅通无阻了,因为我现在可以只使用root访问权限,但是能够遵循AWS最佳实践是一件好事。
(aws)$ aws pinpoint get-apps { "ApplicationsResponse": { "Item": [ { "Id": "7b7a69448a524f94a8bde1c8b2ce9ef7", "Name": "emissionphone_MobileHub" } ] } }
(aws)$ cp ~/.aws/credentials.iam_user ~/.aws/credentials (aws)$ aws pinpoint get-apps An error occurred (InternalServerErrorException) when calling the GetApps operation (reached max retries: 4): Internal server error
(aws)$ cp ~/.aws/credentials.root ~/.aws/credentials (aws)$ aws pinpoint get-apps { "ApplicationsResponse": { "Item": [ { "Id": "7b7a69448a524f94a8bde1c8b2ce9ef7", "Name": "emissionphone_MobileHub" } ] } }
另外请注意,它与服务器错误,而不是Access Denied ,这似乎表明与精确的服务,而不是我的凭据问题…
回答我自己的问题,这是因为我为取消mobileanalytics所做的小改动。 如果我改变政策
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "mobiletargeting:*", "mobileanalytics:*" ], "Resource": "*" } ] }
IAM用户凭证也可以工作
(aws)$ cp ~/.aws/credentials.iam_user ~/.aws/credentials (aws)$ aws pinpoint get-apps { "ApplicationsResponse": { "Item": [ { "Id": "7b7a69448a524f94a8bde1c8b2ce9ef7", "Name": "emissionphone_MobileHub" } ] } }
所以它看起来像推送通知默认情况下使用移动分析,无论你是否希望他们。