aws-genai-llm-chatbot icon indicating copy to clipboard operation
aws-genai-llm-chatbot copied to clipboard

Error during deployment

Open wakefieldcooper opened this issue 1 year ago • 14 comments

I have deployed this a few days ago without issue. I pulled it down but now trying to deploy again and its throwing an error during the last npx cdk deploy step, when trying to install orjson. Error below.

Steps I've tried:

  • Tried installing the suggested rust installation and adding to path. Same error
  • Tried reverting to previous versions/commits. Again same error
  • Have tried deploying from github codespaces and cloud9

Nothing has worked. ''' Collecting orjson<4.0.0,>=3.9.14 (from langsmith<0.2.0,>=0.1.17->langchain==0.2.3->-r requirements.txt (line 7)) Downloading orjson-3.10.7.tar.gz (5.1 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5.1/5.1 MB 215.9 MB/s eta 0:00:00 Installing build dependencies: started Installing build dependencies: finished with status 'done' Getting requirements to build wheel: started Getting requirements to build wheel: finished with status 'done' Preparing metadata (pyproject.toml): started Preparing metadata (pyproject.toml): finished with status 'error' error: subprocess-exited-with-error

× Preparing metadata (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [6 lines of output]

  Cargo, the Rust package manager, is not installed or is not on PATH.
  This package requires Rust and Cargo to compile extensions. Install it through
  the system's package manager or via https://rustup.rs/
  
  Checking for Rust toolchain....
  [end of output]

note: This error originates from a subprocess, and is likely not a problem with pip. error: metadata-generation-failed

× Encountered error while generating package metadata. ╰─> See above for output.

note: This is an issue with the package mentioned above, not pip. hint: See above for details.

[notice] A new release of pip is available: 24.0 -> 24.2 [notice] To update, run: pip install --upgrade pip /home/ubuntu/environment/aws-genai-llm-chatbot/node_modules/aws-cdk-lib/core/lib/asset-staging.js:2 ),localBundling=options.local?.tryBundle(bundleDir,options),!localBundling){const assetStagingOptions={sourcePath:this.sourcePath,bundleDir,...options};switch(options.bundlingFileAccess){case bundling_1().BundlingFileAccess.VOLUME_COPY:new(asset_staging_1()).AssetBundlingVolumeCopy(assetStagingOptions).run();break;case bundling_1().BundlingFileAccess.BIND_MOUNT:default:new(asset_staging_1()).AssetBundlingBindMount(assetStagingOptions).run();break}}}catch(err){const bundleErrorDir=bundleDir+"-error";throw fs().existsSync(bundleErrorDir)&&fs().removeSync(bundleErrorDir),fs().renameSync(bundleDir,bundleErrorDir),new Error(Failed to bundle asset ${this.node.path}, bundle output is located at ${bundleErrorDir}: ${err})}if(fs_1().FileSystem.isEmpty(bundleDir)){const outputDir=localBundling?bundleDir:AssetStaging.BUNDLING_OUTPUT_DIR;throw new Error(Bundling did not produce any output. Check that content is written to ${outputDir}.)}}calculateHash(hashType,bundling,outputDir){if(hashType==assets_1().AssetHashType.CUSTOM||hashType==assets_1().AssetHashType.SOURCE&&bundling){const hash=crypto().createHash("sha256");return hash.update(this.customSourceFingerprint??fs_1().FileSystem.fingerprint(this.sourcePath,this.fingerprintOptions)),bundling&&hash.update(JSON.stringify(bundling,sanitizeHashValue)),hash.digest("hex")}switch(hashType){case assets_1().AssetHashType.SOURCE:return fs_1().FileSystem.fingerprint(this.sourcePath,this.fingerprintOptions);case assets_1().AssetHashType.BUNDLE:case assets_1().AssetHashType.OUTPUT:if(!outputDir)throw new Error(Cannot use `${hashType}` hash type when `bundling` is not specified.);return fs_1().FileSystem.fingerprint(outputDir,this.fingerprintOptions);default:throw new Error("Unknown asset hash type.")}}}exports.AssetStaging=AssetStaging,_a=JSII_RTTI_SYMBOL_1,AssetStaging[_a]={fqn:"aws-cdk-lib.AssetStaging",version:"2.145.0"},AssetStaging.BUNDLING_INPUT_DIR="/asset-input",AssetStaging.BUNDLING_OUTPUT_DIR="/asset-output",AssetStaging.assetCache=new(cache_1()).Cache;function renderAssetFilename(assetHash,extension=""){returnasset.${assetHash}${extension}}function determineHashType(assetHashType,customSourceFingerprint){const hashType=customSourceFingerprint?assetHashType??assets_1().AssetHashType.CUSTOM:assetHashType??assets_1().AssetHashType.SOURCE;if(customSourceFingerprint&&hashType!==assets_1().AssetHashType.CUSTOM)throw new Error(Cannot specify `${assetHashType}` for `assetHashType` when `assetHash` is specified. Use `CUSTOM` or leave `undefined`.);if(hashType===assets_1().AssetHashType.CUSTOM&&!customSourceFingerprint)throw new Error("assetHashmust be specified whenassetHashTypeis set toAssetHashType.CUSTOM.");return hashType}function calculateCacheKey(props){return crypto().createHash("sha256").update(JSON.stringify(sortObject(props),sanitizeHashValue)).digest("hex")}function sortObject(object){if(typeof object!="object"||object instanceof Array)return object;const ret={};for(const key of Object.keys(object).sort())ret[key]=sortObject(object[key]);return ret}function sanitizeHashValue(key,value){if(key==="PIP_INDEX_URL"||key==="PIP_EXTRA_INDEX_URL")try{let url=new URL(value);if(url.password)return url.password="",url.toString()}catch(e){throw e.name==="TypeError"?new Error(${key} must be a valid URL, got ${value}.):e}return value}function findSingleFile(directory,archiveOnly){if(!fs().existsSync(directory))throw new Error(Directory ${directory} does not exist.);if(!fs().statSync(directory).isDirectory())throw new Error(${directory} is not a directory.);const content=fs().readdirSync(directory);if(content.length===1){const file=path().join(directory,content[0]),extension=getExtension(content[0]).toLowerCase();if(fs().statSync(file).isFile()&&(!archiveOnly||ARCHIVE_EXTENSIONS.includes(extension)))return file}}function determineBundledAsset(bundleDir,outputType){const archiveFile=findSingleFile(bundleDir,outputType!==bundling_1().BundlingOutput.SINGLE_FILE);switch(outputType===bundling_1().BundlingOutput.AUTO_DISCOVER&&(outputType=archiveFile?bundling_1().BundlingOutput.ARCHIVED:bundling_1().BundlingOutput.NOT_ARCHIVED),outputType){case bundling_1().BundlingOutput.NOT_ARCHIVED:return{path:bundleDir,packaging:assets_1().FileAssetPackaging.ZIP_DIRECTORY};case bundling_1().BundlingOutput.ARCHIVED:case bundling_1().BundlingOutput.SINGLE_FILE:if(!archiveFile)throw new Error("Bundling output directory is expected to include only a single file when outputis set toARCHIVEDorSINGLE_FILE`");return{path:archiveFile,packaging:assets_1().FileAssetPackaging.FILE,extension:getExtension(archiveFile)}}}function getExtension(source){for(const ext of ARCHIVE_EXTENSIONS)if(source.toLowerCase().endsWith(ext))return ext;return path().extname(source)} ^ Error: Failed to bundle asset oup-testGenAIChatBotStack/Shared/CommonLayer/LayerAsset/Stage, bundle output is located at /home/ubuntu/environment/aws-genai-llm-chatbot/cdk.out/asset.c21705daf758902cf8b13c348399ef6dff3bc4ddfc250090f058bca571e8cab8-error: Error: docker exited with status 1 --> Command: docker run --rm --security-opt "no-new-privileges:true" --network host -u "1000:1000" -v "/home/ubuntu/environment/aws-genai-llm-chatbot/lib/shared/layers/common:/asset-input:delegated" -v "/home/ubuntu/environment/aws-genai-llm-chatbot/cdk.out/asset.c21705daf758902cf8b13c348399ef6dff3bc4ddfc250090f058bca571e8cab8:/asset-output:delegated" -w "/asset-input" "public.ecr.aws/sam/build-python3.11" bash -c "pip install -r requirements.txt -t /asset-output/python" at AssetStaging.bundle (/home/ubuntu/environment/aws-genai-llm-chatbot/node_modules/aws-cdk-lib/core/lib/asset-staging.js:2:619) at AssetStaging.stageByBundling (/home/ubuntu/environment/aws-genai-llm-chatbot/node_modules/aws-cdk-lib/core/lib/asset-staging.js:1:5297) at stageThisAsset (/home/ubuntu/environment/aws-genai-llm-chatbot/node_modules/aws-cdk-lib/core/lib/asset-staging.js:1:2728) at Cache.obtain (/home/ubuntu/environment/aws-genai-llm-chatbot/node_modules/aws-cdk-lib/core/lib/private/cache.js:1:242) at new AssetStaging (/home/ubuntu/environment/aws-genai-llm-chatbot/node_modules/aws-cdk-lib/core/lib/asset-staging.js:1:3125) at new Asset (/home/ubuntu/environment/aws-genai-llm-chatbot/node_modules/aws-cdk-lib/aws-s3-assets/lib/asset.js:1:1141) at new Layer (/home/ubuntu/environment/aws-genai-llm-chatbot/lib/layer/index.ts:26:24) at new Shared (/home/ubuntu/environment/aws-genai-llm-chatbot/lib/shared/index.ts:229:25) at new AwsGenAILLMChatbotStack (/home/ubuntu/environment/aws-genai-llm-chatbot/lib/aws-genai-llm-chatbot-stack.ts:33:20) at Object. (/home/ubuntu/environment/aws-genai-llm-chatbot/bin/aws-genai-llm-chatbot.ts:13:1)

Subprocess exited with error 1 '''

wakefieldcooper avatar Aug 09 '24 02:08 wakefieldcooper

I have the same problem!!!

GeraCollante avatar Aug 09 '24 03:08 GeraCollante

What do you think that happens?

GeraCollante avatar Aug 09 '24 03:08 GeraCollante

https://github.com/ijl/orjson/issues/509

GeraCollante avatar Aug 09 '24 03:08 GeraCollante

Cool! have you figured out how to pin a version in the deployment for this repo? @GeraCollante

wakefieldcooper avatar Aug 09 '24 03:08 wakefieldcooper

I set this in the main requirements.txt and it worked, idk if is a solution but try it:

aws-cdk-lib
aws_cdk.aws_lambda_python_alpha
constructs
cdk_nag
aws_cdk.aws_sagemaker_alpha
orjson==3.10.6

GeraCollante avatar Aug 09 '24 03:08 GeraCollante

Whats the path to the requirements.txt you are referring to? there's a few @GeraCollante

wakefieldcooper avatar Aug 09 '24 03:08 wakefieldcooper

lib/shared/layers/common/requirements.txt. ?

wakefieldcooper avatar Aug 09 '24 03:08 wakefieldcooper

I'm referring to the requirements.txt that you execute when activate the enviroment the first time. You do:

  • source .venv/bin/activate
  • pip install -r requirements.txt
  • cdk_deploy If you prefer we can arrange a meet

GeraCollante avatar Aug 09 '24 03:08 GeraCollante

https://meet.google.com/zjh-bnot-pks

GeraCollante avatar Aug 09 '24 03:08 GeraCollante

Ah I see - i'm using this guide: https://aws-samples.github.io/aws-genai-llm-chatbot/guide/deploy.html And cloud9, but have also tried github codespaces. I don't see your venv stuff in there.

Let me try in the reqs file I linked first

wakefieldcooper avatar Aug 09 '24 03:08 wakefieldcooper

Ah ok, we are using CDK in different ways. I don't use Cloud9 so idk how to help you. But i'm pretty sure that it will be fixed in the next hours, maybe you can try to harcode the version of langchain

GeraCollante avatar Aug 09 '24 03:08 GeraCollante

Can confirm adding orjson==3.10.6 to lib/shared/layers/common/requirements.txt provides a work around for now.

wakefieldcooper avatar Aug 09 '24 03:08 wakefieldcooper

Excellent! Nice to meet you! I sent an invitation on LinkedIn, I hope don't bother you Have a good day

GeraCollante avatar Aug 09 '24 03:08 GeraCollante

Thank you @wakefieldcooper for finding a workaround!.

Is it still happening? The related issue is now closed (https://github.com/ijl/orjson/issues/509)

I was not able to reproduce and an earlier build also passed. https://github.com/aws-samples/aws-genai-llm-chatbot/actions/runs/10321065424/job/28573058347?pr=529

charles-marion avatar Aug 09 '24 16:08 charles-marion