使用 AWS Cognito Identity 的要点

Point of using the AWS Cognito Identity

使用以下代码的目的是让我可以直接使用我的 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 网关一起使用来获取用户身份。

需要 Cognito 才能在访问 AWS 资源时提供执行上下文(身份验证)。这意味着,在 AWS 上没有什么是真正匿名的——即使您没有用户 "log in",他们仍然有一个与其设备关联的唯一标识符。

这意味着您的应用程序之外的某个随机人员无法简单地访问您的 AWS 资源(S3、Lambda 等)并执行代码。

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

另一件需要注意的事情:您不需要使用 API 网关来在 iOS 上执行 Lambdas。您可以本地调用。我更喜欢这样做 - 更少的配置。

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

希望这能回答您的问题。