Команда aws pinpoint update-apns-sandbox-channel приводит к отсутствию учетных данных
aws --version
aws-cli/1.16.76 Python/2.7.10 Darwin/16.7.0 botocore/1.12.66
Я пытаюсь программно добавить канал APNS_SANDBOX в точное приложение. Я могу сделать это успешно с помощью консоли pinpoint, но не с помощью aws cli или лямбда-функции, которая является конечной целью. Изменения в наших средах Test/Prod могут быть сделаны только через CodePipeline, но в целях тестирования я пытаюсь добиться этого с помощью aws cli.
Я пробовал как aws cli (используя учетные данные root), так и лямбда-функцию - обе приводят к следующей ошибке:
An error occurred (BadRequestException) when calling the UpdateApnsSandboxChannel operation: Missing credentials
Я попытался установить поле Certificate в объекте json UpdateApnsSandboxChannel в качестве пути к файлу сертификата.p12, а также с помощью строкового значения, полученного из инструмента openssl.
Сегодня я работал с кем-то из службы поддержки aws, и они не смогли выяснить проблему после попытки отладки в течение нескольких часов. Они сказали, что отправят электронное письмо команде, но у них не было ETA, когда они могли бы ответить.
Спасибо
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"
}