我有以下 Dockerfile
FROM public.ecr.aws/docker/library/python:3.7-slim-buster as base
WORKDIR /code
RUN apt-get update -y && \
pip install --upgrade pip && \
mkdir ~/.aws \
&& touch ~/.aws/credentials
RUN apt-get install -y nodejs npm awscli jq
這是來自 slim-buster 的基礎。我正在嘗試aws sts從這個推薦的AWS sts 中執行一個命令命令,在一個命令解決方案中扮演角色
然而, eval 解決方案出現“空白”或括號未在 make 命令中正確轉義:
sts-qa:
eval $(aws sts assume-role --role-arn arn:aws:iam::1234556778:role/aws-role --role-session-name pebble | jq -r '.Credentials | "export AWS_ACCESS_KEY_ID=\(.AccessKeyId)\n export AWS_SECRET_ACCESS_KEY=\(.SecretAccessKey)\nexport AWS_SESSION_TOKEN=\(.SessionToken)\n"')
我得到的錯誤是:
root@b79fd0ebf8cf:/code# make sts-qa
eval \n export AWS_SECRET_ACCESS_KEY=\(.SecretAccessKey)\n export AWS_SESSION_TOKEN=\(.SessionToken)\n"')
/bin/sh: 1: Syntax error: ")" unexpected
我努力了:
- 從命令中轉義所有 ()。我收到以下錯誤:
/bin/sh: 2: Syntax error: Unterminated quoted string - 將 $(...) 的內容分配給變數。我作為輸出回傳的是
eval(整個 bash 命令是空白的
我已經沒有想法了
uj5u.com熱心網友回復:
$(...)是用于擴展變數名稱的 Makefile 語法,因此它(被)您要執行的命令中的第一個未轉義的關閉。您需要將其加倍$才能按字面意思處理。
sts-qa:
eval $$(aws sts assume-role --role-arn arn:aws:iam::1234556778:role/aws-role --role-session-name pebble | jq -r '.Credentials | "export AWS_ACCESS_KEY_ID=\(.AccessKeyId)\n export AWS_SECRET_ACCESS_KEY=\(.SecretAccessKey)\nexport AWS_SESSION_TOKEN=\(.SessionToken)\n"')
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/404400.html
標籤:
上一篇:將未壓縮的檔案提供給命令列引數
下一篇:jq:映射一個物件的所有值
