es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Excepción de valor de parámetro no válido: No se puede acceder al flujo

Estoy intentando crear una tabla DynamoDB y un gatillo Lambda utilizando Terraform. Así es como defino la tabla, la política de roles y el gatillo Lambda:

“`
resource “aws_dynamodb_table” “filenames” {
name = local.dynamodbtablefilenames
billing_mode = “PROVISIONED”
read_capacity = 1000
write_capacity = 1000
hash_key = “filename”
stream_enabled = true
stream_view_type = “NEW_IMAGE”

#range_key = “”

attribute {
name = “filename”
type = “S”
}

tags = var.tags
}

resource “aws_iam_role_policy” “dynamodbpolicy” {
policy = jsonencode(
{
Version: “2012-10-17”,
Statement: [
{
Action: [
“dynamodb:GetItem”,
“dynamodb:PutItem”,
“dynamodb:UpdateItem”,
“dynamodb:Query”,
“dynamodb:GetRecords”,
“dynamodb:GetShardIterator”,
“dynamodb:DescribeStream”,
“dynamodb:ListShards”,
“dynamodb:ListStreams”,
],
Effect: “Allow”,
Resource: aws_dynamodb_table.filenames.arn
}
]
}
)
role = aws_iam_role.processing_lambda_role.id
}

resource “aws_lambda_event_source_mapping” “allow_dynamodbtable_to_trigger_lambda” {
event_source_arn = aws_dynamodb_table.filenames.stream_arn
function_name = aws_lambda_function.trigger_step_function_lambda.arn
starting_position = “LATEST”
}

Estoy obteniendo este error incluso después de haber agregado las políticas relevantes en el rol:

error creating Lambda Event Source Mapping (arn:aws:dynamodb:eu-central-12:table/tablename/stream): InvalidParameterValueException: Cannot access stream arn:aws:dynamodb:eu-central-1:299093934558:table/4tablename/stream. Please ensure the role can perform the GetRecords, GetShardIterator, DescribeStream, ListShards, and ListStreams Actions on your stream in IAM.

¿Cómo puedo solucionar esto?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que necesitas agregar permisos adicionales al rol IAM asociado con la función Lambda. Puedes hacerlo agregando la siguiente política al rol:

    {
    “Version”: “2012-10-17”,
    “Statement”: [
    {
    “Action”: [
    “dynamodb:GetRecords”,
    “dynamodb:GetShardIterator”,
    “dynamodb:DescribeStream”,
    “dynamodb:ListShards”,
    “dynamodb:ListStreams”
    ],
    “Effect”: “Allow”,
    “Resource”: “arn:aws:dynamodb:eu-central-1:299093934558:table/4tablename/stream”
    }
    ]
    }

    Esta política debería permitir que la función Lambda acceda al stream de DynamoDB.

Comments are closed.