Amazon web services 尝试使用Dockerfile登录AWS CLI时出现的问题

Amazon web services 尝试使用Dockerfile登录AWS CLI时出现的问题,amazon-web-services,docker,dockerfile,aws-cli,Amazon Web Services,Docker,Dockerfile,Aws Cli,我正在尝试将Docker容器与AWS Bucket之间的文件同步,但在尝试登录或运行第一个参数时遇到问题。我经常收到这样的信息: 用法:aws[选项][…] [参数]要查看帮助文本,您可以运行: aws帮助aws帮助aws帮助 aws:error:ARAMENT命令:无效选项,有效选项为: 我不知道在我的档案里我做错了什么。这是我的Dockerfile: FROM openjdk:11-jre-slim-buster COPY ./target/AWS-Writer-Test-0.0.1-SNA

我正在尝试将Docker容器与AWS Bucket之间的文件同步,但在尝试登录或运行第一个参数时遇到问题。我经常收到这样的信息:

用法:aws[选项][…] [参数]要查看帮助文本,您可以运行:

aws帮助aws帮助aws帮助

aws:error:ARAMENT命令:无效选项,有效选项为:

我不知道在我的档案里我做错了什么。这是我的Dockerfile

FROM openjdk:11-jre-slim-buster
COPY ./target/AWS-Writer-Test-0.0.1-SNAPSHOT.jar AWS-Writer-Test-0.0.1-SNAPSHOT.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","AWS-Writer-Test-0.0.1-SNAPSHOT.jar"]

FROM amazon/aws-cli
ARG AWS_ACCESS_KEY_ID
ARG AWS_SECRET_ACCESS_KEY
ARG AWS_REGION

RUN aws ecr get-login-password --no-include-email | bash
RUN aws s3 cp s3://AWS-Writer-Test/logs/log.txt /log.txt --recursive

#ENTRYPOINT [ "aws", "ecr get-login-password --no-include-email | bash" ]
知道我会犯什么错误吗?谢谢你的支持

p.S.:

  • 最终目标是将日志文件从Docker容器同步到S3 Bucket
  • 这不是公众形象。这些信息将存储在私人回购协议中,从互联网无法访问,只能通过内部网访问。然而,我计划稍后在AWS中使用一些秘密,但首先我必须让它起作用

了解文档中描述的两种语法版本之间的差异非常重要

实际上,这两者都有

入口点有两种形式:

exec表格是首选表格:

入口点[“可执行”、“参数1”、“参数2”] 外壳形式:

入口点命令param1 param2

您的
入口点是
[“aws”,“ecr获取登录密码--不包括电子邮件”| bash]
因此,它直接运行(可能使用类似aws的命令,而不使用任何shell(这很重要),并尝试仅使用一个参数向aws提供信息,即所有参数都是
ecr get login password——不包括电子邮件| bash

正确的语法应该是
[“aws”、“ecr”、“获取登录密码”、“不包括电子邮件”]
。其余部分:

|bash
,尤其是
“|”
管道符号没有任何意义,因为它是一个shell表达式。您决定不运行shell(通过选择第一个版本的
入口点
语法),因此无法使用任何shell命令/表达式,例如
if

如果需要使用shell,则需要运行ENTRYPOINT的shell版本,因此您的语法为:

ENTRYPOINT aws ecr获取登录密码——不包括电子邮件| bash


我建议您尝试所有三个版本,并查看错误消息之间的差异(或缺少错误消息)。

此方法将您的AWS凭据复制到映像中,稍后有人可以在映像中提取并重用它们(在您的dime上运行加密货币矿工)。我会在Docker外部运行
aws
命令,然后将文件复制到映像中。哪个命令会引发错误?Hi@DavidMaze,我只想先测试它是否在本地工作:)。你能给我一些提示吗?稍后我会将它们转移到一些秘密。嗨@Marcin,我刚刚运行了它并向我抛出了该消息。另外@DavidMaze,我需要将jar中的日志文件从那里复制到S3。
[,“aws”
中的逗号正确吗?@Marcin当然不正确,谢谢!