aws / aws-sdk-php

Official repository of the AWS SDK for PHP (@awsforphp)
http://aws.amazon.com/sdkforphp
Apache License 2.0
6k stars 1.22k forks source link

Symlink Incompatible With Some Deployment Mechanisms #2289

Closed MathSmath closed 2 years ago

MathSmath commented 3 years ago

Confirm by changing [ ] to [x] below to ensure that it's a bug:

Describe the bug Not strictly a bug in the package, but the file tests/Credentials/testlink is a symlink, which breaks many deployment mechanisms (including CodeDeploy and Elastic Beanstalk) when the file it references does not exist. The symlink seems superfluous, and possibly committed by accident? I can't find a legitimate reason for it, and it seems to point to a file unique to someone's local environment--but potentially someone here has context for why it exists. It was added in this commit: https://github.com/howardlopez/aws-sdk-php/commit/0ea03fd6ade07a52d3bc36a25dd1d90c66d43c4d#diff-916e8de261805d4949eae1ba9e1b8a416f3eb42013eccbd6b0c45bc821a10a9d

Version of AWS SDK for PHP? v3.54.6

Version of PHP (php -v)? Not related to PHP

To Reproduce (observed behavior) Try to deploy any project using the aws-sdk-php package via CodeDeploy, and the deploy will fail with the message "No such file or directory: '[project root]/vendor/aws/aws-sdk-php/tests/Credentials/testlink'".

Expected behavior The deploy should complete without issue, and should not encounter any dead-end symlinks.

Additional context I'm currently working around this by explicitly deleting this file from the deployment artifact before running CodeDeploy. Again, I realize this is not a bug in the package, but just seems like a mistake with some unintended side-effects.

SamRemis commented 3 years ago

@MathSmath Thanks for bringing this to our attention- that doesn't look familiar to me, and I didn't know it was there. It also doesn't appear to be relevant to that particular commit in any way. When I get some more time, I will definitely do a search through the code to make sure it's not used anywhere and get rid of it.

-Sam

nbennett25 commented 3 years ago

This issue is stopping our Docker containers from being able to run - the symlink presumes a directory structure that may or may not exist:

www-data@test:/var/www/html/vendor/aws/aws-sdk-php/tests/Credentials$ ls -lrta
total 144
lrwxrwxrwx  1 www-data www-data    66 Sep  8 14:39 testlink -> /var/folders/1z/q59hjnz16ss1kbsy4cfmsggc7ywn62/T/.aws/my-token.jwt

why not just put it in the same directory as the module..?

alex-ng-wesoft commented 2 years ago

FWIW this bug might only be encountered if the SDK is installed via VCS instead of the distribution zipball since the zipball doesn't contain the tests/ directory at all. In particular, the v3.199.0 SDK installed via zipball and deployed via Elastic Beanstalk (PHP 7.4, Composer 1.x) works fine for me. If I deploy via source instead, then the deployment breaks.

SamRemis commented 2 years ago

Deleted the symlink, so this should be fixed. This will be released tomorrow with the daily release around 2:30pm EST

stobrien89 commented 2 years ago

Hi all,

It seems #2340 fixed this. Let us know if you're still having issues!

github-actions[bot] commented 2 years ago

⚠️COMMENT VISIBILITY WARNING⚠️

Comments on closed issues are hard for our team to see. If you need more assistance, please either tag a team member or open a new issue that references this one. If you wish to keep having a conversation with other community members under this issue feel free to do so.