You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Lambda调用AWS PinPoint PutEvents接口时出现NotFoundException报错求助

排查AWS PinPoint PutEvents接口的NotFoundException问题

我来帮你搞定这个报错!结合你的代码和错误信息,咱们从最常见的几个原因一步步排查:

1. 核对Application ID是否完全准确

先仔细检查app_id = '1234abcd'这个值,是不是和PinPoint控制台里项目的完整ID完全一致?有时候复制的时候容易多带空格、漏字符,或者大小写搞错(虽然AWS大部分ID是小写,但也别大意)。建议直接从控制台项目的URL或者概述页复制ID,手动输入容易出错。

2. 确认Lambda与PinPoint项目的区域一致

AWS服务是分区域隔离的,这是最容易踩的坑!如果你的PinPoint项目创建在us-east-1,但Lambda的boto3客户端默认用了其他区域(比如Lambda部署在us-west-2),就会找不到对应的资源。

解决方法:初始化PinPoint客户端时明确指定区域,比如:

# 替换成你的PinPoint项目实际所在区域
client = boto3.client('pinpoint', region_name='us-east-1')

另外也可以检查Lambda的部署区域,确保和PinPoint项目区域相同,或者在Lambda的环境变量里设置AWS_REGION为正确的区域。

3. 验证Lambda执行角色的IAM权限

虽然错误是“Resource not found”,但有时候权限配置不对也可能返回误导性的错误。确保Lambda的执行角色拥有mobiletargeting:PutEvents权限,并且策略的资源范围包含你的PinPoint项目ID。

示例IAM策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "mobiletargeting:PutEvents",
            "Resource": "arn:aws:mobiletargeting:<你的区域>:<AWS账号ID>:apps/<你的AppID>/*"
        }
    ]
}

记得把占位符替换成实际的区域、账号ID和AppID。

4. 其他小细节排查

  • Endpoint ID格式:你的test_endpoint符合PinPoint的要求(允许字母、数字、下划线、连字符,最长256字符),这个应该没问题,但如果后续排查完上面的点还报错,可以试试换个简单的ID测试。
  • 时间戳格式:你当前用的isoformat()生成的格式是符合要求的,但可以改成更标准的UTC时间格式:datetime.datetime.utcnow().isoformat() + 'Z',确保时间戳没有时区问题。

修改后的示例代码

这里给你调整了区域指定和时间戳格式的版本,你可以参考:

import boto3
import datetime

# 明确指定PinPoint项目所在区域
client = boto3.client('pinpoint', region_name='us-east-1')
app_id = '1234abcd'  # 务必和控制台的项目ID完全一致
endpoint_id = 'test_endpoint'
address = 'test@test.com'

def lambda_handler(event, context):
    response = client.put_events(
        ApplicationId=app_id,
        EventsRequest={
            'BatchItem': {
                endpoint_id: {
                    'Endpoint': {
                        'ChannelType': 'EMAIL',
                        'Address': address,
                        'Attributes': {
                            'Cart': ['Hat'],
                            'Purchased': ['No']
                        }
                    },
                    'Events':{
                        'cart-event-2': {
                            'Attributes':{
                                'AddedToCart': 'Hat'
                            },
                            'EventType': 'AddToCartEvent',
                            'Metrics': {
                                'price': 29.95
                            },
                            'Timestamp': datetime.datetime.utcnow().isoformat() + 'Z'
                        }
                    }
                }
            }
        }
    )
    return response

先优先排查区域和App ID的问题,这两个是导致这个报错最常见的原因!

内容的提问来源于stack exchange,提问作者MarkelleFultz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 20:12:26