繁体   English   中英

阻止CloudFormation从CloudFront中删除Lambda Edge关联

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM