我在一个单一存储库工作,其中有一个AWS SAM (lambda) 应用程序。结构或多或少像这样:
\n\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 my_folder1\n \xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 file1.py\n\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n \xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 file2.py\n \xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 my_folder2\n \xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 my_folder3\n \xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n \xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 file3.py\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 sam-app\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 events\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 event.json\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 samconfig.toml\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 template.yaml\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tests\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 hello_world\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 requirements.txt\n :preview:\n numpy\n pandas\n ...\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 app.py\n :preview:\n import pandas\n from my_folder1.my_folder2.my_folder3.file3 import MyClass\n ...\n\n .\n .\n .\n more_folders...\n …Run Code Online (Sandbox Code Playgroud) 尝试使用命令将dockerized Lambda转发到我的本地主机:
$ sam local start-api --docker-network host
Run Code Online (Sandbox Code Playgroud)
每次尝试访问 Lambda 时都会出错:
FunctionName 的调用容器没有响应
还尝试使用host.docker.internal和host.docker.local网络,但没有成功。
有任何想法吗?解决方法?
我正在使用 AWS SAM CLI
根据https://aws.amazon.com/about-aws/whats-new/2020/07/cloudfront-geolocation-headers/已经支持地理定位,并且 CloudFront 返回地理定位标头;例子:
CloudFront-Viewer-Country-Name: United States
CloudFront-Viewer-Country-Region: MI
CloudFront-Viewer-Country-Region-Name: Michigan
CloudFront-Viewer-City: Ann Arbor
CloudFront-Viewer-Postal-Code: 48105
CloudFront-Viewer-Time-Zone: America/Detroit
CloudFront-Viewer-Latitude: 42.30680
CloudFront-Viewer-Longitude: -83.70590
CloudFront-Viewer-Metro-Code: 505
Run Code Online (Sandbox Code Playgroud)
我希望能够使用我的 API 网关 REST API 访问这些内容,这是我的 aws sam 模板的示例。
Resources:
login:
Type: AWS::Serverless::Function
Properties:
Handler: src/functions/login.handler
Runtime: nodejs14.x
Layers:
- !Ref dependencies
Events:
ApiEvent:
Type: Api
Properties:
Method: post
Path: /login
RestApiId:
Ref: mainBackendApi
mainBackendApi:
Type: AWS::Serverless::Api
Properties:
StageName: !Ref Stage
EndpointConfiguration:
Type: EDGE
Domain:
DomainName: !Sub
- <hidden>
- apiSubDomain: …Run Code Online (Sandbox Code Playgroud) geolocation amazon-web-services aws-api-gateway aws-sam-cli aws-sam
我正在尝试创建一个与 API 网关关联的 lambda 函数。
每当部署新版本时,都会为该函数创建一个新的 lambda 版本,该版本将具有此 ARN arn:lambda_arn:[version]。
此外,还需要创建一个新的 API 网关阶段并与该 lambda 版本集成。
当我部署 CF 堆栈时:
dev创建名为与 lambda 别名dev( ) 集成的API 网关阶段arn:lambda:dev,并保留此阶段,从 lambda 设置手动管理别名。我已经尝试使用 sam cli yaml 模板以及 aws cdk 来实现此目的,但这是我面临的问题:
http_api = apigwv2.HttpApi(self, "cdk_http_api")
Run Code Online (Sandbox Code Playgroud)
尽管我可以为该 HttpApi 创建多个阶段,但所有阶段都将具有完全相同的集成和路由。
创建部署会很有用,但即使我无法使用不同的集成(使用不同版本的 lambda)创建不同的部署
deployment = apigwv2.CfnDeployment(
self, "first_deployment", api_id=http_api.api_id, stage_name="test"
)
Run Code Online (Sandbox Code Playgroud)
我也无法将它附加到舞台上!与下面提到的 ApiGatewayV1 不同
PackageType: image似乎需要一个 Dockerfile (查看 hello-world 示例)以及ImageUriandMetadata
它也不希望我使用Runtime, Handler, Layers(甚至不使用层)
而build --use-container似乎不需要任何东西。它是否从Runtime: nodejs14.x-v1
在文档中我没有看到任何内容
当我谷歌时,有大量的文档和资源,但没有相关的
我真的很想知道,因为我现在正处于构建管道阶段。我让它在单阶段上工作得很好,现在想使用多阶段多帐户,根据我的阅读,建议使用图像。
我注意到当前的管道确实有--use-container,但我的PackageType是zip,并且在我构建它(使用sam pipeline --bootstrap)时的某个时刻,它询问我是否有任何函数使用图像。我想让我的多阶段/账户一来回答Y
它可能不相关,但这也是我计划为每个帐户使用环境变量的方式,因为用于获取数据的数据库是不同的。所以我想我必须去添加--container-env-var-filegitlab-ci.yml 脚本,或者可能在samconfig.toml [dev.build.parameters][prod.build.parameters] for itsenv-prod.json` 文件中和下
amazon-web-services aws-lambda aws-sam-cli aws-sam aws-lambda-containers
我正在尝试使用 AWS sam 运行一个简单的 lambda 函数,版本(1.57.0)我已经安装在我的 ubuntu 系统中,nodejs 版本 14.18.3 当我尝试运行该项目时,它给出了 errorUnsupported Lambda 运行时 nodejs18.x 下面是完整的堆栈跟踪
Invoking index.handler (nodejs18.x)
Traceback (most recent call last):
File "samcli/__main__.py", line 12, in <module>
File "click/core.py", line 829, in __call__
File "click/core.py", line 782, in main
File "click/core.py", line 1259, in invoke
File "click/core.py", line 1259, in invoke
File "click/core.py", line 1066, in invoke
File "click/core.py", line 610, in invoke
File "click/decorators.py", line 73, in new_func
File "click/core.py", line 610, in invoke
File "samcli/lib/telemetry/metric.py", …Run Code Online (Sandbox Code Playgroud) 我已经在我的 Mac 上启动并运行了 Docker。但“sam local invoke”命令会导致错误:本地运行 AWS SAM 项目需要 Docker。您安装并运行了吗?
有谁知道可能是什么原因?
aws ssm start-session --target <instance-id> --document-name AWS-StartPortForwardingSessionToRemoteHost --parameters host="mydb.example.us-east-2.rds.amazonaws.com",portNumber="3306",localPortNumber="3306"
Run Code Online (Sandbox Code Playgroud)
http://127.0.0.1:3306/这样的 GUI在本地连接到它。无需使用 SSH。http://127.0.0.1:3306/,则会收到错误Connection refused。127.0.0.1解析为 docker 容器的本地主机而不是我机器的本地主机。host.docker.internal ... resolves to the internal IP address used by the hosthttp://host.docker.internal:3306/ …amazon-web-services amazon-rds docker aws-lambda aws-sam-cli
这是部署lambda的命令:
$ sam package --template-file sam.yaml --s3-bucket mybucket --output-template-file packaged.yaml
Run Code Online (Sandbox Code Playgroud)
但是我可以指定存储段前缀吗?所以它被部署到子文件夹而不是存储桶的根?
使用AWS SAM Local我可以在本地测试我的无服务器应用程序,这很棒.
我也可以部署到AWS,它显然采用相同的标志aws cloudformation deploy,因此我可以传递一个参数文件,例如应用程序机密(API密钥等).
但是,我aws local start-api --help在Github上的文档中或文档中找不到有关如何在本地测试时使用参数文件的内容.
如何在运行时指向要与模板一起使用的参数文件sam local start-api?
aws-sam-cli ×10
aws-lambda ×5
aws-sam ×4
docker ×2
sam ×2
amazon-rds ×1
aws-cdk ×1
geolocation ×1
lambda ×1
node.js ×1
python ×1