Estoy tratando de acceder a mi depósito S3 desde un servidor de producción. Todo funciona bien en desarrollo, sin embargo, en mi consola de producción obtengo:
Aws::S3::Errors::AuthorizationHeaderMalformed: The authorization header is malformed; the Credential is mal-formed; expecting "<YOUR-AKID>/YYYYMMDD/REGION/SERVICE/aws4_request".Mi código:
class AwsFileDownloader def initialize(args) @s3 = Aws::S3::Client.new @aws_file_path = ... end def get_file temp_file = File.new('temp.csv', 'r+') @s3.get_object({bucket: Rails.application.secrets.aws_bucket, key: @aws_file_path}, target: temp_file) ... end endMi inicializador aws (que parece funcionar bien en ambos entornos):
require 'aws-sdk' Aws.config.update({ region: Rails.application.secrets.aws_region, credentials: Aws::Credentials.new(Rails.application.secrets.access_key_id, Rails.application.secrets.secret_access_key) })agradezco cualquier consejo!
Esta respuesta es muy tardía, pero tal vez alguien la encuentre útil. El error anterior se produce cuando cambia la AWS KEY ID y la AWS ACCESS KEY .
Use la credencial correcta en el lugar correcto y debería solucionar su problema.
Cosas para comprobar:
Como sugiere el error, las credenciales no se están configurando correctamente. Una posible razón (ya que funciona en un entorno de desarrollo) es que las variables de configuración access_key_id y secret_access_key pueden ser específicas del entorno.