问题标签 [aws-sam]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
aws-lambda - AWS SAM 构建使用容器无需清洗
目前,构建 AWS SAM 真的很慢。
这使我无法测试代码而不是依赖项的小更改。
sam build 是否只会复制源代码而不执行任何类型的清理/重新安装依赖项?
amazon-web-services - 获取有关已部署的 AWSLambda 函数的信息以创建类似的部署模板
是否有可能获取部署 lambda 函数所需的所有信息及其所有所需的依赖项(权限、策略、调用事件文件),以便稍后通过 AWS SAM CLI(或类似的东西)从模板自动部署它?
是否有一个选项可以在不使用 UI 元素的情况下追溯 lambda 函数的设置方式,以便可以自动方式完成?
我的计划是从 AWS Lambda 上已部署的无服务器应用程序中收集无服务器应用程序模型。我不会在任何平台上部署功能,但想研究从一个提供商(此处:AWS)获取无服务器应用程序并以自动化方式将其迁移到另一个平台(例如:Azure)的可能性。这正是计划。据我所知,所有现有框架都专注于与提供者无关的无服务器功能部署,但我想采用一个功能及其所有架构关系(例如基于 S3 触发器的事件)并将其迁移到具有可比服务的另一个提供者平台。
TLDR:我想提取一个已部署的 Lambda 函数并获取与我在 SAM CLI 模板中传递的信息类似的信息,以在 AWS 上初始部署无服务器函数。
一种功能可能是通过 S3 存储桶创建缩略图的常见示例。
amazon-web-services - AWS API Gateway 仅在使用 SAM 时支持 CORS for OPTIONS(没有 Lambda 代理集成)
我正在使用AWS Serverless
构建一个包含大约 15 个 Lambda 函数的小型站点。
我的 Cloudformation 堆栈完全使用SAM
.
我没有使用 Lambda 代理集成。
yaml 模板配置中的 Api 部分SAM
如下所示:
当我部署这个SAM
yaml 模板时,我看到我的 ApiGateway 为所有方法创建了 OPTIONS 动词,当我使用 OPTIONS 动词发出请求时,我确实看到了CORS
正确的标题。
问题是其他动词(例如 POST)没有像 OPTIONS 请求那样将这些标头添加到它们的响应中,并且当我从浏览器运行我的 api 时,我的控制台中出现跨源策略错误。
所以我目前的解决方法是使用对特定状态代码的集成响应添加 CORS 标头,但我不能也不想处理 15 种方法,我想支持所有响应状态代码(例如 4xx\5xx 等)。
我的问题:
- 我在这里做错了什么还是这是一个
SAM
错误? - 如果这是一个错误,除了使用集成响应(或从我的代码)添加标题之外,还有其他解决方法吗?
- 有没有办法可以从 Api 网关“全局”添加标头?还是支持某种全球综合反应?
aws-api-gateway - API Gateway HTTP 代理与 aws-sam 的集成(不是 Lambda 代理)
我正在尝试使用 aws-sam 在本地开发/模拟我的 API 网关。我的 API 网关充分利用了HTTP 代理集成。生产资源如下所示:
我发现的所有 aws-sam 示例, 以及相关文档和问答,都使用 Lambda 集成/对作为代理资源的 Lambda 函数有硬依赖,而不是 HTTP 代理集成。
有没有办法为 aws-sam 应用程序定义 HTTP 代理资源?(与 Lambda 代理资源相反?)
有关的:
- 使用 SAM 创建 API Gateway 代理资源
- 我也在尝试使用无服务器离线解决同样的问题,在以下帖子中 - API Gateway HTTP 代理与无服务器离线(而不是 Lambda 代理)集成
amazon-web-services - 指定哪个账户/用户可以使用 SAM 和 API Gateway 调用 API
我正在尝试创建一个使用 SAM 调用 Lambda 函数的 API 网关。我想限制对 API 的访问,使得只有某些 IAM 账户/用户可以访问 API。我该怎么做?我找不到将资源访问策略附加到 SAM 中的 API 端点的正确方法。
amazon-web-services - AWS::ApiGateway::Stage 需要 DeploymentId ...但我在哪里可以找到这个?
我正在尝试以编程方式设置阶段作为我的 AWS API Gateway 部署的一部分。我正在使用 SAM CLI。cloudformation 文档给出了定义:
DeploymentId 阶段指向的部署的 ID。
要求:是
类型:字符串
更新要求:无中断
和代码示例:
TestDeployment
..但没有关于价值指向什么的上下文。
- 它是用户选择的随机字符串吗?
- 它是在某处可用的生成 ID 吗?
- 它是资源的名称还是 API 的名称?等等
我一直在谷歌搜索,但似乎仍然无法得到答案。
在 AWS 管理控制台中,我可以看到一些我们已经存在的 API——当阶段已经存在(手动设置)时,您可以通过阶段获取部署 ID,但如果我必须先手动设置它们,这会部分破坏 CloudFormation 的目的,AWS::ApiGateway::Stage
不是吗(...理想情况下,我们希望能够完全通过代码创建 API,而无需进入 AWS 接口)?部署后不是deploymentId
唯一可用的吗?如果它之前可用(作为构建的一部分),我如何获取它并将其放入我cloudformation.yaml
的部署之前?
感谢您对理解这一点的任何帮助!
aws-sam-cli - 如何在本地运行 AWS SAM 模板并将其成功部署到 AWS(使用 Java Lambdas)?
我正在尝试使用 SAM(无服务器应用程序模型)和用 Java 编写的 Lambda 构建一个 AWS 应用程序。
通过在模板中使用这样的资源定义,我能够让它在本地运行:
但是为了让sam package
阶段仅将实际代码(而不是整个项目目录)上传到 S3,我必须将其更改为:
如 AWS SAM 示例项目自述文件中所述。
但是,这会破坏在本地运行应用程序的能力,sam build
然后是sam local start-api
.
我试图通过将CodeUri
值作为参数(with )来解决这个问题,这在本地工作,但由于SAM 翻译器的一个已知问题--parameter-overrides
而中断了打包阶段。
有没有办法让本地构建和真正的 AWS 部署都工作,最好使用相同的模板文件?
zsh - 如何更改zsh下运行的默认程序?
我的MacOS 上安装了两个版本的AWS SAM CLI 。where sam
在zsh中运行时得到以下结果:
运行sam
命令时,MacOS 运行sam
在/Users/MyName/.pyenv/shims/
.
是否可以配置我的 zsh 终端以便sam
运行以下版本/usr/local/bin
?
我想这样做的原因是/Users/MyName/.pyenv/shims/sam
在我执行它之后返回一个错误。
我想通过运行sam
under来避免这个问题/usr/local/bin/
。
amazon-web-services - 消息发布到 SQS 时如何触发 lambda?
我正在尝试实现将在消息发布到 SQS 时触发的 lambda1。我能够将消息发送到 SQS 队列并接收消息。我创建了 SQS lambda 模板,如下所示:
我查看了 aws 文档,但找不到任何示例来说明当消息发布到 SQS 队列时如何触发 lambda。
我发现这个链接Can an AWS Lambda function call another但不确定这是否有帮助。
如何更新上面的 SQS 模板以触发 lambda1?