使用以下代码是否可以直接使用我的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网关来获取用户身份。
答案 0 :(得分:0)
在访问AWS资源时,需要Cognito才能提供执行上下文(身份验证)。这意味着,AWS上没有任何真正的匿名 - 即使您没有“登录”用户,他们仍然拥有与其设备相关联的唯一标识符。
这意味着您的应用外部的一些随机人员无法直接点击您的AWS资源(S3,Lambda等)并执行代码。
这也意味着您可以而且必须为Lambda分配执行权限,以允许Cognito组执行。
需要注意的另一点是:您无需使用API网关即可在iOS上执行Lambdas。你可以原生调用。我更喜欢这样做 - 减少配置。
http://docs.aws.amazon.com/mobile/sdkforios/developerguide/lambda.html
希望能回答你的问题。