我的 API 网关配置为在授权请求时调用我的自定义授权方 Lambda 函数。
对于带有身份验证令牌的请求,Lambda 函数会在将请求传递给上游之前对 JWT 令牌进行解密和解码,并进行一些验证。如果令牌验证失败,授权者会使用 401 Unauthorized 使请求短路。
对于不带有身份验证令牌的请求,该函数仅允许请求通过(生成一个允许策略。)网关的上游负责决定给定的请求是否需要身份验证(仍然,令牌解密/解码/验证是完全封装在网关中,而不是在每个上游实现。)
我的问题是:对于我的网关/授权方“允许”的未经身份验证的请求,允许策略的主体 ID 的适当值是多少?我似乎没有选择离开它undefined
。
此外,如果我在多个不相关的请求之间重复使用主体 ID 会不会有任何风险?假设 X% 的请求共享'unauthenticated'
主体 ID,作为最坏的例子,这些原本不相关的请求之间是否存在某种行为“冲突”的风险?也许一个规避风险/面向未来的解决方案是简单地附加一个 UUID 后缀:'unauthenticated|{uuid}'
.
https://docs.aws.amazon.com/apigateway/latest/developerguide/use-custom-authorizer.html
除了返回 IAM 策略之外,自定义授权方函数还必须返回调用方的委托人标识符。
我正在尝试使用aws-sam在本地开发/模拟我的API网关。我的API网关充分利用了HTTP代理集成。生产资源如下所示:
所有的AWS-SAM的例子其中 我 发现,以及相关的文档和Q&A,使用LAMBDA集成/对lambda函数作为代理的资源硬依赖,对一个HTTP代理服务器的整合。
有没有办法为aws-sam应用程序定义HTTP代理资源?(而不是Lambda代理资源?)
有关:
我正在尝试使用无服务器离线在本地开发/模拟我的 API 网关。我的 API 网关自由地使用了HTTP 代理集成。生产资源如下所示:
我根据一些文档和讨论创建了一个无服务器离线配置,这些文档和讨论表明可以使用 Cloud Formation 配置定义 HTTP 代理集成:
我已根据我的目的改编了上述两个配置示例,请参见下文。
有什么提示,我可能在这里做错了什么?
plugins:
- serverless-offline
service: company-apig
provider:
name: aws
stage: dev
runtime: python2.7
resources:
Resources:
# Parent APIG RestApi
ApiGatewayRestApi:
Type: AWS::ApiGateway::RestApi
Properties:
Name: company-apig
Description: 'The main entry point of the APIG'
# Resource /endpoint
EndpointResource:
Type: AWS::ApiGateway::Resource
Properties:
ParentId:
Fn::GetAtt:
- ApiGatewayRestApi
- RootResourceId
PathPart: 'endpoint' …
Run Code Online (Sandbox Code Playgroud) aws-api-gateway serverless-framework serverless serverless-offline
我正在开发一个 Ruby/Rails 应用程序,它可以抓取另一个网站并使用数据呈现 RSS 提要。
因为这个应用程序是在 Heroku 上构建的,所以我通过控制器生成 RSS 提要,而不是将它转储到文件系统并将其作为资产提供。
但是,当我设置render :content_type
哈希时,没有任何效果。响应的内容类型仍然是text/plain
。
news
对FeedController 的操作
def news
do_scrape
@posts = UbuEntry.all(:order => "created_at DESC", :limit => 400)
render :layout => false, :content_type => Mime::RSS
end
Run Code Online (Sandbox Code Playgroud)
完整路线.rb
UbuWebRSS::Application.routes.draw do
root :to => 'index#index'
scope :format => true, :constraints => { :format => 'rss' } do
get 'feed/news' => 'feed#news'
end
end
Run Code Online (Sandbox Code Playgroud)
您可以在此处查看实时结果:
http://www.ubuwebrss.com/feed/news.rss
以及完整的源代码:
https://github.com/freen/ubuwebrss/
我在 Google 和 StackOverflow 上环顾四周,但不清楚我做错了什么。
有小费吗?谢谢!
供参考:
视图脚本:/app/views/feed/news.rss.builder: …
一对 Amazon Lambda 将对称地加密和解密一小段应用程序数据。我想使用 Amazon KMS 来促进这一点,因为它解决了秘密存储和密钥轮换等问题。
Amazon KMS 开发人员指南指出:
这些操作旨在加密和解密数据密钥。他们在加密操作中使用 AWS KMS 客户主密钥 (CMK),并且不能接受超过 4 KB(4096 字节)的数据。尽管您可以使用它们来加密少量数据(例如密码或 RSA 密钥),但它们并不是为加密应用程序数据而设计的。
它还建议使用AWS 加密 SDK或Amazon S3 加密客户端来加密应用程序数据。
虽然AWS 加密 SDK 所列出的优势显而易见,并且非常有吸引力,尤其是对于非密码学家的开发人员而言,但出于本问题的目的,我们假设环境不利于这些替代方案。
如果我的应用程序数据肯定不会超过 4k,为什么我不应该简单地使用 Amazon KMS 来加密和解密这些数据?
使用案例
我的团队正在实施一个新的身份验证层,以便在我们公司的服务和 API 中使用。我们正在实施 JWT 规范,但虽然我们打算避开广泛记录的困扰 JWE / JWS 兼容令牌签名的加密不满,但我们正在对有效负载进行对称加密。因此,我们保留了非加密令牌验证操作(过期等)的标准库实现的优势,并且留下了加密“脚枪”。
我的团队使用Puppet架构,目前可以在多个环境中容纳单个应用程序(流浪,分段,生产).
我们现在希望扩展此设置的范围以支持其他应用程序.他们中的许多人将使用我们已经定义的现有模块的子集,而其他人将要求定义新模块(可能共享也可能不共享).
什么是最合适的Puppet架构,用于支持多个应用程序的多个环境?
在这样的体系结构中,大概每个应用程序都相当于一个模块.(文件 - )在结构上区分作为应用程序的模块和作为一个或多个模块的依赖关系的模块的最佳方法是什么?
例如,它可以像modules
在顶级文件夹下添加第三个文件夹一样简单applications
吗?或者是否有更好的分层策略?
到目前为止的研究尚未发现任何最佳实践示例/样板,例如通过GitHub上的example42或puppetlabs.
我们的文件结构:
puppet
??? environments
? ??? production ? manifests ? init.pp
? ??? staging ? manifests ? init.pp
? ??? vagrant ? manifests ? init.pp
??? hiera.yaml
??? hieradata
? ??? accounts.yaml
? ??? common.yaml
? ??? environments
? ??? production.yaml
? ??? staging.yaml
? ??? vagrant.yaml
??? modules
? ??? acl [..]
? ??? newrelic [..]
? ??? nginx [..]
? ??? puma [..]
??? vendor
??? …
Run Code Online (Sandbox Code Playgroud) aws-lambda ×2
amazon-kms ×1
aws-iam ×1
aws-sam ×1
aws-sam-cli ×1
encryption ×1
heroku ×1
mime-types ×1
puppet ×1
rss ×1
scraper ×1
serverless ×1