Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Aws lambda AWS Pinpoint自定义通道:无法正确调用钩子中指定的Lambda函数_Aws Lambda_Amazon Iam_Aws Pinpoint - Fatal编程技术网

Aws lambda AWS Pinpoint自定义通道:无法正确调用钩子中指定的Lambda函数

Aws lambda AWS Pinpoint自定义通道:无法正确调用钩子中指定的Lambda函数,aws-lambda,amazon-iam,aws-pinpoint,Aws Lambda,Amazon Iam,Aws Pinpoint,我正试图为我的AWS Pinpoint项目创建一个(beta版)自定义通道,方法是设置一个活动挂钩,根据设置执行Lambda函数 我的lambda函数本身似乎工作正常。但是,当我将活动钩子指向lambda函数时,我得到了以下错误: > aws lambda add-permission --function-name arn:aws:lambda:us-east-1:my-account-id:function:MyFunctionName \ --statement-id s1

我正试图为我的AWS Pinpoint项目创建一个(beta版)自定义通道,方法是设置一个活动挂钩,根据设置执行Lambda函数

我的lambda函数本身似乎工作正常。但是,当我将活动钩子指向lambda函数时,我得到了以下错误:

> aws lambda add-permission --function-name arn:aws:lambda:us-east-1:my-account-id:function:MyFunctionName \
    --statement-id s1 \
    --action lambda:InvokeFunction \
    --principal pinpoint.us-east-1.amazonaws.com \
    --source-arn 'arn:aws:mobiletargeting:us-east-1:my-account-id:/apps/my-pinpoint-project-id/campaigns/*'
=> 
{
    "Statement": "{\"Sid\":\"s1\",\"Effect\":\"Allow\",\"Principal\": {\"Service\":\"pinpoint.us-east-1.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:us-east-1:my-account-id:function:MyFunctionName\",\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:mobiletargeting:us-east-1:my-account-id:/apps/my-pinpoint-project-id/campaigns/*\"}}}"
}

> aws pinpoint update-application-settings \
    --application-id my-pinpoint-project-id \
    --write-application-settings-request '{\"CampaignHook\": { \"LambdaFunctionName\": \"arn:aws:lambda:us-east-1:my-account-id:function:MyFunctionName\", \"Mode\": \"DELIVERY\" }}'

=> An error occurred (BadRequestException) when calling the UpdateApplicationSettings operation: Could not properly invoke Lambda function specified in hook.
我的函数是C#,处理程序的签名是:

公共异步任务FunctionHandler(对象evt,ILambdaContext上下文)
知道错误消息的意思吗?我不确定这是权限问题还是命令本身有问题。

Pinpoint项目的SourceARN应该如下所示:

arn:aws:mobiletargeting:us-east-1:my account id:/apps/my pinpoint project id

我错误地为活动ARN添加了一个通配符。正确的命令是:

aws lambda add-permission --function-name arn:aws:lambda:us-east-1:my-account-id:function:MyFunctionName \
    --statement-id s1 \
    --action lambda:InvokeFunction \
    --principal pinpoint.us-east-1.amazonaws.com \
    --source-arn 'arn:aws:mobiletargeting:us-east-1:my-account-id:/apps/my-pinpoint-project-id'

将arn用于自定义频道的最佳方式是:

arn:aws:mobiletargeting:us-east-1:account-id:/apps/*
这对我有用