我们有一个Angular2应用程序,它托管在S3 Bucket上,并将调用发送到API网关后面的后端。
如果我们在API网关上自己启用CORS,这非常有效,但是如果我们在后端更改某些内容并使用我们的api_deploy.sh
skript进行部署,它通常会重置一些CORS配置。
aws apigateway create-deployment --rest-api-id XXXXXX --stage-name $1 --description "$2"
有没有一种解决方案,我们没有必要通过自己的evrytime改变它?我想亚马逊CLI可以提供帮助,但到目前为止似乎没有任何工作。
答案 0 :(得分:2)
您可以使用CloudFormation / SAM来部署API网关。
在端点上启用CORS后,请尝试以下操作:
swagger-stage.yaml
),创建一个指向本地驱动器上的招摇文件的模板文件,例如: template.yaml
:
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: API deployment
Resources:
ApiGatewayApi:
Type: AWS::Serverless::Api
Properties:
DefinitionUri: ./swagger-stage.yaml
StageName: Staging
Outputs:
ApiUrl:
Description: URL of the API endpoint
Value: !Join
- ''
- - https://
- !Ref ApiGatewayApi
- '.execute-api.'
- !Ref 'AWS::Region'
- '.amazonaws.com/staging'
使用一些简单的命令将您的堆栈部署到AWS CloudFormation,例如deploy.sh
:
#!/bin/bash
aws s3 mb --region eu-west-1 s3://cloudformation-uploads # only needed if bucket does not exist yet
aws cloudformation package --template-file template.yaml --s3-bucket cloudformation-uploads --output-template-file template.pkg.yaml
aws cloudformation deploy --template-file template.pkg.yaml --stack-name api-deploy-stack