[英]Serverless Deployment on Localstack for Python HTTP API
我從aws-python-http-api模板的無服務器項目創建
我的 serverless.yml 文件如下所示
service: aws-http-api
frameworkVersion: '3'
plugins:
- serverless-localstack
provider:
name: aws
stage: local
runtime: python3.9
profile: localstack
functions:
hello:
handler: handler.hello
events:
- httpApi:
path: /
method: get
custom:
localstack:
stages:
- local
host: http://localhost
edgePort: 4566
autostart: true
lambda:
# Enable this flag to improve performance
mountCode: True
docker:
# Enable this flag to run "docker ..." commands as sudo
sudo: False
stages:
local:
...
我正在使用 docker-compose 和 docker-compose.yml 運行 localstack 看起來像
version: '3.0'
services:
localstack:
container_name: "${LOCALSTACK_DOCKER_NAME-localstack_latest}"
image: localstack/localstack:latest
environment:
- AWS_DEFAULT_REGION=us-east-1
- EDGE_PORT=4566
- DEBUG=${DEBUG-}
- LAMBDA_EXECUTOR=${LAMBDA_EXECUTOR-}
- DOCKER_HOST=unix:///var/run/docker.sock
- HOSTNAME=localhost
- SERVICES=${SERVICES-serverless
,acm,apigateway,cloudformation,cloudwatch
,dynamodb,dynamodbstreams,ec2,es,events
,firehose,iam,kinesis,kms,lambda,rds
,route53,s3,s3api,secretsmanager,ses,sns
,sqs,ssm,stepfunctions,sts}
ports:
- "127.0.0.1:4566:4566" # LocalStack Gateway
- "127.0.0.1:4510-4559:4510-4559" # external services port range
volumes:
- "${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"
docker-compose up -d工作正常,我可以在http://127.0.0.1:4566/health上正確看到結果
畢竟我已經進入項目文件夾並按照命令無服務器部署運行並且錯誤是
UPDATE_FAILED: aws-http-api-local (AWS::CloudFormation::Stack)
undefined
我還運行了下一個 ** serverless deploy --stage local** 和同樣的錯誤。 知道為什么會發生嗎?
docker-compose up -d工作正常,我可以在http://127.0.0.1:4566/health上正確看到結果
畢竟我已經進入項目文件夾並按照命令無服務器部署運行並且錯誤是
UPDATE_FAILED: aws-http-api-local (AWS::CloudFormation::Stack)
undefined
我還運行了下一個 ** serverless deploy --stage local** 和同樣的錯誤。 知道為什么會發生嗎?
您好——要運行上面的無服務器示例,您需要訪問 LocalStack Pro,因為社區版本不支持在操作期間調用的某些 AWS API。
您需要將docker-compose.yml
更新為以下配置:
version: "3.8"
services:
localstack:
container_name: "${LOCALSTACK_DOCKER_NAME-localstack_main}"
image: localstack/localstack-pro # required for Pro
ports:
- "127.0.0.1:4566:4566" # LocalStack Gateway
- "127.0.0.1:4510-4559:4510-4559" # external services port range
- "127.0.0.1:53:53" # DNS config (required for Pro)
- "127.0.0.1:53:53/udp" # DNS config (required for Pro)
- "127.0.0.1:443:443" # LocalStack HTTPS Gateway (required for Pro)
environment:
- DEBUG=${DEBUG-}
- PERSISTENCE=${PERSISTENCE-}
- LAMBDA_EXECUTOR=${LAMBDA_EXECUTOR-}
- LOCALSTACK_API_KEY=XXXXXXX # required for Pro
- DOCKER_HOST=unix:///var/run/docker.sock
volumes:
- "${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"
您還需要將serverless.yml
更新為以下配置:
service: aws-python-http-api
frameworkVersion: '3'
provider:
name: aws
runtime: python3.9
functions:
hello:
handler: handler.hello
events:
- httpApi:
path: /
method: get
plugins:
- serverless-localstack
custom:
localstack:
stages:
- local
它還將涉及安裝serverless-localstack
插件。 設置成功后,您可以運行serverless deploy --stage local
,它會產生以下 output:
Using serverless-localstack
Deploying aws-python-http-api to stage local (us-east-1)
Skipping template validation: Unsupported in Localstack
✔ Service deployed to stack aws-python-http-api-local (14s)
endpoint: GET - https://e2af2ca4.execute-api.localhost.localstack.cloud:4566//
functions:
hello: aws-python-http-api-local-hello (119 kB)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.