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

Official aws-cli image does not accept scripts commands from gitlab

我在 gitlab 管道中使用 amazon/aws-cli:2.2.40 在 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 时,它会 return 帮助消息并给出 252 退出代码。对于override the entrypoint,你这样做:

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