Безсерверная функция ARN для Lambda @ Edge в serverless.yml - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь выяснить, возможно ли получить ARN лямбда-функции, определенной в файле serverless.yml, для использования в том же файле для Lambda @ Edge в дистрибутиве CloudFront.

Myкод ниже, справа внизу я хочу указать ARN лямбда-функции, которую я определил в том же файле без сервера.

Заранее спасибо.

functions:

    myLambdaFunction:
        handler: handler.myLambdaFunction

resources:
    Resources:

        WebsiteS3Bucket:
            Type: AWS::S3::Bucket
            Properties: 
                BucketName: website-bucket
                WebsiteConfiguration:
                    ErrorDocument: index.html
                    IndexDocument: index.html

        WebsiteCloudFrontOriginAccessIdentity:
            Type: AWS::CloudFront::CloudFrontOriginAccessIdentity
            Properties:
                CloudFrontOriginAccessIdentityConfig:
                    Comment: website-bucket-cloudfront-origin-access-identity

        WebsiteS3BucketPolicy:
            Type: AWS::S3::BucketPolicy
            Properties: 
                Bucket: 
                    Ref: WebsiteS3Bucket
                PolicyDocument: 
                    Statement: 
                        - 
                            Action: 
                                - "s3:GetObject"
                                - "s3:ListBucket"
                            Effect: "Allow"
                            Resource: 
                                - Fn::Join: 
                                    - ""
                                    - 
                                        - Fn::GetAtt: [ WebsiteS3Bucket, Arn ]
                                        - "/*"
                                - Fn::Join: 
                                    - ""
                                    - 
                                        - Fn::GetAtt: [ WebsiteS3Bucket, Arn ]
                            Principal:
                                AWS:
                                    Fn::Join:
                                        - ""
                                        -
                                            - "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity "
                                            - Ref: WebsiteCloudFrontOriginAccessIdentity

        WebsiteCloudFront:
            Type: AWS::CloudFront::Distribution
            Properties:
                DistributionConfig: 
                    Enabled: true
                    Origins:
                        -
                            DomainName:
                                Fn::Join:
                                    - ""
                                    -
                                        - Ref: WebsiteS3Bucket
                                        - ".s3.amazonaws.com"
                            Id:
                                Ref: WebsiteS3Bucket
                            S3OriginConfig:
                                OriginAccessIdentity:
                                    Fn::Join:
                                        - ""
                                        -
                                            - "origin-access-identity/cloudfront/"
                                            - Ref: WebsiteCloudFrontOriginAccessIdentity
                    CustomErrorResponses:
                        -
                            ErrorCode: 404
                            ResponseCode: 200
                            ResponsePagePath: /index.html
                    DefaultRootObject: /index.html
                    DefaultCacheBehavior:
                        ForwardedValues:
                            QueryString: true
                        TargetOriginId:
                            Ref: WebsiteS3Bucket
                        ViewerProtocolPolicy: redirect-to-https
                        LambdaFunctionAssociations:
                            -
                                EventType: origin-response
                                LambdaFunctionARN: ## Lambda function ARN here

1 Ответ

0 голосов
/ 25 октября 2018
Ref: myLambdaFunction

Похоже, вы уже ссылаетесь на Ref в своем шаблоне.Здесь указывается, какое значение будет при использовании Ref для лямбда-функции:

Ссылка на документацию

Я обычно ссылаюсь на них через:

!GetAtt [LambdaResourceName, Arn]
...