AWS Lambda: Layer conversion failed: 部分目录没有执行权限;

AWS Lambda: Layer conversion failed: Some directories do not have execute permissions;

我在为请求创建 Python 层时遇到此错误,如下所示:https://dev.to/razcodes/how-to-create-a-lambda-layer-in-aws-106m

我检查了这个答案:。但是 Windows 没有 chmod。即使我 运行 等效 icacls 它仍然不起作用...

这里是完整的命令 运行:

New-Item -ItemType Directory -Force -Path "aws-lambda-layer/lambda-layer/python/lib/python3.8/site-packages"
pip3 install requests --target "aws-lambda-layer/lambda-layer/python/lib/python3.8/site-packages"
icacls "aws-lambda-layer" /grant:r Everyone:F /t

Compress-Archive -Path "aws-lambda-layer/lambda-layer/*" -DestinationPath "aws-lambda-layer/lambda-layer.zip" -Force
icacls "aws-lambda-layer" /grant:r Everyone:F /t

$bucket = "some-bucket-name-asdf"
aws s3api create-bucket --bucket $bucket --create-bucket-configuration "LocationConstraint=us-west-2"
aws s3 cp "aws-lambda-layer/lambda-layer.zip" "s3://$bucket/lambda-layer"
aws lambda publish-layer-version --layer-name "AutoTradingLambdaLayer" --content "S3Bucket=auto-trading-lambda-layer,S3Key=lambda-layer" --compatible-runtimes "python3.8"

我也在控制台UI做了同样的错误。

出于好奇,我在 WSL2 中启动了一个 Ubuntu 并且等效的命令起作用了。

rm -rf tmp/
mkdir -p tmp/aws-lambda-layer/lambda-layer/python/lib/python3.8/site-packages
pip3 install requests --target "tmp/aws-lambda-layer/lambda-layer/python/lib/python3.8/site-packages"

chmod -R 755 tmp/
cd tmp/aws-lambda-layer/lambda-layer/ && zip -r lambda-layer.zip "./" && cd ../../..
chmod -R 755 tmp/

aws lambda publish-layer-version --layer-name "AutoTradingLayerV2" --zip-file fileb://tmp/aws-lambda-layer/lambda-layer/lambda-layer.zip --compatible-runtimes "python3.8"

更奇怪的是,即使在图层创建之后。我的 cdk deploy 在 Windows 中会失败,但在 Linux 中工作正常...

2020-09-12 14:55:11 UTC-0700    dev-XXXStack    ROLLBACK_IN_PROGRESS    The following resource(s) failed to create: [XXXFunction6E68C5BD, XXXFunctionC9F0CF18, XXXFunction5D6ADE12, XXXFunction4434B1DB]. . Rollback requested by user.
2020-09-12 14:55:10 UTC-0700    XXXFunction5D6ADE12 CREATE_FAILED   Layer conversion failed: Some directories do not have execute permissions; (Service: AWSLambdaInternal; Status Code: 400; Error Code: InvalidParameterValueException; Request ID: bf5051dd-ec8a-43d3-953b-38ff5d03c27f; Proxy: null)
2020-09-12 14:55:09 UTC-0700    XXXFunction4434B1DB CREATE_FAILED   Layer conversion failed: Some directories do not have execute permissions; (Service: AWSLambdaInternal; Status Code: 400; Error Code: InvalidParameterValueException; Request ID: c7db1bbf-f460-474c-9d04-a32b6ba92d28; Proxy: null)
2020-09-12 14:55:08 UTC-0700    XXXFunction6E68C5BD CREATE_FAILED   Layer conversion failed: Some directories do not have execute permissions; (Service: AWSLambdaInternal; Status Code: 400; Error Code: InvalidParameterValueException; Request ID: 7fde3735-2273-437d-b51b-8aec83e2fb61; Proxy: null)
2020-09-12 14:55:07 UTC-0700    XXXFunctionC9F0CF18 CREATE_FAILED   Layer conversion failed: Some directories do not have execute permissions; (Service: AWSLambdaInternal; Status Code: 400; Error Code: InvalidParameterValueException; Request ID: 2c65b709-e2c9-46ea-bcc6-4a9d1f8618e6; Proxy: null)