官方的aws-cli镜像不接受来自gitlab的脚本命令



我使用amazon/aws-cli:2.2.40在gitlab管道中发布一个静态站点到S3。

deploy_front: 
image: amazon/aws-cli:2.2.40
variables:
AWS_ACCESS_KEY_ID:  $AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION: $AWS_DEFAULT_REGION
stage: publish
script:
- s3 sync ./front/build s3://some-bucket-name

结尾
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:
aws help
aws <command> help
aws <command> <subcommand> help
aws: error: argument command: Invalid choice, valid choices are:
accessanalyzer                           | acm                                     
acm-pca                                  | alexaforbusiness                        
amp                                      | amplify                                 
amplifybackend                           | apigateway
.......                                    ..........

我设法通过在本地运行docker run -it amazon/aws-cli:2.2.40 aws s3来复制此错误。然而,docker run -it amazon/aws-cli:2.2.40 s3工作,所以我不明白为什么我得到同样的错误,无论我在script中使用什么。这是逃避问题吗?

这是因为amazon/aws-cli映像的入口点是:/usr/local/bin/aws。当您在本地单独运行aws时,它将返回帮助消息并给出一个252退出代码。要覆盖入口点,您可以这样做:

test:
stage: test
image: 
name: amazon/aws-cli
entrypoint: [""]
script:
- aws s3 help