如何使用 AWS CLI 在 Amazon SNS 中创建用于发送推送通知的 APNs 平台应用程序?

上次更新日期:2022 年 2 月 21 日

我想在 Amazon Simple Notification Service(Amazon SNS)中创建一个 Apple Push Notification Service(APNs)平台应用程序,以发送推送通知。如何使用 AWS Command Line Interface(AWS CLI)而不是 Amazon SNS 控制台创建 APNs 平台应用程序?

简短描述

要使用 AWS CLI 在 Amazon SNS 中创建 APNs 平台应用程序,请运行 create-platform-application 命令。

有关更多信息,请参阅 Amazon SNS API 参考中的 CreatePlatformApplication

注意:您还可以在 Amazon SNS 控制台中创建平台应用程序

解决方法

注意:Amazon SNS 推送通知并非在所有 AWS 区域都可用。有关更多信息,请参阅移动应用程序支持的区域。如果在运行 AWS CLI 命令时收到错误,请确保您使用的 AWS CLI 为最新版本

先决条件

您必须拥有适用于 iOS、VoIP 或 MacOS 的有效应用程序。根据应用程序的身份验证方法,您还必须拥有通过自己的 Apple 开发人员账户获得的以下资源:

对于基于证书的身份验证

  • 有效的 TLS 证书

对于基于令牌的身份验证

  • 有效的令牌签名密钥
  • 有效的 Apple 团队 ID
  • 有效的 Apple 捆绑包 ID

有关更多信息,请参阅《Amazon SNS 开发人员指南》中的 Amazon SNS 用户通知先决条件Apple 身份验证方法

使用 AWS CLI 在 Amazon SNS 中创建 APNs 平台应用程序

对于基于证书的身份验证

1.    运行以下命令:

重要提示:Your_Application_Name 替换为您的应用程序的名称。将 Certificates.p12 替换为您的 PKCS#12 文件。根据您的使用案例,将 platform 值替换为APNS_SANDBOXAPNS。确保在 PKCS#12 文件所在的相同目录中运行该命令。

aws sns create-platform-application --name Your_Application_Name --platform APNS_SANDBOX --attributes PlatformCredential="\"$(openssl pkcs12 -in Certificates.p12 -nodes -nocerts)\"",PlatformPrincipal="\"$(openssl pkcs12 -in Certificates.p12 -nodes -nokeys)\""

注意:对于使用证书凭证的 Apple 服务,PlatformCredential 是私有密钥。PlatformPrinciple 是 SSL 证书。OpenSSL pkcs12 命令将 PKCS#12 文件解析为可读格式,以进行基于证书的身份验证。有关更多信息,请参阅 OpenSSL 网站上的 pkcs12

出现输入导入密码值的提示。

2.    对于导入密码,请输入从 Keychain Access 应用程序导出 PKCS#12 文件时创建的密码。

对于基于令牌的身份验证

运行以下命令:

重要提示:PlatformCredential 替换为您的令牌签名密钥。将 PlatformPrinciple 替换为您的令牌签名密钥。将 ApplePlatformTeamID 替换为您的 Apple 团队 ID。将 ApplePlatformBundleID 替换为您的 Apple 捆绑包 ID。根据您的使用案例,将 platform 值替换为APNS_SANDBOXAPNS。将 Token.p8 替换为您的 PKCS#8 文件。确保在 PKCS#8 文件所在的相同目录中运行该命令。

aws sns create-platform-application --name token --platform APNS_SANDBOX --attributes ApplePlatformTeamID=XXXXXXX,ApplePlatformBundleID=com.XXXXX,PlatformPrincipal=XXXXXXX,PlatformCredential="\"$(openssl pkcs8 -in Token.p8 -nocrypt)\""

注意:对于使用令牌凭证的 Apple 服务,PlatformCredential 是令牌签名密钥。PlatformPrinciple 是令牌签名密钥 ID。OpenSSL pkcs8 命令以 PKCS#8 格式处理私有密钥,然后将其解析为可读格式,以进行基于令牌的身份验证。有关更多信息,请参阅 OpenSSL 网站上的 pkcs8

有关平台属性的更多信息,请参阅 Amazon SNS API 参考中的 SeePlatformApplicationAttributes


这篇文章对您有帮助吗?


您是否需要账单或技术支持?