当前位置: 首页 > 知识库问答 >
问题:

AWSiOSSdk中的Lambda函数问题

訾雅畅
2023-03-14

我是AWS web服务新手,我正在AWSCOgnitoRedentialsProvider类的登录字典中使用OpenIdentity发送DeveloperAuthProviderName和令牌,然后在viecontroller中调用lambda函数,其错误如下。我使用过CognitoSyncDemo应用程序,也尝试过通过pod导入所有框架,但结果是一样的。请帮我解决这个问题。

AWSiOSSDKv2[错误]AWSCredentialsProvider.m行:435 | | uu 73-[AWSCognitoRedentialsProvider GetCredentials with Cognito:authenticated:][U block|U invoke | GetCredentials for Identity失败。错误为[Error Domain=com.amazonaws.AWSCognitoIdentityErrorDomain Code=7“该操作无法完成。(com.amazonaws.AWSCognitoIdentityErrorDomain错误7.)“UserInfo=0x1700778c0{{uuu type=InvalidParameterException,message=请提供有效的公共提供程序}]

这是应用程序

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.

    AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 identityId:IdentityId identityPoolId:CognitoIdentityPoolId logins:@{DeveloperAuthProviderName:Token}];

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

    [[AWSServiceManager defaultServiceManager] setDefaultServiceConfiguration:configuration];

    return YES;
}

这是在view Controller中的viewdiLoad中的代码

-(void)setUpCredentials{

    //initWithRegionType:CognitoRegionType identityId:IdentityId identityPoolId:CognitoIdentityPoolId logins:@{DeveloperAuthProviderName:Token}
AZCDeveoper class inherit  AWSEnhancedCognitoIdentityProvider class
    AZCDeveloper * identity = [[AZCDeveloper alloc] initWithRegionType:CognitoRegionType identityId:IdentityId accountId:nil identityPoolId:CognitoIdentityPoolId logins:@{DeveloperAuthProviderName:Token}];



    credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:CognitoRegionType
                                                               identityProvider:identity
                                                                  unauthRoleArn:nil
                                                                    authRoleArn:nil];


    // [identity refresh];

}

这是在特定单击时调用的lambda函数

-(void)lamdaInvoker{



    AWSLambdaInvoker *lambdaInvoker = [AWSLambdaInvoker defaultLambdaInvoker];

    NSLog(@"LamdaInvoker:%@",lambdaInvoker);



    [[lambdaInvoker invokeFunction:@"Hello"
                    JSONObject:@{@"": @""}] continueWithBlock:^id(BFTask *task) {
        if (task.error) {
            NSLog(@"Error: %@", task.error);
            if ([task.error.domain isEqualToString:AWSLambdaInvokerErrorDomain]
                && task.error.code == AWSLambdaInvokerErrorTypeFunctionError) {
                NSLog(@"Function error: %@", task.error.userInfo[AWSLambdaInvokerFunctionErrorKey]);

            }
        }
        if (task.exception) {
            NSLog(@"Exception: %@", task.exception);

        }
        if (task.result) {
            NSLog(@"Result: %@", task.result);

            dispatch_async(dispatch_get_main_queue(), ^{

            });

        }
        return nil;
    }];


}

共有1个答案

樊胜
2023-03-14

嘿,从你的问题来看,我将采取的方法是关注错误的一部分,即GetCredentialsForIdentity。我对AWS也是比较陌生的,我认为有一半的时间我遇到了错误,这是因为我在凭证方面犯了一些错误。我要确保IAM用户具有调用lambda函数所需的凭据。

如果您认为所有这些都已正确放置,那么我将确保您正确设置了配置。

 类似资料:
  • 我有一个AWS lambda函数,它的工作是侦听传入的SNS事件,从Secrets Manager检索RDS秘密,并使用npm上的mssql库使用3个sql查询执行sql事务。 10次中有1次它正确地将所有3个查询提交到数据库。每隔一次,console.log消息就会乱序,有时lambda函数会在事务连接打开时终止,导致连接被阻塞。这绝对是一个同步问题,但无法判断它是来自AWS Lambda、ms

  • 我已经按照本教程使用AWS lambda创建了另一个桶的图像缩略图:http://docs.AWS.amazon.com/lambda/latest/dg/walkthrough-S3-events-adminuser-create-test-function-upload-zip-test.html 我已经完成了教程前面的所有步骤,但是当我从上面的链接在Lambda测试中运行下面的代码时 我收到

  • 有时您可能只需要在程序中的一个位置使用一个函数,并且该函数非常简单,您可能不会给它命名,或者可能不想将它存储在符号表中,而宁愿编写一个未命名或匿名的函数。 LISP允许您编写仅在程序中遇到它们时才计算的匿名函数。 这些函数称为Lambda functions. 您可以使用lambda表达式创建此类函数。 lambda表达式的语法如下 - (lambda (parameters) body) 无法

  • 问题内容: 我想使用匿名函数,所以我决定制作一个简单的主要查找器。这里是: 然而,我发现了什么,就是在每次访问,而我希望它是一个字面上的数字。我怎样才能使其成为替代? 问题答案: 您可以在创建lambda时“捕获” 这会将lambda的上下文设置为等于创建时的值。您还可以说,如果需要的话,它并不能完全捕获,但是可以满足您的需要。 这是一个查找问题,类似于具有定义函数的以下内容:

  • 其实就是一个匿名函数,为什么叫lambda?因为和后面的函数式编程有关. 推荐: 知乎

  • 问题内容: (如“家庭作业”标签所示,这是计算机科学中一项 大型 项目的一部分。) 我在写 危险! 使用tkinter在Python中进行模拟,而我在按钮中使用lambda函数时遇到了一个大问题。假设并且是一个列表。 有关所有代码,请参见我的小代码查看器(正在构建中!) 这就是出现问题的地方,因为当我单击板上的任何按钮时,它总是转到板上的最后一个按钮。我尝试了其他方法,不幸的是所有方法都使用过,而