• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

272
Views
Amazon AWS CLI no permite JSON válido en el parámetro de carga útil

Recibo un error cuando intento invocar una función lambda desde la CLI de AWS. Estoy usando la versión 2 de la CLI. Entiendo que debo pasar el argumento --payload como una cadena que contiene un objeto JSON.

 aws lambda invoke --function-name testsms --invocation-type Event --payload '{"key": "test"}' response.json

Obtuve el siguiente error:

 Invalid base64: "{"key": "test"}"

He probado todo tipo de variantes para los caracteres de escape JSON, etc. También he intentado usar la opción file://test.json y recibo el mismo error.

over 3 years ago · Santiago Trujillo
5 answers
Answer question

0

Parece que awscli v2 requiere que algunos parámetros estén codificados en base64.

De forma predeterminada, la AWS CLI versión 2 ahora pasa todos los parámetros de entrada y salida binaria como cadenas codificadas en base64. Un parámetro que requiere entrada binaria tiene su tipo especificado como blob (objeto grande binario) en la documentación.

El parámetro de carga útil para lamba invoke es uno de estos tipos de blob que deben estar codificados en base64.

--payload (blob) El JSON que desea proporcionar a su función de Lambda como entrada.

Una solución es usar openssl base64 para codificar su carga útil.

 echo '{"key": "test"}' > clear_payload openssl base64 -out encoded_payload -in clear_payload aws lambda invoke --function-name testsms --invocation-type Event --payload file://~/encoded_payload response.json
over 3 years ago · Santiago Trujillo Report

0

Como dijo @MCI, AWS V2 tiene como valor predeterminado la entrada base 64. Para que su caso funcione, simplemente agregue un --cli-binary-format raw-in-base64-out a su comando, por lo que sería

 aws lambda invoke --function-name testsms \ --invocation-type Event \ --cli-binary-format raw-in-base64-out \ --payload '{"key": "test"}' response.json
over 3 years ago · Santiago Trujillo Report

0

Esta solución funcionó para mí y la encuentro más simple que tener que recordar/comprobar la página de manual para ver las banderas correctas cada vez.

 aws lambda invoke --function-name my_func --payload $(echo "{\"foo\":\"bar\"}" | base64) out
over 3 years ago · Santiago Trujillo Report

0

En primer lugar, una cadena es un json válido.

en mi caso tuve este problema

 $ aws --profile diegosasw lambda invoke --function-name lambda-dotnet-function --payload "Just Checking If Everything is OK" out An error occurred (InvalidRequestContentException) when calling the Invoke operation: Could not parse request body into json: Could not parse payload into json: Unrecognized token 'Just': was expecting ('true', 'false' or 'null') at [Source: (byte[])"Just Checking If Everything is OK"; line: 1, column: 6]

y resulta que el problema se debió a que AWS CLI intentó convertirlo a JSON. Escapar de las comillas dobles funcionó

 $ aws --profile diegosasw lambda invoke --function-name lambda-dotnet-function --payload "\"Just Checking If Everything is OK\"" out { "StatusCode": 200, "ExecutedVersion": "$LATEST" }
over 3 years ago · Santiago Trujillo Report

0

En Windows, probé lo siguiente, que funcionó para mí

 aws lambda invoke --function-name testsms --invocation-type Event --cli-binary-format raw-in-base64-out --payload {\"key\": \"test\"} response.json

Tenga en cuenta que agregó --cli-binary-format raw-in-base64-out en el comando y escapó " a \" en la carga útil

over 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error