152 lines
5.5 KiB
Markdown
152 lines
5.5 KiB
Markdown
# cdk-solution-helper
|
|
|
|
A lightweight helper function that cleans-up synthesized templates from the AWS Cloud Development Kit (CDK) and prepares
|
|
them for use with the AWS Solutions publishing pipeline. This function performs the following tasks:
|
|
|
|
#### Lambda function preparation
|
|
|
|
Replaces the AssetParameter-style properties that identify source code for Lambda functions with the common variables
|
|
used by the AWS Solutions publishing pipeline.
|
|
|
|
- `Code.S3Bucket` is assigned the `%%BUCKET_NAME%%` placeholder value.
|
|
- `Code.S3Key` is assigned the `%%SOLUTION_NAME%%`/`%%VERSION%%` placeholder value.
|
|
- `Handler` is given a prefix identical to the artifact hash, enabling the Lambda function to properly find the handler in the extracted source code package.
|
|
|
|
These placeholders are then replaced with the appropriate values using the default find/replace operation run by the pipeline.
|
|
|
|
Before:
|
|
```
|
|
"examplefunction67F55935": {
|
|
"Type": "AWS::Lambda::Function",
|
|
"Properties": {
|
|
"Code": {
|
|
"S3Bucket": {
|
|
"Ref": "AssetParametersd513e93e266931de36e1c7e79c27b196f84ab928fce63d364d9152ca501551f7S3Bucket54E71A95"
|
|
},
|
|
"S3Key": {
|
|
"Fn::Join": [
|
|
"",
|
|
[
|
|
{
|
|
"Fn::Select": [
|
|
0,
|
|
{
|
|
"Fn::Split": [
|
|
"||",
|
|
{
|
|
"Ref": "AssetParametersd513e93e266931de36e1c7e79c27b196f84ab928fce63d364d9152ca501551f7S3VersionKeyC789D8B1"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"Fn::Select": [
|
|
1,
|
|
{
|
|
"Fn::Split": [
|
|
"||",
|
|
{
|
|
"Ref": "AssetParametersd513e93e266931de36e1c7e79c27b196f84ab928fce63d364d9152ca501551f7S3VersionKeyC789D8B1"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
]
|
|
}
|
|
}, ...
|
|
Handler: "index.handler", ...
|
|
```
|
|
|
|
After helper function run:
|
|
```
|
|
"examplefunction67F55935": {
|
|
"Type": "AWS::Lambda::Function",
|
|
"Properties": {
|
|
"Code": {
|
|
"S3Bucket": "%%BUCKET_NAME%%",
|
|
"S3Key": "%%SOLUTION_NAME%%/%%VERSION%%/assetd513e93e266931de36e1c7e79c27b196f84ab928fce63d364d9152ca501551f7.zip"
|
|
}, ...
|
|
"Handler": "assetd513e93e266931de36e1c7e79c27b196f84ab928fce63d364d9152ca501551f7/index.handler"
|
|
```
|
|
|
|
After build script run:
|
|
```
|
|
"examplefunction67F55935": {
|
|
"Type": "AWS::Lambda::Function",
|
|
"Properties": {
|
|
"Code": {
|
|
"S3Bucket": "solutions",
|
|
"S3Key": "trademarked-solution-name/v1.0.0/asset.d513e93e266931de36e1c7e79c27b196f84ab928fce63d364d9152ca501551f7.zip"
|
|
}, ...
|
|
"Handler": "assetd513e93e266931de36e1c7e79c27b196f84ab928fce63d364d9152ca501551f7/index.handler"
|
|
```
|
|
|
|
After CloudFormation deployment:
|
|
```
|
|
"examplefunction67F55935": {
|
|
"Type": "AWS::Lambda::Function",
|
|
"Properties": {
|
|
"Code": {
|
|
"S3Bucket": "solutions-us-east-1",
|
|
"S3Key": "trademarked-solution-name/v1.0.0/asset.d513e93e266931de36e1c7e79c27b196f84ab928fce63d364d9152ca501551f7.zip"
|
|
}, ...
|
|
"Handler": "assetd513e93e266931de36e1c7e79c27b196f84ab928fce63d364d9152ca501551f7/index.handler"
|
|
```
|
|
|
|
#### Template cleanup
|
|
|
|
Cleans-up the parameters section and improves readability by removing the AssetParameter-style fields that would have
|
|
been used to specify Lambda source code properties. This allows solution-specific parameters to be highlighted and
|
|
removes unnecessary clutter.
|
|
|
|
Before:
|
|
```
|
|
"Parameters": {
|
|
"AssetParametersd513e93e266931de36e1c7e79c27b196f84ab928fce63d364d9152ca501551f7S3Bucket54E71A95": {
|
|
"Type": "String",
|
|
"Description": "S3 bucket for asset \"d513e93e266931de36e1c7e79c27b196f84ab928fce63d364d9152ca501551f7\""
|
|
},
|
|
"AssetParametersd513e93e266931de36e1c7e79c27b196f84ab928fce63d364d9152ca501551f7S3VersionKeyC789D8B1": {
|
|
"Type": "String",
|
|
"Description": "S3 key for asset version \"d513e93e266931de36e1c7e79c27b196f84ab928fce63d364d9152ca501551f7\""
|
|
},
|
|
"AssetParametersd513e93e266931de36e1c7e79c27b196f84ab928fce63d364d9152ca501551f7ArtifactHash7AA751FE": {
|
|
"Type": "String",
|
|
"Description": "Artifact hash for asset \"d513e93e266931de36e1c7e79c27b196f84ab928fce63d364d9152ca501551f7\""
|
|
},
|
|
"CorsEnabled" : {
|
|
"Description" : "Would you like to enable Cross-Origin Resource Sharing (CORS) for the image handler API? Select 'Yes' if so.",
|
|
"Default" : "No",
|
|
"Type" : "String",
|
|
"AllowedValues" : [ "Yes", "No" ]
|
|
},
|
|
"CorsOrigin" : {
|
|
"Description" : "If you selected 'Yes' above, please specify an origin value here. A wildcard (*) value will support any origin.",
|
|
"Default" : "*",
|
|
"Type" : "String"
|
|
}
|
|
}
|
|
```
|
|
|
|
After:
|
|
```
|
|
"Parameters": {
|
|
"CorsEnabled" : {
|
|
"Description" : "Would you like to enable Cross-Origin Resource Sharing (CORS) for the image handler API? Select 'Yes' if so.",
|
|
"Default" : "No",
|
|
"Type" : "String",
|
|
"AllowedValues" : [ "Yes", "No" ]
|
|
},
|
|
"CorsOrigin" : {
|
|
"Description" : "If you selected 'Yes' above, please specify an origin value here. A wildcard (*) value will support any origin.",
|
|
"Default" : "*",
|
|
"Type" : "String"
|
|
}
|
|
}
|
|
```
|
|
|
|
***
|
|
© Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. |