从AWS Pinpoint自定义渠道向AWS Lambda发送消息

问题描述

我正在尝试通过here所述的自定义渠道从AWS Pinpoint向我的AWS Lambda函数发送消息

我的问题是有关授予AWS Pinpoint调用我的lambda函数的权限。文档中提供的用于授予权限的AWS CLI命令不起作用。如文档中所述,当我从AWS CLI执行# check your package library path .libPaths() # grab old packages names old_packages <- installed.packages(lib.loc = "/Library/Frameworks/R.framework/Versions/3.6/Resources/library") old_packages <- as.data.frame(old_packages) list.of.packages <- unlist(old_packages$Package) # remove old packages remove.packages( installed.packages( priority = "NA" )[,1] ) # reinstall all packages new.packages <- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])] if(length(new.packages)) install.packages(new.packages) lapply(list.of.packages,function(x){library(x,character.only=TRUE)}) 命令时,出现以下错误

aws lambda add-permission

如果我将ARN更改为以下任何一项,结果不会改变:

  • no matches found: arn:aws:mobiletargeting:us-east-1:<account-id>:apps/*
  • arn:aws:mobiletargeting:us-east-1:<account-id>:apps/<pinpoint-app-id>/*
  • arn:aws:mobiletargeting:us-east-1:<account-id>:apps/<pinpoint-app-id>/campaigns/*
  • arn:aws:mobiletargeting:us-east-1:<account-id>:/apps/<pinpoint-app-id>/*

我尝试使用AWS Cloudformation而不是AWS CLI进行了同样的尝试,我成功向AWS Pinpoint授予了调用我的lambda函数的权限。至少基于资源的策略出现在我的AWS Lambda功能控制台的“权限”选项卡中。源ARN之类的条件是 arn:aws:mobiletargeting:us-east-1:<account-id>:/apps/<pinpoint-app-id>/campaigns/*

但是,当我尝试在相同的精确应用程序(即项目)下创建广告系列时,收到以下错误消息:

arn:aws:mobiletargeting:us-east-1:<account-id>:apps/<pinpoint-app-id>/*

我尝试了不同的SourceArn之类的条件,包括以下内容,但结果是相同的:

  • "Amazon Pinpoint Couldn’t invoke the Lambda function that you specified for custom delivery. Verify that a function policy is assigned to the function and that Amazon Pinpoint is authorized to invoke the function."
  • arn:aws:mobiletargeting:us-east-1:<account-id>:apps/<pinpoint-app-id>/*
  • arn:aws:mobiletargeting:us-east-1:<account-id>:apps/<pinpoint-app-id>/campaigns/*
  • arn:aws:mobiletargeting:us-east-1:<account-id>:apps/*
  • arn:aws:mobiletargeting:us-east-1:<account-id>:*

无法找出问题所在。关于我所缺少的任何想法将不胜感激。

谢谢!

解决方法

有趣但返回aws lambda add-permission的{​​{1}}命令却在no matches found: arn:aws:mobiletargeting:us-east-1:<account-id>:apps/*之后起作用。

,

这可能为时已晚,但对于任何有类似问题且至少目前不想浏览整个 cloudformation 模板的人来说。

我遇到了同样的问题

“未找到匹配项:arn:aws:mobiletargeting:us-east-1::apps/*”。

这是由于我的终端在使用 '*' 时表现得很奇怪,所以在 arn 周围添加单引号起作用了,例如:
arn:aws:mobiletargeting:us-east-1:<account-id>:apps/<pinpoint-app-id>/*