我正在设计一个状态机,它将运行两个 lambda 函数,每个函数并行返回一个 Json 数组。此外,这些函数的结果然后传递给另外两个 lambda 函数,这些函数将接受这些输入并添加到数据库中。我已经准备好所有功能并单独工作,但是当我执行状态机时,它说其中一个执行失败,因为 DataLimitExceeded。我检查了文档,它说输入或输出结果的限制是 32.768 个字符。奇怪的是,执行成功的是 Json 对象返回的大约 50k 个字符,而失败的大约 46k 个字符。那么,如果两者都超过了限制,为什么其中一个失败而另一个没有!
{
"StartAt": "Sync",
"States": {
"Sync": {
"Type": "Parallel",
"Next": "EnviarNotificacion",
"Branches": [
{
"StartAt": "SyncClientes",
"States": {
"SyncClientes": {
"Type": "Task",
"Resource": "arn...",
"Next": "AddClientes"
},
"AddClientes" : {
"Type": "Task",
"Resource": "arn...",
"End": true
}
}
},
{
"StartAt": "SyncArticulos",
"States": {
"SyncArticulos": {
"Type": "Task",
"Resource": "arn...",
"Next": "AddArticulos"
},
"AddArticulos": {
"Type": "Task",
"Resource": "arn...",
"End": true
}
}
} …Run Code Online (Sandbox Code Playgroud)我从 AWS 上的无服务器开始,我使用 AWS Cognito 进行用户身份验证和授权。对于我在文档和示例中看到的内容,您可以创建组以允许某些用户能够使用 Api 网关端点,将角色和策略附加到该组。我尝试了这个,然后制作了一个简单的客户端并尝试使用两个不同的用户,并且两者都能够获得 200 状态代码,而不是其中一个获得它是未经授权的。为了创建角色,我转到 IAM,创建角色,身份提供商访问角色,授予对 Web 身份提供商的访问权限,然后我选择 Amazon Cognito 并选择我的 Cognito 用户池。信任关系:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "cognito-identity.amazonaws.com"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"cognito-identity.amazonaws.com:aud": "us-east-1_8TAUVKbGP"
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"execute-api:Invoke"
],
"Resource": [
"my-arn-resourse-from-api-gateway"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
然后我将此角色分配给我的管理员组并将用户添加到该组,这应该允许通过在用户登录时将该策略附加到该用户来访问该 Api Gateway 资源。但是当我尝试使用不在该组中的用户时仍然有效。顺便说一下,在请求中的 Api Gateway 资源上,我对我的认知池进行了授权。
非常感谢!