{"record":{"id":"5a92b42d4bd5facb","repo":"BerriAI/litellm","slug":"s3-bucket-name-is-required-set-s3-bucket-name-i-5a92b4","errorCode":null,"errorMessage":"S3 bucket_name is required. Set 's3_bucket_name' in litellm_params or AWS_S3_BUCKET_NAME env var","messagePattern":"S3 bucket_name is required\\. Set 's3_bucket_name' in litellm_params or AWS_S3_BUCKET_NAME env var","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"litellm/llms/bedrock/files/transformation.py","lineNumber":334,"sourceCode":"            fallback_filename=\"file\",\n        )\n\n    def get_complete_file_url(\n        self,\n        api_base: str | None,\n        api_key: str | None,\n        model: str,\n        optional_params: dict,\n        litellm_params: dict,\n        data: CreateFileRequest,\n    ) -> str:\n        \"\"\"\n        Get the complete S3 URL for the file upload request\n        \"\"\"\n        request_params: Final = merge_bedrock_aws_request_params(litellm_params, optional_params)\n        bucket_name = litellm_params.get(\"s3_bucket_name\") or os.getenv(\"AWS_S3_BUCKET_NAME\")\n        if not bucket_name:\n            raise ValueError(\n                \"S3 bucket_name is required. Set 's3_bucket_name' in litellm_params or AWS_S3_BUCKET_NAME env var\"\n            )\n        bucket_name, object_prefix = split_configured_cloud_bucket_name(bucket_name)\n\n        s3_region_name: Final = litellm_params.get(\"s3_region_name\") or optional_params.get(\"s3_region_name\")\n        aws_region_name: Final = s3_region_name or self._get_aws_region_name(request_params, model)\n\n        file_data: Final = data.get(\"file\")\n        purpose: Final = data.get(\"purpose\")\n        if file_data is None:\n            raise ValueError(\"file is required\")\n        if purpose is None:\n            raise ValueError(\"purpose is required\")\n        extracted_file_data: Final = extract_file_data(file_data)\n        object_name = self.get_object_name(extracted_file_data, purpose)\n        if object_prefix:\n            object_name = f\"{object_prefix}/{object_name}\"\n        encoded_object_name: Final = encode_s3_object_key_for_url(object_name)","sourceCodeStart":316,"sourceCodeEnd":352,"githubUrl":"https://github.com/BerriAI/litellm/blob/6c2dcb801bf2b75c18f1bb24140e7cf57465cc4d/litellm/llms/bedrock/files/transformation.py#L316-L352","documentation":"get_complete_url() (the S3 upload target builder for Bedrock files) resolves the bucket from litellm_params['s3_bucket_name'] or the AWS_S3_BUCKET_NAME env var; with neither present it cannot form the PUT URL and raises. Note this path, unlike 1275, does accept the per-request litellm_params value.","triggerScenarios":"POST /v1/files (Bedrock-backed) when neither s3_bucket_name is present in the request's litellm_params (e.g. set as a model extra param / proxy config) nor AWS_S3_BUCKET_NAME is in the environment.","commonSituations":"First-time setup of Bedrock file uploads; env var present locally but missing in the container; forgetting to attach s3_bucket_name as extra param when calling the SDK programmatically.","solutions":["Set AWS_S3_BUCKET_NAME=<bucket> in the process environment.","Or pass config={\"s3_bucket_name\": \"<bucket>\"} in extra litellm_params / proxy model settings.","Optionally set s3_region_name when the bucket's region differs from the Bedrock region."],"exampleFix":"# before\nlitellm.create_file(file=open(\"batch.jsonl\",\"rb\"), purpose=\"batch\")\n\n# after\nimport os; os.environ[\"AWS_S3_BUCKET_NAME\"] = \"my-bucket\"\nlitellm.create_file(file=open(\"batch.jsonl\",\"rb\"), purpose=\"batch\")","handlingStrategy":"validation","validationCode":"import os\nbucket = os.getenv(\"AWS_S3_BUCKET_NAME\") or litellm_params.get(\"s3_bucket_name\")\nassert bucket, \"S3 bucket required for Bedrock file upload\"","typeGuard":null,"tryCatchPattern":"try:\n    resp = litellm.create_file(file=f, purpose=\"batch\")\nexcept ValueError as e:\n    if \"s3_bucket_name\" in str(e):\n        raise ConfigError(\"set AWS_S3_BUCKET_NAME\") from e\n    raise","preventionTips":["Bake AWS_S3_BUCKET_NAME into every environment that uploads files.","Include a file-upload smoke test in deployment checks."],"tags":["bedrock","files","s3","configuration","upload"],"backgroundTag":null,"analyzedSha":"6c2dcb801bf2b75c18f1bb24140e7cf57465cc4d","analyzedAt":"2026-08-15T07:12:03.035Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}