我正在尝试通过Amplify SDK将Pinpoint Analytics实施到现有的React Native应用中。我们拥有一个拥有自己的authN和authZ实现的现有用户群,因此我们不需要(更重要的是,负担不起)Cognito用户池。
一方面,Pinpoint API在amplify documentation时不需要与Cognito集成,但是here在使用setlocal EnableDelayedExpansion
echo Locating msbuild.exe
set VSWHERE="%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe"
for /f "tokens=1 delims=;" %%i in ('"!VSWHERE!" -nologo -latest -property installationPath') do SET "MSBUILDROOT=%%i"
for /f "tokens=1" %%i in ('"!VSWHERE!" -property installationVersion') do SET "MSBUILDVER=%%i"
set MSBUILDPATH="!MSBUILDROOT!\MSBuild\!MSBUILDVER:~0,2!.0\Bin\MSBuild.exe"
if not exist "!MSBUILDPATH!" set MSBUILDPATH="!MSBUILDROOT!\MSBuild\Current\Bin\amd64\MSBuild.exe"
if not exist "!MSBUILDPATH!" set MSBUILDPATH="!MSBUILDROOT!\MSBuild\Current\Bin\MSBuild.exe"
echo Found MSBuild at !MSBUILDPATH!
时似乎需要auth
插件,并且配置Amplify时需要analytics
参数。
auth
是否可以通过Amplify使用Amplify.configure({
// To get the AWS Credentials, you need to configure
// the Auth module with your Cognito Federated Identity Pool
Auth: {
identityPoolId: 'us-east-1:xxx-xxx-xxx-xxx-xxx',
region: 'us-east-1'
},
Analytics: {
// OPTIONAL - disable Analytics if true
disabled: false,
...
而不生成用户池?我曾尝试检查过AWS移动SDK,但是显然不推荐使用它们,现在大多数文档都指向Amplify。我们可以直接使用Pinpoint API,但是这种实现似乎有点多余。
答案 0 :(得分:3)
免责声明:我不属于AWS Amplify / Cognito / Pinpoint产品团队。
根据我的研究,可以在没有Cognito用户池的情况下使用AWS Amplify Analytics(Amazon Pinpoint),但需要Cognito身份池进行授权。
Cognito用户池和Cognito身份池的概念有时会令人困惑,但简单来说,我将它们区分如下:
Amazon Cognito用户池是一项功能齐全的用户目录服务,用于处理用户注册,存储,身份验证和帐户恢复。
Amazon Cognito身份池(联合身份)是一种授权在您的应用程序中使用AWS服务的方法。
将应用程序与Amazon Pinpoint集成时,这些应用程序需要访问AWS服务的权限,因此Amazon Cognito身份池提供了一种授权在应用程序中使用AWS服务的方法。借助Cognito身份池,您可以获取临时的具有通过IAM策略定义的访问AWS服务的权限的AWS凭证.IAM策略(auth_role和unauth_role)应包含与Pinpoint相关的策略,该策略将允许您将数据发送到服务。参见下面的示例:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"mobiletargeting:UpdateEndpoint",
"mobiletargeting:PutEvents"
],
"Resource": [
"arn:aws:mobiletargeting:*:${accountID}:apps/${appId}*"
]
}
]
}
摘要:
使用Amazon Cognito身份池提供了一种更安全,更可靠的方式来访问您应用程序中的AWS后端资源,而不是将凭证(即访问密钥和秘密密钥)嵌入到您的应用程序中。
希望这会有所帮助!