我有一个通过云形成AWS::无服务器::Api
对象定义的应用编程接口。我需要它从其自定义授权器中获取使用计划密钥,相当于在AWS::ApiGateway::RestApi上将ApiKeySourceType设置为AUTHORIZER。如何做到这一点?
这是我正在使用的当前定义,包括从正确配置的API导出的OpenAPI定义。我确实觉得很奇怪,即使在将配置设置为AUTHORIZER之后,< code>x-api-key仍然为api_key列出。
RestApi:
Type: AWS::Serverless::Api
Properties:
Name: !Sub ${AWS::StackName}-API
StageName: !Ref ApiStageName
MethodSettings:
- CachingEnabled: false
DataTraceEnabled: false
HttpMethod: '*'
LoggingLevel: INFO
MetricsEnabled: true
ResourcePath: '/*'
ThrottlingBurstLimit: !Ref ThrottlingBurstLimit
ThrottlingRateLimit: !Ref ThrottlingRateLimit
AccessLogSetting:
DestinationArn: !GetAtt ApiLogs.Arn
# format is copied from an example generated by the web console
Format: '{ "requestId":"$context.requestId", "ip": "$context.identity.sourceIp", "requestTime":"$context.requestTime", "httpMethod":"$context.httpMethod","routeKey":"$context.routeKey", "status":"$context.status","protocol":"$context.protocol", "responseLength":"$context.responseLength" }'
CacheClusterEnabled: false
TracingEnabled: true
DefinitionBody: !Sub |
openapi: "3.0.1"
paths:
/v2/oauth2/token:
post:
x-amazon-apigateway-integration:
connectionId: "${RestApiVpcLink}"
httpMethod: "POST"
uri: "http://${VPCLinkLB.DNSName}/v2/oauth2/token"
passthroughBehavior: "when_no_match"
connectionType: "VPC_LINK"
type: "http_proxy"
/{proxy+}:
x-amazon-apigateway-any-method:
parameters:
- name: "proxy"
in: "path"
required: true
schema:
type: "string"
security:
- LambdaAuthorizer: []
- api_key: []
x-amazon-apigateway-integration:
connectionId: "${RestApiVpcLink}"
httpMethod: "ANY"
uri: "http://${VPCLinkLB.DNSName}/{proxy}"
requestParameters:
integration.request.path.proxy: "method.request.path.proxy"
passthroughBehavior: "when_no_match"
connectionType: "VPC_LINK"
type: "http_proxy"
components:
securitySchemes:
LambdaAuthorizer:
type: apiKey
name: Authorization
in: header
x-amazon-apigateway-authtype: custom
x-amazon-apigateway-authorizer:
authorizerUri: "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${GatewayAuthorizerLambda.Arn}/invocations"
authorizerResultTtlInSeconds: 300
identityValidationExpression: "Bearer .*"
type: "token"
api_key:
type: "apiKey"
name: "x-api-key"
in: "header"
我主要使用< code>Serverless::Api,而不是它的组件< code>ApiGateway对象,因为我发现否则阶段/部署会非常令人头疼。
x-amazon-apigateway-api-key-source: AUTHORIZER
需要作为兄弟添加到openapi:"3.0.1"
。openAPI扩展在这里记录。
看起来在阶段导出中一定有一个bug导致了它的丢失。
我需要从Google Analytics以编程方式检索数据,以便生成一些报告,所以OAuth2.0不是一个选项,因为它要求用户授权…是否有一种方法可以使用API密钥从GA API v3中检索数据?谢了!
我们目前正在使用API密钥来保护对API网关的访问。然而,我们正在转向具有访问/密钥的IAM模型。我知道swagger不允许我们这样做(我们目前在swagger中设置了api_key以启用api密钥身份验证)。 我已经创建了各种操作所需的策略,如下所示: 我的lambda函数如下所示。我仍然是云形成的新手,并且希望得到一些关于我可以做些什么来添加lambda授权器的帮助(我相信它会在事件中-
TL;DR:将身份验证数据传递给csv文件中名为参数(且未签入)的boto3脚本是否出于任何原因不如明文共享凭据文件(文档中的默认答案)安全? 我想写一个boto3脚本,打算从使用IAM密钥的笔记本电脑上运行。初始化会话的主要公认方法是将API密钥、密钥、区域和(如果适用)会话密钥包含在由标识的共享凭据文件中,或者将密钥和密钥本身作为环境变量(等)我想做的是将这些值从csv或类似文件加载到字典,然
对于Kinesis流,我使用AWSAPI网关创建了一个代理API。我为代理添加了一个使用python Lambda的自定义授权器。在发布lambda函数和部署API之后,我能够使用网关测试功能成功地测试API。我可以在cloudwatch中看到日志,其中包含来自自定义auth lambda函数的详细打印。成功身份验证后,API网关将记录推送到我的Kinesis流 但是当我从Chrome Postm
我为我的Android应用程序创建了一个用于GCM推送通知的Android API键。从最近两天开始,GCM服务器返回PHP中未授权的(401)响应。 Android API密钥无效/过期有什么原因吗?还是GCM不推荐使用Android API密钥? 我仍然没有得到关于为什么Android API密钥无效的适当解释?对于GCM,他们中的大多数人更喜欢服务器密钥而不是Android API密钥,但是
Using a delegation key The collaborator can now push to the repository using Docker Content Trust. Docker will automatically choose and pick the right key for the targets/release role. Edit the file o