feat: add BYO filesystem e2e test and supporting infrastructure#1461
Conversation
padmak30
commented
Jun 4, 2026
- Add strands-bedrock-byo-filesystem.test.ts: e2e test for EFS and S3 Files mounts with unique file content assertion
- Add e2e-tests/fixtures/filesystem/setup_byo_filesystem.py: one-time setup script to provision VPC, EFS, S3 Files access points in AWS
- Extend E2EConfig with apiKeyEnvVar, requiredEnvVars, efsAccessPoints, s3AccessPoints, networkConfig, invokePrompt, invokeResponseCheck
- Fix VPC warning in invoke action to suppress when --json is passed
- Add filesystem env vars to e2e-tests.yml env blocks
- Add filesystem resources fixture file
- Add strands-bedrock-byo-filesystem.test.ts: e2e test for EFS and S3 Files mounts with unique file content assertion - Add e2e-tests/fixtures/filesystem/setup_byo_filesystem.py: one-time setup script to provision VPC, EFS, S3 Files access points in AWS - Extend E2EConfig with apiKeyEnvVar, requiredEnvVars, efsAccessPoints, s3AccessPoints, networkConfig, invokePrompt, invokeResponseCheck - Fix VPC warning in invoke action to suppress when --json is passed - Add filesystem env vars to e2e-tests.yml env blocks - Add filesystem resources fixture file
Package TarballHow to installgh release download pr-1461-tarball --repo aws/agentcore-cli --pattern "*.tgz" --dir /tmp/pr-tarball
npm install -g /tmp/pr-tarball/aws-agentcore-0.17.0.tgz |
|
Claude Security Review: no high-confidence findings. (run) |
agentcore-cli-automation
left a comment
There was a problem hiding this comment.
Nice work setting up filesystem e2e coverage end-to-end. A few issues to address before merging:
- The S3 Files IAM trust policy looks wrong — it allows
elasticfilesystem.amazonaws.comto assume the role, which is the EFS service principal, not S3 Files. This will likely make the S3 Files mount unable to read the bucket. - The new
invokeResponseCheckis silently skipped whenjson.responseis falsy, which weakens the assertion. The whole point of this check is to fail when the response is wrong (or missing). - The test prompt only exercises the EFS mount; the S3 Files mount is configured but never read or written from at runtime, so a misconfigured S3 mount would still pass.
Inline comments below.
Coverage Report
|
- Fix invokeResponseCheck to assert response is truthy before running the check — previously silently skipped on empty/undefined response - Extend filesystem test prompt to write and read unique tokens on both EFS (/mnt/efs) and S3 Files (/mnt/s3) mounts, asserting both appear in the response so a misconfigured S3 mount is caught
|
Claude Security Review: no high-confidence findings. (run) |
| modelProvider: string; | ||
| requiredEnvVar?: string; | ||
| /** Env var holding the API key — must be set for the suite to run, and its value is passed as --api-key. */ | ||
| apiKeyEnvVar?: string; |
There was a problem hiding this comment.
Why did we seperate out the apiKey into their own variable?
There was a problem hiding this comment.
requiredEnvVar was doing two different things: (1) gating the test suite, and (2) forwarding the env var's value as --api-key to the create command. These had to be separated because the filesystem test needs to gate on 4 env vars (E2E_EFS_ACCESS_POINT_ARN, E2E_S3_ACCESS_POINT_ARN, E2E_FILESYSTEM_SUBNET_ID, E2E_FILESYSTEM_SECURITY_GROUP_ID) that are not API keys — they're ARNs/IDs used in the --efs-access-point-arn etc. args. requiredEnvVars: string[] handles "gate only" for any number of vars; apiKeyEnvVar handles the "gate + pass as --api-key" case that existing tests need.