gpt4 book ai didi

amazon-web-services - 如何使用无服务器创建 API key 并将其分配给创建的阶段 API?

转载 作者:行者123 更新时间:2023-12-03 20:58:55 26 4
gpt4 key购买 nike

我想使用无服务器创建一个安全的 APIG,在我当前的“ s-fction.json ”中,我已经拥有:

"apiKeyRequired": true,

在我的“ s-resources-cf.json ”中,我已经有了:
"AWSApiKey": {
"Type": "AWS::ApiGateway::ApiKey",
"Properties" : {
"Description" : "ApiKey for secure the connections to the xxx API",
"Enabled" : true
}
}

它正确地创建了所有,一个 Lambda,一个用于该 lambda 的 APIG(包括 CORS)和 API key ,但我需要手动将 key “分配”给生成的 APIG-Stage,你对我该怎么做有任何想法吗?自动使用无服务器?

我从这里阅读了有关我想要的功能的 AWS 文档(而且似乎是可能的): AWS CloudFormation API Key

该文档显示它可以通过以下方式完成:
"ApiKey": {
"Type": "AWS::ApiGateway::ApiKey",
"DependsOn": ["TestAPIDeployment", "Test"],
"Properties": {
"Name": "TestApiKey",
"Description": "CloudFormation API Key V1",
"Enabled": "true",
"StageKeys": [{
"RestApiId": { "Ref": "RestApi" },
"StageName": "Test"
}]
}
}

但我不知道如何添加对无服务器自动创建的 APIG 的引用以及如何等待该 APIG 被创建。

最佳答案

您可以通过将 apiKeys 数组属性添加到 serverless.yml 中的提供程序对象来指定要由服务 Rest API 使用的 API key 列表。您还需要明确指定哪些端点是私有(private)的,并通过将私有(private) bool 属性添加到要设置为私有(private)的 http 事件对象来要求将其中一个 api key 包含在请求中。 API key 是全局创建的,因此如果您想将服务部署到不同的阶段,请确保您的 API key 包含如下定义的阶段变量。使用 API key 时,您可以选择使用 usagePlan 对象定义使用计划配额和限制。

这是为您的服务 Rest API 设置 API key 的示例配置:

service: my-service
provider:
name: aws
apiKeys:
- myFirstKey
- ${opt:stage}-myFirstKey
- ${env:MY_API_KEY} # you can hide it in a serverless variable
usagePlan:
quota:
limit: 5000
offset: 2
period: MONTH
throttle:
burstLimit: 200
rateLimit: 100
functions:
hello:
events:
- http:
path: user/create
method: get
private: true

有关更多信息,请阅读以下文档:
https://serverless.com/framework/docs/providers/aws/events/apigateway

关于amazon-web-services - 如何使用无服务器创建 API key 并将其分配给创建的阶段 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36877647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com