是否可以在没有Cognito用户池的情况下使用AWS Amplify Analytics?

时间:2020-04-30 09:38:29

标签: aws-amplify aws-pinpoint aws-amplify-cli

我正在尝试通过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,但是这种实现似乎有点多余。

1 个答案:

答案 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后端资源,而不是将凭证(即访问密钥和秘密密钥)嵌入到您的应用程序中。

希望这会有所帮助!