AWS Lambda -不允许Swift操作

i7uaboj4  于 2023-05-27  发布在  Swift
关注(0)|答案(1)|浏览(354)

我正在尝试通过AWS Lambda编译Swift代码。因此,我使用Ubuntu 18.04映像作为基础。Swift版本是5.0.1。
当映像在本地执行时,它工作正常。当我尝试在AWS Lambda中执行它时,我得到以下错误:
/usr/bin/ld.gold:致命错误:/tmp/project/src/a.out:不允许操作\nclang-7:错误:链接器命令失败,退出代码为1(使用-v查看调用)
我认为这个问题是由只读的aws lambda容器引起的,它只允许写入/tmp/文件夹。你知道如何修复这个错误吗?似乎swift需要文件夹的权限,它没有权限?

Dockerfile

FROM ubuntu:18.04

# install clang 
RUN apt-get update 
RUN apt-get install -y clang

# install wget 
RUN apt-get install -y wget

# install swift dependencies 
RUN apt-get install -y libcurl3 libpython2.7 libpython2.7-dev 
ARG DEBIAN_FRONTEND=noninteractive 

RUN apt-get install -y --no-install-recommends \
    binutils \
    git \
    libc6-dev \
    libcurl4 \
    libedit2 \
    libgcc-5-dev \
    libpython2.7 \
    libsqlite3-0 \
    libstdc++-5-dev \
    libxml2 \
    pkg-config \
    tzdata \
    zlib1g-dev \
    libbsd-dev 

RUN apt-get install -y libicu-dev

# install swift 5.0.1 
RUN wget https://swift.org/builds/swift-5.0.1-release/ubuntu1804/swift-5.0.1-RELEASE/swift-5.0.1-RELEASE-ubuntu18.04.tar.gz RUN tar xzf swift-5.0.1-RELEASE-ubuntu18.04.tar.gz RUN mv swift-5.0.1-RELEASE-ubuntu18.04 /usr/lib/swift RUN echo "export PATH=/usr/lib/swift/usr/bin:$PATH" >> ~/.bashrc 

RUN . ~/.bashrc

RUN chmod -R o+r /usr/lib/swift

这是在AWS-Lambda处理函数中执行的命令:

swiftc hello_world.swift -o a.out

hello_world.swift

print("Hello World!")
k10s72fa

k10s72fa1#

您的输出必须设置在tmp文件夹中

swiftc hello_world.swift -o /tmp/a.out

相关问题