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?
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.