我在这里阅读自述文件:https://github.com/awslabs/aws-sam-local
我已经写在python 3.6拉姆达及其类似HelloWorld示例这里:https://github.com/awslabs/aws-sam-local/tree/develop/samples/hello-world/python
template.yml看起来像这样:
AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: MyFunction1 API
Resources:
  MyFunction1:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: MyFunction1
      Handler: lambda_module.lambda_handler
      Runtime: python3.6
      CodeUri: lambda.zip
      MemorySize: 128
      Timeout: 10
      Policies:
        -AWSLamdbaBasicExecutionRole
      Events:
        BingLambdaEndpoint:
          Type: Api
          Properties:
            Path: MyFunction1/search
            Method: get
我在lambda中有环境变量但在启动时无法连接它们.文档说我可以创建一个environments.json文件并在invoke命令上附加以下内容:使用--env-vars invoke参数
我的环境文件看起来像示例,我收到一个错误:
 Unable to find environment variable: api_key
environment.json看起来像这样:
{
  "MyFunction1": {
    "api_key": "123456789",
    "BUCKET_NAME": "testBucket"
  }
}
命令我运行是这样的:
sam local invoke MyFunction1 --env-vars environment_variables.json -e event.json
有人能提供额外的见解吗?
我已经使用AWS sam本地设置了api gateway/aws lambda对,并确认我可以在运行后成功调用它
sam local start-api
然后我在docker容器中添加了一个本地dynamodb实例,并使用aws cli在其上创建了一个表
但是,将代码添加到lambda以写入我收到的dynamodb实例:
2018-02-22T11:13:16.172Z ed9ab38e-fb54-18a4-0852-db7e5b56c8cd错误:无法写入表:{"message":"connect ECONNREFUSED 0.0.0.0:8000","code":"NetworkingError", "错误号": "ECONNREFUSED", "系统调用": "连接", "地址": "0.0.0.0", "端口":8000, "区": "EU-西-2", "主机名":"0.0 .0.0","retryable":true,"time":"2018-02-22T11:13:16.165Z"}从命令写入事件:{"name":"test","geolocation":"xyz","输入":"createDestination"} END RequestId:ed9ab38e-fb54-18a4-0852-db7e5b56c8cd
我在网上看到你可能需要连接到同一个docker网络,所以我创建了一个网络docker network create lambda-local并将我的启动命令更改为:
sam local start-api --docker-network lambda-local
和
docker run -v "$PWD":/dynamodb_local_db -p 8000:8000 --network=lambda-local  cnadiminti/dynamodb-local:latest
但仍然收到相同的错误
山姆本地打印出来 2018/02/22 11:12:51 Connecting container 98b19370ab92f3378ce380e9c840177905a49fc986597fef9ef589e624b4eac3 to network lambda-local
我正在使用以下方法创建dynamodbclient:
const AWS = require('aws-sdk')
const dynamodbURL = process.env.dynamodbURL || 'http://0.0.0.0:8000'
const awsAccessKeyId = process.env.AWS_ACCESS_KEY_ID || '1234567'
const awsAccessKey = process.env.AWS_SECRET_ACCESS_KEY || '7654321' …我试图调用我的Lambda函数,sam local invoke但发现它无法连接到我的主机MySQL.我尝试添加--docker-network host但它也无法连接
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/docker/api/client.py", line 229, in _raise_for_status
    response.raise_for_status()
  File "/usr/lib/python3.6/site-packages/requests/models.py", line 935, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: http+docker://localhost/v1.35/networks/6ad3bd87e8437e8410145d169a4edf68d1b0247a67257ce7dd1208dac3664c82/connect
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/bin/sam", line 11, in <module>
    load_entry_point('aws-sam-cli==0.5.0', 'console_scripts', 'sam')()
  File "/usr/lib/python3.6/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/usr/lib/python3.6/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File …我目前正在致力于 AWS 无服务器 lambda 函数部署,并尝试使用 AWS SAM 进行分发和测试。但是,当我按照官方网站上的AWS SAM hello world模板教程进行操作时,我无法真正将代码部署到AWS。
我已经
然而,我收到了错误消息
错误:堆栈 aws-sam-cli-management-default 缺少标签和/或输出信息,因此不处于健康状态(当前状态:aws-sam-cli-management-default)。失败,因为堆栈可能不是由 AWS SAM CLI 创建的
我正在尝试使用通过 Homebrew 安装的 AWS SAM CLI,当我尝试将 sam 与任何命令一起使用时,我看到以下错误:
dyld: Library not loaded: @executable_path/../.Python
  Referenced from: /usr/local/Cellar/aws-sam-cli/0.53.0/libexec/bin/python3.7
  Reason: image not found
查看.Python错误中引用的文件,它被符号链接到一个实际上不存在的 python 文件夹:
drwxr-xr-x   7 RCR  staff   224 Jun 16 19:40 .
drwxr-xr-x   9 RCR  staff   288 Jul  8 14:55 ..
lrwxr-xr-x   1 RCR  staff    70 Jun 16 19:40 .Python -> ../../../../opt/python/Frameworks/Python.framework/Versions/3.7/Python
drwxr-xr-x  39 RCR  staff  1248 Jul  8 14:55 bin
drwxr-xr-x   3 RCR  staff    96 Jun 16 19:40 include
drwxr-xr-x   3 RCR  staff    96 Jun 16 19:40 …我的目标是 尝试编写一个(单个)SAM 模板来获取由 Api 网关事件触发的 Lambda 函数。
我想要有多个 API 阶段(例如“dev”、“testing”、“prod”),并且希望每个阶段都映射到具有相同名称的 Lambda 别名。
我不想在每次部署时生成新的 lambda 版本,并且我喜欢手动设置每个 lambda 别名要使用的 lambda 版本。当然,“dev”别名意味着指向 $LATEST 代码版本。
我尝试了什么以及我得到了什么
我对经典的“hello_world”模板进行了如下修改。现在,当第一次部署(例如,“开发”)时,一切似乎都按预期工作。 但是,如果我尝试部署到“测试”阶段,则此新阶段的 API 会响应,而“开发”阶段的 API 将停止响应。
我缺少什么?
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
  zzzz
  Sample SAM Template for zzzz
# More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst
Globals:
  Function:
    Timeout: 3
Parameters:
  StageAliasName:
    Description: stage / alias name to be used in this deploy
    Type: String
    AllowedValues:
      - prod
      - stage
      - dev
      - v1
    Default: dev
Resources:
  ApiGatewayApi: …amazon-web-services aws-lambda aws-sam-cli aws-serverless aws-sam
When creating Lambda function through the SAM CLI using template.yaml, I have to pass few environment variables, and they shouldn't be exposed on GitHub. Is there any way I can refer the environment variables in template.yaml through the .env file?
I didnt find any sources for the same.
Sample code snippet from template.yaml:
Properties:
  CodeUri: student /
  FunctionName: list
  Handler: index.listHandler
  Runtime: nodejs14.x
  Environment: 
    Variables:
      MONGODB_URI: mongodb://username:pwd
AWS github 问题是Provide linux installation without homebrew #1424。请在 github 问题中监视更新以获取最新状态。
AWS 最终决定提供非 brew 方法。
我们目前正在努力通过 pyinstaller 提供更好的安装体验。在短期内,我们将继续发布 brew 以支持已经使用它的人以及 pip,但核心工件将使用 pyinstaller 生成,并希望为 Linux 和 macOS 用户提供更好的体验,这是我的希望这也将鼓励为 Linux 发行版发布下游包,例如 yum 和 deb 存储库,类似于 AWS cli 的普遍可用方式。
请提出一种无需使用自制软件即可在 Linux 中安装 AWS SAM 的方法。AWS 文档告诉使用自制软件,但是应该有一种不使用 brew 的方法。
在 Linux 上安装 AWS SAM CLI 第 5 步:安装 AWS SAM CLI
按照以下步骤使用 Homebrew 安装 AWS SAM CLI:
brew tap aws/tap
brew install aws-sam-cli
我们即将开始使用 Lambda 函数。
我们有必须使用 TypeScript 的技术限制。
当从 Postman 调用相关端点时,我希望能够在 VS Code 中调试我的 ts 文件。
所以,我们有以下开发环境:
我已经使用sam initHello World 模板来生成初始文件夹结构。
我已经对其进行了增强(主要基于本文)以使用 TypeScript。
.
??? template.yaml
??? .aws-sam
??? .vscode
|   ??? launch.json
??? events
??? hello-world
|   ??? dist
|       ??? app.js
|       ??? app.js.map
|   ??? src  
|       ??? app.ts
|   ??? package.json
|   ??? tsconfig.json
template.yaml.
??? …amazon-web-services node.js typescript aws-lambda aws-sam-cli
aws-sam-cli ×10
aws-lambda ×5
aws-sam ×4
docker ×2
homebrew ×1
node.js ×1
pycharm ×1
python ×1
sam ×1
serverless ×1
typescript ×1