[英]Prevent CloudFormation to remove Lambda Edge associations from CloudFront
我正在使用CloudFormation来管理CloudFront分配 。
在此CloudFront分配中,我已关联Lambda Edge功能 (不使用CloudFormation)。
问题是稍后,当我使用相同的CloudFormation堆栈更新CloudFront分配时,它会删除所有Lambda Edge关联 。
怎么预防?
那真的很不幸......
PS:有时CloudFormation会删除Lambda关联(例如更新证书ARN时),有时则不会。
编辑:我可以尝试使用
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/protect-stack-resources.html,但有一个不那么hacky的方式?
不..
编辑:AWS论坛上的相同问题https://forums.aws.amazon.com/thread.jspa?threadID=274111 (需要登录)
可以使用CloudFormation为CloudFront“部署”新的Lambda @ Edge功能。
CloudFront和Lambda @ Edge需要版本化的Lambda函数。 因此,您需要确保CloudFront模板发布Lambda代码更改的新版本,并确保您的Distribution使用版本别名。
有关工作示例,请参阅我的样板Go / Lambda应用程序中的CloudFormation模板 :
WebAuthFunction:
Properties:
AutoPublishAlias: Live
CodeUri: ./web/handlers/auth/index.zip
Environment: !Ref AWS::NoValue
FunctionName: !Sub ${AWS::StackName}-WebAuthFunction
Handler: index.handler
Role: !GetAtt WebAuthFunctionRole.Arn
Runtime: nodejs6.10
Type: AWS::Serverless::Function
WebDistribution:
Condition: WebDomainNameSpecified
Properties:
DistributionConfig:
Aliases:
- !Ref WebDomainName
Comment: !Sub Distribution for ${WebBucket}
DefaultCacheBehavior:
AllowedMethods:
- GET
- HEAD
Compress: true
ForwardedValues:
Cookies:
Forward: none
QueryString: true
LambdaFunctionAssociations:
- !If
- OAuthClientIdSpecified
- EventType: viewer-request
LambdaFunctionARN: !Ref WebAuthFunction.Version
- !Ref AWS::NoValue
TargetOriginId: !Ref WebBucket
ViewerProtocolPolicy: redirect-to-https
DefaultRootObject: index.html
Enabled: true
HttpVersion: http2
Origins:
- DomainName: !Sub ${WebBucket}.s3.amazonaws.com
Id: !Ref WebBucket
S3OriginConfig:
OriginAccessIdentity: !Sub origin-access-identity/cloudfront/${WebOriginAccessIdentity}
PriceClass: PriceClass_All
ViewerCertificate:
AcmCertificateArn: !Ref WebCertificate
SslSupportMethod: sni-only
Type: AWS::CloudFront::Distribution
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.