使用AWS Cognito Identity的重点

时间:2016-08-07 05:44:14

标签: ios amazon-web-services aws-lambda amazon-cognito

使用以下代码是否可以直接使用我的ios应用程序访问其他AWS工具?

    AWSCognitoCredentialsProvider *credentialsProvider = [[DeveloperAuthenticationProvider alloc] initWithRegionType:AWSRegionUSEast1 identityPoolId:@"poolId"];

    AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 credentialsProvider:credentialsProvider];

    AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;

    __block NSString *cognitoId = nil;

    // Retrieve your Amazon Cognito ID
    [[credentialsProvider getIdentityId] continueWithBlock:^id(AWSTask *task)
    {
        if (task.error)
        {
            NSLog(@"Error: %@", task.error);
        }
        else
        {
            // the task result will contain the identity id
            cognitoId = task.result;
        }

        return nil;
    }];

然后我使用AWS Lambda和API网关来获取用户身份。

1 个答案:

答案 0 :(得分:0)

在访问AWS资源时,需要Cognito才能提供执行上下文(身份验证)。这意味着,AWS上没有任何真正的匿名 - 即使您没有“登录”用户,他们仍然拥有与其设备相关联的唯一标识符。

这意味着您的应用外部的一些随机人员无法直接点击您的AWS资源(S3,Lambda等)并执行代码。

这也意味着您可以而且必须为Lambda分配执行权限,以允许Cognito组执行。

需要注意的另一点是:您无需使用API​​网关即可在iOS上执行Lambdas。你可以原生调用。我更喜欢这样做 - 减少配置。

http://docs.aws.amazon.com/mobile/sdkforios/developerguide/lambda.html

希望能回答你的问题。