2

我需要使用 amplify cli 添加的 Cloudfront 分发 URL 作为环境变量。地位: 在此处输入图像描述

我发现如何在我的函数配置下的文件“api-cloudformation-template.json”中添加模板变量。“hosting/S3AndCloudFront/template.json”的所需输出变量是CloudFrontSecureURL. 所以我在 lambda 配置文件中添加了行,如下所示:

 {
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "Lambda resource stack creation using Amplify CLI",
    "Parameters": {
        ...
        "hostingS3AndCloudFrontHostingBucketName": { // working example
            "Type": "String",
            "Default": "hostingS3AndCloudFrontHostingBucketName"
        },
        "hostingS3AndCloudFrontCloudFrontSecureURL": { // my example
            "Type": "String",
            "Default": "hostingS3AndCloudFrontCloudFrontSecureURL"
        },
    },
    "Resources": {
        "LambdaFunction": {
            "Type": "AWS::Lambda::Function",
            "Metadata": {
                "aws:asset:path": "./src",
                "aws:asset:property": "Code"
            },
            "Properties": {
                ...
                "Environment": {
                    "Variables": {
                        ...
                        "HOSTING_S3ANDCLOUDFRONT_HOSTINGBUCKETNAME": {
                            "Ref": "hostingS3AndCloudFrontHostingBucketName"
                        },
                        "HOSTING_S3ANDCLOUDFRONT_CLOUDFRONTSECUREURL": {
                            "Ref": "hostingS3AndCloudFrontCloudFrontSecureURL"
                        }
                    }
                },

            }
        }
    ....
    },
    ....
}

我在发布功能后得到hostingS3AndCloudFrontCloudFrontSecureURL(默认值) 。process.env.HOSTING_S3ANDCLOUDFRONT_CLOUDFRONTSECUREURL

4

1 回答 1

2

尝试在此处使用模板的输出部分和 Fn::ImportValue 函数文档

CloudFront 堆栈:

{
   ...
   "Outputs" : {
     "CloudfrontDomainOutput" : {
       "Description" : "The cloudfront domain",
       "Value" : { 
           "Fn::GetAtt": [
                           "hostingS3AndCloudFrontCloudFrontSecureURL",
                           "DomainName"
                          ]
       },
       "Export" : {
         "Name" : {"Fn::Sub": "${AWS::StackName}-hostingS3AndCloudFrontCloudFrontSecureURL" }
       }
    }
}

Lambda 堆栈



{
  ...
   "Environment": {
       "Variables": {
               "HOSTING_S3ANDCLOUDFRONT_HOSTINGBUCKETNAME": {
                   "Ref": "hostingS3AndCloudFrontHostingBucketName"
                },
                "HOSTING_S3ANDCLOUDFRONT_CLOUDFRONTSECUREURL": {
                      "Fn::ImportValue" : {"Fn::Sub" : "${CloudFront_Stack_Name}-hostingS3AndCloudFrontCloudFrontSecureURL"}
                }
         }
     }
}
于 2019-12-11T21:27:25.977 回答