2

aws --version aws-cli/1.16.76 Python/2.7.10 Darwin/16.7.0 botocore/1.12.66

我正在尝试以编程方式将 APNS_SANDBOX 频道添加到精确的应用程序。我可以通过 pinpoint 控制台成功地做到这一点,但不能使用 aws cli 或作为最终目标的 lambda 函数。只能通过 CodePipeline 对我们的测试/生产环境进行更改,但出于测试目的,我正在尝试使用 aws cli 来实现这一点。

我已经尝试过 aws cli(使用 root 凭据)和 lambda 函数——两者都导致以下错误:

An error occurred (BadRequestException) when calling the UpdateApnsSandboxChannel operation: Missing credentials

我尝试将 UpdateApnsSandboxChannel json 对象中的 Certificate 字段设置为 .p12 证书文件的路径,并使用从 openssl 工具检索到的字符串值。

今天我与来自 aws 支持的人一起工作,他们在尝试调试了几个小时后无法找出问题所在。他们说他们会向精确定位团队发送一封电子邮件,但他们没有关于何时回复的预计时间。

谢谢

4

1 回答 1

1

我最终让它成功运行——这就是它失败的原因:

我最初使用以下请求对象进行 cli 调用,因为这是文档中包含的内容:


aws pinpoint update-apns-sandbox-channel --application-id [physicalID]  --cli-input-json file:///path-to-requestObject.json
{
    "APNSSandboxChannelRequest": {
        "BundleId": "com.bundleId.value", 
        "Certificate":"P12_FILE_PATH_OR_CERT_AS_STRING", 
        "DefaultAuthenticationMethod": "CERTIFICATE", 
        "Enabled": true, 
        "PrivateKey":"PRIVATEKEY_FILE_PATH_OR_AS_STRING",
        "TeamId": "",
        "TokenKey": "",
        "TokenKeyId": ""
    }, 
    "ApplicationId": "Pinpoint_PhysicalId"
}

在玩了一些之后,我通过删除 BundleId、TeamId、TokenKey 和 TokenKeyId 来让它工作。我相信使用 p8 证书时需要这些字段。


{
    "APNSSandboxChannelRequest": {
        "Certificate":"P12_FILE_PATH_OR_CERT_AS_STRING", 
        "DefaultAuthenticationMethod": "CERTIFICATE", 
        "Enabled": true, 
        "PrivateKey":"PRIVATEKEY_FILE_PATH_OR_AS_STRING"      
    }, 
    "ApplicationId": "Pinpoint_PhysicalId"
}

于 2019-02-15T19:16:49.933 回答