在Windows PowerShell中解码“ AWS Lambda调用”的base64加密LogResult

时间:2018-09-28 12:48:51

标签: amazon-web-services powershell aws-lambda aws-cli

我正在使用AWS Lambda Invoke从Powershell测试我的lambda函数。不幸的是,我无法获得有用的日志结果。如果我将这样的结果解码,则没有用换行符分隔对数行:

$response = aws lambda invoke --function-name my-lambda-function --invocation-type RequestResponse --log-type Tail --payload file://sample-event.json outfile.txt | ConvertFrom-Json
$DecodedText = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($response.LogResult))
$DecodedText

你知道我该怎么做才能使日志漂亮并在一行一行之后显示readabel吗?

1 个答案:

答案 0 :(得分:0)

我没有使用Windows,但是我认为Bash在Linux子系统下也可用。在每个lambda目录中,我都有文件invoke.sh,其代码如下:

NAME=getLineUpMap
OUT=/tmp/awsLambdaOut.txt

AWS_PROFILE=gms-ai \
aws lambda invoke \
--function-name $NAME \
--payload '{"specs": ["RPM", "Energy"], "numberOfModels": 3}' --log-type Tail \
$OUT |
grep "LogResult" |
awk --field-separator '"' '{print $4}' |
base64 --decode |
grep --color "$NAME\|$" --text

cat $OUT | python3 -m json.tool

输出示例:

START RequestId: cc22c01a-fdd0-4944-9d78-ef298fb6ef72 Version: $LATEST
END RequestId: cc22c01a-fdd0-4944-9d78-ef298fb6ef72
REPORT RequestId: cc22c01a-fdd0-4944-9d78-ef298fb6ef72  Duration: 75.75 ms  Billed Duration: 100 ms Memory Size: 3008 MB    Max Memory Used: 63 MB  
{
    "Models": [
        {
            "Specs": {
                "Energy": "A++",
                "RPM": "1200"
            },
            "Percent": 14
        },
        {
            "Specs": {
                "Energy": "A++",
                "RPM": "1000"
            },
            "Percent": 12
        },
        {
            "Specs": {
                "Energy": "A+++",
                "RPM": "1200"
            },
            "Percent": 12
        }
    ],
    "Rows": {
        "1000": 31,
        "1200": 38,
        "1400": 29
    }
}