Neulich (September 2020) habe ich versucht, die Hallo-Welt-Vorlage sam (Serverless Application Model) (Laufzeit ist Python3.8) in der neu erstellten AWS Cloud9-Entwicklungsumgebung (Plattform = AmazonLinux) auszugeben und zu erstellen und bereitzustellen. Beim Versuch, mit dem Befehl "sam build --use-container" zu erstellen, ist der folgende Fehler aufgetreten. Ich habe einen Fehler (Laufzeitfehler: Container existiert nicht) in der gerade erstellten Umgebung erhalten, daher wurde "Was ??" angezeigt.
(↓ dient als Referenz, bis die Vorlage hello_world ausgegeben wird)
ec2-user:~/environment $ sam init --runtime python3.8 -n sam-py38
SAM CLI now collects telemetry to better understand customer needs.
You can OPT OUT and disable telemetry collection by setting the
environment variable SAM_CLI_TELEMETRY=0 in your shell.
Thanks for your help!
Learn More: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-telemetry.html
Which template source would you like to use?
1 - AWS Quick Start Templates
2 - Custom Template Location
Choice: 1
Allow SAM CLI to download AWS-provided quick start templates from Github [Y/n]: Y
AWS quick start application templates:
1 - Hello World Example
2 - EventBridge Hello World
3 - EventBridge App from scratch (100+ Event Schemas)
4 - Step Functions Sample App (Stock Trader)
5 - Elastic File System Sample App
Template selection: 1
-----------------------
Generating application:
-----------------------
Name: sam-py38
Runtime: python3.8
Dependency Manager: pip
Application Template: hello-world
Output Directory: .
Next steps can be found in the README file at ./sam-py38/README.md
ec2-user:~/environment $ cd sam-py38/
(Der Ort, an dem der von ↓ ausgegebene Befehl sam build von hello_world zu RuntimeError wird)
ec2-user:~/environment/sam-py38 $ sam build --use-container
Starting Build inside a container
Building resource 'HelloWorldFunction'
Fetching lambci/lambda:build-python3.8 Docker container image.....................................................................................................................................................................................................................................................
Mounting /home/ec2-user/environment/sam-py38/hello_world as /tmp/samcli/source:ro,delegated inside runtime container
Traceback (most recent call last):
File "/usr/local/bin/sam", line 11, in <module>
sys.exit(cli())
File "/usr/local/lib64/python3.6/site-packages/click/core.py", line 764, in __call__
~ (Weggelassen) ~
File "/usr/local/lib/python3.6/site-packages/samcli/local/docker/container.py", line 197, in wait_for_logs
raise RuntimeError("Container does not exist. Cannot get logs for this container")
RuntimeError: Container does not exist. Cannot get logs for this container
Ich kannte die Ursache nicht intuitiv anhand der Fehlermeldung. Als ich mich an den AWS-Support wandte,
Aufgrund unzureichender Kapazität des EBS-Volumes, das der EC2-Instanz in der Cloud9-Umgebung zugeordnet ist
Ich habe die Antwort erhalten.
Es wurde gelöst, indem die Kapazität des EBS-Volumens unter Bezugnahme auf das folgende Dokument auf 20 G erweitert wurde.
Resize an Amazon EBS volume used by an environment https://docs.aws.amazon.com/cloud9/latest/user-guide/move-environment.html#move-environment-resize
Die Größenerweiterung durch diese Methode wird auch im folgenden Artikel vorgestellt und kann sehr einfach erweitert werden. Erhöhen Sie die Festplattengröße von AWS Cloud 9 https://qiita.com/Keisuke69/items/af87eb8629ad4249bd22
Die anfängliche Volume-Größe geht schnell zur Neige, insbesondere wenn Sie Docker-bezogene Arbeiten in Cloud 9 ausführen. Denken Sie also daran, wie Sie das Volume mit resize.sh bei Bedarf einfach erweitern können. Ich denke es ist bequem.
Es ist einfach, aber das war's. Ich hoffe, dass weniger Menschen Probleme mit dem gleichen Problem haben werden.