amazon-web-services - serverless.yml 未部署到正确的 api 网关
问题描述
我有一组部署到预先创建的 API 网关的无服务器功能。api 网关在 provider 选项下指定,在以下文件中定义:
service: gargoyle
useDotenv: true
plugins:
- serverless-plugin-typescript
- serverless-offline
provider:
name: aws
runtime: nodejs12.x
lambdaHashingVersion: '20201221'
stage: ${opt:stage, 'development'}
region: ${opt:region, 'us-east-1'}
environment:
NODE_ENV: ${opt:stage, 'development'}
TOKEN_KEY_ALGORITHM: ${env:TOKEN_KEY_ALGORITHM}
TOKEN_EXPIRES_IN: ${env:TOKEN_EXPIRES_IN}
SLITHE_HOST: ${env:SLITHE_HOST}
CORS: ${env:CORS}
RECAPTCHA_SECRET: ${env:RECAPTCHA_SECRET}
LOG_LEVEL: ${env:LOG_LEVEL}
PRE_LOGGED_FLOW_ENABLED: ${env:PRE_LOGGED_FLOW_ENABLED}
SLITHE_SECURE_HOST: ${env:SLITHE_SECURE_HOST}
iamRoleStatements:
- Action:
- 'secretsmanager:GetSecretValue'
- 'lambda:InvokeFunction'
- 'ec2:CreateNetworkInterface'
- 'ec2:DescribeNetworkInterfaces'
- 'ec2:DetachNetworkInterface'
- 'ec2:DeleteNetworkInterface'
Effect: 'Allow'
Resource: '*'
vpc:
securityGroupIds:
- ${env:SG_ID_A}
subnetIds:
- ${env:SUBNET_A}
- ${env:SUBNET_B}
apiGateway:
restApiId: ${env:REST_API_ID}
restApiRootResourceId: ${env:REST_API_ROOT_ID}
restApiResources:
api: ${env:REST_API_PATH_ID}
package:
exclude:
- __mocks__/**/*.*
- __tests__/**/*.*
- scripts/**/*.*
- src/**/*.js.map
- .*
- '*.js'
- '*.md'
- '*.ts'
- '*.yml'
- stryker.conf.json
- tsconfig.json
excludeDevDependencies: true
functions:
accessCode:
handler: src/functions/access-code/index.handler
timeout: 10
events:
- http:
path: api/security/access-code
method: post
connectionType: vpc-link
connectionId: ${env:VPC_LINK_ID}
cors: true
deleteRecipient:
handler: src/functions/delete-recipient/index.handler
timeout: 10
events:
- http:
path: api/security/delete-recipient
method: post
cors: true
decrypt:
handler: src/functions/decrypt/index.handler
timeout: 10
events:
- http:
path: api/security/decrypt
method: post
connectionType: vpc-link
connectionId: ${env:VPC_LINK_ID}
cors: true
auth:
handler: src/functions/auth/index.handler
events:
- http:
path: api/security/auth
method: post
connectionType: vpc-link
connectionId: ${env:VPC_LINK_ID}
cors: true
该项目始终按照预期的方式工作,并使用 id === REST_API_ID 部署到 api 网关,直到意外部署时没有 api 网关规范,这导致创建了一个新的 api 网关。
新的 api 网关是意外创建的,因此被删除。但是在创建之后,每次进行新部署时,无服务器都会向我返回一条成功消息,说明我的函数已正确部署,并向我显示每个函数的 url。
问题是它显示了意外创建(和删除)的 api gateway 的 url,在我的 api gateway 的 api 中找不到它。
我的部署管道也不再更新我原来的rest api。
有人知道如何让我的无服务器管道再次部署到预期的 api 网关吗?
解决方案
推荐阅读
- javascript - 使用 Link 传递道具时 this.props.location 未定义
- node.js - Node JS 批量获取 Redis 密钥
- python - BinarySearch 的这段代码有什么问题?
- javascript - 带有 post 参数的 TCPDF 打开窗口
- python - 检测数据框熊猫的所有列中的值是否为数字并将其删除
- c++ - C++:嵌套的 std::conditionals
- windows - 如何将调用 QueryPerformanceFrequency 的代码移植到 Rust?
- selenium - 通过 Selenium IDE 进行调度
- php - 在 symfony 中请求链接字段
- python - Python Predicates and Conditionals